From: Yu Watanabe Date: Fri, 22 Dec 2023 16:32:44 +0000 (+0900) Subject: network/address: move post-processes on address removal to address_drop() X-Git-Tag: v256-rc1~1380^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F30631%2Fhead;p=thirdparty%2Fsystemd.git network/address: move post-processes on address removal to address_drop() For consistency with other follow-up processes after address removal. No functional change, just refactoring and preparation for later commits. --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 629c4d697f9..f95a138a2e3 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -206,16 +206,9 @@ Address *address_free(Address *address) { address->network->dhcp_server_address = NULL; } - if (address->link) { + if (address->link) set_remove(address->link->addresses, address); - if (address->family == AF_INET6 && - in6_addr_equal(&address->in_addr.in6, &address->link->ipv6ll_address)) - memzero(&address->link->ipv6ll_address, sizeof(struct in6_addr)); - - ipv4acd_detach(address->link, address); - } - config_section_free(address->section); free(address->label); free(address->netlabel); @@ -781,6 +774,13 @@ static int address_drop(Address *address) { address_del_netlabel(address); + /* FIXME: if the IPv6LL address is dropped, stop DHCPv6, NDISC, RADV. */ + if (address->family == AF_INET6 && + in6_addr_equal(&address->in_addr.in6, &link->ipv6ll_address)) + link->ipv6ll_address = (const struct in6_addr) {}; + + ipv4acd_detach(link, address); + address_free(address); link_update_operstate(link, /* also_update_master = */ true);