diff options
author | Paul Durrant <Paul.Durrant@citrix.com> | 2013-12-03 17:39:29 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-12-05 20:31:40 -0500 |
commit | 1431fb31ecbaba1b5718006128f0f2ed0b94e1c3 (patch) | |
tree | c84ba1d0a31d210bd80f42f639d64a2c6e3fe471 /include | |
parent | df48ada4f82da039e3894f988b5aca08507621ee (diff) | |
download | linux-stable-1431fb31ecbaba1b5718006128f0f2ed0b94e1c3.tar.gz linux-stable-1431fb31ecbaba1b5718006128f0f2ed0b94e1c3.tar.bz2 linux-stable-1431fb31ecbaba1b5718006128f0f2ed0b94e1c3.zip |
xen-netback: fix fragment detection in checksum setup
The code to detect fragments in checksum_setup() was missing for IPv4 and
too eager for IPv6. (It transpires that Windows seems to send IPv6 packets
with a fragment header even if they are not a fragment - i.e. offset is zero,
and M bit is not set).
This patch also incorporates a fix to callers of maybe_pull_tail() where
skb->network_header was being erroneously added to the length argument.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: David Vrabel <david.vrabel@citrix.com>
cc: David Miller <davem@davemloft.net>
Acked-by: Wei Liu <wei.liu2@citrix.com>
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/ipv6.h | 3 |
2 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 5d89d1b808a6..c56c350324e4 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h @@ -4,6 +4,7 @@ #include <uapi/linux/ipv6.h> #define ipv6_optlen(p) (((p)->hdrlen+1) << 3) +#define ipv6_authlen(p) (((p)->hdrlen+2) << 2) /* * This structure contains configuration options per IPv6 link. */ diff --git a/include/net/ipv6.h b/include/net/ipv6.h index eb198acaac1d..488316e339a1 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -110,7 +110,8 @@ struct frag_hdr { __be32 identification; }; -#define IP6_MF 0x0001 +#define IP6_MF 0x0001 +#define IP6_OFFSET 0xFFF8 #include <net/sock.h> |