batman-adv: fix dat NULL pointer dereference
[feed/routing.git] / files / usr / sbin / batman-adv
1 #!/bin/sh
2 # Copyright (C) 2011 OpenWrt.org
3
4 . /lib/functions.sh
5 . /lib/batman-adv/config.sh
6
7 start_mesh() {
8 local mesh="$1"
9 local ifaces=$(awk -F':' '{if (NR > 2) print $1}' /proc/net/dev)
10
11 for iface in $ifaces; do
12 [ -d /sys/class/net/$iface/batman_adv/ ] && bat_add_interface "$mesh" "$iface"
13 done
14
15 bat_config "$mesh"
16 }
17
18 stop_mesh() {
19 local mesh="$1"
20 local ifaces=$(awk -F':' '{if (NR > 2) print $1}' /proc/net/dev)
21
22 for iface in $ifaces; do
23 [ -d /sys/class/net/$iface/batman_adv/ ] && bat_del_interface "$mesh" "$iface"
24 done
25 }
26
27 # can also be used with "batman-adv start bat0"
28 start() {
29 bat_load_module
30 config_load batman-adv
31
32 if [ -n "$1" ]; then
33 start_mesh $1
34 else
35 config_foreach start_mesh mesh
36 fi
37 }
38
39 # can also be used with "batman-adv stop bat0"
40 stop () {
41 config_load batman-adv
42
43 if [ -n "$1" ]; then
44 stop_mesh $1
45 else
46 config_foreach stop_mesh mesh
47 fi
48 }
49
50 restart() {
51 stop $1
52 start $1
53 }
54
55 case "$1" in
56 start) start $2 ;;
57 stop) stop $2 ;;
58 restart) restart $2 ;;
59 *) echo "Usage: batman-adv <start|stop|restart> [mesh instance]"
60 esac