diff options
| author | wrtbuild <wrtbuild@localhost.(none)> | 2011-10-16 07:34:24 (GMT) | 
|---|---|---|
| committer | wrtbuild <wrtbuild@localhost.(none)> | 2011-10-16 07:34:24 (GMT) | 
| commit | 64ca2d1ca4e6f9ae279fc17d84b2abd453140d28 (patch) | |
| tree | 84a28cd644955e52bd6b91f2c474e9f338841119 /files/common/etc/init.d/batman-adv | |
| parent | 0850ac21d153d490ddc2b02f29b74b4b5ed88181 (diff) | |
add makefile to generate images
Diffstat (limited to 'files/common/etc/init.d/batman-adv')
| -rwxr-xr-x | files/common/etc/init.d/batman-adv | 103 | 
1 files changed, 103 insertions, 0 deletions
diff --git a/files/common/etc/init.d/batman-adv b/files/common/etc/init.d/batman-adv new file mode 100755 index 0000000..6ecb7ea --- /dev/null +++ b/files/common/etc/init.d/batman-adv @@ -0,0 +1,103 @@ +#!/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 aggregated_ogms bonding 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 aggregated_ogms "$meshif" aggregated_ogms +	config_get bonding "$meshif" bonding +	config_get gw_mode "$meshif" gw_mode + +	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 [ $vis_mode ]; then +		echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode +	fi +	 +	if [ $gw_mode ]; then +		echo $gw_mode > /sys/class/net/$meshif/mesh/gw_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 +} + +  | 
