diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/dhc6.c | 4 | ||||
-rw-r--r-- | client/dhclient.c | 19 |
2 files changed, 18 insertions, 5 deletions
diff --git a/client/dhc6.c b/client/dhc6.c index 357b40e9..e0d052e5 100644 --- a/client/dhc6.c +++ b/client/dhc6.c @@ -154,7 +154,7 @@ static int drop_declined_addrs(struct dhc6_lease *lease); extern int onetry; extern int stateless; extern int prefix_len_hint; - +extern int address_prefix_len; /* * Assign DHCPv6 port numbers as a client. @@ -4434,7 +4434,7 @@ dhc6_marshall_values(const char *prefix, struct client_state *client, (unsigned) addr->plen); } else { client_envadd(client, prefix, "ip6_prefixlen", - "%d", DHCLIENT_DEFAULT_PREFIX_LEN); + "%d", address_prefix_len); client_envadd(client, prefix, "ip6_address", "%s", piaddr(addr->address)); } diff --git a/client/dhclient.c b/client/dhclient.c index 94dfbd91..55e1c61c 100644 --- a/client/dhclient.c +++ b/client/dhclient.c @@ -105,6 +105,7 @@ int dad_wait_time = 0; int prefix_len_hint = 0; #endif +int address_prefix_len = DHCLIENT_DEFAULT_PREFIX_LEN; char *mockup_relay = NULL; char *progname = NULL; @@ -163,12 +164,14 @@ static const char use_v6command[] = "Command not used for DHCPv4: %s"; #define DHCLIENT_USAGE0 \ "[-4|-6] [-SNTPRI1dvrxi] [-nw] -4o6 <port>] [-p <port>] [-D LL|LLT]\n" \ " [--dad-wait-time <seconds>] [--prefix-len-hint <length>]\n" \ -" [--decline-wait-time <seconds>]\n" +" [--decline-wait-time <seconds>]\n" \ +" [--address-prefix-len length]\n" #else /* DHCP4o6 */ #define DHCLIENT_USAGE0 \ "[-4|-6] [-SNTPRI1dvrxi] [-nw] [-p <port>] [-D LL|LLT]\n" \ " [--dad-wait-time <seconds>] [--prefix-len-hint <length>]\n" \ -" [--decline-wait-time <seconds>]\n" +" [--decline-wait-time <seconds>]\n" \ +" [--address-prefix-len length]\n" #endif #else /* DHCPv6 */ #define DHCLIENT_USAGE0 \ @@ -495,7 +498,6 @@ main(int argc, char **argv) { if (++i == argc) { usage(use_noarg, argv[i-1]); } - errno = 0; dad_wait_time = (int)strtol(argv[i], &s, 10); if (errno || (*s != '\0') || (dad_wait_time < 0)) { @@ -513,6 +515,17 @@ main(int argc, char **argv) { usage("Invalid value for --prefix-len-hint: %s", argv[i]); } + } else if (!strcmp(argv[i], "--address-prefix-len")) { + if (++i == argc) { + usage(use_noarg, argv[i-1]); + } + errno = 0; + address_prefix_len = (int)strtol(argv[i], &s, 10); + if (errno || (*s != '\0') || + (address_prefix_len < 0)) { + usage("Invalid value for" + " --address-prefix-len: %s", argv[i]); + } #endif /* DHCPv6 */ } else if (!strcmp(argv[i], "--decline-wait-time")) { if (++i == argc) { |