]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: do not restart DHCPv6 client when it is already running in managed mode
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 7 Feb 2022 14:36:49 +0000 (23:36 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 14 Feb 2022 06:02:33 +0000 (15:02 +0900)
Otherwise, if a network has two router and one provides M flag and the
other provides O flag, then the DHCPv6 client switches the running mode
repeatedly. That makes the IPv6 network configuration of the host
unstable.

src/network/networkd-dhcp6.c

index ab51b7377da4d875e2b78f77557a551223589140..1293a4d913eebfe16943f157d6167d8ff8c97334 100644 (file)
@@ -432,8 +432,20 @@ int dhcp6_start_on_ra(Link *link, bool information_request) {
                         return r;
 
                 if (inf_req == information_request)
+                        /* The client is already running in the requested mode. */
                         return 0;
 
+                if (!inf_req) {
+                        log_link_debug(link,
+                                       "The DHCPv6 client is already running in the managed mode, "
+                                       "refusing to start the client in the information requesting mode.");
+                        return 0;
+                }
+
+                log_link_debug(link,
+                               "The DHCPv6 client is running in the information requesting mode. "
+                               "Restarting the client in the managed mode.");
+
                 r = sd_dhcp6_client_stop(link->dhcp6_client);
                 if (r < 0)
                         return r;