xfrm: remove the fragment check for ipv6 beet mode
In commit68dc022d04
("xfrm: BEET mode doesn't support fragments for inner packets"), it tried to fix the issue that in TX side the packet is fragmented before the ESP encapping while in the RX side the fragments always get reassembled before decapping with ESP. This is not true for IPv6. IPv6 is different, and it's using exthdr to save fragment info, as well as the ESP info. Exthdrs are added in TX and processed in RX both in order. So in the above case, the ESP decapping will be done earlier than the fragment reassembling in TX side. Here just remove the fragment check for the IPv6 inner packets to recover the fragments support for BEET mode. Fixes:68dc022d04
("xfrm: BEET mode doesn't support fragments for inner packets") Reported-by: Xiumei Mu <xmu@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:
parent
6e1e89418a
commit
eebd49a4ff
|
@ -711,15 +711,8 @@ out:
|
|||
static int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
unsigned int ptr = 0;
|
||||
int err;
|
||||
|
||||
if (x->outer_mode.encap == XFRM_MODE_BEET &&
|
||||
ipv6_find_hdr(skb, &ptr, NEXTHDR_FRAGMENT, NULL, NULL) >= 0) {
|
||||
net_warn_ratelimited("BEET mode doesn't support inner IPv6 fragments\n");
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
|
||||
err = xfrm6_tunnel_check_size(skb);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue