[openwrt/openwrt] dnsmasq: add specific interface procd triggers

LEDE Commits lede-commits at lists.infradead.org
Fri May 11 04:49:52 PDT 2018


dedeckeh pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/ecd954d5302b2d135005ca68c206bb2d544b0bde

commit ecd954d5302b2d135005ca68c206bb2d544b0bde
Author: hux <xinxing.huchn at gmail.com>
AuthorDate: Tue May 8 00:37:48 2018 +0200

    dnsmasq: add specific interface procd triggers
    
    Right now interface.update events are sent out by netifd upon interface state,
    route, address (lifetime), prefix lifetime changes.
    Dnsmasq is only interested in interface state changes and currently adds an
    interface trigger for all the "interface.*" events.
    In combination with commit 23bba9cb330, which triggers a SIGHUP signal to dnsmasq,
    IPv6 address/prefix lifetime changes on the wan will trigger dnsmasq reloads which
    can become frequent in case of shorter lifetimes.
    
    To avoid frequent dnsmasq reload, this patch adds specific interface triggers.
    During dnsmasq init it loops dhcp uci section; if the value of the ignore option
    is set to 0, then the corresponding interface trigger is not installed.
    Otherwise, if the ignore option value is 1, then procd_add_interface_trigger is
    called which adds the interface trigger.
    
    Signed-off-by: hux <xinxing.huchn at gmail.com>
---
 package/network/services/dnsmasq/Makefile           |  2 +-
 package/network/services/dnsmasq/files/dnsmasq.init | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index b6502bf..60ed9ed 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.79
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 1881b2b..2c71a77 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -1042,10 +1042,22 @@ dnsmasq_stop()
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
 }
 
+add_interface_trigger()
+{
+	local interface ignore
+
+	config_get interface "$1" interface
+	config_get_bool ignore "$1" ignore 0
+
+	[ -n "$interface" -a $ignore -eq 0 ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/dnsmasq reload
+}
+
 service_triggers()
 {
 	procd_add_reload_trigger "dhcp" "system"
-	procd_add_raw_trigger "interface.*" 2000 /etc/init.d/dnsmasq reload
+
+	config_load dhcp
+	config_foreach add_interface_trigger dhcp
 }
 
 boot()



More information about the lede-commits mailing list