#!/bin/sh +x SLICE=$1 SLICEID=`id -u $SLICE` NODEID=$2 REMOTE=$3 KEY=$4 RATE=$5 VIRTIP=$6 VIRTNET=$7 SUBNET=`expr match "$VIRTNET" '.*\(/[0-9]*\)'` LINK=${KEY}x${NODEID} modprobe ip_gre ### Setup EGRE tunnel EGRE=d$LINK ip tunnel add $EGRE mode gre type eth remote $REMOTE key $KEY ttl 64 ip link set $EGRE up ### Setup macvlan MACV=a$LINK ip link add link $EGRE $MACV type macvlan ### Put a process in the vserver so we can move the interface there su $SLICE -c "sleep 30 &" PID=`su $SLICE -c "pgrep -n sleep"` ip link set $MACV netns $PID naddress --add --nid $SLICEID --ip ${VIRTIP}${SUBNET} su $SLICE -c "sudo /sbin/ifconfig $MACV ${VIRTIP}${SUBNET} mtu 1458 up" ### Set rate ifconfig $EGRE txqueuelen 1000 tc qdisc add dev $EGRE root handle 1: htb default 10 tc class add dev $EGRE parent 1: classid 1:10 htb rate $RATE ceil $RATE