network: dhcp6: do not request address if UseAddress=no
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Jan 2022 11:56:40 +0000 (20:56 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 11 Jan 2022 17:05:12 +0000 (17:05 +0000)
Fixes #22068.

src/network/networkd-dhcp6.c

index 9e9036699331c116810da010f1567bf1a5cd80ac..e591043111df5e72166265d2eacf3dbfeea29a66 100644 (file)
@@ -646,9 +646,15 @@ static int dhcp6_configure(Link *link) {
 
         r = sd_dhcp6_client_set_prefix_delegation(client, link->network->dhcp6_use_pd_prefix);
         if (r < 0)
-                return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to %s prefix delegation: %m",
+                return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to %s requesting prefixes to be delegated: %m",
                                             enable_disable(link->network->dhcp6_use_pd_prefix));
 
+        /* Even if UseAddress=no, we need to request IA_NA, as the dhcp6 client may be started in managed mode. */
+        r = sd_dhcp6_client_set_address_request(client, link->network->dhcp6_use_pd_prefix ? link->network->dhcp6_use_address : true);
+        if (r < 0)
+                return log_link_debug_errno(link, r, "DHCPv6 CLIENT: Failed to %s requesting address: %m",
+                                            enable_disable(link->network->dhcp6_use_address));
+
         if (link->network->dhcp6_pd_prefix_length > 0) {
                 r = sd_dhcp6_client_set_prefix_delegation_hint(client,
                                                                link->network->dhcp6_pd_prefix_length,