Re: Regression for ip6-in-ip4 IPsec tunnel in 4.14.16

From: Yves-Alexis Perez
Date: Wed Feb 07 2018 - 12:23:15 EST


On Wed, 2018-02-07 at 18:05 +0100, Yves-Alexis Perez wrote:
> I'll try to printk the mtu before returning EINVAL to see why it's lower than
> 1280, but maybe the IP encapsulation is not correctly handled?

I did:

diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 3763dc01e374..d3c651158d35 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1215,7 +1215,7 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
mtu = np->frag_size;
}
if (mtu < IPV6_MIN_MTU)
- return -EINVAL;
+ printk("mtu: %d\n", mtu);
cork->base.fragsize = mtu;
if (dst_allfrag(rt->dst.path))
cork->base.flags |= IPCORK_ALLFRAG;

and I get:

fÃvr. 07 18:19:50 scapa kernel: mtu: 1218

and it doesn't depend on the original packet size (same thing happens with
ping -s 100). It also happens with UDP (DNS) traffic, but apparently not with
TCP.

Regards,
--
Yves-Alexis

Attachment: signature.asc
Description: This is a digitally signed message part