SLICE=$1
SLICEID=`id -u $SLICE`
-read LABEL
+read INDEX
read REMOTE
-read KEY
-LINK=${LABEL}k$KEY
+KEYFILE="/etc/vini/egre-keys.txt"
+if [ -e "$KEYFILE" ]; then
+ KEY=$( awk -v slice=$SLICE '$1 == slice {print $2}' $KEYFILE )
+fi
+if [ -z "$KEY" ]; then
+ echo "No EGRE key found for slice $SLICE!"
+ echo "Please send mail to vini-users@lists.planet-lab.org."
+ exit 1
+fi
+
+LINK=${KEY}if${INDEX}
modprobe ip_gre
modprobe etun
### Setup EGRE tunnel
-EGRE=egre$LINK
+EGRE=d$LINK
$IP tunnel add $EGRE mode gre/eth remote $REMOTE key $KEY
$IP link set $EGRE up
### Setup etun
-ETUN0=v$LINK
-ETUN1=etun$LINK
+ETUN0=a$LINK
+ETUN1=b$LINK
echo $ETUN0,$ETUN1 > /sys/module/etun/parameters/newif
ifconfig $ETUN0 mtu 1458 up
ifconfig $ETUN1 up
### Setup bridge
-BRIDGE=br$LINK
+BRIDGE=c$LINK
brctl addbr $BRIDGE
brctl addif $BRIDGE $EGRE
brctl addif $BRIDGE $ETUN1
iptables -t mangle -A FORWARD -o $BRIDGE -j MARK --set-mark $SLICEID
### Create "grab link" script
-GRAB=/vsys/grab-$ETUN0
+GRAB=/vsys/local_grab-$ETUN0
echo $SLICE > $GRAB.acl
rm -f $GRAB
cat > $GRAB <<EOF
EOF
chmod +x $GRAB
-### Create "bind link" script
-BIND=/vsys/bind-link-$ETUN0
+### Create script for setting link rate
+BIND=/vsys/local_rate-$ETUN0
echo $SLICE > $BIND.acl
rm -f $BIND
cat > $BIND <<EOF
#!/bin/sh
read rt
-read lt
-read burs
-tc qdisc add dev $EGRE root tbf rate \$rt latency \$lt burst \$burs
+tc qdisc add dev $EGRE root handle 1: htb default 10
+tc class add dev $EGRE parent 1: classid 1:10 htb rate \$rt ceil \$rt
rm -rf $BIND.acl
touch $BIND.acl
EOF
chmod +x $BIND
-### Create "unbind link" script
-UNBIND=/vsys/unbind-link-$ETUN0
-touch $UNBIND.acl
-rm -f $UNBIND
-cat > $UNBIND <<EOF
-#!/bin/sh
-
-tc qdisc del root dev $EGRE
-
-EOF
-chmod +x $UNBIND
-
### Create "delete link" script
-DELETE=/vsys/delete-$ETUN0
+DELETE=/vsys/local_delete-$ETUN0
echo $SLICE > $DELETE.acl
rm -f $DELETE
cat > $DELETE <<EOF
rm -f $GRAB $GRAB.acl
rm -f $DELETE $DELETE.acl
rm -f $BIND $BIND.acl
-rm -f $UNBIND $UNBIND.acl
EOF
chmod +x $DELETE