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

This commit is contained in:
Jan-Philipp Litza 2016-12-08 23:13:56 +01:00
parent cb86fce29f
commit d8bb97831b
3 changed files with 14 additions and 52 deletions

View File

@ -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

View File

@ -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
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
}
do_stop() {
service_stop $DAEMON
}
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
lock -u $LOCK
service_triggers() {
local script=$(readlink "$initscript")
local name=$(basename ${script:-$initscript})
procd_open_trigger
procd_add_raw_trigger "interface.*" 0 "/etc/init.d/$name" reload
procd_close_trigger
}

View File

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