uppercase
[rrq/rrqnet.git] / rrqnet-ifupdown.sh
index 4928312a67868453f90118d2822e96d09b93f4ae..99e45df714d73a79037fea62b5a9357368b270a0 100755 (executable)
@@ -18,7 +18,7 @@
 [ -z "$IF_RRQNET_PORT" ] && exit 0
 
 # An rrqnet stanza may have the following settings:
-# rrqnet_port <port>
+# rrqnet_port [ notap ] <port> 
 # rrqnet_nice <nice>
 # rrqnet_remote <remote declaration>
 # rrqnet_options <options>
 # rrqnet_bridge <bridge>
 # rrqnet_dhcp <options>
 
-: ${RRQDAEMON:=/usr/local/sbin/rrqnet}
+: ${RRQDAEMON:=/usr/sbin/rrqnet}
 : ${NAME:=rrqnet-${IFACE}}
 
+NOTAP="${IF_RRQNET_PORT##notap *}" # empty if 'notap' is used
+IF_RRQNET_PORT="${IF_RRQNET_PORT#notap }"
+
 #function
 configure_tap_bridge() {
     [ -z "$IF_RRQNET_BRIDGE" ] && return 0
@@ -67,18 +70,26 @@ stop_dhclient() {
 
 #function
 start_cable_pre_up() {
-    configure_tap_up || return 1
-    configure_tap_bridge || return 1
+    local TAP
+    TAP="-t $IFACE"
+    if [ -z "$NOTAP" ] ; then
+       echo "Note: $IFACE is an rrqnet without local interface" >&2
+       TAP=""
+    else
+       configure_tap_up || return 1
+       configure_tap_bridge || return 1
+    fi
     [ -z "$IF_RRQNET_NICE" ] || \
         RRQDAEMON="/usr/bin/nice -n $IF_RRQNET_NICE $RRQDAEMON"
     if [ -z "$IF_RRQNET_LOG" ] ; then
        daemon -U -r -a 10 -n $NAME -- \
               $RRQDAEMON $IF_RRQNET_OPTIONS \
-              -t $IFACE $IF_RRQNET_PORT $IF_RRQNET_REMOTE
+              $TAP $IF_RRQNET_PORT $IF_RRQNET_REMOTE
     else
-       daemon -U -r -a 10 -n $NAME -E "${IF_RRQNET_LOG#* }" -- \
-              $RRQDAEMON ${IF_RRQNET_LOG%% *} $IF_RRQNET_OPTIONS \
-              -t $IFACE $IF_RRQNET_PORT $IF_RRQNET_REMOTE
+        LOG=${IF_RRQNET_LOG#* }
+        daemon -U -r -a 10 -n $NAME -E "$LOG" -- \
+               $RRQDAEMON ${IF_RRQNET_LOG%$LOG} $IF_RRQNET_OPTIONS \
+              $TAP $IF_RRQNET_PORT $IF_RRQNET_REMOTE
     fi
 }
 
@@ -104,11 +115,12 @@ stop_cable_pre_down() {
            : # no or unkown dhcp option
            ;;
     esac
+    daemon -n $NAME --stop
 }
 
 #function
 stop_cable_post_down() {
-    daemon -n $NAME --stop
+    [ -z "$NOTAP" ] || ip link del $IFACE
 }
 
 # main script body