3 # Control script for starting or stopping an rrqnet virtual cable via
4 # ifup/ifdown. To use this, you need firstly to links to this script
5 # set up as /etc/network/if-pre-up.d/rrqnet and
6 # /etc/network/if-down.d/rrqnet. Secondly, you need a stanza in
7 # /etc/network/interfaces for the cabling tap and its associated
8 # configuration settings.
10 # "rrqnet name" is the primary stanza key, which result in
11 # a creation of a tap by that name, supported by an rrqnet plug
12 # according to the setup in /etc/rrqnet/conf.d/name.conf
14 #echo '===========' >> /tmp/FOO
17 # Verify that it's an rrqnet stanza
18 [ -z "$IF_RRQNET_PORT" ] && exit 0
20 # An rrqnet stanza may have the following settings:
22 # rrqnet_renice <nice>
23 # rrqnet_remote <remote declaration>
24 # rrqnet_options <options>
25 # rrqnet_log <level> <pathname>
26 # rrqnet_bridge <bridge>
28 : ${RRQDAEMON:=/usr/local/sbin/rrqnet}
29 : ${NAME:=rrqnet-${IFACE}}
32 configure_tap_bridge() {
33 [ -z "$IF_RRQNET_BRIDGE" ] && return 0
34 brctl show $IF_RRQNET_BRIDGE | grep -wq $IFACE && return 0
35 brctl addif $IF_RRQNET_BRIDGE $IFACE
40 ( ip link show $IFACE 2>/dev/null || ip tuntap add $IFACE mode tap ) | \
41 grep -q "state UP" || ip link set dev $IFACE up
45 start_cable_pre_up() {
46 configure_tap_up || return 1
47 configure_tap_bridge || return 1
48 [ -z "$IF_RRQNET_RENICE" ] || \
49 RRQDAEMON="/usr/bin/nice -n $IF_RRQNET_RENICE $RRQDAEMON"
50 if [ -z "$IF_RRQNET_LOG" ] ; then
51 daemon -U -r -n $NAME -- \
52 $RRQDAEMON $IF_RRQNET_OPTIONS \
53 -t $IFACE $IF_RRQNET_PORT $IF_RRQNET_REMOTE
55 daemon -U -r -n $NAME -E "${IF_RRQNET_LOG#* }" -- \
56 $RRQDAEMON ${IF_RRQNET_LOG%% *} $IF_RRQNET_OPTIONS \
57 -t $IFACE $IF_RRQNET_PORT $IF_RRQNET_REMOTE
62 stop_cable_post_down() {
63 daemon -n $NAME --stop
68 case "$MODE-$PHASE" in
69 start-pre-up) start_cable_pre_up ;;
72 stop-post-down) stop_cable_post_down ;;