From: Yu Watanabe Date: Sat, 11 Dec 2021 17:26:22 +0000 (+0900) Subject: network: drop IPv6LL addresses manually configured in .network file X-Git-Tag: v250-rc3~33^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e86dba94b4e6d13f2bd621f2017c5b0628800f7;p=thirdparty%2Fsystemd.git network: drop IPv6LL addresses manually configured in .network file --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 7cd4d27c074..c4a666a908c 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -895,8 +895,11 @@ int link_drop_addresses(Link *link) { if (!address_exists(address)) continue; - /* We consider IPv6LL addresses to be managed by the kernel, or dropped in link_drop_ipv6ll_addresses() */ - if (address->family == AF_INET6 && in6_addr_is_link_local(&address->in_addr.in6)) + /* Do not drop IPv6LL addresses assigned by the kernel here. They will be dropped in + * link_drop_ipv6ll_addresses() if IPv6LL addressing is disabled. */ + if (address->source == NETWORK_CONFIG_SOURCE_FOREIGN && + address->family == AF_INET6 && + in6_addr_is_link_local(&address->in_addr.in6)) continue; k = address_remove(address);