summaryrefslogtreecommitdiff
path: root/files/common/etc/init.d/batman-adv
diff options
context:
space:
mode:
authorwrtbuild <wrtbuild@localhost.(none)>2011-10-16 07:34:24 (GMT)
committerwrtbuild <wrtbuild@localhost.(none)>2011-10-16 07:34:24 (GMT)
commit64ca2d1ca4e6f9ae279fc17d84b2abd453140d28 (patch)
tree84a28cd644955e52bd6b91f2c474e9f338841119 /files/common/etc/init.d/batman-adv
parent0850ac21d153d490ddc2b02f29b74b4b5ed88181 (diff)
add makefile to generate images
Diffstat (limited to 'files/common/etc/init.d/batman-adv')
-rwxr-xr-xfiles/common/etc/init.d/batman-adv103
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
+}
+
+
contact: Jan Huwald // Impressum