ee77791fa0
git-svn-id: svn://svn.openwrt.org/openwrt/packages@25394 3c298f89-4303-0410-b956-a3cf2f4a3e73
118 lines
2.6 KiB
Bash
118 lines
2.6 KiB
Bash
#!/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 aggregated_ogms bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval vis_mode
|
|
|
|
is_module_loaded
|
|
[ $? -ne 1 ] && return
|
|
|
|
config_get interfaces "$meshif" interfaces
|
|
config_get aggregated_ogms "$meshif" aggregated_ogms
|
|
config_get bonding "$meshif" bonding
|
|
config_get fragmentation "$meshif" fragmentation
|
|
config_get gw_bandwidth "$meshif" gw_bandwidth
|
|
config_get gw_mode "$meshif" gw_mode
|
|
config_get gw_sel_class "$meshif" gw_sel_class
|
|
config_get log_level "$meshif" log_level
|
|
config_get orig_interval "$meshif" orig_interval
|
|
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/mesh/orig_interval
|
|
fi
|
|
|
|
if [ $log_level ]; then
|
|
echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&-
|
|
fi
|
|
|
|
if [ $aggregated_ogms ]; then
|
|
echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms
|
|
fi
|
|
|
|
if [ $bonding ]; then
|
|
echo $bonding > /sys/class/net/$meshif/mesh/bonding
|
|
fi
|
|
|
|
if [ $fragmentation ]; then
|
|
echo $fragmentation > /sys/class/net/$meshif/mesh/fragmentation
|
|
fi
|
|
|
|
if [ $gw_bandwidth ]; then
|
|
echo $gw_bandwidth > /sys/class/net/$meshif/mesh/gw_bandwidth
|
|
fi
|
|
|
|
if [ $gw_mode ]; then
|
|
echo $gw_mode > /sys/class/net/$meshif/mesh/gw_mode
|
|
fi
|
|
|
|
if [ $gw_sel_class ]; then
|
|
echo $gw_sel_class > /sys/class/net/$meshif/mesh/gw_sel_class
|
|
fi
|
|
|
|
if [ $vis_mode ]; then
|
|
echo $vis_mode > /sys/class/net/$meshif/mesh/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
|
|
}
|
|
|
|
|