46 lines
		
	
	
		
			909 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			909 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| . /usr/share/libubox/jshn.sh
 | |
| . /lib/functions/service.sh
 | |
| 
 | |
| DEVLIST=/var/run/gluon-announced.devs
 | |
| DAEMON=/usr/bin/respondd
 | |
| 
 | |
| 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::2:1001 -p 1001 -c 'return require("gluon.announced").handle_request' $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" 2>/dev/null)"
 | |
| 
 | |
| 		[ "$MESH" = "bat0" -o "$INTERFACE" = "client" ] || exit 0
 | |
| 
 | |
| 		DEVS=$(cat $DEVLIST; echo $DEVICE $INTERFACE)
 | |
| 
 | |
| 		echo "$DEVS" | sort -u > $DEVLIST
 | |
| 
 | |
| 		restart_announced
 | |
| 
 | |
| 		;;
 | |
| esac
 | |
| 
 |