aboutsummaryrefslogtreecommitdiff
path: root/networking
diff options
context:
space:
mode:
authorlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-02-20 23:26:38 +0000
committerlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-02-20 23:26:38 +0000
commit41e5e6db3a98fcad2e5e36180a87589d1dea6d72 (patch)
tree9dca5663d886a9fde8747df6f1162eada2ab1021 /networking
parent49b87f62f90f2918eab7a093823ce73ae3e8a219 (diff)
downloadbusybox-w32-41e5e6db3a98fcad2e5e36180a87589d1dea6d72.tar.gz
busybox-w32-41e5e6db3a98fcad2e5e36180a87589d1dea6d72.tar.bz2
busybox-w32-41e5e6db3a98fcad2e5e36180a87589d1dea6d72.zip
Patch from Giuseppe Ciotta to specify retry count.
git-svn-id: svn://busybox.net/trunk/busybox@14152 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'networking')
-rw-r--r--networking/udhcp/dhcpc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index 8568ac1e7..e035bd4c2 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -58,6 +58,7 @@ struct client_config_t client_config = {
58 .hostname = NULL, 58 .hostname = NULL,
59 .fqdn = NULL, 59 .fqdn = NULL,
60 .ifindex = 0, 60 .ifindex = 0,
61 .retries = 3,
61 .arp = "\0\0\0\0\0\0", /* appease gcc-3.0 */ 62 .arp = "\0\0\0\0\0\0", /* appease gcc-3.0 */
62}; 63};
63 64
@@ -202,13 +203,14 @@ int main(int argc, char *argv[])
202 {"request", required_argument, 0, 'r'}, 203 {"request", required_argument, 0, 'r'},
203 {"script", required_argument, 0, 's'}, 204 {"script", required_argument, 0, 's'},
204 {"version", no_argument, 0, 'v'}, 205 {"version", no_argument, 0, 'v'},
206 {"retries", required_argument, 0, 't'},
205 {0, 0, 0, 0} 207 {0, 0, 0, 0}
206 }; 208 };
207 209
208 /* get options */ 210 /* get options */
209 while (1) { 211 while (1) {
210 int option_index = 0; 212 int option_index = 0;
211 c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:v", arg_options, &option_index); 213 c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:t:v", arg_options, &option_index);
212 if (c == -1) break; 214 if (c == -1) break;
213 215
214 switch (c) { 216 switch (c) {
@@ -284,6 +286,9 @@ int main(int argc, char *argv[])
284 case 's': 286 case 's':
285 client_config.script = optarg; 287 client_config.script = optarg;
286 break; 288 break;
289 case 't':
290 client_config.retries = atoi(optarg);
291 break;
287 case 'v': 292 case 'v':
288 printf("udhcpcd, version %s\n\n", VERSION); 293 printf("udhcpcd, version %s\n\n", VERSION);
289 return 0; 294 return 0;
@@ -353,7 +358,7 @@ int main(int argc, char *argv[])
353 /* timeout dropped to zero */ 358 /* timeout dropped to zero */
354 switch (state) { 359 switch (state) {
355 case INIT_SELECTING: 360 case INIT_SELECTING:
356 if (packet_num < 3) { 361 if (packet_num < client_config.retries) {
357 if (packet_num == 0) 362 if (packet_num == 0)
358 xid = random_xid(); 363 xid = random_xid();
359 364
@@ -378,7 +383,7 @@ int main(int argc, char *argv[])
378 break; 383 break;
379 case RENEW_REQUESTED: 384 case RENEW_REQUESTED:
380 case REQUESTING: 385 case REQUESTING:
381 if (packet_num < 3) { 386 if (packet_num < client_config.retries) {
382 /* send request packet */ 387 /* send request packet */
383 if (state == RENEW_REQUESTED) 388 if (state == RENEW_REQUESTED)
384 send_renew(xid, server_addr, requested_ip); /* unicast */ 389 send_renew(xid, server_addr, requested_ip); /* unicast */