gluon-respondd: Use procd in initscript and to restart on network changes
This commit is contained in:
		
							parent
							
								
									cb86fce29f
								
							
						
					
					
						commit
						d8bb97831b
					
				| @ -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 | ||||
| @ -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 | ||||
| } | ||||
|  | ||||
| @ -1,2 +0,0 @@ | ||||
| #!/bin/sh | ||||
| /etc/init.d/gluon-respondd restart_if_running & | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user