#!/bin/bash -e usage() { echo "Usage: $0 [-n ] 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