diff options
| author | Stijn Tintel <stijn@linux-ipv6.be> | 2021-07-29 12:29:19 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-29 12:29:19 +0300 |
| commit | 2104f7cd51be4e9f847ae2315d5023ba01ae078e (patch) | |
| tree | b94ebfe8fcdf550edd347dcdf16013977d48bfc4 | |
| parent | a167eed8379371acc6d48a286b61d6dca6532b1c (diff) | |
| parent | 4a4c1634e61a670a6bbbcd6cac467b62e48dbff3 (diff) | |
Merge pull request #16228 from stintel/ovs-datapath_id
openvswitch: support setting OpenFlow datapath ID
| -rw-r--r-- | net/openvswitch/Makefile | 2 | ||||
| -rw-r--r-- | net/openvswitch/README.md | 11 | ||||
| -rw-r--r-- | net/openvswitch/files/openvswitch.config | 1 | ||||
| -rwxr-xr-x | net/openvswitch/files/openvswitch.init | 21 |
4 files changed, 29 insertions, 6 deletions
diff --git a/net/openvswitch/Makefile b/net/openvswitch/Makefile index 10be08240..9c23a2467 100644 --- a/net/openvswitch/Makefile +++ b/net/openvswitch/Makefile @@ -17,7 +17,7 @@ include ./openvswitch.mk # PKG_NAME:=openvswitch PKG_VERSION:=$(ovs_version) -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://www.openvswitch.org/releases/ PKG_HASH:=7d5797f2bf2449c6a266149e88f72123540f7fe7f31ad52902057ae8d8f88c38 diff --git a/net/openvswitch/README.md b/net/openvswitch/README.md index 2bbb02629..5ed04d771 100644 --- a/net/openvswitch/README.md +++ b/net/openvswitch/README.md @@ -72,11 +72,12 @@ set to 0 to launch the respective daemons. The ovs_bridge section also supports the options below, for initialising a virtual bridge with an OpenFlow controller. -| Name | Type | Required | Default | Description | -|------------|---------|----------|--------------------------------|------------------------------------------------------------| -| disabled | boolean | no | 0 | If set to true, disable initialisation of the named bridge | -| name | string | no | Inherits UCI config block name | The name of the switch in the OVS daemon | -| controller | string | no | (none) | The endpoint of an OpenFlow controller for this bridge | +| Name | Type | Required | Default | Description | +|-------------|---------|----------|--------------------------------|------------------------------------------------------------| +| disabled | boolean | no | 0 | If set to true, disable initialisation of the named bridge | +| name | string | no | Inherits UCI config block name | The name of the switch in the OVS daemon | +| controller | string | no | (none) | The endpoint of an OpenFlow controller for this bridge | +| datapath_id | string | no | (none) | The OpenFlow datapath ID for this bridge | The ovs_port section can be used to add ports to a bridge. It supports the options below. diff --git a/net/openvswitch/files/openvswitch.config b/net/openvswitch/files/openvswitch.config index 6139cb47e..56900b888 100644 --- a/net/openvswitch/files/openvswitch.config +++ b/net/openvswitch/files/openvswitch.config @@ -11,6 +11,7 @@ config ovs_bridge option disabled 1 option name 'my-bridge' option controller 'tcp:192.168.0.1' + option datapath_id '' config ovs_port option disabled 1 diff --git a/net/openvswitch/files/openvswitch.init b/net/openvswitch/files/openvswitch.init index 6db6ecea7..32adbac49 100755 --- a/net/openvswitch/files/openvswitch.init +++ b/net/openvswitch/files/openvswitch.init @@ -171,12 +171,26 @@ ovs_bridge_port_cleanup() { done } +ovs_bridge_validate_datapath_id() { + local dpid="$1" + + if expr "$dpid" : '[[:xdigit:]]\{16\}$' > /dev/null; then + return 0 + elif expr "$dpid" : '0x[[:xdigit:]]\{1,16\}$' > /dev/null; then + return 0 + else + logger -t openvswitch "invalid datapath_id: $dpid" + return 1 + fi +} + ovs_bridge_init() { local cfg="$1" local disabled local name local controller + local datapath_id config_get_bool disabled "$cfg" disabled 0 [ "$disabled" == "0" ] || return @@ -184,6 +198,13 @@ ovs_bridge_init() { config_get name "$cfg" name $cfg ovs-vsctl --may-exist add-br "$name" + config_get datapath_id "$cfg" datapath_id + [ -n "$datapath_id" ] && { + ovs_bridge_validate_datapath_id "$datapath_id" && { + ovs-vsctl --if-exists set bridge "$name" other-config:datapath-id="$datapath_id" + } + } + config_list_foreach "$cfg" "ports" ovs_bridge_port_add config_foreach ovs_bridge_port_add_complex ovs_port "$name" config_get_bool drop "$cfg" "drop_unknown_ports" 0 |
