summaryrefslogtreecommitdiff
path: root/client/dhclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/dhclient.c')
-rw-r--r--client/dhclient.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/client/dhclient.c b/client/dhclient.c
index ca519a4b..3c140bae 100644
--- a/client/dhclient.c
+++ b/client/dhclient.c
@@ -66,7 +66,7 @@ struct data_string default_duid;
#define ASSERT_STATE(state_is, state_shouldbe) {}
static const char copyright[] =
-"Copyright 2004-2016 Internet Systems Consortium.";
+"Copyright 2004-2017 Internet Systems Consortium.";
static const char arr [] = "All rights reserved.";
static const char message [] = "Internet Systems Consortium DHCP Client";
static const char url [] =
@@ -87,6 +87,7 @@ int wanted_ia_pd = 0;
int require_all_ias = 0; /* If the user requires all of the IAs to
be available before accepting a lease
0 = no, 1 = requries */
+int dad_wait_time = 0;
char *mockup_relay = NULL;
char *progname = NULL;
@@ -139,6 +140,7 @@ usage(const char *sfmt, const char *sarg)
log_fatal("Usage: %s "
#ifdef DHCPv6
"[-4|-6] [-SNTPR1dvrx] [-nw] [-p <port>]\n"
+ " [--dad-wait-time seconds]\n"
#else /* DHCPv6 */
"[-1dvrx] [-nw] [-p <port>]\n"
#endif /* DHCPv6 */
@@ -353,6 +355,15 @@ main(int argc, char **argv) {
local_family_set = 1;
local_family = AF_INET6;
require_all_ias = 1;
+ } else if (!strcmp(argv[i], "--dad-wait-time")) {
+ if (++i == argc) {
+ usage(use_noarg, argv[i-1]);
+ }
+ dad_wait_time = (int)strtol(argv[i], &s, 10);
+ if (errno || (*s != '\0') || (dad_wait_time < 0)) {
+ usage("Invalid value for --dad-wait-time: %s", argv[i]);
+ }
+
#endif /* DHCPv6 */
} else if (!strcmp(argv[i], "-v")) {
quiet = 0;
@@ -3172,6 +3183,8 @@ void script_init (client, reason, medium)
client_envadd (client, "", "reason", "%s", reason);
client_envadd (client, "", "pid", "%ld", (long int)getpid ());
+ client_envadd (client, "", "dad_wait_time", "%ld",
+ (long int)dad_wait_time);
}
}