gluon/package/gluon-mesh-batman-adv/files/lib/netifd/proto/gluon_bat0.sh
Linus Lüssing 88d4c33890 gluon-mesh-batman-adv: Adapt scripts to new batman-adv-legacy namespace
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
2018-12-25 19:02:55 +01:00

74 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
. /lib/functions.sh
. ../netifd-proto.sh
init_proto "$@"
proto_gluon_bat0_init_config() {
no_device=1
available=1
renew_handler=1
}
proto_gluon_bat0_renew() {
local config="$1"
lock /var/lock/gluon_bat0.lock
local ifdump="$(ubus call network.interface dump)"
local routing_algo="$(uci -q get batman-adv.bat0.routing_algo || echo 'BATMAN_IV')"
echo "$ifdump" | jsonfilter \
-e "@.interface[@.proto='gluon_mesh' && @.up=true]['device','data']" \
| while read dev; do
read data
! [ "$(echo "$data" | jsonfilter -e "@.transitive")" = 'true' ]
transitive=$?
if [ "$routing_algo" = "BATMAN_IV_LEGACY" ]; then
echo bat0 > "/sys/class/net/$dev/batman_adv_legacy/mesh_iface"
(echo "$transitive" > "/sys/class/net/$dev/batman_adv_legacy/no_rebroadcast") 2>/dev/null
else
echo bat0 > "/sys/class/net/$dev/batman_adv/mesh_iface"
(echo "$transitive" > "/sys/class/net/$dev/batman_adv/no_rebroadcast") 2>/dev/null
fi
done
lock -u /var/lock/gluon_bat0.lock
}
proto_gluon_bat0_setup() {
local config="$1"
local primary0_mac="$(lua -lgluon.util -e 'print(gluon.util.generate_mac(3))')"
ip link add primary0 type dummy
echo 1 > /proc/sys/net/ipv6/conf/primary0/disable_ipv6
ip link set primary0 address "$primary0_mac" mtu 1532 up
local routing_algo="$(uci -q get batman-adv.bat0.routing_algo || echo 'BATMAN_IV')"
if [ "$routing_algo" = "BATMAN_IV_LEGACY" ]; then
(echo "BATMAN_IV" >/sys/module/batman_adv_legacy/parameters/routing_algo) 2>/dev/null
echo bat0 > /sys/class/net/primary0/batman_adv_legacy/mesh_iface
else
(echo "$routing_algo" >/sys/module/batman_adv/parameters/routing_algo) 2>/dev/null
echo bat0 > /sys/class/net/primary0/batman_adv/mesh_iface
fi
proto_init_update primary0 1
proto_send_update "$config"
proto_gluon_bat0_renew "$1"
}
proto_gluon_bat0_teardown() {
local config="$1"
ip link del bat0
ip link del primary0
}
add_protocol gluon_bat0