mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
aba3b1c6a3
Dnsmasq used SIGHUP to do too many things: 1) set dnssec time validation enabled, 2) bump SOA zone serial, 3) clear dns cache, 4) reload hosts files, 5) reload resolvers/servers files. Many subsystems within LEDE can send SIGHUP to dnsmasq: 1) ntpd hotplug (to indicate time is valid for dnssec) 2) odhcpd (to indicate a new/removed host - typically DHCPv6 leases) 3) procd on interface state changes 4) procd on system config state changes, 5) service reload. If dnssec time validation is enabled before the system clock has been set to a sensible time, name resolution will fail. Because name resolution fails, ntpd is unable to resolve time server names to addresses, so is unable to set time. Classic chicken/egg. Since commits23bba9cb33
(service reload) &4f02285d8b
(system config) make it more likely a SIGHUP will be sent for events other than 'ntpd has set time' it is more likely that an errant 'name resolution is failing for everything' situation will be encountered. Fortunately the upstream dnsmasq people agree and have moved 'check dnssec timestamp enable' from SIGHUP handler to SIGINT. Backport the upstream patch to use SIGINT. ntpd hotplug script updated to use SIGINT. Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
15 lines
264 B
Bash
15 lines
264 B
Bash
#!/bin/sh
|
|
|
|
. /lib/functions/procd.sh
|
|
|
|
TIMEVALIDFILE="/var/state/dnsmasqsec"
|
|
|
|
[ "$ACTION" = stratum ] || exit 0
|
|
|
|
[ -f "$TIMEVALIDFILE" ] || {
|
|
echo "ntpd says time is valid" >$TIMEVALIDFILE
|
|
/etc/init.d/dnsmasq enabled && {
|
|
procd_send_signal dnsmasq '*' INT
|
|
}
|
|
}
|