Message ID | 1516659381-12971-1-git-send-email-yossiku@mellanox.com |
---|---|
State | Awaiting Upstream, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net] xfrm: Fix eth_hdr(skb)->h_proto to reflect inner IP version | expand |
On Tue, Jan 23, 2018 at 12:16:21AM +0200, yossiku@mellanox.com wrote: > From: Yossi Kuperman <yossiku@mellanox.com> > > IPSec tunnel mode supports encapsulation of IPv4 over IPv6 and vice-versa. > > The outer IP header is stripped and the inner IP inherits the original > Ethernet header. Tcpdump fails to properly decode the inner packet in > case that h_proto is different than the inner IP version. > > Fix h_proto to reflect the inner IP version. > > Signed-off-by: Yossi Kuperman <yossiku@mellanox.com> Applied, thanks Yossi!
diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c index e6265e2..20ca486 100644 --- a/net/ipv4/xfrm4_mode_tunnel.c +++ b/net/ipv4/xfrm4_mode_tunnel.c @@ -92,6 +92,7 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) skb_reset_network_header(skb); skb_mac_header_rebuild(skb); + eth_hdr(skb)->h_proto = skb->protocol; err = 0; diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c index 02556e3..dc93002 100644 --- a/net/ipv6/xfrm6_mode_tunnel.c +++ b/net/ipv6/xfrm6_mode_tunnel.c @@ -92,6 +92,7 @@ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) skb_reset_network_header(skb); skb_mac_header_rebuild(skb); + eth_hdr(skb)->h_proto = skb->protocol; err = 0;