mirror of https://github.com/openwrt/packages.git
Merge pull request #16228 from stintel/ovs-datapath_id
openvswitch: support setting OpenFlow datapath IDpull/16231/head
commit
2104f7cd51
|
@ -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
|
||||
|
|
|
@ -73,10 +73,11 @@ 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 |
|
||||
|
||||
The ovs_port section can be used to add ports to a bridge. It supports the options below.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue