summaryrefslogtreecommitdiff
path: root/networking/udhcp
diff options
context:
space:
mode:
authorRuss Dill2003-12-16 01:29:40 +0000
committerRuss Dill2003-12-16 01:29:40 +0000
commit8f4312693464a266117238bade4a9c64ba1f3340 (patch)
tree6d95e14e79a0d7a8f5f0357e4f6129a93330b9cb /networking/udhcp
parent62419df95cd504bf5823a35194360dc4f6aa86c6 (diff)
downloadbusybox-8f4312693464a266117238bade4a9c64ba1f3340.zip
busybox-8f4312693464a266117238bade4a9c64ba1f3340.tar.gz
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')
-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 20761a5..e200246 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -229,7 +229,7 @@ void write_leases(void)
unsigned int i;
char buf[255];
time_t curr = time(0);
- unsigned long lease_time;
+ unsigned long tmp_time;
if (!(fp = fopen(server_config.lease_file, "w"))) {
LOG(LOG_ERR, "Unable to open %s for writing", server_config.lease_file);
@@ -237,17 +237,21 @@ void write_leases(void)
}
for (i = 0; i < server_config.max_leases; i++) {
- struct dhcpOfferedAddr lease;
if (leases[i].yiaddr != 0) {
+
+ /* screw with the time in the struct, for easier writing */
+ tmp_time = leases[i].expires;
+
if (server_config.remaining) {
if (lease_expired(&(leases[i])))
- lease_time = 0;
- else lease_time = leases[i].expires - curr;
- } else lease_time = leases[i].expires;
- lease.expires = htonl(lease_time);
- memcpy(lease.chaddr, leases[i].chaddr, 16);
- lease.yiaddr = leases[i].yiaddr;
- fwrite(leases, sizeof(lease), 1, fp);
+ leases[i].expires = 0;
+ else leases[i].expires -= curr;
+ } /* else stick with the time we got */
+ leases[i].expires = htonl(leases[i].expires);
+ fwrite(leases[i], sizeof(sturct dhcpOfferedAddr), 1, fp);
+
+ /* Then restore it when done. */
+ leases[i].expires = tmp_time;
}
}
fclose(fp);