aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorMasahide NAKAMURA <nakam@linux-ipv6.org>2006-08-23 20:57:28 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 18:06:36 -0400
commitaee5adb4307c4c63a4dc5f3b49984d76f8a71b5b (patch)
treeb2daac197259c535d66749617ede6f8479b355a4 /include/net
parenteb2971b68a7d17a7d0fa2c7fc6fbc4bfe41cd694 (diff)
[XFRM] STATE: Add a hook to find offset to be inserted header in outbound.
On current kernel, ip6_find_1stfragopt() is used by IPv6 IPsec to find offset to be inserted header in outbound for transport mode. (BTW, no usage may be needed for IPv4 case.) Mobile IPv6 requires another logic for routing header and destination options header respectively. This patch is common platform for the offset and adopts it to IPsec. 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/net')
-rw-r--r--include/net/xfrm.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index d9c40e713184..eed48f832ce1 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -265,6 +265,7 @@ struct xfrm_type
265 void (*destructor)(struct xfrm_state *); 265 void (*destructor)(struct xfrm_state *);
266 int (*input)(struct xfrm_state *, struct sk_buff *skb); 266 int (*input)(struct xfrm_state *, struct sk_buff *skb);
267 int (*output)(struct xfrm_state *, struct sk_buff *pskb); 267 int (*output)(struct xfrm_state *, struct sk_buff *pskb);
268 int (*hdr_offset)(struct xfrm_state *, struct sk_buff *, u8 **);
268 /* Estimate maximal size of result of transformation of a dgram */ 269 /* Estimate maximal size of result of transformation of a dgram */
269 u32 (*get_max_size)(struct xfrm_state *, int size); 270 u32 (*get_max_size)(struct xfrm_state *, int size);
270}; 271};
@@ -960,6 +961,8 @@ extern u32 xfrm6_tunnel_alloc_spi(xfrm_address_t *saddr);
960extern void xfrm6_tunnel_free_spi(xfrm_address_t *saddr); 961extern void xfrm6_tunnel_free_spi(xfrm_address_t *saddr);
961extern u32 xfrm6_tunnel_spi_lookup(xfrm_address_t *saddr); 962extern u32 xfrm6_tunnel_spi_lookup(xfrm_address_t *saddr);
962extern int xfrm6_output(struct sk_buff *skb); 963extern int xfrm6_output(struct sk_buff *skb);
964extern int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb,
965 u8 **prevhdr);
963 966
964#ifdef CONFIG_XFRM 967#ifdef CONFIG_XFRM
965extern int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type); 968extern int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type);