#!/bin/sh

VDE_SWITCH=/usr/bin/vde_switch
VDE_PLUG=/usr/bin/vde_plug
SLIRPVDE=/usr/bin/slirpvde
DPIPE=/usr/bin/dpipe
RUNDIR=/var/run/vde2

USER=vde2-net
GROUP=vde2-net

if [ ! -x $VDE_SWITCH ] || [ ! -x $SLIRPVDE ]; then
  exit 0
fi

# this is not an interesting stanza for us
if [ -z "$IF_VDE2_SWITCH" -a -z "$IF_VDE2_PLUG" -a -z "$IF_VDE2_SLIRP" ]; then
  exit 0
fi


# Create directory if missing
if [ ! -d $RUNDIR ]; then
    mkdir -p $RUNDIR
    chown vde2-net:vde2-net $RUNDIR
    chmod 2770 $RUNDIR
fi

# vde2-switch [-|<args>]
if [ -n "$IF_VDE2_SWITCH" ]; then
    set -- $IF_VDE2_SWITCH
    test "$1" = "-" && shift
    PIDFILE="$RUNDIR/$IFACE.pid"
    CTLDIR="$RUNDIR/$IFACE.ctl"
    MGMTFILE="$RUNDIR/$IFACE.mgmt"

    if [ "$METHOD" = "manual" ]; then
        TAPOPTS=""
    else
        TAPOPTS="-t $IFACE"
    fi

    # block to make sure the interface exists, see #568363
    vde_tunctl -b -t $IFACE 1>/dev/null

    start-stop-daemon --start --quiet --pidfile $PIDFILE \
        --exec $VDE_SWITCH -- \
        -s $CTLDIR -m 660 -g $GROUP -p $PIDFILE $TAPOPTS \
        -M $MGMTFILE --mgmtmode 660 -d "$@"
fi

# vde2-plug <dpipe_cmd2>
if [ -n "$IF_VDE2_PLUG" ]; then
    set -- $IF_VDE2_PLUG
    PIDFILE="$RUNDIR/$IFACE-plug.pid"
    CTLDIR="$RUNDIR/$IFACE.ctl"

    start-stop-daemon --start --quiet --pidfile $PIDFILE \
        --make-pidfile --background \
        --exec $DPIPE -- $VDE_PLUG -g $GROUP -m 660 $CTLDIR = "$@"
fi

# vde2-slirp [-|<args>]
if [ -n "$IF_VDE2_SLIRP" ]; then
    set -- $IF_VDE2_SLIRP
    test "$1" = "-" && shift
    PIDFILE="$RUNDIR/$IFACE-slirp.pid"
    CTLDIR="$RUNDIR/$IFACE.ctl"

    start-stop-daemon --start --quiet --pidfile $PIDFILE \
        --chuid $USER \
        --exec $SLIRPVDE -- \
        -s $CTLDIR -m 660 -p $PIDFILE -d "$@"
fi