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

LEDE Commits lede-commits at lists.infradead.org
Mon May 14 10:27:03 PDT 2018


Citeren LEDE Commits <lede-commits at lists.infradead.org>:

> 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.

I'm confused here. The documentations says

"You can disable a lease pool for a specific interface by specifying  
the ignore option in the corresponding section."

So I have 'option ignore 1' in my WAN section, since I don't intend to  
provide DHCP service on that interface, right? According to the above,  
the procd trigger should be installed then.

>     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

But this is not what happens here. The trigger will be installed if  
the interface is not empty and ignore equals 0. Could this be a case  
of reversed logic?

> +}
> +
>  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()
>
> _______________________________________________
> lede-commits mailing list
> lede-commits at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-commits






More information about the lede-commits mailing list