diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-02-04 14:51:49 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-02-04 14:51:49 +0000 |
commit | 2fb20e2e35cd1455d022ab7a553d7f1663ffbdeb (patch) | |
tree | 4b3bb0f76c15264fe7d4cced91127f3d96ff31f5 /net/ipv6/ah6.c | |
parent | 9cb543124a2d31af42ce61a4c30765ecc8e5f1fa (diff) | |
parent | 5b91ab0abc957145c3ff6be03eb9a3901797019f (diff) | |
download | op-kernel-dev-2fb20e2e35cd1455d022ab7a553d7f1663ffbdeb.zip op-kernel-dev-2fb20e2e35cd1455d022ab7a553d7f1663ffbdeb.tar.gz |
Merge branch 'for-rmk/broadcast' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into devel-stable
Diffstat (limited to 'net/ipv6/ah6.c')
-rw-r--r-- | net/ipv6/ah6.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c index ecc35b9..3842331 100644 --- a/net/ipv6/ah6.c +++ b/net/ipv6/ah6.c @@ -472,7 +472,10 @@ static void ah6_input_done(struct crypto_async_request *base, int err) skb->network_header += ah_hlen; memcpy(skb_network_header(skb), work_iph, hdr_len); __skb_pull(skb, ah_hlen + hdr_len); - skb_set_transport_header(skb, -hdr_len); + if (x->props.mode == XFRM_MODE_TUNNEL) + skb_reset_transport_header(skb); + else + skb_set_transport_header(skb, -hdr_len); out: kfree(AH_SKB_CB(skb)->tmp); xfrm_input_resume(skb, err); @@ -593,9 +596,13 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb) skb->network_header += ah_hlen; memcpy(skb_network_header(skb), work_iph, hdr_len); - skb->transport_header = skb->network_header; __skb_pull(skb, ah_hlen + hdr_len); + if (x->props.mode == XFRM_MODE_TUNNEL) + skb_reset_transport_header(skb); + else + skb_set_transport_header(skb, -hdr_len); + err = nexthdr; out_free: |