
#
# Patch managed by http://www.holgerschurig.de/patcher.html
#

--- busybox-1.01/networking/udhcp/dhcpc.c~dhcpretrytime
+++ busybox-1.01/networking/udhcp/dhcpc.c
@@ -48,6 +48,7 @@
 static unsigned long requested_ip; /* = 0 */
 static unsigned long server_addr;
 static unsigned long timeout;
+static unsigned long retrytime = 60;
 static int packet_num; /* = 0 */
 static int fd = -1;
 
@@ -91,6 +92,7 @@
 "  -r, --request=IP                IP address to request (default: none)\n"
 "  -s, --script=file               Run file at dhcp events (default:\n"
 "                                  " DEFAULT_SCRIPT ")\n"
+"  -t, --retrytime                 time to retry DHCP request (default 60s)\n")
 "  -v, --version                   Display version\n"
 	);
 	exit(0);
@@ -208,6 +210,7 @@
 		{"quit",	no_argument,		0, 'q'},
 		{"request",	required_argument,	0, 'r'},
 		{"script",	required_argument,	0, 's'},
+		{"retrytime",	required_argument,	0, 't'},
 		{"version",	no_argument,		0, 'v'},
 		{0, 0, 0, 0}
 	};
@@ -223,7 +226,7 @@
 	/* get options */
 	while (1) {
 		int option_index = 0;
-		c = getopt_long(argc, argv, "c:CfbH:h:i:np:qr:s:v", arg_options, &option_index);
+ 		c = getopt_long(argc, argv, "c:fbH:h:i:np:qr:s:t:v", arg_options, &option_index);
 		if (c == -1) break;
 
 		switch (c) {
@@ -274,6 +277,9 @@
 		case 's':
 			client_config.script = optarg;
 			break;
+		case 't':
+			retrytime = atol(optarg);
+			break;
 		case 'v':
 			printf("udhcpcd, version %s\n\n", VERSION);
 			return 0;
@@ -353,7 +359,7 @@
 				  	}
 					/* wait to try again */
 					packet_num = 0;
-					timeout = now + 60;
+					timeout = now + retrytime;
 				}
 				break;
 			case RENEW_REQUESTED:
--- busybox-1.01/networking/ifupdown.c~dhcpretrytime
+++ busybox-1.01/networking/ifupdown.c
@@ -541,7 +541,7 @@
 static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
 {
 	if (execable("/sbin/udhcpc")) {
-		return( execute("udhcpc -n -p /var/run/udhcpc.%iface%.pid -i "
+		return( execute("udhcpc -b -p /var/run/udhcpc.%iface%.pid -i "
 					"%iface% [[-H %hostname%]] [[-c %clientid%]]", ifd, exec));
 	} else if (execable("/sbin/pump")) {
 		return( execute("pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]]", ifd, exec));
@@ -561,8 +561,8 @@
 		/* SIGUSR2 forces udhcpc to release the current lease and go inactive,
 		 * and SIGTERM causes udhcpc to exit.  Signals are queued and processed
 		 * sequentially so we don't need to sleep */
-		result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
-		result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
+		result = execute("kill -USR2 `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
+		result += execute("kill -TERM `cat /var/run/udhcpc.%iface%.pid 2>/dev/null` 2>/dev/null", ifd, exec);
 	} else if (execable("/sbin/pump")) {
 		result = execute("pump -i %iface% -k", ifd, exec);
 	} else if (execable("/sbin/dhclient")) {
