AA: miniupnpd: backport r36488
[12.09/packages.git] / net / batman-adv / files / lib / batman-adv / config.sh
1 #!/bin/sh
2
3 bat_load_module()
4 {
5         [ -d "/sys/module/batman_adv/" ] && return
6
7         . /lib/functions.sh
8         load_modules /etc/modules.d/*-crc16 /etc/modules.d/*-batman-adv*
9 }
10
11 bat_config()
12 {
13         local mesh="$1"
14         local aggregated_ogms bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval hop_penalty vis_mode bridge_loop_avoidance
15
16         config_get aggregated_ogms "$mesh" aggregated_ogms
17         config_get bonding "$mesh" bonding
18         config_get fragmentation "$mesh" fragmentation
19         config_get gw_bandwidth "$mesh" gw_bandwidth
20         config_get gw_mode "$mesh" gw_mode
21         config_get gw_sel_class "$mesh" gw_sel_class
22         config_get log_level "$mesh" log_level
23         config_get orig_interval "$mesh" orig_interval
24         config_get hop_penalty "$mesh" hop_penalty
25         config_get vis_mode "$mesh" vis_mode
26         config_get ap_isolation "$mesh" ap_isolation
27         config_get bridge_loop_avoidance "$mesh" bridge_loop_avoidance
28         
29         [ ! -f "/sys/class/net/$mesh/mesh/orig_interval" ] && echo "batman-adv mesh $mesh does not exist - check your interface configuration" && return 1
30
31         [ -n "$orig_interval" ] && echo $orig_interval > /sys/class/net/$mesh/mesh/orig_interval
32         [ -n "$hop_penalty" ] && echo $hop_penalty > /sys/class/net/$mesh/mesh/hop_penalty
33         [ -n "$log_level" ] && echo $log_level > /sys/class/net/$mesh/mesh/log_level 2>&-
34         [ -n "$aggregate_ogms" ] && echo $aggregate_ogms > /sys/class/net/$mesh/mesh/aggregate_ogms
35         [ -n "$bonding" ] && echo $bonding > /sys/class/net/$mesh/mesh/bonding
36         [ -n "$fragmentation" ] && echo $fragmentation > /sys/class/net/$mesh/mesh/fragmentation
37         [ -n "$gw_bandwidth" ] && echo $gw_bandwidth > /sys/class/net/$mesh/mesh/gw_bandwidth
38         [ -n "$gw_mode" ] && echo $gw_mode > /sys/class/net/$mesh/mesh/gw_mode
39         [ -n "$gw_sel_class" ] && echo $gw_sel_class > /sys/class/net/$mesh/mesh/gw_sel_class
40         [ -n "$vis_mode" ] && echo $vis_mode > /sys/class/net/$mesh/mesh/vis_mode
41         [ -n "$ap_isolation" ] && echo $ap_isolation > /sys/class/net/$mesh/mesh/ap_isolation
42         [ -n "$bridge_loop_avoidance" ] && echo $bridge_loop_avoidance > /sys/class/net/$mesh/mesh/bridge_loop_avoidance
43 }
44
45 bat_add_interface()
46 {
47         local mesh="$1"
48         local interface="$2"
49         local interfaces
50
51         sleep 3s # some device (ath) is very lazy to start
52         config_get interfaces $mesh interfaces
53         for iface in $interfaces; do
54                 [ -f "/sys/class/net/$iface/batman_adv/mesh_iface" ] || {
55                         iface=$(uci -q -P/var/state get network.$iface.ifname)
56                         [ -f "/sys/class/net/$iface/batman_adv/mesh_iface" ] || continue
57                 }
58         
59                 [ "$iface" = "$interface" ] && echo $mesh > /sys/class/net/$iface/batman_adv/mesh_iface
60         done
61 }
62
63 bat_del_interface()
64 {
65         local mesh="$1"
66         local interface="$2"
67         local interfaces
68
69         config_get interfaces $mesh interfaces
70         for iface in $interfaces; do
71                 [ -f "/sys/class/net/$iface/batman_adv/mesh_iface" ] || {
72                         iface=$(uci -q -P/var/state get network.$iface.ifname)
73                         [ -f "/sys/class/net/$iface/batman_adv/mesh_iface" ] || continue
74                 }
75
76                 [ "$iface" = "$interface" ] && echo none > /sys/class/net/$iface/batman_adv/mesh_iface
77         done
78 }