]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp-client: do not set fallback subnet mask if it is already set
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 20 Sep 2023 05:32:38 +0000 (14:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 22 Sep 2023 16:38:21 +0000 (01:38 +0900)
src/libsystemd-network/sd-dhcp-client.c
src/libsystemd-network/sd-dhcp-lease.c

index 03e7c7284281cfbf911d15f8c824dc7246ba7dc0..9490db9c9781c8b619158b37512247dbb79df670 100644 (file)
@@ -1579,13 +1579,10 @@ static int client_handle_offer(sd_dhcp_client *client, DHCPMessage *offer, size_
                 return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(ENOMSG),
                                              "received lease lacks address, server address or lease lifetime, ignoring");
 
-        if (!lease->have_subnet_mask) {
-                r = dhcp_lease_set_default_subnet_mask(lease);
-                if (r < 0)
-                        return log_dhcp_client_errno(
-                                        client, SYNTHETIC_ERRNO(ENOMSG),
-                                        "received lease lacks subnet mask, and a fallback one cannot be generated, ignoring");
-        }
+        r = dhcp_lease_set_default_subnet_mask(lease);
+        if (r < 0)
+                return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(ENOMSG),
+                                             "received lease lacks subnet mask, and a fallback one cannot be generated, ignoring.");
 
         sd_dhcp_lease_unref(client->lease);
         client->lease = TAKE_PTR(lease);
@@ -1684,13 +1681,10 @@ static int client_handle_ack(sd_dhcp_client *client, DHCPMessage *ack, size_t le
                 return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(ENOMSG),
                                              "received lease lacks address, server address or lease lifetime, ignoring");
 
-        if (lease->subnet_mask == INADDR_ANY) {
-                r = dhcp_lease_set_default_subnet_mask(lease);
-                if (r < 0)
-                        return log_dhcp_client_errno(
-                                        client, SYNTHETIC_ERRNO(ENOMSG),
-                                        "received lease lacks subnet mask, and a fallback one cannot be generated, ignoring");
-        }
+        r = dhcp_lease_set_default_subnet_mask(lease);
+        if (r < 0)
+                return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(ENOMSG),
+                                             "received lease lacks subnet mask, and a fallback one cannot be generated, ignoring.");
 
         r = SD_DHCP_CLIENT_EVENT_IP_ACQUIRE;
         if (client->lease) {
index e80425a34eada632105763e80cbd984f27b1eb0b..db8ac7947ae6301bcf8f1f7a80f5dfd2fe1ba691 100644 (file)
@@ -1490,6 +1490,9 @@ int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease *lease) {
 
         assert(lease);
 
+        if (lease->have_subnet_mask)
+                return 0;
+
         if (lease->address == 0)
                 return -ENODATA;