diff options
-rw-r--r-- | networking/udhcp/files.c | 22 |
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); |