diff --git a/net/openvswitch/Makefile b/net/openvswitch/Makefile index f8fc3acaf..bc690ed45 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:=5 +PKG_RELEASE:=6 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://www.openvswitch.org/releases/ PKG_HASH:=dd5f727427e36cab22bdeae61529d8c8fccacc53d968cfa7658f7f935ddda531 diff --git a/net/openvswitch/README.md b/net/openvswitch/README.md index 541056a49..9008a886b 100644 --- a/net/openvswitch/README.md +++ b/net/openvswitch/README.md @@ -60,3 +60,20 @@ E.g. replace in-tree datapath module with upstream version opkg remove --force-depends kmod-openvswitch-intree opkg install kmod-openvswitch ovs-ctl force-reload-kmod + +# UCI configuration options + +There are 4 config section types in package openvswitch: +ovs ovn_northd, ovn_controller & ovs_bridge. + +Each of these supports a disabled option, which should be +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 | diff --git a/net/openvswitch/files/openvswitch.config b/net/openvswitch/files/openvswitch.config index 1bd23775e..88c2ebc25 100644 --- a/net/openvswitch/files/openvswitch.config +++ b/net/openvswitch/files/openvswitch.config @@ -6,3 +6,8 @@ config ovn_northd north config ovn_controller controller option disabled 1 + +config ovs_bridge + option disabled 1 + option name 'my-bridge' + option controller 'tcp:192.168.0.1' \ No newline at end of file diff --git a/net/openvswitch/files/openvswitch.init b/net/openvswitch/files/openvswitch.init index aa1e72ac3..a4cde9d1f 100755 --- a/net/openvswitch/files/openvswitch.init +++ b/net/openvswitch/files/openvswitch.init @@ -36,6 +36,8 @@ ovs_action() { for cfgtype in ovs ovn_northd ovn_controller; do config_foreach "ovs_xx" "$cfgtype" "$action" "$cfgtype" done + + config_foreach ovs_bridge_init "ovs_bridge" } ovs_xx() { @@ -51,7 +53,7 @@ ovs_xx() { status|stop) ;; *) config_get_bool disabled "$cfg" disabled 0 - [ "$disabled" -le 0 ] || return + [ "$disabled" == "0" ] || return ;; esac @@ -65,3 +67,21 @@ ovs_xx() { ;; esac } + +ovs_bridge_init() { + local cfg="$1" + + local disabled + local name + local controller + + config_get_bool disabled "$cfg" disabled 0 + [ "$disabled" == "0" ] || return + + config_get name "$cfg" name $cfg + ovs-vsctl --may-exist add-br "$name" + + config_get controller "$cfg" controller + [ -n "$controller" ] && \ + ovs-vsctl set-controller "$name" "$controller" +}