[ovs-dev] [PATCH] utilities/ovs-docker: Add support for specifying vlan tag on add-port cal
Brian Turek
brian.turek at gmail.com
Wed Jun 15 00:02:13 UTC 2016
I have no idea why my patch wouldn't be working, `git diff -C -M` is making
the diff for me (if the below doesn't work again, I'll have to investigate).
Regardless, I really would like to have the tag option be a part of the
initial add-port call instead of an additional set-port call. If malformed
input is a concern, how about something like:
diff --git a/utilities/ovs-docker b/utilities/ovs-docker
index 43cea54..edd48d2 100755
--- a/utilities/ovs-docker
+++ b/utilities/ovs-docker
@@ -90,6 +90,16 @@ add_port () {
MTU=`expr X"$1" : 'X[^=]*=\(.*\)'`
shift
;;
+ --vlan=*)
+ if [ "$1" -eq "$1" ] 2>/dev/null
+ then
+ TAG="tag=$(expr X"$1" : 'X[^=]*=\(.*\)')"
+ else
+ echo >&2 "$UTIL add-port: vlan must be an integer"
+ exit 1
+ fi
+ shift
+ ;;
*)
echo >&2 "$UTIL add-port: unknown option \"$1\""
exit 1
@@ -126,7 +136,7 @@ add_port () {
# Add one end of veth to OVS bridge.
if ovs_vsctl --may-exist add-port "$BRIDGE" "${PORTNAME}_l" \
- -- set interface "${PORTNAME}_l" \
+ $TAG -- set interface "${PORTNAME}_l" \
external_ids:container_id="$CONTAINER" \
external_ids:container_iface="$INTERFACE"; then :; else
echo >&2 "$UTIL: Failed to add "${PORTNAME}_l" port to bridge
$BRIDGE"
@@ -224,15 +234,15 @@ usage: ${UTIL} COMMAND
Commands:
add-port BRIDGE INTERFACE CONTAINER [--ipaddress="ADDRESS"]
[--gateway=GATEWAY] [--macaddress="MACADDRESS"]
- [--mtu=MTU]
+ [--mtu=MTU] [--vlan=TAG]
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. Optionally, sets a GATEWAY, MACADDRESS
- and MTU. e.g.:
+ prefix length. Optionally, sets a GATEWAY, MACADDRESS,
+ MTU, and VLAN. e.g.:
${UTIL} add-port br-int eth1 c474a0e2830e
--ipaddress=192.168.1.2/24 --gateway=192.168.1.1
- --macaddress="a2:c3:0d:49:7f:f8" --mtu=1450
+ --macaddress="a2:c3:0d:49:7f:f8" --mtu=1450 --vlan=10
del-port BRIDGE INTERFACE CONTAINER
Deletes INTERFACE inside CONTAINER and removes its
connection to Open vSwitch BRIDGE. e.g.:
On Mon, Jun 13, 2016 at 11:25 AM, Guru Shetty <guru at ovn.org> wrote:
>
>
> On 11 June 2016 at 05:28, Brian Turek <brian.turek at gmail.com> wrote:
>
>> Signed-off-by: Brian Turek <brian.turek at gmail.com>
>>
>
> Thank you for your contribution. How did you send this patch? I couldn't
> apply it on my local tree using 'git am'. Sending it via 'git send-email'
> usually gets it right.
>
> The change in the patch itself is not much, so I took a look. The thing
> that concerns me a bit with this patch is that I could potentially run
> commands of the form:
>
> utilities/ovs-docker add-port br-int eth1 f5f314682193 --vlan="2 -- set
> bridge br-int external_ids:hello=hi"
>
> We could avoid it by doing something like this instead:
> diff --git a/utilities/ovs-docker b/utilities/ovs-docker
> index 43cea54..82c0343 100755
> --- a/utilities/ovs-docker
> +++ b/utilities/ovs-docker
> @@ -90,6 +90,10 @@ add_port () {
> MTU=`expr X"$1" : 'X[^=]*=\(.*\)'`
> shift
> ;;
> + --vlan=*)
> + TAG=`expr X"$1" : 'X[^=]*=\(.*\)'`
> + shift
> + ;;
> *)
> echo >&2 "$UTIL add-port: unknown option \"$1\""
> exit 1
> @@ -134,6 +138,15 @@ add_port () {
> exit 1
> fi
>
> + if [ -n "$TAG" ]; then
> + if ovs_vsctl set port "${PORTNAME}_l" tag="$TAG"; then :; else
> + echo >&2 "$UTIL: Failed to set vlan $tag"
> + ovs_vsctl del-port "${PORTNAME}_l"
> + ip link delete "${PORTNAME}_l"
> + exit 1
> + fi
> + fi
> +
> ip link set "${PORTNAME}_l" up
>
>
>
>
>
>>
>> diff --git a/utilities/ovs-docker b/utilities/ovs-docker
>> index 43cea54..98892b6 100755
>> --- a/utilities/ovs-docker
>> +++ b/utilities/ovs-docker
>> @@ -90,6 +90,10 @@ add_port () {
>> MTU=`expr X"$1" : 'X[^=]*=\(.*\)'`
>> shift
>> ;;
>> + --vlan=*)
>> + TAG="tag=$(expr X"$1" : 'X[^=]*=\(.*\)')"
>> + shift
>> + ;;
>> *)
>> echo >&2 "$UTIL add-port: unknown option \"$1\""
>> exit 1
>> @@ -126,7 +130,7 @@ add_port () {
>>
>> # Add one end of veth to OVS bridge.
>> if ovs_vsctl --may-exist add-port "$BRIDGE" "${PORTNAME}_l" \
>> - -- set interface "${PORTNAME}_l" \
>> + $TAG -- set interface "${PORTNAME}_l" \
>> external_ids:container_id="$CONTAINER" \
>> external_ids:container_iface="$INTERFACE"; then :; else
>> echo >&2 "$UTIL: Failed to add "${PORTNAME}_l" port to bridge
>> $BRIDGE"
>> @@ -224,15 +228,15 @@ usage: ${UTIL} COMMAND
>> Commands:
>> add-port BRIDGE INTERFACE CONTAINER [--ipaddress="ADDRESS"]
>> [--gateway=GATEWAY] [--macaddress="MACADDRESS"]
>> - [--mtu=MTU]
>> + [--mtu=MTU] [--vlan=VLAN]
>> 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. Optionally, sets a GATEWAY, MACADDRESS
>> - and MTU. e.g.:
>> + prefix length. Optionally, sets a GATEWAY,
>> MACADDRESS,
>> + MTU, and VLAN. e.g.:
>> ${UTIL} add-port br-int eth1 c474a0e2830e
>> --ipaddress=192.168.1.2/24 --gateway=192.168.1.1
>> - --macaddress="a2:c3:0d:49:7f:f8" --mtu=1450
>> + --macaddress="a2:c3:0d:49:7f:f8" --mtu=1450 --vlan=10
>> del-port BRIDGE INTERFACE CONTAINER
>> Deletes INTERFACE inside CONTAINER and removes its
>> connection to Open vSwitch BRIDGE. e.g.:
>> _______________________________________________
>> dev mailing list
>> dev at openvswitch.org
>> http://openvswitch.org/mailman/listinfo/dev
>>
>
>
More information about the dev
mailing list