sd-dhcp-client: do not set fallback subnet mask if it is already set

This commit is contained in:
Yu Watanabe
2023-09-20 14:32:38 +09:00
parent 2ff1e23036
commit 8fc725052a
2 changed files with 11 additions and 14 deletions

View 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) {

View 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;