From: Yu Watanabe Date: Wed, 20 Sep 2023 05:32:38 +0000 (+0900) Subject: sd-dhcp-client: do not set fallback subnet mask if it is already set X-Git-Tag: v255-rc1~453^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fc725052a2abcc90657db88a76b2b418098a51d;p=thirdparty%2Fsystemd.git sd-dhcp-client: do not set fallback subnet mask if it is already set --- diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 03e7c728428..9490db9c978 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -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) { diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index e80425a34ea..db8ac7947ae 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -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;