Commit 053c8fdf authored by Steffen Klassert's avatar Steffen Klassert
Browse files

esp: Fix BEET mode inter address family tunneling on GSO



The xfrm{4,6}_beet_gso_segment() functions did not correctly set the
SKB_GSO_IPXIP4 and SKB_GSO_IPXIP6 gso types for the address family
tunneling case. Fix this by setting these gso types.

Fixes: 384a46ea ("esp4: add gso_segment for esp4 beet mode")
Fixes: 7f9e40eb ("esp6: add gso_segment for esp6 beet mode")
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
parent ebe48d36
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -160,6 +160,9 @@ static struct sk_buff *xfrm4_beet_gso_segment(struct xfrm_state *x,
			skb_shinfo(skb)->gso_type |= SKB_GSO_TCPV4;
	}

	if (proto == IPPROTO_IPV6)
		skb_shinfo(skb)->gso_type |= SKB_GSO_IPXIP4;

	__skb_pull(skb, skb_transport_offset(skb));
	ops = rcu_dereference(inet_offloads[proto]);
	if (likely(ops && ops->callbacks.gso_segment))
+3 −0
Original line number Diff line number Diff line
@@ -199,6 +199,9 @@ static struct sk_buff *xfrm6_beet_gso_segment(struct xfrm_state *x,
			ipv6_skip_exthdr(skb, 0, &proto, &frag);
	}

	if (proto == IPPROTO_IPIP)
		skb_shinfo(skb)->gso_type |= SKB_GSO_IPXIP6;

	__skb_pull(skb, skb_transport_offset(skb));
	ops = rcu_dereference(inet6_offloads[proto]);
	if (likely(ops && ops->callbacks.gso_segment))