summaryrefslogtreecommitdiff
path: root/client/dhclient.c
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2017-11-27 08:54:00 -0500
committerThomas Markwalder <tmark@isc.org>2017-11-27 08:55:13 -0500
commitc0e9661e70446890df9cdc3f5df48ab98b466600 (patch)
treee65c6b1ccd282b2297a74f036fe0449f1b5d407c /client/dhclient.c
parent3e985dbf1fe0ec0cc022e57c85d7d4f1d087f402 (diff)
downloadisc-dhcp-c0e9661e70446890df9cdc3f5df48ab98b466600.tar.gz
[master] Added --prefix-len-hint command line argument to dhclient
Merges in rt43792
Diffstat (limited to 'client/dhclient.c')
-rw-r--r--client/dhclient.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/client/dhclient.c b/client/dhclient.c
index 46efee50..e25ab94b 100644
--- a/client/dhclient.c
+++ b/client/dhclient.c
@@ -98,7 +98,11 @@ 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 */
+#if defined(DHCPv6)
int dad_wait_time = 0;
+int prefix_len_hint = 0;
+#endif
+
char *mockup_relay = NULL;
char *progname = NULL;
@@ -156,11 +160,12 @@ static const char use_v6command[] = "Command not used for DHCPv4: %s";
#ifdef DHCP4o6
#define DHCLIENT_USAGE0 \
"[-4|-6] [-SNTPRI1dvrxi] [-nw] -4o6 <port>] [-p <port>]\n" \
-" [-D LL|LLT] [--dad-wait-time seconds]\n"
+" [-D LL|LLT] [--dad-wait-time seconds]\n" \
+" [--prefix-len-hint length]\n"
#else /* DHCP4o6 */
#define DHCLIENT_USAGE0 \
"[-4|-6] [-SNTPRI1dvrxi] [-nw] [-p <port>] [-D LL|LLT]\n" \
-" [--dad-wait-time seconds]\n"
+" [--dad-wait-time seconds] [--prefix-len-hint length]\n"
#endif
#else /* DHCPv6 */
#define DHCLIENT_USAGE0 \
@@ -490,7 +495,17 @@ main(int argc, char **argv) {
if (errno || (*s != '\0') || (dad_wait_time < 0)) {
usage("Invalid value for --dad-wait-time: %s", argv[i]);
}
+ } else if (!strcmp(argv[i], "--prefix-len-hint")) {
+ if (++i == argc) {
+ usage(use_noarg, argv[i-1]);
+ }
+ errno = 0;
+ prefix_len_hint = (int)strtol(argv[i], &s, 10);
+ if (errno || (*s != '\0') || (prefix_len_hint < 0)) {
+ usage("Invalid value for --prefix-len-hint: %s",
+ argv[i]);
+ }
#endif /* DHCPv6 */
} else if (!strcmp(argv[i], "-D")) {
duid_v4 = 1;