mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-20 02:38:32 +00:00
Fix RA problems with two interfaces on same IPv6 subnet.
This commit is contained in:
@@ -65,6 +65,11 @@ version 2.81
|
|||||||
Enhance --conf-dir to load files in a deterministic order. Thanks to
|
Enhance --conf-dir to load files in a deterministic order. Thanks to
|
||||||
Evgenii Seliavka for the suggestion and initial patch.
|
Evgenii Seliavka for the suggestion and initial patch.
|
||||||
|
|
||||||
|
In the router advert code, handle case where we have two
|
||||||
|
different interfaces on the same IPv6 net, and we're doing
|
||||||
|
RA/DHCP service on only one of them. Thanks to NIIBE Yutaka
|
||||||
|
for spotting this case and making the initial patch.
|
||||||
|
|
||||||
|
|
||||||
version 2.80
|
version 2.80
|
||||||
Add support for RFC 4039 DHCP rapid commit. Thanks to Ashram Method
|
Add support for RFC 4039 DHCP rapid commit. Thanks to Ashram Method
|
||||||
|
|||||||
4
debian/changelog
vendored
4
debian/changelog
vendored
@@ -7,8 +7,10 @@ dnsmasq (2.81-1) unstable; urgency=low
|
|||||||
* Add note explaining that ENABLED is SYSV-init only. (closes: #914755)
|
* Add note explaining that ENABLED is SYSV-init only. (closes: #914755)
|
||||||
* Replace ash with dash in contrib/reverse-dns. (closes: #920224)
|
* Replace ash with dash in contrib/reverse-dns. (closes: #920224)
|
||||||
* Move to libidn2. (closes: #932695)
|
* Move to libidn2. (closes: #932695)
|
||||||
|
* Fix RA problem with two interfaces on same net, but RA service on
|
||||||
|
only one of the interfaces. (closes: #949565)
|
||||||
|
|
||||||
-- Simon Kelley <simon@thekelleys.org.uk> Fri, 8 Apr 2019 17:14:15 +0000
|
-- Simon Kelley <simon@thekelleys.org.uk> Mon, 27 Jan 2020 22:31:15 +0000
|
||||||
|
|
||||||
dnsmasq (2.80-1) unstable; urgency=low
|
dnsmasq (2.80-1) unstable; urgency=low
|
||||||
|
|
||||||
|
|||||||
18
src/radv.c
18
src/radv.c
@@ -891,11 +891,21 @@ static int iface_search(struct in6_addr *local, int prefix,
|
|||||||
{
|
{
|
||||||
struct search_param *param = vparam;
|
struct search_param *param = vparam;
|
||||||
struct dhcp_context *context;
|
struct dhcp_context *context;
|
||||||
|
struct iname *tmp;
|
||||||
|
|
||||||
(void)scope;
|
(void)scope;
|
||||||
(void)preferred;
|
(void)preferred;
|
||||||
(void)valid;
|
(void)valid;
|
||||||
|
|
||||||
|
/* ignore interfaces we're not doing DHCP on. */
|
||||||
|
if (!indextoname(daemon->icmp6fd, if_index, param->name) ||
|
||||||
|
!iface_check(AF_LOCAL, NULL, param->name, NULL))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
|
||||||
|
if (tmp->name && wildcard_match(tmp->name, param->name))
|
||||||
|
return 1;
|
||||||
|
|
||||||
for (context = daemon->dhcp6; context; context = context->next)
|
for (context = daemon->dhcp6; context; context = context->next)
|
||||||
if (!(context->flags & (CONTEXT_TEMPLATE | CONTEXT_OLD)) &&
|
if (!(context->flags & (CONTEXT_TEMPLATE | CONTEXT_OLD)) &&
|
||||||
prefix <= context->prefix &&
|
prefix <= context->prefix &&
|
||||||
@@ -907,17 +917,9 @@ static int iface_search(struct in6_addr *local, int prefix,
|
|||||||
/* found an interface that's overdue for RA determine new
|
/* found an interface that's overdue for RA determine new
|
||||||
timeout value and arrange for RA to be sent unless interface is
|
timeout value and arrange for RA to be sent unless interface is
|
||||||
still doing DAD.*/
|
still doing DAD.*/
|
||||||
|
|
||||||
if (!(flags & IFACE_TENTATIVE))
|
if (!(flags & IFACE_TENTATIVE))
|
||||||
param->iface = if_index;
|
param->iface = if_index;
|
||||||
|
|
||||||
/* should never fail */
|
|
||||||
if (!indextoname(daemon->icmp6fd, if_index, param->name))
|
|
||||||
{
|
|
||||||
param->iface = 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
new_timeout(context, param->name, param->now);
|
new_timeout(context, param->name, param->now);
|
||||||
|
|
||||||
/* zero timers for other contexts on the same subnet, so they don't timeout
|
/* zero timers for other contexts on the same subnet, so they don't timeout
|
||||||
|
|||||||
Reference in New Issue
Block a user