From: Yu Watanabe Date: Wed, 15 Apr 2026 18:02:27 +0000 (+0900) Subject: sd-dhcp-lease: drop sd_dhcp_lease.have_subnet_mask and have_broadcast X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=25482d832c00b084c65fe0f541d0203cdb11dfad;p=thirdparty%2Fsystemd.git sd-dhcp-lease: drop sd_dhcp_lease.have_subnet_mask and have_broadcast NULL address is invalid in both cases. Let's refuse to use them when NULL. --- diff --git a/src/libsystemd-network/dhcp-lease-internal.h b/src/libsystemd-network/dhcp-lease-internal.h index 3f5d638d67d..b436287aeed 100644 --- a/src/libsystemd-network/dhcp-lease-internal.h +++ b/src/libsystemd-network/dhcp-lease-internal.h @@ -40,11 +40,7 @@ struct sd_dhcp_lease { be32_t address; be32_t server_address; be32_t next_server; - - bool have_subnet_mask; be32_t subnet_mask; - - bool have_broadcast; be32_t broadcast; struct in_addr *router; diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index 1eec439d810..bfe4874be5a 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -69,7 +69,7 @@ int sd_dhcp_lease_get_broadcast(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); - if (!lease->have_broadcast) + if (lease->broadcast == INADDR_ANY) return -ENODATA; addr->s_addr = lease->broadcast; @@ -259,7 +259,7 @@ int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); - if (!lease->have_subnet_mask) + if (lease->subnet_mask == INADDR_ANY) return -ENODATA; addr->s_addr = lease->subnet_mask; @@ -920,16 +920,12 @@ int dhcp_lease_parse_options(uint8_t code, uint8_t len, const void *option, void r = lease_parse_be32(option, len, &lease->subnet_mask); if (r < 0) log_debug_errno(r, "Failed to parse subnet mask, ignoring: %m"); - else - lease->have_subnet_mask = true; break; case SD_DHCP_OPTION_BROADCAST: r = lease_parse_be32(option, len, &lease->broadcast); if (r < 0) log_debug_errno(r, "Failed to parse broadcast address, ignoring: %m"); - else - lease->have_broadcast = true; break; case SD_DHCP_OPTION_ROUTER: @@ -1579,8 +1575,6 @@ int dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file) { r = inet_pton(AF_INET, netmask, &lease->subnet_mask); if (r <= 0) log_debug("Failed to parse netmask %s, ignoring.", netmask); - else - lease->have_subnet_mask = true; } if (server_address) { @@ -1599,8 +1593,6 @@ int dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file) { r = inet_pton(AF_INET, broadcast, &lease->broadcast); if (r <= 0) log_debug("Failed to parse broadcast address %s, ignoring.", broadcast); - else - lease->have_broadcast = true; } if (dns) { @@ -1759,7 +1751,7 @@ int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease *lease) { assert(lease); - if (lease->have_subnet_mask) + if (lease->subnet_mask != INADDR_ANY) return 0; if (lease->address == 0) @@ -1773,7 +1765,6 @@ int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease *lease) { return r; lease->subnet_mask = mask.s_addr; - lease->have_subnet_mask = true; return 0; }