From: Yu Watanabe Date: Mon, 27 May 2019 20:45:10 +0000 (+0900) Subject: network: do not send DHCPRELEASE when CriticalConnection= is enabled X-Git-Tag: v243-rc1~356^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F12573%2Fhead;p=thirdparty%2Fsystemd.git network: do not send DHCPRELEASE when CriticalConnection= is enabled --- diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 8bcd345731e..4ed020ea8e5 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -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; }