]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: dhcp6pd: check if address is ready only when Assign=yes 21038/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 14 Oct 2021 20:37:18 +0000 (05:37 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 18 Oct 2021 15:54:01 +0000 (00:54 +0900)
src/network/networkd-dhcp6.c

index da8a882072c07d8bfd976ca0abff19c788d3d2d8..35cb0ea9a539de001ed029bcb54a18c0d44d7f5a 100644 (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;