openvswitch: add option for OpenFlow datapath desc
authorStijn Tintel <stijn@linux-ipv6.be>
Mon, 23 Aug 2021 13:33:19 +0000 (16:33 +0300)
committerYousong Zhou <yszhou4tech@gmail.com>
Wed, 22 Sep 2021 12:40:45 +0000 (20:40 +0800)
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 <stijn@linux-ipv6.be>
net/openvswitch/Makefile
net/openvswitch/README.md
net/openvswitch/files/openvswitch.config
net/openvswitch/files/openvswitch.init

index 6883ba4ba2185c1ac60e25e30d9a69f32e53531b..f8f99a1e64441d27ec6e63906c55876325f077af 100644 (file)
@@ -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
index 5cc8bbffe544401f1592ce97f331d31480effe14..cb7c3b466886f06383bed09acd6f0e35a8305cb3 100644 (file)
@@ -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.
 
index c812b7dd67fcae9c1517fe0da66f7f4ecd91dd88..a7222b776301b87df5eba61f87b3c0e42425f5bf 100644 (file)
@@ -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
index 229e6869b9a6c532cf89f337ab961f5a3ad62dca..53259d5133a3aaeccc0d0d1db910ff20ef44d31d 100755 (executable)
@@ -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