udhcpc retry interval
Paul Fox
pgf at brightstareng.com
Tue Nov 6 17:04:28 UTC 2007
> when udhcpc fails to get a lease, it waits a full minute before
> trying again. in some cases this is far too long. clearly
> the udhcpc commandline is becoming over-burdened, but without
> a config file, there's not much choice: i'd like to add
> an option (i chose '-A', for "again") which lets one set the
> try-again value.
this patch is incorrect. don't apply, please. (i botched the
getopt calls during a minor reword before posting. sigh.)
paul
>
> Index: networking/udhcp/dhcpc.c
> ===================================================================
> RCS file: /cvs/thirdparty/busybox-1.8.0/networking/udhcp/dhcpc.c,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 dhcpc.c
> --- networking/udhcp/dhcpc.c 5 Nov 2007 13:45:42 -0000 1.1.1.1
> +++ networking/udhcp/dhcpc.c 5 Nov 2007 17:13:59 -0000
> @@ -144,7 +144,7 @@
> int udhcpc_main(int argc, char **argv)
> {
> uint8_t *temp, *message;
> - char *str_c, *str_V, *str_h, *str_F, *str_r, *str_T, *str_t;
> + char *str_c, *str_V, *str_h, *str_F, *str_r, *str_T, *str_A, *str_t;
> uint32_t xid = 0;
> uint32_t lease = 0; /* can be given as 32-bit quantity */
> unsigned t1 = 0, t2 = 0; /* what a wonderful names */
> @@ -179,6 +179,7 @@
> OPT_t = 1 << 16,
> OPT_v = 1 << 17,
> OPT_S = 1 << 18,
> + OPT_A = 1 << 19,
> };
> #if ENABLE_GETOPT_LONG
> static const char udhcpc_longopts[] ALIGN1 =
> @@ -200,6 +201,7 @@
> "timeout\0" Required_argument "T"
> "version\0" No_argument "v"
> "retries\0" Required_argument "t"
> + "tryagain\0" Required_argument "A"
> "syslog\0" No_argument "S"
> ;
> #endif
> @@ -208,6 +210,7 @@
> client_config.script = DEFAULT_SCRIPT;
> client_config.retries = 3;
> client_config.timeout = 3;
> + client_config.tryagain = 60;
>
> /* Parse command line */
> opt_complementary = "c--C:C--c" // mutually exclusive
> @@ -215,10 +218,10 @@
> #if ENABLE_GETOPT_LONG
> applet_long_options = udhcpc_longopts;
> #endif
> - opt = getopt32(argv, "c:CV:fbH:h:F:i:np:qRr:s:T:t:vS",
> + opt = getopt32(argv, "c:CV:fbH:h:F:i:np:qRr:s:T:A:t:vS",
> &str_c, &str_V, &str_h, &str_h, &str_F,
> &client_config.interface, &client_config.pidfile, &str_r,
> - &client_config.script, &str_T, &str_t
> + &client_config.script, &str_T, &str_A, &str_t
> );
>
> if (opt & OPT_c)
> @@ -259,6 +262,8 @@
> client_config.timeout = xatoi_u(str_T);
> if (opt & OPT_t)
> client_config.retries = xatoi_u(str_t);
> + if (opt & OPT_A)
> + client_config.tryagain = xatoi_u(str_A);
> if (opt & OPT_v) {
> puts("version "BB_VER);
> return 0;
> @@ -355,7 +360,7 @@
> }
> /* wait to try again */
> packet_num = 0;
> - timeout = now + 60;
> + timeout = now + client_config.tryagain;
> }
> break;
> case RENEW_REQUESTED:
> Index: networking/udhcp/dhcpc.h
> ===================================================================
> RCS file: /cvs/thirdparty/busybox-1.8.0/networking/udhcp/dhcpc.h,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 dhcpc.h
> --- networking/udhcp/dhcpc.h 5 Nov 2007 13:45:42 -0000 1.1.1.1
> +++ networking/udhcp/dhcpc.h 5 Nov 2007 17:13:59 -0000
> @@ -30,6 +30,7 @@
> int ifindex; /* Index number of the interface to use */
> int retries; /* Max number of request packets */
> int timeout; /* Number of seconds to try to get a lease */
> + int tryagain; /* Seconds to wait after failure */
> uint8_t arp[6]; /* Our arp address */
> };
>
> Index: include/usage.h
> ===================================================================
> RCS file: /cvs/thirdparty/busybox-1.8.0/include/usage.h,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 usage.h
> --- include/usage.h 5 Nov 2007 13:45:42 -0000 1.1.1.1
> +++ include/usage.h 5 Nov 2007 17:13:59 -0000
> @@ -3835,6 +3835,8 @@
> "\n -r,--request=IP IP address to request" \
> "\n -s,--script=file Run file at dhcp events (default: /usr/share/udhcpc/default.script)" \
> "\n -t,--retries=N Send up to N request packets"\
> + "\n -T,--timeout=N Try to get a lease for N seconds (default: 3)"\
> + "\n -A,--tryagain=N Wait N seconds (default: 60) after failure"\
> "\n -f,--foreground Run in foreground" \
> "\n -b,--background Background if lease cannot be immediately negotiated" \
> "\n -S,--syslog Log to syslog too" \
>
>
>
> =---------------------
> paul fox, pgf at brightstareng.com
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://busybox.net/cgi-bin/mailman/listinfo/busybox
=---------------------
paul fox, pgf at brightstareng.com
More information about the busybox
mailing list