diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-05-30 16:23:34 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-05-30 16:23:34 +0200 |
commit | 91755cb16d496d1094f5d81051a1e1e6f27a21c1 (patch) | |
tree | ce34e7c2ccb494afd2ed68e53dec718976f155dc | |
parent | 726cbb1be8620496cdf05d23bd98bdeb0983b4f0 (diff) | |
download | busybox-w32-91755cb16d496d1094f5d81051a1e1e6f27a21c1.tar.gz busybox-w32-91755cb16d496d1094f5d81051a1e1e6f27a21c1.tar.bz2 busybox-w32-91755cb16d496d1094f5d81051a1e1e6f27a21c1.zip |
udhcp: rename server_config to server_data
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | networking/udhcp/dhcpd.c | 150 | ||||
-rw-r--r-- | networking/udhcp/dhcpd.h | 8 |
2 files changed, 79 insertions, 79 deletions
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c index 058f86bca..6e426e6a2 100644 --- a/networking/udhcp/dhcpd.c +++ b/networking/udhcp/dhcpd.c | |||
@@ -46,7 +46,7 @@ | |||
46 | 46 | ||
47 | /* globals */ | 47 | /* globals */ |
48 | #define g_leases ((struct dyn_lease*)ptr_to_globals) | 48 | #define g_leases ((struct dyn_lease*)ptr_to_globals) |
49 | /* struct server_config_t server_config is in bb_common_bufsiz1 */ | 49 | /* struct server_data_t server_data is in bb_common_bufsiz1 */ |
50 | 50 | ||
51 | struct static_lease { | 51 | struct static_lease { |
52 | struct static_lease *next; | 52 | struct static_lease *next; |
@@ -100,7 +100,7 @@ static void add_static_lease(struct static_lease **st_lease_pp, | |||
100 | /* Find static lease IP by mac */ | 100 | /* Find static lease IP by mac */ |
101 | static uint32_t get_static_nip_by_mac(void *mac) | 101 | static uint32_t get_static_nip_by_mac(void *mac) |
102 | { | 102 | { |
103 | struct static_lease *st_lease = server_config.static_leases; | 103 | struct static_lease *st_lease = server_data.static_leases; |
104 | 104 | ||
105 | while (st_lease) { | 105 | while (st_lease) { |
106 | if (memcmp(st_lease->mac, mac, 6) == 0) | 106 | if (memcmp(st_lease->mac, mac, 6) == 0) |
@@ -113,7 +113,7 @@ static uint32_t get_static_nip_by_mac(void *mac) | |||
113 | 113 | ||
114 | static int is_nip_reserved_as_static(uint32_t nip) | 114 | static int is_nip_reserved_as_static(uint32_t nip) |
115 | { | 115 | { |
116 | struct static_lease *st_lease = server_config.static_leases; | 116 | struct static_lease *st_lease = server_data.static_leases; |
117 | 117 | ||
118 | while (st_lease) { | 118 | while (st_lease) { |
119 | if (st_lease->nip == nip) | 119 | if (st_lease->nip == nip) |
@@ -133,7 +133,7 @@ static struct dyn_lease *oldest_expired_lease(void) | |||
133 | 133 | ||
134 | /* Unexpired leases have g_leases[i].expires >= current time | 134 | /* Unexpired leases have g_leases[i].expires >= current time |
135 | * and therefore can't ever match */ | 135 | * and therefore can't ever match */ |
136 | for (i = 0; i < server_config.max_leases; i++) { | 136 | for (i = 0; i < server_data.max_leases; i++) { |
137 | if (g_leases[i].expires == 0 /* empty entry */ | 137 | if (g_leases[i].expires == 0 /* empty entry */ |
138 | || g_leases[i].expires < oldest_time | 138 | || g_leases[i].expires < oldest_time |
139 | ) { | 139 | ) { |
@@ -151,7 +151,7 @@ static void clear_leases(const uint8_t *chaddr, uint32_t yiaddr) | |||
151 | { | 151 | { |
152 | unsigned i; | 152 | unsigned i; |
153 | 153 | ||
154 | for (i = 0; i < server_config.max_leases; i++) { | 154 | for (i = 0; i < server_data.max_leases; i++) { |
155 | if ((chaddr && memcmp(g_leases[i].lease_mac, chaddr, 6) == 0) | 155 | if ((chaddr && memcmp(g_leases[i].lease_mac, chaddr, 6) == 0) |
156 | || (yiaddr && g_leases[i].lease_nip == yiaddr) | 156 | || (yiaddr && g_leases[i].lease_nip == yiaddr) |
157 | ) { | 157 | ) { |
@@ -216,7 +216,7 @@ static struct dyn_lease *find_lease_by_mac(const uint8_t *mac) | |||
216 | { | 216 | { |
217 | unsigned i; | 217 | unsigned i; |
218 | 218 | ||
219 | for (i = 0; i < server_config.max_leases; i++) | 219 | for (i = 0; i < server_data.max_leases; i++) |
220 | if (memcmp(g_leases[i].lease_mac, mac, 6) == 0) | 220 | if (memcmp(g_leases[i].lease_mac, mac, 6) == 0) |
221 | return &g_leases[i]; | 221 | return &g_leases[i]; |
222 | 222 | ||
@@ -228,7 +228,7 @@ static struct dyn_lease *find_lease_by_nip(uint32_t nip) | |||
228 | { | 228 | { |
229 | unsigned i; | 229 | unsigned i; |
230 | 230 | ||
231 | for (i = 0; i < server_config.max_leases; i++) | 231 | for (i = 0; i < server_data.max_leases; i++) |
232 | if (g_leases[i].lease_nip == nip) | 232 | if (g_leases[i].lease_nip == nip) |
233 | return &g_leases[i]; | 233 | return &g_leases[i]; |
234 | 234 | ||
@@ -242,17 +242,17 @@ static int nobody_responds_to_arp(uint32_t nip, const uint8_t *safe_mac, unsigne | |||
242 | int r; | 242 | int r; |
243 | 243 | ||
244 | r = arpping(nip, safe_mac, | 244 | r = arpping(nip, safe_mac, |
245 | server_config.server_nip, | 245 | server_data.server_nip, |
246 | server_config.server_mac, | 246 | server_data.server_mac, |
247 | server_config.interface, | 247 | server_data.interface, |
248 | arpping_ms); | 248 | arpping_ms); |
249 | if (r) | 249 | if (r) |
250 | return r; | 250 | return r; |
251 | 251 | ||
252 | temp.s_addr = nip; | 252 | temp.s_addr = nip; |
253 | bb_info_msg("%s belongs to someone, reserving it for %u seconds", | 253 | bb_info_msg("%s belongs to someone, reserving it for %u seconds", |
254 | inet_ntoa(temp), (unsigned)server_config.conflict_time); | 254 | inet_ntoa(temp), (unsigned)server_data.conflict_time); |
255 | add_lease(NULL, nip, server_config.conflict_time, NULL, 0); | 255 | add_lease(NULL, nip, server_data.conflict_time, NULL, 0); |
256 | return 0; | 256 | return 0; |
257 | } | 257 | } |
258 | 258 | ||
@@ -274,12 +274,12 @@ static uint32_t find_free_or_expired_nip(const uint8_t *safe_mac, unsigned arppi | |||
274 | hash += safe_mac[i] + (hash << 6) + (hash << 16) - hash; | 274 | hash += safe_mac[i] + (hash << 6) + (hash << 16) - hash; |
275 | 275 | ||
276 | /* pick a seed based on hwaddr then iterate until we find a free address. */ | 276 | /* pick a seed based on hwaddr then iterate until we find a free address. */ |
277 | addr = server_config.start_ip | 277 | addr = server_data.start_ip |
278 | + (hash % (1 + server_config.end_ip - server_config.start_ip)); | 278 | + (hash % (1 + server_data.end_ip - server_data.start_ip)); |
279 | stop = addr; | 279 | stop = addr; |
280 | #else | 280 | #else |
281 | addr = server_config.start_ip; | 281 | addr = server_data.start_ip; |
282 | #define stop (server_config.end_ip + 1) | 282 | #define stop (server_data.end_ip + 1) |
283 | #endif | 283 | #endif |
284 | do { | 284 | do { |
285 | uint32_t nip; | 285 | uint32_t nip; |
@@ -293,7 +293,7 @@ static uint32_t find_free_or_expired_nip(const uint8_t *safe_mac, unsigned arppi | |||
293 | goto next_addr; | 293 | goto next_addr; |
294 | nip = htonl(addr); | 294 | nip = htonl(addr); |
295 | /* skip our own address */ | 295 | /* skip our own address */ |
296 | if (nip == server_config.server_nip) | 296 | if (nip == server_data.server_nip) |
297 | goto next_addr; | 297 | goto next_addr; |
298 | /* is this a static lease addr? */ | 298 | /* is this a static lease addr? */ |
299 | if (is_nip_reserved_as_static(nip)) | 299 | if (is_nip_reserved_as_static(nip)) |
@@ -312,8 +312,8 @@ static uint32_t find_free_or_expired_nip(const uint8_t *safe_mac, unsigned arppi | |||
312 | next_addr: | 312 | next_addr: |
313 | addr++; | 313 | addr++; |
314 | #if ENABLE_FEATURE_UDHCPD_BASE_IP_ON_MAC | 314 | #if ENABLE_FEATURE_UDHCPD_BASE_IP_ON_MAC |
315 | if (addr > server_config.end_ip) | 315 | if (addr > server_data.end_ip) |
316 | addr = server_config.start_ip; | 316 | addr = server_data.start_ip; |
317 | #endif | 317 | #endif |
318 | } while (addr != stop); | 318 | } while (addr != stop); |
319 | 319 | ||
@@ -386,7 +386,7 @@ struct config_keyword { | |||
386 | const char *def; | 386 | const char *def; |
387 | }; | 387 | }; |
388 | 388 | ||
389 | #define OFS(field) offsetof(struct server_config_t, field) | 389 | #define OFS(field) offsetof(struct server_data_t, field) |
390 | 390 | ||
391 | static const struct config_keyword keywords[] = { | 391 | static const struct config_keyword keywords[] = { |
392 | /* keyword handler variable address default */ | 392 | /* keyword handler variable address default */ |
@@ -422,17 +422,17 @@ static NOINLINE void read_config(const char *file) | |||
422 | char *token[2]; | 422 | char *token[2]; |
423 | 423 | ||
424 | for (i = 0; i < KWS_WITH_DEFAULTS; i++) | 424 | for (i = 0; i < KWS_WITH_DEFAULTS; i++) |
425 | keywords[i].handler(keywords[i].def, (char*)&server_config + keywords[i].ofs); | 425 | keywords[i].handler(keywords[i].def, (char*)&server_data + keywords[i].ofs); |
426 | 426 | ||
427 | parser = config_open(file); | 427 | parser = config_open(file); |
428 | while (config_read(parser, token, 2, 2, "# \t", PARSE_NORMAL)) { | 428 | while (config_read(parser, token, 2, 2, "# \t", PARSE_NORMAL)) { |
429 | for (k = keywords, i = 0; i < ARRAY_SIZE(keywords); k++, i++) { | 429 | for (k = keywords, i = 0; i < ARRAY_SIZE(keywords); k++, i++) { |
430 | if (strcasecmp(token[0], k->keyword) == 0) { | 430 | if (strcasecmp(token[0], k->keyword) == 0) { |
431 | if (!k->handler(token[1], (char*)&server_config + k->ofs)) { | 431 | if (!k->handler(token[1], (char*)&server_data + k->ofs)) { |
432 | bb_error_msg("can't parse line %u in %s", | 432 | bb_error_msg("can't parse line %u in %s", |
433 | parser->lineno, file); | 433 | parser->lineno, file); |
434 | /* reset back to the default value */ | 434 | /* reset back to the default value */ |
435 | k->handler(k->def, (char*)&server_config + k->ofs); | 435 | k->handler(k->def, (char*)&server_data + k->ofs); |
436 | } | 436 | } |
437 | break; | 437 | break; |
438 | } | 438 | } |
@@ -440,8 +440,8 @@ static NOINLINE void read_config(const char *file) | |||
440 | } | 440 | } |
441 | config_close(parser); | 441 | config_close(parser); |
442 | 442 | ||
443 | server_config.start_ip = ntohl(server_config.start_ip); | 443 | server_data.start_ip = ntohl(server_data.start_ip); |
444 | server_config.end_ip = ntohl(server_config.end_ip); | 444 | server_data.end_ip = ntohl(server_data.end_ip); |
445 | } | 445 | } |
446 | 446 | ||
447 | static void write_leases(void) | 447 | static void write_leases(void) |
@@ -451,7 +451,7 @@ static void write_leases(void) | |||
451 | leasetime_t curr; | 451 | leasetime_t curr; |
452 | int64_t written_at; | 452 | int64_t written_at; |
453 | 453 | ||
454 | fd = open_or_warn(server_config.lease_file, O_WRONLY|O_CREAT|O_TRUNC); | 454 | fd = open_or_warn(server_data.lease_file, O_WRONLY|O_CREAT|O_TRUNC); |
455 | if (fd < 0) | 455 | if (fd < 0) |
456 | return; | 456 | return; |
457 | 457 | ||
@@ -460,7 +460,7 @@ static void write_leases(void) | |||
460 | written_at = SWAP_BE64(written_at); | 460 | written_at = SWAP_BE64(written_at); |
461 | full_write(fd, &written_at, sizeof(written_at)); | 461 | full_write(fd, &written_at, sizeof(written_at)); |
462 | 462 | ||
463 | for (i = 0; i < server_config.max_leases; i++) { | 463 | for (i = 0; i < server_data.max_leases; i++) { |
464 | leasetime_t tmp_time; | 464 | leasetime_t tmp_time; |
465 | 465 | ||
466 | if (g_leases[i].lease_nip == 0) | 466 | if (g_leases[i].lease_nip == 0) |
@@ -483,10 +483,10 @@ static void write_leases(void) | |||
483 | } | 483 | } |
484 | close(fd); | 484 | close(fd); |
485 | 485 | ||
486 | if (server_config.notify_file) { | 486 | if (server_data.notify_file) { |
487 | char *argv[3]; | 487 | char *argv[3]; |
488 | argv[0] = server_config.notify_file; | 488 | argv[0] = server_data.notify_file; |
489 | argv[1] = server_config.lease_file; | 489 | argv[1] = server_data.lease_file; |
490 | argv[2] = NULL; | 490 | argv[2] = NULL; |
491 | spawn_and_wait(argv); | 491 | spawn_and_wait(argv); |
492 | } | 492 | } |
@@ -517,7 +517,7 @@ static NOINLINE void read_leases(const char *file) | |||
517 | 517 | ||
518 | while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) { | 518 | while (full_read(fd, &lease, sizeof(lease)) == sizeof(lease)) { |
519 | uint32_t y = ntohl(lease.lease_nip); | 519 | uint32_t y = ntohl(lease.lease_nip); |
520 | if (y >= server_config.start_ip && y <= server_config.end_ip) { | 520 | if (y >= server_data.start_ip && y <= server_data.end_ip) { |
521 | signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed; | 521 | signed_leasetime_t expires = ntohl(lease.expires) - (signed_leasetime_t)time_passed; |
522 | uint32_t static_nip; | 522 | uint32_t static_nip; |
523 | 523 | ||
@@ -590,9 +590,9 @@ static void send_packet_to_client(struct dhcp_packet *dhcp_pkt, int force_broadc | |||
590 | } | 590 | } |
591 | 591 | ||
592 | udhcp_send_raw_packet(dhcp_pkt, | 592 | udhcp_send_raw_packet(dhcp_pkt, |
593 | /*src*/ server_config.server_nip, SERVER_PORT, | 593 | /*src*/ server_data.server_nip, SERVER_PORT, |
594 | /*dst*/ ciaddr, CLIENT_PORT, chaddr, | 594 | /*dst*/ ciaddr, CLIENT_PORT, chaddr, |
595 | server_config.ifindex); | 595 | server_data.ifindex); |
596 | } | 596 | } |
597 | 597 | ||
598 | /* Send a packet to gateway_nip using the kernel ip stack */ | 598 | /* Send a packet to gateway_nip using the kernel ip stack */ |
@@ -601,7 +601,7 @@ static void send_packet_to_relay(struct dhcp_packet *dhcp_pkt) | |||
601 | log1("forwarding packet to relay"); | 601 | log1("forwarding packet to relay"); |
602 | 602 | ||
603 | udhcp_send_kernel_packet(dhcp_pkt, | 603 | udhcp_send_kernel_packet(dhcp_pkt, |
604 | server_config.server_nip, SERVER_PORT, | 604 | server_data.server_nip, SERVER_PORT, |
605 | dhcp_pkt->gateway_nip, SERVER_PORT); | 605 | dhcp_pkt->gateway_nip, SERVER_PORT); |
606 | } | 606 | } |
607 | 607 | ||
@@ -633,7 +633,7 @@ static void init_packet(struct dhcp_packet *packet, struct dhcp_packet *oldpacke | |||
633 | packet->flags = oldpacket->flags; | 633 | packet->flags = oldpacket->flags; |
634 | packet->gateway_nip = oldpacket->gateway_nip; | 634 | packet->gateway_nip = oldpacket->gateway_nip; |
635 | packet->ciaddr = oldpacket->ciaddr; | 635 | packet->ciaddr = oldpacket->ciaddr; |
636 | udhcp_add_simple_option(packet, DHCP_SERVER_ID, server_config.server_nip); | 636 | udhcp_add_simple_option(packet, DHCP_SERVER_ID, server_data.server_nip); |
637 | } | 637 | } |
638 | 638 | ||
639 | /* Fill options field, siaddr_nip, and sname and boot_file fields. | 639 | /* Fill options field, siaddr_nip, and sname and boot_file fields. |
@@ -646,7 +646,7 @@ static void add_server_options(struct dhcp_packet *packet) | |||
646 | 646 | ||
647 | client_hostname_opt = NULL; | 647 | client_hostname_opt = NULL; |
648 | if (packet->yiaddr) { /* if we aren't from send_inform()... */ | 648 | if (packet->yiaddr) { /* if we aren't from send_inform()... */ |
649 | struct static_lease *st_lease = server_config.static_leases; | 649 | struct static_lease *st_lease = server_data.static_leases; |
650 | while (st_lease) { | 650 | while (st_lease) { |
651 | if (st_lease->nip == packet->yiaddr) { | 651 | if (st_lease->nip == packet->yiaddr) { |
652 | if (st_lease->opt[0] != 0) | 652 | if (st_lease->opt[0] != 0) |
@@ -657,7 +657,7 @@ static void add_server_options(struct dhcp_packet *packet) | |||
657 | } | 657 | } |
658 | } | 658 | } |
659 | 659 | ||
660 | config_opts = server_config.options; | 660 | config_opts = server_data.options; |
661 | while (config_opts) { | 661 | while (config_opts) { |
662 | if (config_opts->data[OPT_CODE] != DHCP_LEASE_TIME) { | 662 | if (config_opts->data[OPT_CODE] != DHCP_LEASE_TIME) { |
663 | /* ^^^^ | 663 | /* ^^^^ |
@@ -684,25 +684,25 @@ static void add_server_options(struct dhcp_packet *packet) | |||
684 | if (client_hostname_opt) | 684 | if (client_hostname_opt) |
685 | udhcp_add_binary_option(packet, client_hostname_opt); | 685 | udhcp_add_binary_option(packet, client_hostname_opt); |
686 | 686 | ||
687 | packet->siaddr_nip = server_config.siaddr_nip; | 687 | packet->siaddr_nip = server_data.siaddr_nip; |
688 | 688 | ||
689 | if (server_config.sname) | 689 | if (server_data.sname) |
690 | strncpy((char*)packet->sname, server_config.sname, sizeof(packet->sname) - 1); | 690 | strncpy((char*)packet->sname, server_data.sname, sizeof(packet->sname) - 1); |
691 | if (server_config.boot_file) | 691 | if (server_data.boot_file) |
692 | strncpy((char*)packet->file, server_config.boot_file, sizeof(packet->file) - 1); | 692 | strncpy((char*)packet->file, server_data.boot_file, sizeof(packet->file) - 1); |
693 | } | 693 | } |
694 | 694 | ||
695 | static uint32_t select_lease_time(struct dhcp_packet *packet) | 695 | static uint32_t select_lease_time(struct dhcp_packet *packet) |
696 | { | 696 | { |
697 | uint32_t lease_time_sec = server_config.max_lease_sec; | 697 | uint32_t lease_time_sec = server_data.max_lease_sec; |
698 | uint8_t *lease_time_opt = udhcp_get_option32(packet, DHCP_LEASE_TIME); | 698 | uint8_t *lease_time_opt = udhcp_get_option32(packet, DHCP_LEASE_TIME); |
699 | if (lease_time_opt) { | 699 | if (lease_time_opt) { |
700 | move_from_unaligned32(lease_time_sec, lease_time_opt); | 700 | move_from_unaligned32(lease_time_sec, lease_time_opt); |
701 | lease_time_sec = ntohl(lease_time_sec); | 701 | lease_time_sec = ntohl(lease_time_sec); |
702 | if (lease_time_sec > server_config.max_lease_sec) | 702 | if (lease_time_sec > server_data.max_lease_sec) |
703 | lease_time_sec = server_config.max_lease_sec; | 703 | lease_time_sec = server_data.max_lease_sec; |
704 | if (lease_time_sec < server_config.min_lease_sec) | 704 | if (lease_time_sec < server_data.min_lease_sec) |
705 | lease_time_sec = server_config.min_lease_sec; | 705 | lease_time_sec = server_data.min_lease_sec; |
706 | } | 706 | } |
707 | return lease_time_sec; | 707 | return lease_time_sec; |
708 | } | 708 | } |
@@ -737,8 +737,8 @@ static NOINLINE void send_offer(struct dhcp_packet *oldpacket, | |||
737 | /* Or: if client has requested an IP */ | 737 | /* Or: if client has requested an IP */ |
738 | else if (requested_nip != 0 | 738 | else if (requested_nip != 0 |
739 | /* and the IP is in the lease range */ | 739 | /* and the IP is in the lease range */ |
740 | && ntohl(requested_nip) >= server_config.start_ip | 740 | && ntohl(requested_nip) >= server_data.start_ip |
741 | && ntohl(requested_nip) <= server_config.end_ip | 741 | && ntohl(requested_nip) <= server_data.end_ip |
742 | /* and */ | 742 | /* and */ |
743 | && ( !(lease = find_lease_by_nip(requested_nip)) /* is not already taken */ | 743 | && ( !(lease = find_lease_by_nip(requested_nip)) /* is not already taken */ |
744 | || is_expired_lease(lease) /* or is taken, but expired */ | 744 | || is_expired_lease(lease) /* or is taken, but expired */ |
@@ -758,7 +758,7 @@ static NOINLINE void send_offer(struct dhcp_packet *oldpacket, | |||
758 | /* Reserve the IP for a short time hoping to get DHCPREQUEST soon */ | 758 | /* Reserve the IP for a short time hoping to get DHCPREQUEST soon */ |
759 | p_host_name = (const char*) udhcp_get_option(oldpacket, DHCP_HOST_NAME); | 759 | p_host_name = (const char*) udhcp_get_option(oldpacket, DHCP_HOST_NAME); |
760 | lease = add_lease(packet.chaddr, packet.yiaddr, | 760 | lease = add_lease(packet.chaddr, packet.yiaddr, |
761 | server_config.offer_time, | 761 | server_data.offer_time, |
762 | p_host_name, | 762 | p_host_name, |
763 | p_host_name ? (unsigned char)p_host_name[OPT_LEN - OPT_DATA] : 0 | 763 | p_host_name ? (unsigned char)p_host_name[OPT_LEN - OPT_DATA] : 0 |
764 | ); | 764 | ); |
@@ -886,7 +886,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) | |||
886 | } | 886 | } |
887 | if (opt & 4) { /* -I */ | 887 | if (opt & 4) { /* -I */ |
888 | len_and_sockaddr *lsa = xhost_and_af2sockaddr(str_I, 0, AF_INET); | 888 | len_and_sockaddr *lsa = xhost_and_af2sockaddr(str_I, 0, AF_INET); |
889 | server_config.server_nip = lsa->u.sin.sin_addr.s_addr; | 889 | server_data.server_nip = lsa->u.sin.sin_addr.s_addr; |
890 | free(lsa); | 890 | free(lsa); |
891 | } | 891 | } |
892 | #if ENABLE_FEATURE_UDHCP_PORT | 892 | #if ENABLE_FEATURE_UDHCP_PORT |
@@ -901,42 +901,42 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) | |||
901 | * otherwise NOMMU machines will parse config twice */ | 901 | * otherwise NOMMU machines will parse config twice */ |
902 | read_config(argv[0] ? argv[0] : DHCPD_CONF_FILE); | 902 | read_config(argv[0] ? argv[0] : DHCPD_CONF_FILE); |
903 | /* prevent poll timeout overflow */ | 903 | /* prevent poll timeout overflow */ |
904 | if (server_config.auto_time > INT_MAX / 1000) | 904 | if (server_data.auto_time > INT_MAX / 1000) |
905 | server_config.auto_time = INT_MAX / 1000; | 905 | server_data.auto_time = INT_MAX / 1000; |
906 | 906 | ||
907 | /* Make sure fd 0,1,2 are open */ | 907 | /* Make sure fd 0,1,2 are open */ |
908 | bb_sanitize_stdio(); | 908 | bb_sanitize_stdio(); |
909 | 909 | ||
910 | /* Create pidfile */ | 910 | /* Create pidfile */ |
911 | write_pidfile(server_config.pidfile); | 911 | write_pidfile(server_data.pidfile); |
912 | /* if (!..) bb_perror_msg("can't create pidfile %s", pidfile); */ | 912 | /* if (!..) bb_perror_msg("can't create pidfile %s", pidfile); */ |
913 | 913 | ||
914 | bb_info_msg("started, v"BB_VER); | 914 | bb_info_msg("started, v"BB_VER); |
915 | 915 | ||
916 | option = udhcp_find_option(server_config.options, DHCP_LEASE_TIME); | 916 | option = udhcp_find_option(server_data.options, DHCP_LEASE_TIME); |
917 | server_config.max_lease_sec = DEFAULT_LEASE_TIME; | 917 | server_data.max_lease_sec = DEFAULT_LEASE_TIME; |
918 | if (option) { | 918 | if (option) { |
919 | move_from_unaligned32(server_config.max_lease_sec, option->data + OPT_DATA); | 919 | move_from_unaligned32(server_data.max_lease_sec, option->data + OPT_DATA); |
920 | server_config.max_lease_sec = ntohl(server_config.max_lease_sec); | 920 | server_data.max_lease_sec = ntohl(server_data.max_lease_sec); |
921 | } | 921 | } |
922 | 922 | ||
923 | /* Sanity check */ | 923 | /* Sanity check */ |
924 | num_ips = server_config.end_ip - server_config.start_ip + 1; | 924 | num_ips = server_data.end_ip - server_data.start_ip + 1; |
925 | if (server_config.max_leases > num_ips) { | 925 | if (server_data.max_leases > num_ips) { |
926 | bb_error_msg("max_leases=%u is too big, setting to %u", | 926 | bb_error_msg("max_leases=%u is too big, setting to %u", |
927 | (unsigned)server_config.max_leases, num_ips); | 927 | (unsigned)server_data.max_leases, num_ips); |
928 | server_config.max_leases = num_ips; | 928 | server_data.max_leases = num_ips; |
929 | } | 929 | } |
930 | 930 | ||
931 | /* this sets g_leases */ | 931 | /* this sets g_leases */ |
932 | SET_PTR_TO_GLOBALS(xzalloc(server_config.max_leases * sizeof(g_leases[0]))); | 932 | SET_PTR_TO_GLOBALS(xzalloc(server_data.max_leases * sizeof(g_leases[0]))); |
933 | 933 | ||
934 | read_leases(server_config.lease_file); | 934 | read_leases(server_data.lease_file); |
935 | 935 | ||
936 | if (udhcp_read_interface(server_config.interface, | 936 | if (udhcp_read_interface(server_data.interface, |
937 | &server_config.ifindex, | 937 | &server_data.ifindex, |
938 | (server_config.server_nip == 0 ? &server_config.server_nip : NULL), | 938 | (server_data.server_nip == 0 ? &server_data.server_nip : NULL), |
939 | server_config.server_mac) | 939 | server_data.server_mac) |
940 | ) { | 940 | ) { |
941 | retval = 1; | 941 | retval = 1; |
942 | goto ret; | 942 | goto ret; |
@@ -946,7 +946,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) | |||
946 | udhcp_sp_setup(); | 946 | udhcp_sp_setup(); |
947 | 947 | ||
948 | continue_with_autotime: | 948 | continue_with_autotime: |
949 | timeout_end = monotonic_sec() + server_config.auto_time; | 949 | timeout_end = monotonic_sec() + server_data.auto_time; |
950 | while (1) { /* loop until universe collapses */ | 950 | while (1) { /* loop until universe collapses */ |
951 | struct pollfd pfds[2]; | 951 | struct pollfd pfds[2]; |
952 | struct dhcp_packet packet; | 952 | struct dhcp_packet packet; |
@@ -960,14 +960,14 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) | |||
960 | 960 | ||
961 | if (server_socket < 0) { | 961 | if (server_socket < 0) { |
962 | server_socket = udhcp_listen_socket(/*INADDR_ANY,*/ SERVER_PORT, | 962 | server_socket = udhcp_listen_socket(/*INADDR_ANY,*/ SERVER_PORT, |
963 | server_config.interface); | 963 | server_data.interface); |
964 | } | 964 | } |
965 | 965 | ||
966 | udhcp_sp_fd_set(pfds, server_socket); | 966 | udhcp_sp_fd_set(pfds, server_socket); |
967 | 967 | ||
968 | new_tv: | 968 | new_tv: |
969 | tv = -1; | 969 | tv = -1; |
970 | if (server_config.auto_time) { | 970 | if (server_data.auto_time) { |
971 | tv = timeout_end - monotonic_sec(); | 971 | tv = timeout_end - monotonic_sec(); |
972 | if (tv <= 0) { | 972 | if (tv <= 0) { |
973 | write_leases: | 973 | write_leases: |
@@ -1037,7 +1037,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) | |||
1037 | if (server_id_opt) { | 1037 | if (server_id_opt) { |
1038 | uint32_t server_id_network_order; | 1038 | uint32_t server_id_network_order; |
1039 | move_from_unaligned32(server_id_network_order, server_id_opt); | 1039 | move_from_unaligned32(server_id_network_order, server_id_opt); |
1040 | if (server_id_network_order != server_config.server_nip) { | 1040 | if (server_id_network_order != server_data.server_nip) { |
1041 | /* client talks to somebody else */ | 1041 | /* client talks to somebody else */ |
1042 | log1("server ID doesn't match, ignoring"); | 1042 | log1("server ID doesn't match, ignoring"); |
1043 | continue; | 1043 | continue; |
@@ -1204,7 +1204,7 @@ o DHCPREQUEST generated during REBINDING state: | |||
1204 | && requested_nip == lease->lease_nip | 1204 | && requested_nip == lease->lease_nip |
1205 | ) { | 1205 | ) { |
1206 | memset(lease->lease_mac, 0, sizeof(lease->lease_mac)); | 1206 | memset(lease->lease_mac, 0, sizeof(lease->lease_mac)); |
1207 | lease->expires = time(NULL) + server_config.decline_time; | 1207 | lease->expires = time(NULL) + server_data.decline_time; |
1208 | } | 1208 | } |
1209 | break; | 1209 | break; |
1210 | 1210 | ||
@@ -1235,7 +1235,7 @@ o DHCPREQUEST generated during REBINDING state: | |||
1235 | ret0: | 1235 | ret0: |
1236 | retval = 0; | 1236 | retval = 0; |
1237 | ret: | 1237 | ret: |
1238 | /*if (server_config.pidfile) - server_config.pidfile is never NULL */ | 1238 | /*if (server_data.pidfile) - server_data.pidfile is never NULL */ |
1239 | remove_pidfile(server_config.pidfile); | 1239 | remove_pidfile(server_data.pidfile); |
1240 | return retval; | 1240 | return retval; |
1241 | } | 1241 | } |
diff --git a/networking/udhcp/dhcpd.h b/networking/udhcp/dhcpd.h index ba11d77e8..b42849bbb 100644 --- a/networking/udhcp/dhcpd.h +++ b/networking/udhcp/dhcpd.h | |||
@@ -17,7 +17,7 @@ PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN | |||
17 | 17 | ||
18 | struct static_lease; | 18 | struct static_lease; |
19 | 19 | ||
20 | struct server_config_t { | 20 | struct server_data_t { |
21 | char *interface; /* interface to use */ | 21 | char *interface; /* interface to use */ |
22 | //TODO: ifindex, server_nip, server_mac | 22 | //TODO: ifindex, server_nip, server_mac |
23 | // are obtained from interface name. | 23 | // are obtained from interface name. |
@@ -53,12 +53,12 @@ struct server_config_t { | |||
53 | struct static_lease *static_leases; /* List of ip/mac pairs to assign static leases */ | 53 | struct static_lease *static_leases; /* List of ip/mac pairs to assign static leases */ |
54 | } FIX_ALIASING; | 54 | } FIX_ALIASING; |
55 | 55 | ||
56 | #define server_config (*(struct server_config_t*)bb_common_bufsiz1) | 56 | #define server_data (*(struct server_data_t*)bb_common_bufsiz1) |
57 | /* client_data sits in 2nd half of bb_common_bufsiz1 */ | 57 | /* client_data sits in 2nd half of bb_common_bufsiz1 */ |
58 | 58 | ||
59 | #if ENABLE_FEATURE_UDHCP_PORT | 59 | #if ENABLE_FEATURE_UDHCP_PORT |
60 | #define SERVER_PORT (server_config.port) | 60 | #define SERVER_PORT (server_data.port) |
61 | #define SERVER_PORT6 (server_config.port) | 61 | #define SERVER_PORT6 (server_data.port) |
62 | #else | 62 | #else |
63 | #define SERVER_PORT 67 | 63 | #define SERVER_PORT 67 |
64 | #define SERVER_PORT6 547 | 64 | #define SERVER_PORT6 547 |