ssahani / rpms / dhcp

Forked from rpms/dhcp 5 years ago
Clone
5a3797e
diff -up dhcp-4.2.0/client/dhclient.c.initialization-delay dhcp-4.2.0/client/dhclient.c
5a3797e
--- dhcp-4.2.0/client/dhclient.c.initialization-delay	2010-07-21 16:16:51.000000000 +0200
5a3797e
+++ dhcp-4.2.0/client/dhclient.c	2010-07-21 16:22:18.000000000 +0200
5a3797e
@@ -949,11 +949,16 @@ main(int argc, char **argv) {
ea06b93
 					do_release(client);
ea06b93
 				else {
ea06b93
 					client->state = S_INIT;
ea06b93
-					/* Set up a timeout to start the
ea06b93
-					 * initialization process.
ea06b93
+					/* Set up a timeout (0-1 second) to
ea06b93
+					 * start the initialization process.
2f26ada
 					 */
2f26ada
-					tv.tv_sec = cur_time + random() % 5;
ea06b93
-					tv.tv_usec = 0;
ea06b93
+					tv.tv_sec = cur_tv.tv_sec;
ea06b93
+					tv.tv_usec = cur_tv.tv_usec;
ea06b93
+					tv.tv_usec += (random() % 100) * 10000;
ea06b93
+					if (tv.tv_usec >= 1000000) {
ea06b93
+						tv.tv_sec += 1;
ea06b93
+						tv.tv_usec -= 1000000;
ea06b93
+					} 
2f26ada
 					add_timeout(&tv, state_reboot,
2f26ada
 						    client, 0, 0);
ea06b93
 				}
5a3797e
@@ -3930,10 +3935,16 @@ isc_result_t dhclient_interface_startup_
ea06b93
 		ip -> flags |= INTERFACE_RUNNING;
ea06b93
 		for (client = ip -> client; client; client = client -> next) {
2f26ada
 			client -> state = S_INIT;
ea06b93
-			/* Set up a timeout to start the initialization
ea06b93
-			   process. */
2f26ada
-			tv . tv_sec = cur_time + random () % 5;
ea06b93
-			tv . tv_usec = 0;
ea06b93
+			/* Set up a timeout (0-1 second) to
ea06b93
+			 * start the initialization process.
ea06b93
+			 */
ea06b93
+			tv.tv_sec = cur_tv.tv_sec;
ea06b93
+			tv.tv_usec = cur_tv.tv_usec;
ea06b93
+			tv.tv_usec += (random() % 100) * 10000;
ea06b93
+			if (tv.tv_usec >= 1000000) {
ea06b93
+				tv.tv_sec += 1;
ea06b93
+				tv.tv_usec -= 1000000;
ea06b93
+			}
2f26ada
 			add_timeout (&tv, state_reboot, client, 0, 0);
2f26ada
 		}
ea06b93
 	}