09e1de7dde
This is a simple daemon that will respond to multicast UDP packets containing the keyword "nodeinfo" with all the information we currently distribute using alfred. The daemon will listen on all mesh interface, that is the hard interfaces batman-adv uses.
46 lines
861 B
Bash
46 lines
861 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 $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
|
|
|