Merge pull request #253 from SvenRoederer/olsrd/remove-6and4
[feed/routing.git] / olsrd / files / olsrd.hotplug.sh
1 #!/bin/sh
2
3 olsrd_list_configured_interfaces()
4 {
5 local i=0
6 local interface
7
8 while interface="$( uci -q get $OLSRD.@Interface[$i].interface )"; do {
9 case "$( uci -q get $OLSRD.@Interface[$i].ignore )" in
10 1|on|true|enabled|yes)
11 # is disabled
12 ;;
13 *)
14 echo "$interface" # e.g. 'lan'
15 ;;
16 esac
17
18 i=$(( $i + 1 ))
19 } done
20 }
21
22 olsrd_interface_already_in_config()
23 {
24 # e.g.: 'Interface "eth0.1" "eth0.2" "wlan0"'
25 if grep -s ^'Interface ' '/var/etc/$OLSRD.conf' | grep -q "\"$DEVICE\""; then
26 logger -t olsrd_hotplug -p daemon.debug "[OK] already_active: '$INTERFACE' => '$DEVICE'"
27 return 0
28 else
29 logger -t olsrd_hotplug -p daemon.info "[OK] ifup: '$INTERFACE' => '$DEVICE'"
30 return 1
31 fi
32 }
33
34 olsrd_interface_needs_adding()
35 {
36 local interface
37
38 # likely and cheap operation:
39 olsrd_interface_already_in_config && return 1
40
41 for interface in $(olsrd_list_configured_interfaces); do {
42 [ "$interface" = "$INTERFACE" ] && {
43 olsrd_interface_already_in_config || return 0
44 }
45 } done
46
47 logger -t olsrd_hotplug -p daemon.debug "[OK] interface '$INTERFACE' => '$DEVICE' not used for $OLSRD"
48 return 1
49 }
50
51 case "$ACTION" in
52 ifup)
53 # only work after the first normal startup
54 # also: no need to test, if enabled
55 OLSRD=olsrd
56 [ -e "/var/etc/$OLSRD.conf" ] && {
57 # INTERFACE = e.g. 'wlanadhocRADIO1' or 'cfg144d8f'
58 # DEVICE = e.g. 'wlan1-1'
59 olsrd_interface_needs_adding && {
60 . /etc/rc.common /etc/init.d/$OLSRD restart
61 }
62 }
63
64 OLSRD=olsrd6
65 [ -e "/var/etc/$OLSRD.conf" ] && {
66 olsrd_interface_needs_adding && {
67 . /etc/rc.common /etc/init.d/$OLSRD restart
68 }
69 }
70 ;;
71 esac