aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/dhcpd.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-07-01 17:05:57 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-07-01 17:05:57 +0000
commitc82b5108e1a40f3b299043770e01d7d7db35de04 (patch)
tree35039a36868df644b8e5ffc766c1b0c921c88ab5 /networking/udhcp/dhcpd.c
parentdc7a5eae36d31f5cfc301de2499329b8a03ea660 (diff)
downloadbusybox-w32-c82b5108e1a40f3b299043770e01d7d7db35de04.tar.gz
busybox-w32-c82b5108e1a40f3b299043770e01d7d7db35de04.tar.bz2
busybox-w32-c82b5108e1a40f3b299043770e01d7d7db35de04.zip
udhcp: new config option "Rewrite the lease file at every new acknowledge"
(Mats Erik Andersson <mats@blue2net.com> (Blue2Net AB)) udhcp: consistently treat server_config.start/end IPs as host-order fix IP parsing for 64bit machines fix unsafe hton macro usage in read_opt() do not chdir("/") when daemonizing fix help text
Diffstat (limited to 'networking/udhcp/dhcpd.c')
-rw-r--r--networking/udhcp/dhcpd.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
index 778121b61..6be3c0e2e 100644
--- a/networking/udhcp/dhcpd.c
+++ b/networking/udhcp/dhcpd.c
@@ -37,7 +37,7 @@ int udhcpd_main(int argc, char **argv)
37//Huh, dhcpd don't have --foreground, --syslog options?? TODO 37//Huh, dhcpd don't have --foreground, --syslog options?? TODO
38 38
39 if (!ENABLE_FEATURE_UDHCP_DEBUG) { 39 if (!ENABLE_FEATURE_UDHCP_DEBUG) {
40 bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv); 40 bb_daemonize_or_rexec(0, argv);
41 logmode &= ~LOGMODE_STDIO; 41 logmode &= ~LOGMODE_STDIO;
42 } 42 }
43 43
@@ -60,15 +60,15 @@ int udhcpd_main(int argc, char **argv)
60 } 60 }
61 61
62 /* Sanity check */ 62 /* Sanity check */
63 num_ips = ntohl(server_config.end) - ntohl(server_config.start) + 1; 63 num_ips = server_config.end_ip - server_config.start_ip + 1;
64 if (server_config.max_leases > num_ips) { 64 if (server_config.max_leases > num_ips) {
65 bb_error_msg("max_leases value (%lu) not sane, " 65 bb_error_msg("max_leases=%lu is too big, "
66 "setting to %lu instead", 66 "setting to %lu",
67 server_config.max_leases, num_ips); 67 server_config.max_leases, num_ips);
68 server_config.max_leases = num_ips; 68 server_config.max_leases = num_ips;
69 } 69 }
70 70
71 leases = xzalloc(server_config.max_leases * sizeof(struct dhcpOfferedAddr)); 71 leases = xzalloc(server_config.max_leases * sizeof(*leases));
72 read_leases(server_config.lease_file); 72 read_leases(server_config.lease_file);
73 73
74 if (read_interface(server_config.interface, &server_config.ifindex, 74 if (read_interface(server_config.interface, &server_config.ifindex,
@@ -207,10 +207,13 @@ int udhcpd_main(int argc, char **argv)
207 /* make some contention for this address */ 207 /* make some contention for this address */
208 } else 208 } else
209 sendNAK(&packet); 209 sendNAK(&packet);
210 } else if (requested_align < server_config.start 210 } else {
211 || requested_align > server_config.end 211 uint32_t r = ntohl(requested_align);
212 ) { 212 if (r < server_config.start_ip
213 sendNAK(&packet); 213 || r > server_config.end_ip
214 ) {
215 sendNAK(&packet);
216 }
214 } /* else remain silent */ 217 } /* else remain silent */
215 218
216 } else { 219 } else {