a08b21e7837c5223485c63dac62a686365e4ed50
[openwrt/svn-archive/archive.git] / net / batman-advanced / files / etc / init.d / batman-adv
1 #!/bin/sh /etc/rc.common
2 START=90
3
4 is_module_loaded() {
5
6 if [ ! -d "/sys/module/batman_adv" ]; then
7 echo "batman-adv module directory not found - was the kernel module loaded ?" >&2
8 return 0
9 fi
10
11 return 1
12 }
13
14 start_mesh () {
15 local meshif="$1"
16 local interfaces orig_interval log_level aggregated_ogms bonding vis_mode
17
18 is_module_loaded
19 [ $? -ne 1 ] && return
20
21 config_get interfaces "$meshif" interfaces
22 config_get orig_interval "$meshif" orig_interval
23 config_get log_level "$meshif" log_level
24 config_get aggregated_ogms "$meshif" aggregated_ogms
25 config_get bonding "$meshif" bonding
26 config_get vis_mode "$meshif" vis_mode
27
28 if [ "$interfaces" = "" ]; then
29 echo Error, you must specify at least a network interface
30 return
31 fi
32
33 for interface in $interfaces
34 do
35 [ ! -f "/sys/class/net/$interface/batman_adv/mesh_iface" ] && echo "Can't add interface $interface - ignoring" && continue
36 echo $meshif > /sys/class/net/$interface/batman_adv/mesh_iface
37 done
38
39 if [ $orig_interval ]; then
40 echo $orig_interval > /sys/class/net/$meshif/mesh/orig_interval
41 fi
42
43 if [ $log_level ]; then
44 echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&-
45 fi
46
47 if [ $aggregated_ogms ]; then
48 echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms
49 fi
50
51 if [ $bonding ]; then
52 echo $bonding > /sys/class/net/$meshif/mesh/bonding
53 fi
54
55 if [ $vis_mode ]; then
56 echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode
57 fi
58 }
59
60 stop_mesh() {
61 local meshif="$1"
62
63 is_module_loaded
64 [ $? -ne 1 ] && return
65
66 for iface in $(ls /sys/class/net/*)
67 do
68 [ ! -f "$iface/batman_adv/mesh_iface" ] && continue
69 [ "$(head -1 $iface/batman_adv/mesh_iface)" != "status: $meshif" ] && continue
70
71 echo "none" > $iface/batman_adv/mesh_iface
72 done
73 }
74
75 # can also be used with "batman-adv start bat0"
76 start() {
77 config_load batman-adv
78
79 if [ -n "$1" ]; then
80 start_mesh $1
81 else
82 config_foreach start_mesh mesh
83 fi
84 }
85
86 # can also be used with "batman-adv stop bat0"
87 stop () {
88 config_load batman-adv
89
90 if [ -n "$1" ]; then
91 stop_mesh $1
92 else
93 config_foreach stop_mesh mesh
94 fi
95 }
96
97