From aed95c4cb8d5a55a795910a759d08e1393f8d967 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Fri, 1 Jan 2021 12:47:11 +0000 Subject: [PATCH] dnsmasq: switch to ubus-based hotplug call Use new ubus-based hotplug call in dhcp-script.sh As sysntpd now makes use of the new ubus-based hotplug calls, dnsmasq no longer needs to ship ACL to cover ntpd-hotplug. Signed-off-by: Daniel Golle --- package/network/services/dnsmasq/Makefile | 3 +- .../services/dnsmasq/files/dhcp-script.sh | 85 ++++++++++--------- .../services/dnsmasq/files/dnsmasq_acl.json | 10 ++- .../services/dnsmasq/files/dnsmasqsec.hotplug | 1 + .../dnsmasq/files/dnsmasqsec_hotplug_acl.json | 8 -- 5 files changed, 57 insertions(+), 50 deletions(-) delete mode 100644 package/network/services/dnsmasq/files/dnsmasqsec_hotplug_acl.json diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile index 2e404dfef3..45badd31dc 100644 --- a/package/network/services/dnsmasq/Makefile +++ b/package/network/services/dnsmasq/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsmasq PKG_UPSTREAM_VERSION:=2.84test3 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION))) -PKG_RELEASE:=1 +PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/test-releases @@ -180,7 +180,6 @@ define Package/dnsmasq/install $(INSTALL_BIN) ./files/dhcp-script.sh $(1)/usr/lib/dnsmasq/dhcp-script.sh $(INSTALL_DIR) $(1)/usr/share/acl.d $(INSTALL_DATA) ./files/dnsmasq_acl.json $(1)/usr/share/acl.d/ - $(INSTALL_DATA) ./files/dnsmasqsec_hotplug_acl.json $(1)/usr/share/acl.d/ $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_BIN) ./files/50-dnsmasq-migrate-resolv-conf-auto.sh $(1)/etc/uci-defaults endef diff --git a/package/network/services/dnsmasq/files/dhcp-script.sh b/package/network/services/dnsmasq/files/dhcp-script.sh index 86032694c1..470097bf6b 100755 --- a/package/network/services/dnsmasq/files/dhcp-script.sh +++ b/package/network/services/dnsmasq/files/dhcp-script.sh @@ -2,45 +2,52 @@ [ -f "$USER_DHCPSCRIPT" ] && . "$USER_DHCPSCRIPT" "$@" +. /usr/share/libubox/jshn.sh + +json_init +json_add_array env +hotplugobj="" + case "$1" in - add) - export ACTION="add" - export MACADDR="$2" - export IPADDR="$3" - export HOSTNAME="$4" - exec /sbin/hotplug-call dhcp - ;; - del) - export ACTION="remove" - export MACADDR="$2" - export IPADDR="$3" - export HOSTNAME="$4" - exec /sbin/hotplug-call dhcp - ;; - old) - export ACTION="update" - export MACADDR="$2" - export IPADDR="$3" - export HOSTNAME="$4" - exec /sbin/hotplug-call dhcp - ;; - arp-add) - export ACTION="add" - export MACADDR="$2" - export IPADDR="$3" - exec /sbin/hotplug-call neigh - ;; - arp-del) - export ACTION="remove" - export MACADDR="$2" - export IPADDR="$3" - exec /sbin/hotplug-call neigh - ;; - tftp) - export ACTION="add" - export TFTP_SIZE="$2" - export TFTP_ADDR="$3" - export TFTP_PATH="$4" - exec /sbin/hotplug-call tftp + add | del | old | arp-add | arp-del) + json_add_string "" "MACADDR=$2" + json_add_string "" "IPADDR=$3" ;; esac + +case "$1" in + add) + json_add_string "" "ACTION=add" + json_add_string "" "HOSTNAME=$4" + hotplugobj="dhcp" + ;; + del) + json_add_string "" "ACTION=remove" + json_add_string "" "HOSTNAME=$4" + hotplugobj="dhcp" + ;; + old) + json_add_string "" "ACTION=update" + json_add_string "" "HOSTNAME=$4" + hotplugobj="dhcp" + ;; + arp-add) + json_add_string "" "ACTION=add" + hotplugobj="neigh" + ;; + arp-del) + json_add_string "" "ACTION=remove" + hotplugobj="neigh" + ;; + tftp) + json_add_string "" "ACTION=add" + json_add_string "" "TFTP_SIZE=$2" + json_add_string "" "TFTP_ADDR=$3" + json_add_string "" "TFTP_PATH=$4" + hotplugobj="tftp" + ;; +esac + +json_close_array env + +[ -n "$hotplugobj" ] && ubus call hotplug.${hotplugobj} call "$(json_dump)" diff --git a/package/network/services/dnsmasq/files/dnsmasq_acl.json b/package/network/services/dnsmasq/files/dnsmasq_acl.json index 00ec7d0f03..47d7c29302 100644 --- a/package/network/services/dnsmasq/files/dnsmasq_acl.json +++ b/package/network/services/dnsmasq/files/dnsmasq_acl.json @@ -1,4 +1,12 @@ { "user": "dnsmasq", - "publish": [ "dnsmasq" ] + "publish": [ "dnsmasq" ], + "access": { + "hotplug.dhcp": { + "methods": [ "call" ] + }, + "hotplug.neigh": { + "methods": [ "call" ] + } + } } diff --git a/package/network/services/dnsmasq/files/dnsmasqsec.hotplug b/package/network/services/dnsmasq/files/dnsmasqsec.hotplug index 71f5e68b2d..a59148600b 100644 --- a/package/network/services/dnsmasq/files/dnsmasqsec.hotplug +++ b/package/network/services/dnsmasq/files/dnsmasqsec.hotplug @@ -5,6 +5,7 @@ TIMEVALIDFILE="/var/state/dnsmasqsec" [ -f "$TIMEVALIDFILE" ] || { echo "ntpd says time is valid" >$TIMEVALIDFILE /etc/init.d/dnsmasq enabled && { + initscript=dnsmasq . /lib/functions/procd.sh procd_send_signal dnsmasq '*' INT } diff --git a/package/network/services/dnsmasq/files/dnsmasqsec_hotplug_acl.json b/package/network/services/dnsmasq/files/dnsmasqsec_hotplug_acl.json deleted file mode 100644 index 861ecbe034..0000000000 --- a/package/network/services/dnsmasq/files/dnsmasqsec_hotplug_acl.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "user": "ntp", - "access": { - "service": { - "methods": [ "signal" ] - } - } -}