Skip to content
Snippets Groups Projects
10-gluon-announced 873 B
Newer Older
#!/bin/sh

. /usr/share/libubox/jshn.sh
. /lib/functions/service.sh

DEVLIST=/var/run/gluon-announced.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