From: Yu Watanabe Date: Sun, 6 Jun 2021 06:18:43 +0000 (+0900) Subject: network: also adjust IPv6 MTU by the maximum MTU of the interface X-Git-Tag: v249-rc1~60^2~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e56e1a15b50e55789347d420facb004baaa9b4b6;p=thirdparty%2Fsystemd.git network: also adjust IPv6 MTU by the maximum MTU of the interface --- diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c index ee5fe5f93db..a67e10e8125 100644 --- a/src/network/networkd-sysctl.c +++ b/src/network/networkd-sysctl.c @@ -184,6 +184,8 @@ static int link_set_ipv6_proxy_ndp(Link *link) { } int link_set_ipv6_mtu(Link *link) { + uint32_t mtu; + assert(link); /* Make this a NOP if IPv6 is not available */ @@ -199,7 +201,14 @@ int link_set_ipv6_mtu(Link *link) { if (link->network->ipv6_mtu == 0) return 0; - return sysctl_write_ip_property_uint32(AF_INET6, link->ifname, "mtu", link->network->ipv6_mtu); + mtu = link->network->ipv6_mtu; + if (mtu > link->max_mtu) { + log_link_warning(link, "Reducing requested IPv6 MTU %"PRIu32" to the interface's maximum MTU %"PRIu32".", + mtu, link->max_mtu); + mtu = link->max_mtu; + } + + return sysctl_write_ip_property_uint32(AF_INET6, link->ifname, "mtu", mtu); } static int link_set_ipv4_accept_local(Link *link) {