batman-adv: update package to latest release (2011.4.0)
[openwrt/svn-archive/archive.git] / net / batman-adv / files / lib / batman-adv / config.sh
1 #!/bin/sh
2 # Copyright (C) 2011 OpenWrt.org
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 aggregated_ogms ap_isolation bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval vis_mode
17
18 is_module_loaded
19 [ $? -ne 1 ] && return
20
21 config_get interfaces "$meshif" interfaces
22 config_get aggregated_ogms "$meshif" aggregated_ogms
23 config_get ap_isolation "$meshif" ap_isolation
24 config_get bonding "$meshif" bonding
25 config_get fragmentation "$meshif" fragmentation
26 config_get gw_bandwidth "$meshif" gw_bandwidth
27 config_get gw_mode "$meshif" gw_mode
28 config_get gw_sel_class "$meshif" gw_sel_class
29 config_get log_level "$meshif" log_level
30 config_get orig_interval "$meshif" orig_interval
31 config_get vis_mode "$meshif" vis_mode
32
33 if [ "$interfaces" = "" ]; then
34 echo Error, you must specify at least a network interface
35 return
36 fi
37
38 for interface in $interfaces
39 do
40 ifname=$(uci -P /var/state get network.$interface.ifname 2>&-)
41 [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && {
42 ifname=${interface}
43 [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && echo "Can't add interface $ifname - ignoring" && continue
44 }
45
46 echo $meshif > /sys/class/net/$ifname/batman_adv/mesh_iface
47 done
48
49 if [ $orig_interval ]; then
50 echo $orig_interval > /sys/class/net/$meshif/mesh/orig_interval
51 fi
52
53 if [ $log_level ]; then
54 echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&-
55 fi
56
57 if [ $aggregated_ogms ]; then
58 echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms
59 fi
60
61 if [ $ap_isolation ]; then
62 echo $ap_isolation > /sys/class/net/$meshif/mesh/ap_isolation
63 fi
64
65 if [ $bonding ]; then
66 echo $bonding > /sys/class/net/$meshif/mesh/bonding
67 fi
68
69 if [ $fragmentation ]; then
70 echo $fragmentation > /sys/class/net/$meshif/mesh/fragmentation
71 fi
72
73 if [ $gw_bandwidth ]; then
74 echo $gw_bandwidth > /sys/class/net/$meshif/mesh/gw_bandwidth
75 fi
76
77 if [ $gw_mode ]; then
78 echo $gw_mode > /sys/class/net/$meshif/mesh/gw_mode
79 fi
80
81 if [ $gw_sel_class ]; then
82 echo $gw_sel_class > /sys/class/net/$meshif/mesh/gw_sel_class
83 fi
84
85 if [ $vis_mode ]; then
86 echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode
87 fi
88 }
89
90 stop_mesh() {
91 local meshif="$1"
92
93 is_module_loaded
94 [ $? -ne 1 ] && return
95
96 for iface in $(ls /sys/class/net/*)
97 do
98 [ ! -f "$iface/batman_adv/mesh_iface" ] && continue
99 [ "$(head -1 $iface/batman_adv/mesh_iface)" != "$meshif" ] && continue
100
101 echo "none" > $iface/batman_adv/mesh_iface
102 done
103 }