diff options
author | Masahide NAKAMURA <nakam@linux-ipv6.org> | 2006-08-23 20:56:04 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 18:06:35 -0400 |
commit | eb2971b68a7d17a7d0fa2c7fc6fbc4bfe41cd694 (patch) | |
tree | 5f6e98ac376d0d2faa69e8a6644706a7312a1ff1 /include | |
parent | 6c44e6b7ab500d7e3e3f406c83325671be51a752 (diff) |
[XFRM] STATE: Search by address using source address list.
This is a support to search transformation states by its addresses
by using source address list for Mobile IPv6 usage.
To use it from user-space, it is also added a message type for
source address as a xfrm state option.
Based on MIPL2 kernel patch.
Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/xfrm.h | 1 | ||||
-rw-r--r-- | include/net/xfrm.h | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 5154064b6d95..66343d3d4b91 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h | |||
@@ -234,6 +234,7 @@ enum xfrm_attr_type_t { | |||
234 | XFRMA_REPLAY_VAL, | 234 | XFRMA_REPLAY_VAL, |
235 | XFRMA_REPLAY_THRESH, | 235 | XFRMA_REPLAY_THRESH, |
236 | XFRMA_ETIMER_THRESH, | 236 | XFRMA_ETIMER_THRESH, |
237 | XFRMA_SRCADDR, /* xfrm_address_t */ | ||
237 | __XFRMA_MAX | 238 | __XFRMA_MAX |
238 | 239 | ||
239 | #define XFRMA_MAX (__XFRMA_MAX - 1) | 240 | #define XFRMA_MAX (__XFRMA_MAX - 1) |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 88145e3348d0..d9c40e713184 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -244,6 +244,7 @@ struct xfrm_state_afinfo { | |||
244 | struct xfrm_tmpl *tmpl, | 244 | struct xfrm_tmpl *tmpl, |
245 | xfrm_address_t *daddr, xfrm_address_t *saddr); | 245 | xfrm_address_t *daddr, xfrm_address_t *saddr); |
246 | struct xfrm_state *(*state_lookup)(xfrm_address_t *daddr, u32 spi, u8 proto); | 246 | struct xfrm_state *(*state_lookup)(xfrm_address_t *daddr, u32 spi, u8 proto); |
247 | struct xfrm_state *(*state_lookup_byaddr)(xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto); | ||
247 | struct xfrm_state *(*find_acq)(u8 mode, u32 reqid, u8 proto, | 248 | struct xfrm_state *(*find_acq)(u8 mode, u32 reqid, u8 proto, |
248 | xfrm_address_t *daddr, xfrm_address_t *saddr, | 249 | xfrm_address_t *daddr, xfrm_address_t *saddr, |
249 | int create); | 250 | int create); |
@@ -937,6 +938,7 @@ extern void xfrm_state_insert(struct xfrm_state *x); | |||
937 | extern int xfrm_state_add(struct xfrm_state *x); | 938 | extern int xfrm_state_add(struct xfrm_state *x); |
938 | extern int xfrm_state_update(struct xfrm_state *x); | 939 | extern int xfrm_state_update(struct xfrm_state *x); |
939 | extern struct xfrm_state *xfrm_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto, unsigned short family); | 940 | extern struct xfrm_state *xfrm_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto, unsigned short family); |
941 | extern struct xfrm_state *xfrm_state_lookup_byaddr(xfrm_address_t *daddr, xfrm_address_t *saddr, u8 proto, unsigned short family); | ||
940 | extern struct xfrm_state *xfrm_find_acq_byseq(u32 seq); | 942 | extern struct xfrm_state *xfrm_find_acq_byseq(u32 seq); |
941 | extern int xfrm_state_delete(struct xfrm_state *x); | 943 | extern int xfrm_state_delete(struct xfrm_state *x); |
942 | extern void xfrm_state_flush(u8 proto); | 944 | extern void xfrm_state_flush(u8 proto); |