network: dhcp6pd: check if address is ready only when Assign=yes

This commit is contained in:
Yu Watanabe
2021-10-19 00:54:01 +09:00
parent d9098371df
commit 06d1105e54
+19 -15
View File
@@ -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;