mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Wildcard IPv6 dhcp-range.
This commit is contained in:
@@ -41,6 +41,10 @@ version 2.64
|
|||||||
configured with --listen-address. Thanks to
|
configured with --listen-address. Thanks to
|
||||||
Gene Czarcinski for sorting this out.
|
Gene Czarcinski for sorting this out.
|
||||||
|
|
||||||
|
Add a "wildcard" dhcp-range which works for any IPv6
|
||||||
|
subnet, --dhcp-range=::,static Useful for Stateless
|
||||||
|
DHCPv6. Thanks to Vladislav Grishenko for the patch.
|
||||||
|
|
||||||
|
|
||||||
version 2.63
|
version 2.63
|
||||||
Do duplicate dhcp-host address check in --test mode.
|
Do duplicate dhcp-host address check in --test mode.
|
||||||
|
|||||||
21
src/dhcp6.c
21
src/dhcp6.c
@@ -126,18 +126,25 @@ void dhcp6_packet(time_t now)
|
|||||||
if (tmp->name && (strcmp(tmp->name, ifr.ifr_name) == 0))
|
if (tmp->name && (strcmp(tmp->name, ifr.ifr_name) == 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* unlinked contexts are marked by context->current == context */
|
|
||||||
for (context = daemon->dhcp6; context; context = context->next)
|
|
||||||
{
|
|
||||||
context->current = context;
|
|
||||||
memset(&context->local6, 0, IN6ADDRSZ);
|
|
||||||
}
|
|
||||||
|
|
||||||
parm.current = NULL;
|
parm.current = NULL;
|
||||||
parm.ind = if_index;
|
parm.ind = if_index;
|
||||||
parm.addr_match = 0;
|
parm.addr_match = 0;
|
||||||
memset(&parm.fallback, 0, IN6ADDRSZ);
|
memset(&parm.fallback, 0, IN6ADDRSZ);
|
||||||
|
|
||||||
|
for (context = daemon->dhcp6; context; context = context->next)
|
||||||
|
if (IN6_IS_ADDR_UNSPECIFIED(&context->start6) && context->prefix == 0)
|
||||||
|
{
|
||||||
|
/* wildcard context for DHCP-stateless only */
|
||||||
|
parm.current = context;
|
||||||
|
context->current = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* unlinked contexts are marked by context->current == context */
|
||||||
|
context->current = context;
|
||||||
|
memset(&context->local6, 0, IN6ADDRSZ);
|
||||||
|
}
|
||||||
|
|
||||||
if (!iface_enumerate(AF_INET6, &parm, complete_context6))
|
if (!iface_enumerate(AF_INET6, &parm, complete_context6))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -2116,6 +2116,10 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
new->prefix = 64; /* default */
|
new->prefix = 64; /* default */
|
||||||
new->end6 = new->start6;
|
new->end6 = new->start6;
|
||||||
|
|
||||||
|
/* dhcp-range=:: enables DHCP stateless on any interface */
|
||||||
|
if (IN6_IS_ADDR_UNSPECIFIED(&new->start6))
|
||||||
|
new->prefix = 0;
|
||||||
|
|
||||||
for (leasepos = 1; leasepos < k; leasepos++)
|
for (leasepos = 1; leasepos < k; leasepos++)
|
||||||
{
|
{
|
||||||
if (strcmp(a[leasepos], "static") == 0)
|
if (strcmp(a[leasepos], "static") == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user