93 lines
1.9 KiB
Plaintext
Raw Normal View History

#!/bin/sh /etc/rc.common
START=90
is_module_loaded() {
if [ ! -d "/sys/module/batman_adv" ]; then
echo "batman-adv module directory not found - was the kernel module loaded ?" >&2
return 0
fi
return 1
}
start_mesh () {
local meshif="$1"
local interfaces orig_interval log_level aggregate_ogm vis_mode
is_module_loaded
[ $? -ne 1 ] && return
config_get interfaces "$meshif" interfaces
config_get orig_interval "$meshif" orig_interval
config_get log_level "$meshif" log_level
config_get aggregate_ogm "$meshif" aggregate_ogm
config_get vis_mode "$meshif" vis_mode
if [ "$interfaces" = "" ]; then
echo Error, you must specify at least a network interface
return
fi
for interface in $interfaces
do
[ ! -f "/sys/class/net/$interface/batman_adv/mesh_iface" ] && echo "Can't add interface $interface - ignoring" && continue
echo $meshif > /sys/class/net/$interface/batman_adv/mesh_iface
done
if [ $orig_interval ]; then
echo $orig_interval > /sys/class/net/$meshif/batman_adv/originator_interval
fi
if [ $log_level ]; then
echo $log_level > /sys/module/batman_adv/parameters/debug 2>&-
fi
if [ $aggregate_ogm ]; then
echo $aggregate_ogm > /sys/class/net/$meshif/batman_adv/aggregate_ogm
fi
if [ $vis_mode ]; then
echo $vis_mode > /sys/class/net/$meshif/batman_adv/vis_mode
fi
}
stop_mesh() {
local meshif="$1"
is_module_loaded
[ $? -ne 1 ] && return
for iface in $(ls /sys/class/net/*)
do
[ ! -f "$iface/batman_adv/mesh_iface" ] && continue
[ "$(head -1 $iface/batman_adv/mesh_iface)" != "status: $meshif" ] && continue
echo "none" > $iface/batman_adv/mesh_iface
done
}
# can also be used with "batman-adv start bat0"
start() {
config_load batman-adv
if [ -n "$1" ]; then
start_mesh $1
else
config_foreach start_mesh mesh
fi
}
# can also be used with "batman-adv stop bat0"
stop () {
config_load batman-adv
if [ -n "$1" ]; then
stop_mesh $1
else
config_foreach stop_mesh mesh
fi
}