mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
066c85321e
Refresh patches and backport upstream to current HEAD: 1f1873a Log warning on very large cachesize config, instead of truncating it. 0a496f0 Do unsolicited RAs for interfaces which appear after dnsmasq startup. e27825b Fix logging in previous. 1f60a18 Retry SERVFAIL DNSSEC queries to a different server, if possible. a0088e8 Handle query retry on REFUSED or SERVFAIL for DNSSEC-generated queries. 34e26e1 Retry query to other servers on receipt of SERVFAIL rcode. 6b17335 Add packet-dump debugging facility. 07ed585 Add logging for DNS error returns from upstream and local configuration. 0669ee7 Fix DHCP broken-ness when --no-ping AND --dhcp-sequential-ip are set. f84e674 Be persistent with broken-upstream-DNSSEC warnings. Compile & run tested: ar71xx Archer C7 v2 Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
45 lines
1.7 KiB
Diff
45 lines
1.7 KiB
Diff
From 0a496f059c1e9d75c33cce4c1211d58422ba4f62 Mon Sep 17 00:00:00 2001
|
|
From: Maarten de Vries <maarten+dnsmasq@m.de-vri.es>
|
|
Date: Fri, 11 May 2018 23:20:58 +0100
|
|
Subject: [PATCH 09/10] Do unsolicited RAs for interfaces which appear after
|
|
dnsmasq startup.
|
|
|
|
I noticed that dnsmasq often wasn't sending any unsolicited RAs for me.
|
|
|
|
This turned out to happen when the interface (a bridge interface) wasn't
|
|
created yet at the time dnsmasq started. When dnsmasq is started after
|
|
the interface is created, it sends RAs as expected. I assume this also
|
|
extends to other types of virtual interfaces that are created after
|
|
dnsmasq starts.
|
|
|
|
Digging into the source, it seems to be caused by a missing call to
|
|
ra_start_unsolicited for non-template contexts in construct_worker from
|
|
src/dhcp6.c. The attached patch adds that call, but only if the
|
|
interface index or address changed to prevent doing fast RAs for no reason.
|
|
|
|
I tested it on my own server and it appears to work as expected. When
|
|
the interface is created and configured, dnsmasq does fast RAs for a
|
|
while and then settles into slow RAs.
|
|
|
|
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
|
---
|
|
src/dhcp6.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
--- a/src/dhcp6.c
|
|
+++ b/src/dhcp6.c
|
|
@@ -647,6 +647,13 @@ static int construct_worker(struct in6_a
|
|
is_same_net6(local, &template->start6, template->prefix) &&
|
|
is_same_net6(local, &template->end6, template->prefix))
|
|
{
|
|
+ /* First time found, do fast RA. */
|
|
+ if (template->if_index != if_index || !IN6_ARE_ADDR_EQUAL(&template->local6, local))
|
|
+ {
|
|
+ ra_start_unsolicited(param->now, template);
|
|
+ param->newone = 1;
|
|
+ }
|
|
+
|
|
template->if_index = if_index;
|
|
template->local6 = *local;
|
|
}
|