diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-07-01 17:05:57 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-07-01 17:05:57 +0000 |
commit | c82b5108e1a40f3b299043770e01d7d7db35de04 (patch) | |
tree | 35039a36868df644b8e5ffc766c1b0c921c88ab5 /networking/udhcp/dhcpd.c | |
parent | dc7a5eae36d31f5cfc301de2499329b8a03ea660 (diff) | |
download | busybox-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.c | 21 |
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 { |