olsrd: hotplug-script: cleanup/simplify
[feed/routing.git] / olsrd / files / olsrd.hotplug.sh
1 #!/bin/sh
2
3 case "$ACTION" in
4 ifup)
5 /etc/init.d/olsrd enabled && {
6 olsrd_interface_needs_adding "$INTERFACE" "$DEVICE" && {
7 /etc/init.d/olsrd restart
8 }
9 }
10 ;;
11 esac
12
13 olsrd_list_configured_interfaces()
14 {
15 local i=0
16 local interface
17
18 while interface="$( uci -q get olsrd.@Interface[$i].interface )"; do {
19 case "$( uci -q get olsrd.@Interface[$i].ignore )" in
20 1|on|true|enabled|yes)
21 # is disabled
22 ;;
23 *)
24 echo "$interface"
25 ;;
26 esac
27
28 i=$(( $i + 1 ))
29 } done
30 }
31
32 olsrd_interface_needs_adding()
33 {
34 local interface="$1" # e.g. wlanadhocRADIO1
35 local device="$2" # e.g. wlan1-1
36 local myif
37 local config="/var/etc/olsrd.conf"
38
39 for myif in $(olsrd_list_configured_interfaces); do {
40 [ "$myif" = "$interface" ] && {
41 if grep -s ^'Interface ' "$config" | grep -q "\"$device\""; then
42 logger -t olsrd_hotplug -p daemon.debug "[OK] already_active: $INTERFACE => $DEVICE"
43 return 1
44 else
45 logger -t olsrd_hotplug -p daemon.info "[OK] ifup: $INTERFACE => $DEVICE"
46 return 0
47 fi
48 }
49 } done
50
51 logger -t olsrd_hotplug -p daemon.debug "[OK] interface $INTERFACE not used for olsrd"
52 return 1
53 }