]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: do not send DHCPRELEASE when CriticalConnection= is enabled 12573/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 27 May 2019 20:45:10 +0000 (05:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 28 May 2019 13:21:25 +0000 (22:21 +0900)
src/network/networkd-dhcp4.c

index 8bcd345731e338a06da00fbfc8c4a77e042c0bf5..4ed020ea8e59b5f9e9bac8605ec03a2371387127 100644 (file)
@@ -649,15 +649,28 @@ 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 (link->network->dhcp_critical) {
+                                log_link_notice(link, "DHCPv4 connection considered critical, ignoring request to reconfigure it.");
+                                return 0;
+                        }
+
                         if (link->network->dhcp_send_release)
                                 (void) sd_dhcp_client_send_release(client);
 
-                        _fallthrough_;
+                        if (link->dhcp_lease) {
+                                r = dhcp_lease_lost(link);
+                                if (r < 0) {
+                                        link_enter_failed(link);
+                                        return r;
+                                }
+                        }
+
+                        break;
                 case SD_DHCP_CLIENT_EVENT_EXPIRED:
                 case SD_DHCP_CLIENT_EVENT_IP_CHANGE:
 
                         if (link->network->dhcp_critical) {
-                                log_link_notice(link, "DHCPv4 connection considered system critical, ignoring request to reconfigure it.");
+                                log_link_notice(link, "DHCPv4 connection considered critical, ignoring request to reconfigure it.");
                                 return 0;
                         }