summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Tintel <stijn@linux-ipv6.be>2021-07-29 12:29:19 +0300
committerGitHub <noreply@github.com>2021-07-29 12:29:19 +0300
commit2104f7cd51be4e9f847ae2315d5023ba01ae078e (patch)
treeb94ebfe8fcdf550edd347dcdf16013977d48bfc4
parenta167eed8379371acc6d48a286b61d6dca6532b1c (diff)
parent4a4c1634e61a670a6bbbcd6cac467b62e48dbff3 (diff)
Merge pull request #16228 from stintel/ovs-datapath_id
openvswitch: support setting OpenFlow datapath ID
-rw-r--r--net/openvswitch/Makefile2
-rw-r--r--net/openvswitch/README.md11
-rw-r--r--net/openvswitch/files/openvswitch.config1
-rwxr-xr-xnet/openvswitch/files/openvswitch.init21
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