summaryrefslogtreecommitdiff
path: root/net/netfilter/xt_TCPOPTSTRIP.c
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2011-12-01 01:05:51 (GMT)
committerJesse Gross <jesse@nicira.com>2011-12-03 17:35:10 (GMT)
commit75f2811c6460ccc59d83c66059943ce9c9f81a18 (patch)
tree49373cf5f5b11358aeb587209ad270496f751609 /net/netfilter/xt_TCPOPTSTRIP.c
parent396cf9430505cfba529a2f2a037d782719fa5844 (diff)
downloadlinux-75f2811c6460ccc59d83c66059943ce9c9f81a18.tar.xz
ipv6: Add fragment reporting to ipv6_skip_exthdr().
While parsing through IPv6 extension headers, fragment headers are skipped making them invisible to the caller. This reports the fragment offset of the last header in order to make it possible to determine whether the packet is fragmented and, if so whether it is a first or last fragment. Signed-off-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'net/netfilter/xt_TCPOPTSTRIP.c')
-rw-r--r--net/netfilter/xt_TCPOPTSTRIP.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/netfilter/xt_TCPOPTSTRIP.c b/net/netfilter/xt_TCPOPTSTRIP.c
index 9dc9ecf..3a295cc 100644
--- a/net/netfilter/xt_TCPOPTSTRIP.c
+++ b/net/netfilter/xt_TCPOPTSTRIP.c
@@ -87,9 +87,10 @@ tcpoptstrip_tg6(struct sk_buff *skb, const struct xt_action_param *par)
struct ipv6hdr *ipv6h = ipv6_hdr(skb);
int tcphoff;
u_int8_t nexthdr;
+ __be16 frag_off;
nexthdr = ipv6h->nexthdr;
- tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr);
+ tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr, &frag_off);
if (tcphoff < 0)
return NF_DROP;