aboutsummaryrefslogtreecommitdiffstats
path: root/main/vde2/vde2.pre-up
blob: 991b382265b0031ec4fc0ee0929064c2cfa1b65a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/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