Re: [PATCH net] net: vrf: Fix ping failed when vrf mtu is set to 0

From: David Ahern
Date: Thu Apr 04 2019 - 14:05:09 EST


On 4/4/19 11:52 AM, David Miller wrote:
> From: linmiaohe <linmiaohe@xxxxxxxxxx>
> Date: Thu, 4 Apr 2019 20:01:13 +0800
>
>> When the mtu of a vrf device is set to 0, it would cause ping
>> failed.So I think we should limit dev->min_mtu to ETH_MIN_MTU
>> to solve this problem. And if dev->max_mtu still be 0 can be
>> confusing, so I limit dev->max_mtu to ETH_MAX_MTU.
>
> David A., please review.
>

The failure is because in_device (and inet6_dev) are destroyed when the
MTU is below min size for IPv4 (and IPv6). The MTU is really irrelevant
for VRF except for odd cases like this. Really changing the MTU should
fail with an error message that MTU can not be changed for these devices.

As for the suggested ETH_MIN_MTU / MAX_MTU it works for IPv4 since
IPV4_MIN_MTU = 68 = ETH_MIN_MTU, but it does not solve the problem for
IPv6 which has a min MTU of IPV6_MIN_MTU = 1280.

Fixes tag should be:
Fixes: ad49bc6361ca2 ("net: vrf: remove MTU limits for vrf device")