From 06d1105e5431753583aae45ea99a26a578f45f6b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 15 Oct 2021 05:37:18 +0900 Subject: [PATCH] network: dhcp6pd: check if address is ready only when Assign=yes --- src/network/networkd-dhcp6.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index da8a882072c..35cb0ea9a53 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -221,33 +221,37 @@ static int dhcp6_pd_address_ready_callback(Address *address) { } static int dhcp6_pd_check_ready(Link *link) { - bool has_ready = false; - Address *address; int r; assert(link); + assert(link->network); if (link->dhcp6_pd_messages > 0) { log_link_debug(link, "%s(): DHCPv6PD addresses and routes are not set.", __func__); return 0; } - SET_FOREACH(address, link->addresses) { - if (address->source != NETWORK_CONFIG_SOURCE_DHCP6PD) - continue; - if (address_is_ready(address)) { - has_ready = true; - break; + if (link->network->dhcp6_pd_assign) { + bool has_ready = false; + Address *address; + + SET_FOREACH(address, link->addresses) { + if (address->source != NETWORK_CONFIG_SOURCE_DHCP6PD) + continue; + if (address_is_ready(address)) { + has_ready = true; + break; + } } - } - if (!has_ready) { - SET_FOREACH(address, link->addresses) - if (address->source == NETWORK_CONFIG_SOURCE_DHCP6PD) - address->callback = dhcp6_pd_address_ready_callback; + if (!has_ready) { + SET_FOREACH(address, link->addresses) + if (address->source == NETWORK_CONFIG_SOURCE_DHCP6PD) + address->callback = dhcp6_pd_address_ready_callback; - log_link_debug(link, "%s(): no DHCPv6PD address is ready.", __func__); - return 0; + log_link_debug(link, "%s(): no DHCPv6PD address is ready.", __func__); + return 0; + } } link->dhcp6_pd_configured = true; -- 2.47.3