netifyd: support uci parameters
authorKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Sun, 3 May 2020 13:27:19 +0000 (14:27 +0100)
committerKevin Darbyshire-Bryant <6500011+ldir-EDB0@users.noreply.github.com>
Tue, 12 May 2020 06:23:16 +0000 (07:23 +0100)
Integrate with uci to support 'enabled/disabled' startup option and
override netify's default auto network selection.

config netifyd
       option enabled 0
       option autoconfig 1

autoconfig: Use netify's in-built interface selection
else use 'internal/external_if' definitions.

Also persist important agent config across sysupgrade
agent.uuid, serial.uuid, site.uuid

Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
net/netifyd/Makefile
net/netifyd/files/netifyd.config [new file with mode: 0644]
net/netifyd/files/netifyd.init

index b641edfa29908339c9ef0efdace9d4e1ac0062fa..538aa16ad96283501eb22daf89ca9e3c1c4a1863 100644 (file)
@@ -45,6 +45,10 @@ endef
 
 define Package/netifyd/conffiles
 /etc/netifyd.conf
+/etc/config/netifyd
+/etc/netify.d/agent.uuid
+/etc/netify.d/serial.uuid
+/etc/netify.d/site.uuid
 endef
 
 TARGET_CFLAGS+=-ffunction-sections -fdata-sections -Wno-psabi
@@ -85,6 +89,8 @@ endef
 define Package/netifyd/install
        $(INSTALL_DIR) $(1)/etc
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/deploy/netifyd.conf $(1)/etc
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/netifyd.config $(1)/etc/config/netifyd
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/netifyd.init $(1)/etc/init.d/netifyd
        $(INSTALL_DIR) $(1)/usr/sbin
diff --git a/net/netifyd/files/netifyd.config b/net/netifyd/files/netifyd.config
new file mode 100644 (file)
index 0000000..49e1c23
--- /dev/null
@@ -0,0 +1,5 @@
+config netifyd
+       option enabled 1
+       option autoconfig 1
+#      option internal_if 'eth0'
+#      option external_if 'eth1'
index ed28f7e160f3c71b696700cd81d7d953006a0b8b..1f7d9311a280477f3401e0e3600f0933fc02be7d 100644 (file)
@@ -9,20 +9,38 @@ STOP=50
 
 USE_PROCD=1
 PROG=/usr/sbin/netifyd
-NETIFYD_AUTODETECT=yes
 
-start_service() {
-    mkdir -p /etc/netify.d
-    mkdir -p /var/run/netifyd
+start_netifyd() {
+       local instance enabled autoconfig internal_if external_if
+
+       instance="$1"
+
+       config_get_bool enabled "$instance" enabled 0
+       [ "$enabled" -eq 0 ] && return 0
+
+       [ ! -d /var/run/netifyd ] && mkdir -p /var/run/netifyd
 
-    source /usr/share/netifyd/functions.sh
-    NETIFYD_OPTS=$(auto_detect_options)
+       config_get_bool autoconfig "$instance" autoconfig 1
 
-    load_modules
+       if [ "$autoconfig" -gt 0 ] ; then
+               source /usr/share/netifyd/functions.sh
+               load_modules
+               NETIFYD_AUTODETECT=yes
+               NETIFYD_OPTS=$(auto_detect_options)
+       else
+               config_get internal_if "$instance" internal_if "eth0"
+               config_get external_if "$instance" external_if "eth1"
+               NETIFYD_OPTS="-E $external_if -I $internal_if"
+       fi
 
-    procd_open_instance
-    procd_set_param command $PROG -R $NETIFYD_OPTS
-    procd_set_param file /etc/netifyd.conf
-    procd_set_param respawn
-    procd_close_instance
+       procd_open_instance
+       procd_set_param command $PROG -R $NETIFYD_OPTS
+       procd_set_param file /etc/netifyd.conf
+       procd_set_param respawn
+       procd_close_instance
+}
+
+start_service() {
+       config_load netifyd
+       config_foreach start_netifyd netifyd
 }