8d887377db70945c53adf48f851bff460dc916ad
[lede-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 }