diff options
author | Patrick McHardy <kaber@trash.net> | 2006-01-07 02:02:34 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-01-07 15:57:29 -0500 |
commit | 951dbc8ac714b04c36296b8b5c36c8e036ce433f (patch) | |
tree | 7f3599987f6b6db765f66c65d5c1cefe1457ea6a /include | |
parent | 16a6677fdf1d1194f688f8291b06fbaff248c353 (diff) |
[IPV6]: Move nextheader offset to the IP6CB
Move nextheader offset to the IP6CB to make it possible to pass a
packet to ip6_input_finish multiple times and have it skip already
parsed headers. As a nice side effect this gets rid of the manual
hopopts skipping in ip6_input_finish.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ipv6.h | 1 | ||||
-rw-r--r-- | include/net/protocol.h | 2 | ||||
-rw-r--r-- | include/net/xfrm.h | 6 |
3 files changed, 5 insertions, 4 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 93bbed5c6cf4..5cfc71529595 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -191,6 +191,7 @@ struct inet6_skb_parm { | |||
191 | __u16 srcrt; | 191 | __u16 srcrt; |
192 | __u16 dst1; | 192 | __u16 dst1; |
193 | __u16 lastopt; | 193 | __u16 lastopt; |
194 | __u32 nhoff; | ||
194 | }; | 195 | }; |
195 | 196 | ||
196 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) | 197 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) |
diff --git a/include/net/protocol.h b/include/net/protocol.h index 63f7db99c2a6..6dc5970612d7 100644 --- a/include/net/protocol.h +++ b/include/net/protocol.h | |||
@@ -43,7 +43,7 @@ struct net_protocol { | |||
43 | #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) | 43 | #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) |
44 | struct inet6_protocol | 44 | struct inet6_protocol |
45 | { | 45 | { |
46 | int (*handler)(struct sk_buff **skb, unsigned int *nhoffp); | 46 | int (*handler)(struct sk_buff **skb); |
47 | 47 | ||
48 | void (*err_handler)(struct sk_buff *skb, | 48 | void (*err_handler)(struct sk_buff *skb, |
49 | struct inet6_skb_parm *opt, | 49 | struct inet6_skb_parm *opt, |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 07d7b50cdd76..297d09d28fe4 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -831,7 +831,7 @@ struct xfrm_tunnel { | |||
831 | }; | 831 | }; |
832 | 832 | ||
833 | struct xfrm6_tunnel { | 833 | struct xfrm6_tunnel { |
834 | int (*handler)(struct sk_buff **pskb, unsigned int *nhoffp); | 834 | int (*handler)(struct sk_buff **pskb); |
835 | void (*err_handler)(struct sk_buff *skb, struct inet6_skb_parm *opt, | 835 | void (*err_handler)(struct sk_buff *skb, struct inet6_skb_parm *opt, |
836 | int type, int code, int offset, __u32 info); | 836 | int type, int code, int offset, __u32 info); |
837 | }; | 837 | }; |
@@ -868,8 +868,8 @@ extern int xfrm4_rcv(struct sk_buff *skb); | |||
868 | extern int xfrm4_output(struct sk_buff *skb); | 868 | extern int xfrm4_output(struct sk_buff *skb); |
869 | extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler); | 869 | extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler); |
870 | extern int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler); | 870 | extern int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler); |
871 | extern int xfrm6_rcv_spi(struct sk_buff **pskb, unsigned int *nhoffp, u32 spi); | 871 | extern int xfrm6_rcv_spi(struct sk_buff **pskb, u32 spi); |
872 | extern int xfrm6_rcv(struct sk_buff **pskb, unsigned int *nhoffp); | 872 | extern int xfrm6_rcv(struct sk_buff **pskb); |
873 | extern int xfrm6_tunnel_register(struct xfrm6_tunnel *handler); | 873 | extern int xfrm6_tunnel_register(struct xfrm6_tunnel *handler); |
874 | extern int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler); | 874 | extern int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler); |
875 | extern u32 xfrm6_tunnel_alloc_spi(xfrm_address_t *saddr); | 875 | extern u32 xfrm6_tunnel_alloc_spi(xfrm_address_t *saddr); |