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