]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/dhcp4: do not restart IPv4LL client when KeepConfiguration=dhcp
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 1 Nov 2024 14:52:58 +0000 (23:52 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 2 Nov 2024 13:42:01 +0000 (22:42 +0900)
When KeepConfiguration=dhcp, we do not remove acquired address, hence
not necessary to restart IPv4LL client.

src/network/networkd-dhcp4.c

index bda3a561d940d521d6be5bf951ef885c4d97c2a9..19b9a3ecba4445f6d1dfcb32772989dfe75c6625 100644 (file)
@@ -1168,6 +1168,11 @@ static int dhcp4_handler(sd_dhcp_client *client, int event, void *userdata) {
 
         switch (event) {
                 case SD_DHCP_CLIENT_EVENT_STOP:
+                        if (FLAGS_SET(link->network->keep_configuration, KEEP_CONFIGURATION_DHCP)) {
+                                log_link_notice(link, "DHCPv4 connection considered critical, ignoring request to reconfigure it.");
+                                return 0;
+                        }
+
                         if (link->ipv4ll) {
                                 log_link_debug(link, "DHCP client is stopped. Acquiring IPv4 link-local address");
 
@@ -1182,11 +1187,6 @@ static int dhcp4_handler(sd_dhcp_client *client, int event, void *userdata) {
                                         return log_link_warning_errno(link, r, "Could not acquire IPv4 link-local address: %m");
                         }
 
-                        if (FLAGS_SET(link->network->keep_configuration, KEEP_CONFIGURATION_DHCP)) {
-                                log_link_notice(link, "DHCPv4 connection considered critical, ignoring request to reconfigure it.");
-                                return 0;
-                        }
-
                         if (link->dhcp_lease) {
                                 if (link->network->dhcp_send_release) {
                                         r = sd_dhcp_client_send_release(client);