Skip to content

Instantly share code, notes, and snippets.

@zonorti
Created June 18, 2014 09:55
Show Gist options
  • Select an option

  • Save zonorti/f6f9787bcf0b4bbb55bc to your computer and use it in GitHub Desktop.

Select an option

Save zonorti/f6f9787bcf0b4bbb55bc to your computer and use it in GitHub Desktop.
#!/bin/bash
set -x
IFNAME=$1
if [ "$2" == "-i" ]; then
CONTAINER_IFNAME=$3
shift 2
else
CONTAINER_IFNAME=eth1
fi
GUESTNAME=$2
IPADDR=$3
NSPID=$(docker inspect --format='{{ .State.Pid }}' $GUESTNAME)
# Create named namespace
[ ! -d /var/run/netns ] && mkdir -p /var/run/netns
[ ! -f /var/run/netns/$NSPID ] && ln -s /proc/$NSPID/ns/net /var/run/netns/$NSPID
GUEST_IFNAME=do${NSPID}${CONTAINER_IFNAME}
ovs-vsctl add-port $IFNAME $GUEST_IFNAME || echo "$GUEST_IFNAME exists"
ovs-vsctl set Interface $GUEST_IFNAME type=internal
ip link set dev $GUEST_IFNAME netns $NSPID
ip netns exec $NSPID ip link set dev $GUEST_IFNAME name $CONTAINER_IFNAME
ip netns exec $NSPID ip link set dev $CONTAINER_IFNAME up
ip netns exec $NSPID ip addr add $IPADDR dev $CONTAINER_IFNAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment