batman-adv: few makefile changes & upgrade dev to latest
[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 MODULE_DIR="/sys/module/batman_adv"
5
6 detect_version() {
7 local version
8
9 if [ ! -d "$MODULE_DIR" ]; then
10 echo "batman-adv module directory not found - is the module loaded ?" >&2
11 return 1
12 fi
13
14 version=$(cat $MODULE_DIR/version)
15
16 if [ "$version" != "${version#0.3*}" ]; then
17 BAT_VER="0.3"
18 elif [ "$version" != "${version#0.2*}" ]; then
19 BAT_VER="0.2"
20 else
21 echo "Error - unknown version encountered: $version" >&2
22 return 1
23 fi
24
25 return 0
26 }
27
28 start_mesh () {
29 local meshif="$1"
30
31 detect_version
32 [ $? -ne 0 ] && return 1
33
34 config_get interfaces "$meshif" interfaces
35 config_get orig_interval "$meshif" orig_interval
36 config_get log_level "$meshif" log_level
37
38 if [ "$interfaces" = "" ]; then
39 echo Error, you must specify at least a network interface
40 return
41 fi
42
43 for interface in $interfaces
44 do
45 if [ "$BAT_VER" = "0.2" ]; then
46 echo $interface > /proc/net/batman-adv/interfaces
47 else
48 [ ! -f "/sys/class/net/$interface/batman_adv/mesh_iface" ] && echo "Can't add interface $interface - ignoring" && continue
49 echo $meshif > /sys/class/net/$interface/batman_adv/mesh_iface
50 fi
51 done
52
53 if [ $orig_interval ]; then
54 if [ "$BAT_VER" = "0.2" ]; then
55 echo $orig_interval > /proc/net/batman-adv/orig_interval
56 else
57 echo $orig_interval > /sys/class/net/$meshif/batman_adv/originator_interval
58 fi
59 fi
60
61 if [ $log_level ]; then
62 echo $log_level > /sys/module/batman_adv/parameters/debug 2>&-
63 fi
64 }
65
66 stop_mesh() {
67 local meshif="$1"
68
69 detect_version
70 [ $? -ne 0 ] && return 1
71
72 if [ "$BAT_VER" = "0.2" ]; then
73 echo "" > /proc/net/batman-adv/interfaces
74 return
75 fi
76
77 for iface in $(ls /sys/class/net/*)
78 do
79 [ ! -f "$iface/batman_adv/mesh_iface" ] && continue
80 [ "$(head -1 $iface/batman_adv/mesh_iface)" != "status: $meshif" ] && continue
81
82 echo "none" > $iface/batman_adv/mesh_iface
83 done
84 }
85
86 # can also be used with "batman-adv start bat0"
87 start() {
88 config_load batman-adv
89
90 if [ -n "$1" ]; then
91 start_mesh $1
92 else
93 config_foreach start_mesh mesh
94 fi
95 }
96
97 # can also be used with "batman-adv stop bat0"
98 stop () {
99 config_load batman-adv
100
101 if [ -n "$1" ]; then
102 stop_mesh $1
103 else
104 config_foreach stop_mesh mesh
105 fi
106 }
107
108