chiark / gitweb /
networkd: address - add support for broadcast
[elogind.git] / src / network / networkd-link.c
index d9622ac4b71df70a67f50f9fa5db801bb0c44602..dec33e88eec71832bd0f8c899d43fb2087efc7d3 100644 (file)
@@ -443,6 +443,12 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
 
         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);
 
@@ -534,7 +540,7 @@ static void dhcp_handler(sd_dhcp_client *client, int event, void *userdata) {
                 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) {