mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
sd-dhcp-client: do not set fallback subnet mask if it is already set
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user