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>
This commit is contained in:
@@ -114,6 +114,7 @@ int ipv6_skb_to_auditdata(struct sk_buff *skb,
|
||||
int offset, ret = 0;
|
||||
struct ipv6hdr *ip6;
|
||||
u8 nexthdr;
|
||||
__be16 frag_off;
|
||||
|
||||
ip6 = ipv6_hdr(skb);
|
||||
if (ip6 == NULL)
|
||||
@@ -126,7 +127,7 @@ int ipv6_skb_to_auditdata(struct sk_buff *skb,
|
||||
offset = skb_network_offset(skb);
|
||||
offset += sizeof(*ip6);
|
||||
nexthdr = ip6->nexthdr;
|
||||
offset = ipv6_skip_exthdr(skb, offset, &nexthdr);
|
||||
offset = ipv6_skip_exthdr(skb, offset, &nexthdr, &frag_off);
|
||||
if (offset < 0)
|
||||
return 0;
|
||||
if (proto)
|
||||
|
||||
Reference in New Issue
Block a user