49f948f735799a04528500a85573fe33664c2b2f
[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 aggregate_ogm 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 aggregate_ogm "$meshif" aggregate_ogm
25 config_get vis_mode "$meshif" vis_mode
26
27 if [ "$interfaces" = "" ]; then
28 echo Error, you must specify at least a network interface
29 return
30 fi
31
32 for interface in $interfaces
33 do
34 [ ! -f "/sys/class/net/$interface/batman_adv/mesh_iface" ] && echo "Can't add interface $interface - ignoring" && continue
35 echo $meshif > /sys/class/net/$interface/batman_adv/mesh_iface
36 done
37
38 if [ $orig_interval ]; then
39 echo $orig_interval > /sys/class/net/$meshif/batman_adv/originator_interval
40 fi
41
42 if [ $log_level ]; then
43 echo $log_level > /sys/module/batman_adv/parameters/debug 2>&-
44 fi
45
46 if [ $aggregate_ogm ]; then
47 echo $aggregate_ogm > /sys/class/net/$meshif/batman_adv/aggregate_ogm
48 fi
49
50 if [ $vis_mode ]; then
51 echo $vis_mode > /sys/class/net/$meshif/batman_adv/vis_mode
52 fi
53 }
54
55 stop_mesh() {
56 local meshif="$1"
57
58 is_module_loaded
59 [ $? -ne 1 ] && return
60
61 for iface in $(ls /sys/class/net/*)
62 do
63 [ ! -f "$iface/batman_adv/mesh_iface" ] && continue
64 [ "$(head -1 $iface/batman_adv/mesh_iface)" != "status: $meshif" ] && continue
65
66 echo "none" > $iface/batman_adv/mesh_iface
67 done
68 }
69
70 # can also be used with "batman-adv start bat0"
71 start() {
72 config_load batman-adv
73
74 if [ -n "$1" ]; then
75 start_mesh $1
76 else
77 config_foreach start_mesh mesh
78 fi
79 }
80
81 # can also be used with "batman-adv stop bat0"
82 stop () {
83 config_load batman-adv
84
85 if [ -n "$1" ]; then
86 stop_mesh $1
87 else
88 config_foreach stop_mesh mesh
89 fi
90 }
91
92