dnsmasq: switch to ubus-based hotplug call
authorDaniel Golle <daniel@makrotopia.org>
Fri, 1 Jan 2021 12:47:11 +0000 (12:47 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 8 Feb 2021 00:57:14 +0000 (00:57 +0000)
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 <daniel@makrotopia.org>
package/network/services/dnsmasq/Makefile
package/network/services/dnsmasq/files/dhcp-script.sh
package/network/services/dnsmasq/files/dnsmasq_acl.json
package/network/services/dnsmasq/files/dnsmasqsec.hotplug
package/network/services/dnsmasq/files/dnsmasqsec_hotplug_acl.json [deleted file]

index 2e404dfef337db3c5b6d2d554b8f680b86cf0152..45badd31dcc873a60642c23911e909ee4528fdec 100644 (file)
@@ -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
index 86032694c156ba08539ca2513c9259dec47c9e46..470097bf6bd6fd049eb2706572ea79f34c171217 100755 (executable)
@@ -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 | del | old | arp-add | arp-del)
+               json_add_string "" "MACADDR=$2"
+               json_add_string "" "IPADDR=$3"
+       ;;
+esac
+
 case "$1" in
        add)
-               export ACTION="add"
-               export MACADDR="$2"
-               export IPADDR="$3"
-               export HOSTNAME="$4"
-               exec /sbin/hotplug-call dhcp
+               json_add_string "" "ACTION=add"
+               json_add_string "" "HOSTNAME=$4"
+               hotplugobj="dhcp"
        ;;
        del)
-               export ACTION="remove"
-               export MACADDR="$2"
-               export IPADDR="$3"
-               export HOSTNAME="$4"
-               exec /sbin/hotplug-call dhcp
+               json_add_string "" "ACTION=remove"
+               json_add_string "" "HOSTNAME=$4"
+               hotplugobj="dhcp"
        ;;
        old)
-               export ACTION="update"
-               export MACADDR="$2"
-               export IPADDR="$3"
-               export HOSTNAME="$4"
-               exec /sbin/hotplug-call dhcp
+               json_add_string "" "ACTION=update"
+               json_add_string "" "HOSTNAME=$4"
+               hotplugobj="dhcp"
        ;;
        arp-add)
-               export ACTION="add"
-               export MACADDR="$2"
-               export IPADDR="$3"
-               exec /sbin/hotplug-call neigh
+               json_add_string "" "ACTION=add"
+               hotplugobj="neigh"
        ;;
        arp-del)
-               export ACTION="remove"
-               export MACADDR="$2"
-               export IPADDR="$3"
-               exec /sbin/hotplug-call neigh
+               json_add_string "" "ACTION=remove"
+               hotplugobj="neigh"
        ;;
        tftp)
-               export ACTION="add"
-               export TFTP_SIZE="$2"
-               export TFTP_ADDR="$3"
-               export TFTP_PATH="$4"
-               exec /sbin/hotplug-call 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)"
index 00ec7d0f030d407d72238720799924887a43c325..47d7c2930291e261487dfd9ca999c18303221c0c 100644 (file)
@@ -1,4 +1,12 @@
 {
        "user": "dnsmasq",
-       "publish": [ "dnsmasq" ]
+       "publish": [ "dnsmasq" ],
+       "access": {
+               "hotplug.dhcp": {
+                       "methods": [ "call" ]
+               },
+               "hotplug.neigh": {
+                       "methods": [ "call" ]
+               }
+       }
 }
index 71f5e68b2ddc248f3a7d83a129566b1fab424a91..a59148600b5222833bd2fe7a55768dd89a007b19 100644 (file)
@@ -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 (file)
index 861ecbe..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "user": "ntp",
-       "access": {
-               "service": {
-                       "methods": [ "signal" ]
-               }
-       }
-}