Browse Source

gluon-respondd: Use procd in initscript and to restart on network changes

Jan-Philipp Litza 7 years ago
parent
commit
d8bb97831b

+ 0 - 16
package/gluon-respondd/files/etc/hotplug.d/iface/10-gluon-respondd

@@ -1,16 +0,0 @@
-#!/bin/sh
-
-. /lib/functions/service.sh
-
-ifname_to_dev () {
-	ifstatus client "$1"|jsonfilter -e "@.device"
-}
-
-case "$ACTION" in
-	ifup)
-		DEVICE="$(ifname_to_dev "$INTERFACE")"
-
-		[ "$DEVICE" != "$(cat /lib/gluon/respondd/client.dev 2>/dev/null)" ] ||
-			/etc/init.d/gluon-respondd restart_if_running &
-		;;
-esac

+ 13 - 33
package/gluon-respondd/files/etc/init.d/gluon-respondd

@@ -1,48 +1,28 @@
 #!/bin/sh /etc/rc.common
 
-EXTRA_COMMANDS='restart_if_running'
-
+USE_PROCD=1
 START=50
 
-SERVICE_WRITE_PID=1
-SERVICE_DAEMONIZE=1
-
 DAEMON=/usr/bin/respondd
-LOCK=/var/run/gluon-respondd.lock
-
 
-do_start() {
+start_service() {
 	DEVS=""
 	for dev in $( ubus call network.interface dump | jsonfilter -e "@.interface[@.proto='gluon_mesh' && @.up=true].device") $(cat /lib/gluon/respondd/client.dev 2>/dev/null)
 	do
 		DEVS="$DEVS -i $dev"
 	done
-	service_start $DAEMON -g ff02::2:1001 -p 1001 -d /lib/gluon/respondd $DEVS
-}
-
-do_stop() {
-	service_stop $DAEMON
+	procd_open_instance
+	procd_set_param command $DAEMON -g ff02::2:1001 -p 1001 -d /lib/gluon/respondd $DEVS
+	procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
+	procd_set_param stderr 1
+	procd_close_instance
 }
 
-start() {
-	lock $LOCK
-	do_start
-	lock -u $LOCK
-}
-
-stop() {
-	lock $LOCK
-	do_stop
-	lock -u $LOCK
-}
-
-restart_if_running() {
-	lock $LOCK
-
-	if service_check $DAEMON; then
-		do_stop
-		do_start
-	fi
+service_triggers() {
+	local script=$(readlink "$initscript")
+	local name=$(basename ${script:-$initscript})
 
-	lock -u $LOCK
+	procd_open_trigger
+	procd_add_raw_trigger "interface.*" 0 "/etc/init.d/$name" reload
+	procd_close_trigger
 }

+ 0 - 2
package/gluon-respondd/files/lib/gluon/core/mesh/setup.d/10-gluon-respondd

@@ -1,2 +0,0 @@
-#!/bin/sh
-/etc/init.d/gluon-respondd restart_if_running &