[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