X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=rrqnet-ifupdown.sh;h=4c6ce4dfadf314e8f2a39c0471e9f32bcb5e7e7c;hb=refs%2Ftags%2F1.5;hp=6658929f4bd100440062959015f3e078561f05bf;hpb=746fe0f6034ead5765d08ce4b12f0945f7b7e5de;p=rrq%2Frrqnet.git diff --git a/rrqnet-ifupdown.sh b/rrqnet-ifupdown.sh index 6658929..4c6ce4d 100755 --- a/rrqnet-ifupdown.sh +++ b/rrqnet-ifupdown.sh @@ -18,7 +18,7 @@ [ -z "$IF_RRQNET_PORT" ] && exit 0 # An rrqnet stanza may have the following settings: -# rrqnet_port +# rrqnet_port [ notap ] # rrqnet_nice # rrqnet_remote # rrqnet_options @@ -26,9 +26,12 @@ # rrqnet_bridge # rrqnet_dhcp -: ${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,25 @@ 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 + $TAP $IF_RRQNET_PORT $IF_RRQNET_REMOTE fi } @@ -86,7 +96,7 @@ start_cable_pre_up() { start_cable_post_up() { case "$IF_RRQNET_DHCP" in dhclient*) - start_dhclient IF_RRQNET_DHCP + start_dhclient $IF_RRQNET_DHCP ;; *) : # no or unkown dhcp option @@ -104,11 +114,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