summaryrefslogtreecommitdiff
path: root/networking/udhcp/files.c
diff options
context:
space:
mode:
authorRuss Dill <Russ.Dill@asu.edu>2003-12-16 01:29:40 +0000
committerRuss Dill <Russ.Dill@asu.edu>2003-12-16 01:29:40 +0000
commit8f4312693464a266117238bade4a9c64ba1f3340 (patch)
tree6d95e14e79a0d7a8f5f0357e4f6129a93330b9cb /networking/udhcp/files.c
parent62419df95cd504bf5823a35194360dc4f6aa86c6 (diff)
downloadbusybox-w32-8f4312693464a266117238bade4a9c64ba1f3340.tar.gz
busybox-w32-8f4312693464a266117238bade4a9c64ba1f3340.tar.bz2
busybox-w32-8f4312693464a266117238bade4a9c64ba1f3340.zip
not sure who made this change, but it certainly mucks things up (note 'fwrite(leases, ...'), adds a bit more code, and some stack overhead. Anywho, this fixes it, and retains the spirit of what the submitter of this change was attempting to acheive (the entire lease is written at once in a struct)
Diffstat (limited to 'networking/udhcp/files.c')
-rw-r--r--networking/udhcp/files.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c
index 20761a585..e2002460d 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -229,7 +229,7 @@ void write_leases(void)
229 unsigned int i; 229 unsigned int i;
230 char buf[255]; 230 char buf[255];
231 time_t curr = time(0); 231 time_t curr = time(0);
232 unsigned long lease_time; 232 unsigned long tmp_time;
233 233
234 if (!(fp = fopen(server_config.lease_file, "w"))) { 234 if (!(fp = fopen(server_config.lease_file, "w"))) {
235 LOG(LOG_ERR, "Unable to open %s for writing", server_config.lease_file); 235 LOG(LOG_ERR, "Unable to open %s for writing", server_config.lease_file);
@@ -237,17 +237,21 @@ void write_leases(void)
237 } 237 }
238 238
239 for (i = 0; i < server_config.max_leases; i++) { 239 for (i = 0; i < server_config.max_leases; i++) {
240 struct dhcpOfferedAddr lease;
241 if (leases[i].yiaddr != 0) { 240 if (leases[i].yiaddr != 0) {
241
242 /* screw with the time in the struct, for easier writing */
243 tmp_time = leases[i].expires;
244
242 if (server_config.remaining) { 245 if (server_config.remaining) {
243 if (lease_expired(&(leases[i]))) 246 if (lease_expired(&(leases[i])))
244 lease_time = 0; 247 leases[i].expires = 0;
245 else lease_time = leases[i].expires - curr; 248 else leases[i].expires -= curr;
246 } else lease_time = leases[i].expires; 249 } /* else stick with the time we got */
247 lease.expires = htonl(lease_time); 250 leases[i].expires = htonl(leases[i].expires);
248 memcpy(lease.chaddr, leases[i].chaddr, 16); 251 fwrite(leases[i], sizeof(sturct dhcpOfferedAddr), 1, fp);
249 lease.yiaddr = leases[i].yiaddr; 252
250 fwrite(leases, sizeof(lease), 1, fp); 253 /* Then restore it when done. */
254 leases[i].expires = tmp_time;
251 } 255 }
252 } 256 }
253 fclose(fp); 257 fclose(fp);