From 9e86dba94b4e6d13f2bd621f2017c5b0628800f7 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 12 Dec 2021 02:26:22 +0900 Subject: [PATCH] network: drop IPv6LL addresses manually configured in .network file --- src/network/networkd-address.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 7cd4d27c07..c4a666a908 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);