From d8bb97831b197c543d9727f1c81539bb6fba127a Mon Sep 17 00:00:00 2001 From: Jan-Philipp Litza Date: Thu, 8 Dec 2016 23:13:56 +0100 Subject: [PATCH] gluon-respondd: Use procd in initscript and to restart on network changes --- .../etc/hotplug.d/iface/10-gluon-respondd | 16 ------- .../files/etc/init.d/gluon-respondd | 48 ++++++------------- .../gluon/core/mesh/setup.d/10-gluon-respondd | 2 - 3 files changed, 14 insertions(+), 52 deletions(-) delete mode 100644 package/gluon-respondd/files/etc/hotplug.d/iface/10-gluon-respondd delete mode 100755 package/gluon-respondd/files/lib/gluon/core/mesh/setup.d/10-gluon-respondd diff --git a/package/gluon-respondd/files/etc/hotplug.d/iface/10-gluon-respondd b/package/gluon-respondd/files/etc/hotplug.d/iface/10-gluon-respondd deleted file mode 100644 index 564559e7..00000000 --- a/package/gluon-respondd/files/etc/hotplug.d/iface/10-gluon-respondd +++ /dev/null @@ -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 diff --git a/package/gluon-respondd/files/etc/init.d/gluon-respondd b/package/gluon-respondd/files/etc/init.d/gluon-respondd index 49afef4f..6b61d731 100755 --- a/package/gluon-respondd/files/etc/init.d/gluon-respondd +++ b/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 + 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 } diff --git a/package/gluon-respondd/files/lib/gluon/core/mesh/setup.d/10-gluon-respondd b/package/gluon-respondd/files/lib/gluon/core/mesh/setup.d/10-gluon-respondd deleted file mode 100755 index 811386e0..00000000 --- a/package/gluon-respondd/files/lib/gluon/core/mesh/setup.d/10-gluon-respondd +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/etc/init.d/gluon-respondd restart_if_running &