if (event == DHCP_EVENT_IP_CHANGE || event == DHCP_EVENT_EXPIRED ||
event == DHCP_EVENT_STOP) {
+ if (link->network->dhcp_critical) {
+ log_warning_link(link, "DHCPv4 connection considered system critical, "
+ "ignoring request to reconfigure it down.");
+ return;
+ }
+
if (link->dhcp_address) {
address_drop(link->dhcp_address, link, address_drop_handler);
addr->family = AF_INET;
addr->in_addr.in = address;
addr->prefixlen = prefixlen;
- addr->netmask = netmask;
+ addr->broadcast.s_addr = address.s_addr | ~netmask.s_addr;
r = route_new_dynamic(&rt);
if (r < 0) {