46 lines
		
	
	
		
			872 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			872 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
. /usr/share/libubox/jshn.sh
 | 
						|
. /lib/functions/service.sh
 | 
						|
 | 
						|
DEVLIST=/var/run/gluon-announce.devs
 | 
						|
DAEMON=/usr/bin/gluon-announced
 | 
						|
 | 
						|
ifname_to_dev () {
 | 
						|
	json_load "$(ubus call network.interface.$1 status)"
 | 
						|
	json_get_var dev device
 | 
						|
 | 
						|
	echo "$dev"
 | 
						|
}
 | 
						|
 | 
						|
restart_announced () {
 | 
						|
	SERVICE_USE_PID=1
 | 
						|
	SERVICE_WRITE_PID=1
 | 
						|
	SERVICE_DAEMONIZE=1
 | 
						|
 | 
						|
	DEVS=$(cat $DEVLIST | while read dev iface;do echo -n " -i $dev";done)
 | 
						|
 | 
						|
	service_stop $DAEMON
 | 
						|
	service_start $DAEMON -g ff02:0:0:0:0:0:2:1001 -p 1001 -s '/lib/gluon/announce/announce.lua nodeinfo' $DEVS
 | 
						|
}
 | 
						|
 | 
						|
case "$ACTION" in
 | 
						|
	ifdown)
 | 
						|
		sed -i "/$INTERFACE/d" $DEVLIST
 | 
						|
		;;
 | 
						|
	ifup)
 | 
						|
		DEVICE=$(ifname_to_dev $INTERFACE)
 | 
						|
		MESH=$(cat /sys/class/net/$DEVICE/batman_adv/mesh_iface)
 | 
						|
 | 
						|
		[ $MESH = "bat0" ] || exit 0
 | 
						|
 | 
						|
		DEVS="$(cat $DEVLIST; echo $DEVICE $INTERFACE)"
 | 
						|
 | 
						|
		echo "$DEVS" | sort | uniq > $DEVLIST
 | 
						|
 | 
						|
		restart_announced
 | 
						|
 | 
						|
		;;
 | 
						|
esac
 | 
						|
 |