[BusyBox-cvs] busybox/networking/udhcp files.c,1.5,1.6

Russ Dill russ at busybox.net
Tue Dec 16 01:29:43 UTC 2003


Update of /var/cvs/busybox/networking/udhcp
In directory nail:/tmp/cvs-serv7354

Modified Files:
	files.c 
Log Message:
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)

Index: files.c
===================================================================
RCS file: /var/cvs/busybox/networking/udhcp/files.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- files.c	15 Dec 2003 22:09:36 -0000	1.5
+++ files.c	16 Dec 2003 01:29:40 -0000	1.6
@@ -229,7 +229,7 @@
 	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 @@
 	}
 	
 	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);




More information about the busybox-cvs mailing list