aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/dhcpd.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2019-05-10 15:55:12 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2019-05-10 15:55:12 +0200
commit15021f393d3d19d689028fceb5c35da930059430 (patch)
tree262ab061ef238b5480933fd3cf3bec26036c29e6 /networking/udhcp/dhcpd.c
parent94f607a9045481b614cac1b319bd435af01b8860 (diff)
downloadbusybox-w32-15021f393d3d19d689028fceb5c35da930059430.tar.gz
busybox-w32-15021f393d3d19d689028fceb5c35da930059430.tar.bz2
busybox-w32-15021f393d3d19d689028fceb5c35da930059430.zip
udhcpd: code shrink
function old new delta is_nip_reserved_as_static - 28 +28 get_static_nip_by_mac 43 47 +4 udhcpd_main 1459 1454 -5 send_offer 449 444 -5 read_leases 309 299 -10 is_nip_reserved 20 - -20 packed_usage 33283 33243 -40 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 1/4 up/down: 32/-80) Total: -48 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to '')
-rw-r--r--networking/udhcp/dhcpd.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index d248d2b67..c46e1721e 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -70,8 +70,10 @@ static void add_static_lease(struct static_lease **st_lease_pp,
70} 70}
71 71
72/* Find static lease IP by mac */ 72/* Find static lease IP by mac */
73static uint32_t get_static_nip_by_mac(struct static_lease *st_lease, void *mac) 73static uint32_t get_static_nip_by_mac(void *mac)
74{ 74{
75 struct static_lease *st_lease = server_config.static_leases;
76
75 while (st_lease) { 77 while (st_lease) {
76 if (memcmp(st_lease->mac, mac, 6) == 0) 78 if (memcmp(st_lease->mac, mac, 6) == 0)
77 return st_lease->nip; 79 return st_lease->nip;
@@ -81,8 +83,10 @@ static uint32_t get_static_nip_by_mac(struct static_lease *st_lease, void *mac)
81 return 0; 83 return 0;
82} 84}
83 85
84static int is_nip_reserved(struct static_lease *st_lease, uint32_t nip) 86static int is_nip_reserved_as_static(uint32_t nip)
85{ 87{
88 struct static_lease *st_lease = server_config.static_leases;
89
86 while (st_lease) { 90 while (st_lease) {
87 if (st_lease->nip == nip) 91 if (st_lease->nip == nip)
88 return 1; 92 return 1;
@@ -288,7 +292,7 @@ static uint32_t find_free_or_expired_nip(const uint8_t *safe_mac, unsigned arppi
288 if (nip == server_config.server_nip) 292 if (nip == server_config.server_nip)
289 goto next_addr; 293 goto next_addr;
290 /* is this a static lease addr? */ 294 /* is this a static lease addr? */
291 if (is_nip_reserved(server_config.static_leases, nip)) 295 if (is_nip_reserved_as_static(nip))
292 goto next_addr; 296 goto next_addr;
293 297
294 lease = find_lease_by_nip(nip); 298 lease = find_lease_by_nip(nip);
@@ -518,13 +522,13 @@ static NOINLINE void read_leases(const char *file)
518 expires = 0; 522 expires = 0;
519 523
520 /* Check if there is a different static lease for this IP or MAC */ 524 /* Check if there is a different static lease for this IP or MAC */
521 static_nip = get_static_nip_by_mac(server_config.static_leases, lease.lease_mac); 525 static_nip = get_static_nip_by_mac(lease.lease_mac);
522 if (static_nip) { 526 if (static_nip) {
523 /* NB: we do not add lease even if static_nip == lease.lease_nip. 527 /* NB: we do not add lease even if static_nip == lease.lease_nip.
524 */ 528 */
525 continue; 529 continue;
526 } 530 }
527 if (is_nip_reserved(server_config.static_leases, lease.lease_nip)) 531 if (is_nip_reserved_as_static(lease.lease_nip))
528 continue; 532 continue;
529 533
530 /* NB: add_lease takes "relative time", IOW, 534 /* NB: add_lease takes "relative time", IOW,
@@ -999,7 +1003,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
999 } 1003 }
1000 1004
1001 /* Look for a static/dynamic lease */ 1005 /* Look for a static/dynamic lease */
1002 static_lease_nip = get_static_nip_by_mac(server_config.static_leases, &packet.chaddr); 1006 static_lease_nip = get_static_nip_by_mac(&packet.chaddr);
1003 if (static_lease_nip) { 1007 if (static_lease_nip) {
1004 bb_info_msg("found static lease: %x", static_lease_nip); 1008 bb_info_msg("found static lease: %x", static_lease_nip);
1005 memcpy(&fake_lease.lease_mac, &packet.chaddr, 6); 1009 memcpy(&fake_lease.lease_mac, &packet.chaddr, 6);