From c05103da92ecb00545d591840eae688452f350c2 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Mon, 23 Aug 2021 16:33:19 +0300 Subject: [PATCH] openvswitch: add option for OpenFlow datapath desc Add a UCI config option to set the OpenFlow datapath description. This allows setting a human readable description of the bridge, e.g. "Building x, Floor y, AP z", which makes it easier to recognize the AP. Signed-off-by: Stijn Tintel --- net/openvswitch/Makefile | 2 +- net/openvswitch/README.md | 13 +++++++------ net/openvswitch/files/openvswitch.config | 1 + net/openvswitch/files/openvswitch.init | 18 ++++++++++++++++++ 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/net/openvswitch/Makefile b/net/openvswitch/Makefile index 6883ba4ba2..f8f99a1e64 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:=6 +PKG_RELEASE:=7 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 5cc8bbffe5..cb7c3b4668 100644 --- a/net/openvswitch/README.md +++ b/net/openvswitch/README.md @@ -85,12 +85,13 @@ after adding or changing these options. 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 | -| datapath_id | string | no | (none) | The OpenFlow datapath ID 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 | +| datapath_desc | string | no | (none) | The OpenFlow datapath description 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 c812b7dd67..a7222b7763 100644 --- a/net/openvswitch/files/openvswitch.config +++ b/net/openvswitch/files/openvswitch.config @@ -14,6 +14,7 @@ config ovs_bridge option disabled 1 option name 'my-bridge' option controller 'tcp:192.168.0.1' + option datapath_desc '' option datapath_id '' config ovs_port diff --git a/net/openvswitch/files/openvswitch.init b/net/openvswitch/files/openvswitch.init index 229e6869b9..53259d5133 100755 --- a/net/openvswitch/files/openvswitch.init +++ b/net/openvswitch/files/openvswitch.init @@ -187,6 +187,17 @@ ovs_bridge_validate_datapath_id() { fi } +ovs_bridge_validate_datapath_desc() { + local dpdesc="$1" + + if [ "$(echo $dpdesc | wc -c)" -le 255 ]; then + return 0 + else + logger -t openvswitch "invalid datapath_desc: $dpdesc" + return 1 + fi +} + ovs_bridge_init() { local cfg="$1" @@ -208,6 +219,13 @@ ovs_bridge_init() { } } + config_get datapath_desc "$cfg" datapath_desc + [ -n "$datapath_desc" ] && { + ovs_bridge_validate_datapath_desc "$datapath_desc" && { + ovs-vsctl --if-exists set bridge "$name" other-config:dp-desc="$datapath_desc" + } + } + 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