From 7b693f8f8b5028e445c116531d9d960603222e06 Mon Sep 17 00:00:00 2001 From: Paul-Emmanuel Raoul <sky...@skyplabs.net> Date: Wed, 17 Dec 2014 02:25:30 +0100 Subject: [PATCH] ovs-docker : add fake bridges support.
Also updates ovs-docker README documentation. Signed-off-by: Paul-Emmanuel Raoul <sky...@skyplabs.net> --- INSTALL.Docker.md | 9 +++++++++ utilities/ovs-docker | 51 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/INSTALL.Docker.md b/INSTALL.Docker.md index ddbef99..29b3a70 100644 --- a/INSTALL.Docker.md +++ b/INSTALL.Docker.md @@ -56,10 +56,19 @@ and then attaches it to the Open vSwitch bridge 'br-int'. This is done by creating a veth pair. One end of the interface becomes 'eth1' inside the container and the other end attaches to 'br-int'. +If an Open vSwitch fake bridge should be used, you have to specify its +parent and VLAN. e.g.: + +`% ovs-docker add-port br-int br-parent 10 eth1 $CONTAINER_ID` + The script also lets one to add an IP address to the interface. e.g.: `% ovs-docker add-port br-int eth1 $CONTAINER_ID 192.168.1.1/24` +The previous two options can be combined : + +`% ovs-docker add-port br-int br-parent 10 eth1 $CONTAINER_ID 192.168.1.1/24` + * A previously added network interface can be deleted. e.g.: `% ovs-docker del-port br-int eth1 $CONTAINER_ID` diff --git a/utilities/ovs-docker b/utilities/ovs-docker index 4a43a15..e2c306d 100755 --- a/utilities/ovs-docker +++ b/utilities/ovs-docker @@ -43,20 +43,44 @@ delete_netns_link () { } add_port () { - BRIDGE="$1" - INTERFACE="$2" - CONTAINER="$3" - ADDRESS="$4" - if [ "$#" -lt 3 ]; then usage exit 1 + elif [ "$#" -eq 3 ]; then + BRIDGE="$1" + INTERFACE="$2" + CONTAINER="$3" + elif [ "$#" -eq 4 ]; then + BRIDGE="$1" + INTERFACE="$2" + CONTAINER="$3" + ADDRESS="$4" + elif [ "$#" -eq 5 ]; then + BRIDGE="$1" + PARENT="$2" + VLAN="$3" + INTERFACE="$4" + CONTAINER="$5" + elif [ "$#" -eq 6 ]; then + BRIDGE="$1" + PARENT="$2" + VLAN="$3" + INTERFACE="$4" + CONTAINER="$5" + ADDRESS="$6" fi - if ovs_vsctl --may-exist add-br "$BRIDGE"; then :; else - echo >&2 "$UTIL: Failed to create bridge $BRIDGE" - exit 1 - fi + if [ -n "$PARENT" ]; then + if ovs_vsctl --may-exist add-br "$BRIDGE" "$PARENT" "$VLAN"; then :; else + echo >&2 "$UTIL: Failed to create fake bridge $BRIDGE" + exit 1 + fi + else + if ovs_vsctl --may-exist add-br "$BRIDGE"; then :; else + echo >&2 "$UTIL: Failed to create bridge $BRIDGE" + exit 1 + fi + fi if PID=`docker inspect -f '{{.State.Pid}}' "$CONTAINER"`; then :; else echo >&2 "$UTIL: Failed to get the PID of the container" @@ -142,11 +166,12 @@ ${UTIL}: Performs integration of Open vSwitch with Docker. usage: ${UTIL} COMMAND Commands: - add-port BRIDGE INTERFACE CONTAINER [ADDRESS] + add-port BRIDGE [PARENT] [VLAN] INTERFACE CONTAINER [ADDRESS] Adds INTERFACE inside CONTAINER and connects it as a port - in Open vSwitch BRIDGE. Optionally, sets ADDRESS on - INTERFACE. ADDRESS can include a '/' to represent network - prefix length. e.g.: + in Open vSwitch BRIDGE. If BRIDGE is a fake bridge, you + have to specify its PARENT and VLAN. Optionally, sets + ADDRESS on INTERFACE. ADDRESS can include a '/' to + represent network prefix length. e.g.: ${UTIL} add-port br-int eth1 c474a0e2830e 192.168.1.2/24 del-port BRIDGE INTERFACE CONTAINER Deletes INTERFACE inside CONTAINER and removes its -- 1.9.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev