86bc8aec5f
currently, vs docker always create 32 front panel ports. when vs docker starts, it first detects the peer links in the namespace and then setup equal number of front panel interfaces as the peer links. Signed-off-by: Guohan Lu <lguohan@gmail.com>
59 lines
1.1 KiB
Bash
Executable File
59 lines
1.1 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
usage() {
|
|
echo "Usage: $0 [-n <int>] swname" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
SERVERS=2
|
|
|
|
while getopts ":n:" opt; do
|
|
case $opt in
|
|
n)
|
|
SERVERS=$((OPTARG))
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND-1))
|
|
|
|
SWNAME=$1
|
|
|
|
pid=$(docker inspect --format '{{.State.Pid}}' $SWNAME)
|
|
|
|
echo Seting up servers
|
|
|
|
|
|
for srv in `seq 0 $((SERVERS-1))`; do
|
|
|
|
SRV="$SWNAME-srv$srv"
|
|
|
|
NSS="ip netns exec $SRV"
|
|
|
|
ip netns add $SRV
|
|
|
|
$NSS ip addr add 127.0.0.1/8 dev lo
|
|
$NSS ip addr add ::1/128 dev lo
|
|
$NSS ip link set dev lo up
|
|
|
|
# add virtual link between neighbor and the virtual switch docker
|
|
|
|
IF="eth$((srv+1))"
|
|
|
|
ip link add ${SRV}eth0 type veth peer name $SWNAME-$IF
|
|
ip link set ${SRV}eth0 netns $SRV
|
|
ip link set $SWNAME-$IF netns ${pid}
|
|
nsenter -t $pid -n ip link set dev $SWNAME-$IF name $IF
|
|
|
|
echo "Bring ${SRV}eth0 up"
|
|
$NSS ip link set dev ${SRV}eth0 name eth0
|
|
$NSS ip link set dev eth0 up
|
|
|
|
echo "Bring $IF up in the virtual switch docker"
|
|
nsenter -t $pid -n ip link set dev $IF up
|
|
|
|
done
|