From: David Härdeman Date: Thu, 20 Nov 2025 12:51:25 +0000 (+0100) Subject: dhcpv4: remove iface->dhcpv4_bcast X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=af0c94063e66ca8f42650a64b83e89bfcd0ab6d9;p=project%2Fodhcpd.git dhcpv4: remove iface->dhcpv4_bcast This is also covered by iface->dhcpv4_own_ip Signed-off-by: David Härdeman Link: https://github.com/openwrt/odhcpd/pull/320 Signed-off-by: Álvaro Fernández Rojas --- diff --git a/src/dhcpv4.c b/src/dhcpv4.c index 194959b..f2b7da9 100644 --- a/src/dhcpv4.c +++ b/src/dhcpv4.c @@ -603,8 +603,8 @@ dhcpv4_lease(struct interface *iface, enum dhcpv4_msg req_msg, const uint8_t *re return NULL; /* Old lease, but with an address that is out-of-scope? */ - if (lease && ((lease->ipv4.s_addr & iface->dhcpv4_local.netmask) != - (iface->dhcpv4_start_ip.s_addr & iface->dhcpv4_local.netmask)) && + if (lease && ((lease->ipv4.s_addr & iface->dhcpv4_own_ip.netmask) != + (iface->dhcpv4_start_ip.s_addr & iface->dhcpv4_own_ip.netmask)) && !(lease->flags & OAF_STATIC)) { /* Try to reassign to an address that is in-scope */ avl_delete(&iface->dhcpv4_leases, &lease->iface_avl); @@ -1073,8 +1073,8 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len, reply_serverid.data = fr_serverid; if (req->ciaddr.s_addr && - ((iface->dhcpv4_start_ip.s_addr & iface->dhcpv4_local.netmask) != - (req->ciaddr.s_addr & iface->dhcpv4_local.netmask))) + ((iface->dhcpv4_start_ip.s_addr & iface->dhcpv4_own_ip.netmask) != + (req->ciaddr.s_addr & iface->dhcpv4_own_ip.netmask))) req->ciaddr.s_addr = INADDR_ANY; } break; @@ -1088,7 +1088,7 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len, case DHCPV4_OPT_NETMASK: if (!lease) break; - reply_netmask.data = iface->dhcpv4_local.netmask; + reply_netmask.data = iface->dhcpv4_own_ip.netmask; iov[IOV_NETMASK].iov_len = sizeof(reply_netmask); break; @@ -1139,9 +1139,9 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len, break; case DHCPV4_OPT_BROADCAST: - if (!lease || iface->dhcpv4_bcast.s_addr == INADDR_ANY) + if (!lease || iface->dhcpv4_own_ip.broadcast.s_addr == INADDR_ANY) break; - reply_broadcast.data = iface->dhcpv4_bcast.s_addr; + reply_broadcast.data = iface->dhcpv4_own_ip.broadcast.s_addr; iov[IOV_BROADCAST].iov_len = sizeof(reply_broadcast); break; @@ -1360,15 +1360,12 @@ static bool dhcpv4_setup_addresses(struct interface *iface) iface->dhcpv4_start_ip.s_addr = INADDR_ANY; iface->dhcpv4_end_ip.s_addr = INADDR_ANY; iface->dhcpv4_own_ip = (struct odhcpd_ipaddr){ .addr.in.s_addr = INADDR_ANY }; - iface->dhcpv4_bcast.s_addr = INADDR_ANY; if (iface->no_dynamic_dhcp) { if (!iface->oaddrs4_cnt) goto error; iface->dhcpv4_own_ip = iface->oaddrs4[0]; - iface->dhcpv4_bcast = iface->oaddrs4[0].broadcast; - info("DHCPv4: providing static leases on interface '%s'", iface->name); return true; } @@ -1425,7 +1422,6 @@ static bool dhcpv4_setup_addresses(struct interface *iface) iface->dhcpv4_start_ip.s_addr = (oaddr->addr.in.s_addr & oaddr->netmask) | htonl(pool_start); iface->dhcpv4_end_ip.s_addr = (oaddr->addr.in.s_addr & oaddr->netmask) | htonl(pool_end); iface->dhcpv4_own_ip = *oaddr; - iface->dhcpv4_bcast = oaddr->broadcast; info("DHCPv4: providing dynamic/static leases on interface '%s', pool: %s - %s", iface->name, inet_ntop(AF_INET, &iface->dhcpv4_start_ip, pool_start_str, sizeof(pool_start_str)), diff --git a/src/odhcpd.h b/src/odhcpd.h index 1de9ffd..2340655 100644 --- a/src/odhcpd.h +++ b/src/odhcpd.h @@ -447,7 +447,6 @@ struct interface { struct in_addr dhcpv4_start_ip; struct in_addr dhcpv4_end_ip; struct odhcpd_ipaddr dhcpv4_own_ip; - struct in_addr dhcpv4_bcast; struct in_addr *dhcpv4_router; size_t dhcpv4_router_cnt; struct in_addr *dhcpv4_dns;