mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +00:00
Remove support for OpenFlow 1.6 (draft).
ONF abandoned the OpenFlow specification, so that OpenFlow 1.6 will never be completed. It did not contain much in the way of useful features, so remove what support Open vSwitch already had. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
This commit is contained in:
parent
a0baa7dfa4
commit
29718ad49d
@ -30,17 +30,17 @@ Q: What versions of OpenFlow does Open vSwitch support?
|
|||||||
A: The following table lists the versions of OpenFlow supported by each
|
A: The following table lists the versions of OpenFlow supported by each
|
||||||
version of Open vSwitch:
|
version of Open vSwitch:
|
||||||
|
|
||||||
=============== ===== ===== ===== ===== ===== ===== =====
|
=============== ===== ===== ===== ===== ===== =====
|
||||||
Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 OF1.6
|
Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5
|
||||||
=============== ===== ===== ===== ===== ===== ===== =====
|
=============== ===== ===== ===== ===== ===== =====
|
||||||
1.9 and earlier yes --- --- --- --- --- ---
|
1.9 and earlier yes --- --- --- --- ---
|
||||||
1.10, 1.11 yes --- (*) (*) --- --- ---
|
1.10, 1.11 yes --- (*) (*) --- ---
|
||||||
2.0, 2.1 yes (*) (*) (*) --- --- ---
|
2.0, 2.1 yes (*) (*) (*) --- ---
|
||||||
2.2 yes (*) (*) (*) (%) (*) ---
|
2.2 yes (*) (*) (*) (%) (*)
|
||||||
2.3, 2.4 yes yes yes yes (*) (*) ---
|
2.3, 2.4 yes yes yes yes (*) (*)
|
||||||
2.5, 2.6, 2.7 yes yes yes yes (*) (*) (*)
|
2.5, 2.6, 2.7 yes yes yes yes (*) (*)
|
||||||
2.8 yes yes yes yes yes (*) (*)
|
2.8 yes yes yes yes yes (*)
|
||||||
=============== ===== ===== ===== ===== ===== ===== =====
|
=============== ===== ===== ===== ===== ===== =====
|
||||||
|
|
||||||
--- Not supported.
|
--- Not supported.
|
||||||
yes Supported and enabled by default
|
yes Supported and enabled by default
|
||||||
@ -73,8 +73,8 @@ Q: What versions of OpenFlow does Open vSwitch support?
|
|||||||
could cause crashes. We don't recommend enabling it.)
|
could cause crashes. We don't recommend enabling it.)
|
||||||
|
|
||||||
:doc:`/topics/openflow` tracks support for OpenFlow 1.1 and later features.
|
:doc:`/topics/openflow` tracks support for OpenFlow 1.1 and later features.
|
||||||
When support for OpenFlow 1.5 and 1.6 is solidly implemented, Open vSwitch
|
When support for OpenFlow 1.5 is solidly implemented, Open vSwitch will
|
||||||
will enable those version by default.
|
enable it by default.
|
||||||
|
|
||||||
Q: Does Open vSwitch support MPLS?
|
Q: Does Open vSwitch support MPLS?
|
||||||
|
|
||||||
|
2
NEWS
2
NEWS
@ -3,6 +3,8 @@ Post-v2.11.0
|
|||||||
- DPDK:
|
- DPDK:
|
||||||
* New option 'other_config:dpdk-socket-limit' to limit amount of
|
* New option 'other_config:dpdk-socket-limit' to limit amount of
|
||||||
hugepage memory that can be used by DPDK.
|
hugepage memory that can be used by DPDK.
|
||||||
|
- OpenFlow:
|
||||||
|
* Removed support for OpenFlow 1.6 (draft), which ONF abandoned.
|
||||||
- Userspace datapath:
|
- Userspace datapath:
|
||||||
* ICMPv6 ND enhancements: support for match and set ND options type
|
* ICMPv6 ND enhancements: support for match and set ND options type
|
||||||
and reserved fields.
|
and reserved fields.
|
||||||
|
@ -12,8 +12,7 @@ version_map = {"1.0": 0x01,
|
|||||||
"1.2": 0x03,
|
"1.2": 0x03,
|
||||||
"1.3": 0x04,
|
"1.3": 0x04,
|
||||||
"1.4": 0x05,
|
"1.4": 0x05,
|
||||||
"1.5": 0x06,
|
"1.5": 0x06}
|
||||||
"1.6": 0x07}
|
|
||||||
version_reverse_map = dict((v, k) for (k, v) in version_map.items())
|
version_reverse_map = dict((v, k) for (k, v) in version_map.items())
|
||||||
|
|
||||||
token = None
|
token = None
|
||||||
|
@ -12,8 +12,7 @@ VERSION = {"1.0": 0x01,
|
|||||||
"1.2": 0x03,
|
"1.2": 0x03,
|
||||||
"1.3": 0x04,
|
"1.3": 0x04,
|
||||||
"1.4": 0x05,
|
"1.4": 0x05,
|
||||||
"1.5": 0x06,
|
"1.5": 0x06}
|
||||||
"1.6": 0x07}
|
|
||||||
|
|
||||||
NX_VENDOR_ID = 0x00002320
|
NX_VENDOR_ID = 0x00002320
|
||||||
ONF_VENDOR_ID = 0x4f4e4600
|
ONF_VENDOR_ID = 0x4f4e4600
|
||||||
|
@ -9,7 +9,6 @@ openflowinclude_HEADERS = \
|
|||||||
include/openflow/openflow-1.3.h \
|
include/openflow/openflow-1.3.h \
|
||||||
include/openflow/openflow-1.4.h \
|
include/openflow/openflow-1.4.h \
|
||||||
include/openflow/openflow-1.5.h \
|
include/openflow/openflow-1.5.h \
|
||||||
include/openflow/openflow-1.6.h \
|
|
||||||
include/openflow/openflow-common.h \
|
include/openflow/openflow-common.h \
|
||||||
include/openflow/openflow.h
|
include/openflow/openflow.h
|
||||||
|
|
||||||
|
@ -21,11 +21,6 @@
|
|||||||
|
|
||||||
#include <openflow/openflow-common.h>
|
#include <openflow/openflow-common.h>
|
||||||
|
|
||||||
/* Maximum name of a port.
|
|
||||||
*
|
|
||||||
* OpenFlow 1.6 (draft) increases this to 64. */
|
|
||||||
#define OFP10_MAX_PORT_NAME_LEN 16
|
|
||||||
|
|
||||||
/* Port number(s) meaning
|
/* Port number(s) meaning
|
||||||
* --------------- --------------------------------------
|
* --------------- --------------------------------------
|
||||||
* 0x0000 not assigned a meaning by OpenFlow 1.0
|
* 0x0000 not assigned a meaning by OpenFlow 1.0
|
||||||
@ -102,7 +97,7 @@ enum ofp10_port_features {
|
|||||||
struct ofp10_phy_port {
|
struct ofp10_phy_port {
|
||||||
ovs_be16 port_no;
|
ovs_be16 port_no;
|
||||||
struct eth_addr hw_addr;
|
struct eth_addr hw_addr;
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
char name[OFP_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
||||||
|
|
||||||
ovs_be32 config; /* Bitmap of OFPPC_* and OFPPC10_* flags. */
|
ovs_be32 config; /* Bitmap of OFPPC_* and OFPPC10_* flags. */
|
||||||
ovs_be32 state; /* Bitmap of OFPPS_* and OFPPS10_* flags. */
|
ovs_be32 state; /* Bitmap of OFPPS_* and OFPPS10_* flags. */
|
||||||
|
@ -113,7 +113,7 @@ struct ofp11_port {
|
|||||||
uint8_t pad[4];
|
uint8_t pad[4];
|
||||||
struct eth_addr hw_addr;
|
struct eth_addr hw_addr;
|
||||||
uint8_t pad2[2]; /* Align to 64 bits. */
|
uint8_t pad2[2]; /* Align to 64 bits. */
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
char name[OFP_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
||||||
|
|
||||||
ovs_be32 config; /* Bitmap of OFPPC_* flags. */
|
ovs_be32 config; /* Bitmap of OFPPC_* flags. */
|
||||||
ovs_be32 state; /* Bitmap of OFPPS_* and OFPPS11_* flags. */
|
ovs_be32 state; /* Bitmap of OFPPS_* and OFPPS11_* flags. */
|
||||||
|
@ -80,7 +80,7 @@ struct ofp14_port {
|
|||||||
uint8_t pad[2];
|
uint8_t pad[2];
|
||||||
struct eth_addr hw_addr;
|
struct eth_addr hw_addr;
|
||||||
uint8_t pad2[2]; /* Align to 64 bits. */
|
uint8_t pad2[2]; /* Align to 64 bits. */
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
char name[OFP_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
||||||
|
|
||||||
ovs_be32 config; /* Bitmap of OFPPC_* flags. */
|
ovs_be32 config; /* Bitmap of OFPPC_* flags. */
|
||||||
ovs_be32 state; /* Bitmap of OFPPS_* flags. */
|
ovs_be32 state; /* Bitmap of OFPPS_* flags. */
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
/* Copyright (c) 2008 The Board of Trustees of The Leland Stanford
|
|
||||||
* Junior University
|
|
||||||
* Copyright (c) 2011, 2013, 2014 Open Networking Foundation
|
|
||||||
*
|
|
||||||
* We are making the OpenFlow specification and associated documentation
|
|
||||||
* (Software) available for public use and benefit with the expectation
|
|
||||||
* that others will use, modify and enhance the Software and contribute
|
|
||||||
* those enhancements back to the community. However, since we would
|
|
||||||
* like to make the Software available for broadest use, with as few
|
|
||||||
* restrictions as possible permission is hereby granted, free of
|
|
||||||
* charge, to any person obtaining a copy of this Software to deal in
|
|
||||||
* the Software under the copyrights without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
* permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
||||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
||||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*
|
|
||||||
* The name and trademarks of copyright holder(s) may NOT be used in
|
|
||||||
* advertising or publicity pertaining to the Software or any
|
|
||||||
* derivatives without specific, written prior permission.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2017 Nicira, Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at:
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef OPENFLOW_16_H
|
|
||||||
#define OPENFLOW_16_H 1
|
|
||||||
|
|
||||||
#include <openflow/openflow-common.h>
|
|
||||||
|
|
||||||
#define OFP16_MAX_PORT_NAME_LEN 64
|
|
||||||
|
|
||||||
struct ofp16_port {
|
|
||||||
ovs_be32 port_no;
|
|
||||||
ovs_be16 length;
|
|
||||||
uint8_t pad[2]; /* Align to 64 bits. */
|
|
||||||
struct eth_addr hw_addr; /* EUI-48 hardware address. */
|
|
||||||
uint8_t pad2[2]; /* Align to 64 bits. */
|
|
||||||
struct eth_addr64 hw_addr64; /* EUI-64 hardware address */
|
|
||||||
char name[OFP16_MAX_PORT_NAME_LEN]; /* Null-terminated */
|
|
||||||
|
|
||||||
ovs_be32 config; /* Bitmap of OFPPC_* flags. */
|
|
||||||
ovs_be32 state; /* Bitmap of OFPPS_* flags. */
|
|
||||||
|
|
||||||
/* Followed by 0 or more OFPPDPT14_* properties. (OpenFlow 1.6 (draft)
|
|
||||||
* defines the same properties as OpenFlow 1.4.) */
|
|
||||||
};
|
|
||||||
OFP_ASSERT(sizeof(struct ofp16_port) == 96);
|
|
||||||
|
|
||||||
struct ofp16_port_mod {
|
|
||||||
ovs_be32 port_no;
|
|
||||||
uint8_t pad[4]; /* Align to 64 bits. */
|
|
||||||
struct eth_addr hw_addr;
|
|
||||||
uint8_t pad2[2];
|
|
||||||
struct eth_addr64 hw_addr64; /* EUI-64 hardware address */
|
|
||||||
|
|
||||||
ovs_be32 config; /* Bitmap of OFPPC_* flags. */
|
|
||||||
ovs_be32 mask; /* Bitmap of OFPPC_* flags to be changed. */
|
|
||||||
|
|
||||||
/* Followed by 0 or more OFPPMPT14_* properties. (OpenFlow 1.6 (draft)
|
|
||||||
* defines the same properties as OpenFlow 1.4.) */
|
|
||||||
};
|
|
||||||
OFP_ASSERT(sizeof(struct ofp16_port_mod) == 32);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* openflow/openflow-1.6.h */
|
|
@ -79,8 +79,7 @@ enum ofp_version {
|
|||||||
OFP12_VERSION = 0x03,
|
OFP12_VERSION = 0x03,
|
||||||
OFP13_VERSION = 0x04,
|
OFP13_VERSION = 0x04,
|
||||||
OFP14_VERSION = 0x05,
|
OFP14_VERSION = 0x05,
|
||||||
OFP15_VERSION = 0x06,
|
OFP15_VERSION = 0x06
|
||||||
OFP16_VERSION = 0x07
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Vendor (aka experimenter) IDs.
|
/* Vendor (aka experimenter) IDs.
|
||||||
@ -113,6 +112,7 @@ enum ofp_version {
|
|||||||
#define INTEL_VENDOR_ID 0x0000AA01 /* Intel */
|
#define INTEL_VENDOR_ID 0x0000AA01 /* Intel */
|
||||||
|
|
||||||
#define OFP_MAX_TABLE_NAME_LEN 32
|
#define OFP_MAX_TABLE_NAME_LEN 32
|
||||||
|
#define OFP_MAX_PORT_NAME_LEN 16
|
||||||
|
|
||||||
#define OFP_OLD_PORT 6633
|
#define OFP_OLD_PORT 6633
|
||||||
#define OFP_PORT 6653
|
#define OFP_PORT 6653
|
||||||
|
@ -23,6 +23,5 @@
|
|||||||
#include <openflow/openflow-1.3.h>
|
#include <openflow/openflow-1.3.h>
|
||||||
#include <openflow/openflow-1.4.h>
|
#include <openflow/openflow-1.4.h>
|
||||||
#include <openflow/openflow-1.5.h>
|
#include <openflow/openflow-1.5.h>
|
||||||
#include <openflow/openflow-1.6.h>
|
|
||||||
|
|
||||||
#endif /* openflow/openflow.h */
|
#endif /* openflow/openflow.h */
|
||||||
|
@ -803,8 +803,8 @@ enum ofperr {
|
|||||||
/* OF1.5+(17,18). Scheduled commit time exceeds lower bound. */
|
/* OF1.5+(17,18). Scheduled commit time exceeds lower bound. */
|
||||||
OFPERR_OFPBFC_SCHED_PAST,
|
OFPERR_OFPBFC_SCHED_PAST,
|
||||||
|
|
||||||
/* NX1.4-1.5(22), OF1.6+(17,19). In an OFPT_BUNDLE_ADD_MESSAGE, the
|
/* NX1.4-1.5(22). In an OFPT_BUNDLE_ADD_MESSAGE, the OpenFlow version in
|
||||||
* OpenFlow version in the inner and outer messages differ. */
|
* the inner and outer messages differ. */
|
||||||
OFPERR_OFPBFC_BAD_VERSION,
|
OFPERR_OFPBFC_BAD_VERSION,
|
||||||
|
|
||||||
/* ## ------------------------- ## */
|
/* ## ------------------------- ## */
|
||||||
|
@ -177,10 +177,8 @@ enum ofpraw {
|
|||||||
OFPRAW_OFPT10_PORT_STATUS,
|
OFPRAW_OFPT10_PORT_STATUS,
|
||||||
/* OFPT 1.1-1.3 (12): struct ofp_port_status, struct ofp11_port. */
|
/* OFPT 1.1-1.3 (12): struct ofp_port_status, struct ofp11_port. */
|
||||||
OFPRAW_OFPT11_PORT_STATUS,
|
OFPRAW_OFPT11_PORT_STATUS,
|
||||||
/* OFPT 1.4-1.5 (12): struct ofp_port_status, struct ofp14_port, uint8_t[8][]. */
|
/* OFPT 1.4+ (12): struct ofp_port_status, struct ofp14_port, uint8_t[8][]. */
|
||||||
OFPRAW_OFPT14_PORT_STATUS,
|
OFPRAW_OFPT14_PORT_STATUS,
|
||||||
/* OFPT 1.6+ (12): struct ofp_port_status, struct ofp16_port, uint8_t[8][]. */
|
|
||||||
OFPRAW_OFPT16_PORT_STATUS,
|
|
||||||
|
|
||||||
/* OFPT 1.0 (13): struct ofp10_packet_out, uint8_t[]. */
|
/* OFPT 1.0 (13): struct ofp10_packet_out, uint8_t[]. */
|
||||||
OFPRAW_OFPT10_PACKET_OUT,
|
OFPRAW_OFPT10_PACKET_OUT,
|
||||||
@ -207,10 +205,8 @@ enum ofpraw {
|
|||||||
OFPRAW_OFPT10_PORT_MOD,
|
OFPRAW_OFPT10_PORT_MOD,
|
||||||
/* OFPT 1.1-1.3 (16): struct ofp11_port_mod. */
|
/* OFPT 1.1-1.3 (16): struct ofp11_port_mod. */
|
||||||
OFPRAW_OFPT11_PORT_MOD,
|
OFPRAW_OFPT11_PORT_MOD,
|
||||||
/* OFPT 1.4-1.5 (16): struct ofp14_port_mod, uint8_t[8][]. */
|
/* OFPT 1.4+ (16): struct ofp14_port_mod, uint8_t[8][]. */
|
||||||
OFPRAW_OFPT14_PORT_MOD,
|
OFPRAW_OFPT14_PORT_MOD,
|
||||||
/* OFPT 1.6+ (16): struct ofp16_port_mod, uint8_t[8][]. */
|
|
||||||
OFPRAW_OFPT16_PORT_MOD,
|
|
||||||
|
|
||||||
/* OFPT 1.1-1.3 (17): struct ofp11_table_mod. */
|
/* OFPT 1.1-1.3 (17): struct ofp11_table_mod. */
|
||||||
OFPRAW_OFPT11_TABLE_MOD,
|
OFPRAW_OFPT11_TABLE_MOD,
|
||||||
@ -592,8 +588,7 @@ enum ofptype {
|
|||||||
* OFPRAW_NXT_FLOW_REMOVED. */
|
* OFPRAW_NXT_FLOW_REMOVED. */
|
||||||
OFPTYPE_PORT_STATUS, /* OFPRAW_OFPT10_PORT_STATUS.
|
OFPTYPE_PORT_STATUS, /* OFPRAW_OFPT10_PORT_STATUS.
|
||||||
* OFPRAW_OFPT11_PORT_STATUS.
|
* OFPRAW_OFPT11_PORT_STATUS.
|
||||||
* OFPRAW_OFPT14_PORT_STATUS.
|
* OFPRAW_OFPT14_PORT_STATUS. */
|
||||||
* OFPRAW_OFPT16_PORT_STATUS. */
|
|
||||||
|
|
||||||
/* Controller command messages. */
|
/* Controller command messages. */
|
||||||
OFPTYPE_PACKET_OUT, /* OFPRAW_OFPT10_PACKET_OUT.
|
OFPTYPE_PACKET_OUT, /* OFPRAW_OFPT10_PACKET_OUT.
|
||||||
@ -607,8 +602,7 @@ enum ofptype {
|
|||||||
* OFPRAW_OFPT15_GROUP_MOD. */
|
* OFPRAW_OFPT15_GROUP_MOD. */
|
||||||
OFPTYPE_PORT_MOD, /* OFPRAW_OFPT10_PORT_MOD.
|
OFPTYPE_PORT_MOD, /* OFPRAW_OFPT10_PORT_MOD.
|
||||||
* OFPRAW_OFPT11_PORT_MOD.
|
* OFPRAW_OFPT11_PORT_MOD.
|
||||||
* OFPRAW_OFPT14_PORT_MOD.
|
* OFPRAW_OFPT14_PORT_MOD. */
|
||||||
* OFPRAW_OFPT16_PORT_MOD. */
|
|
||||||
OFPTYPE_TABLE_MOD, /* OFPRAW_OFPT11_TABLE_MOD.
|
OFPTYPE_TABLE_MOD, /* OFPRAW_OFPT11_TABLE_MOD.
|
||||||
* OFPRAW_OFPT14_TABLE_MOD. */
|
* OFPRAW_OFPT14_TABLE_MOD. */
|
||||||
|
|
||||||
|
@ -90,19 +90,12 @@ enum ofputil_port_state {
|
|||||||
|
|
||||||
void ofputil_port_state_format(struct ds *, enum ofputil_port_state);
|
void ofputil_port_state_format(struct ds *, enum ofputil_port_state);
|
||||||
|
|
||||||
/* Abstract ofp10_phy_port, ofp11_port, ofp14_port, or ofp16_port. */
|
/* Abstract ofp10_phy_port, ofp11_port, or ofp14_port. */
|
||||||
struct ofputil_phy_port {
|
struct ofputil_phy_port {
|
||||||
ofp_port_t port_no;
|
ofp_port_t port_no;
|
||||||
|
|
||||||
/* Hardware addresses.
|
|
||||||
*
|
|
||||||
* Most hardware has a normal 48-bit Ethernet address, in hw_addr.
|
|
||||||
* Some hardware might have a 64-bit address in hw_addr64.
|
|
||||||
* All-bits-0 indicates that a given address is not present. */
|
|
||||||
struct eth_addr hw_addr;
|
struct eth_addr hw_addr;
|
||||||
struct eth_addr64 hw_addr64;
|
char name[OFP_MAX_PORT_NAME_LEN]; /* 16 bytes. */
|
||||||
|
|
||||||
char name[OFP16_MAX_PORT_NAME_LEN]; /* 64 bytes in OF1.6+, 16 otherwise. */
|
|
||||||
enum ofputil_port_config config;
|
enum ofputil_port_config config;
|
||||||
enum ofputil_port_state state;
|
enum ofputil_port_state state;
|
||||||
|
|
||||||
@ -142,7 +135,6 @@ void ofputil_port_status_format(struct ds *,
|
|||||||
struct ofputil_port_mod {
|
struct ofputil_port_mod {
|
||||||
ofp_port_t port_no;
|
ofp_port_t port_no;
|
||||||
struct eth_addr hw_addr;
|
struct eth_addr hw_addr;
|
||||||
struct eth_addr64 hw_addr64;
|
|
||||||
enum ofputil_port_config config;
|
enum ofputil_port_config config;
|
||||||
enum ofputil_port_config mask;
|
enum ofputil_port_config mask;
|
||||||
enum netdev_features advertise;
|
enum netdev_features advertise;
|
||||||
|
@ -79,12 +79,10 @@ enum ofputil_protocol {
|
|||||||
OFPUTIL_P_OF13_OXM = 1 << 6,
|
OFPUTIL_P_OF13_OXM = 1 << 6,
|
||||||
OFPUTIL_P_OF14_OXM = 1 << 7,
|
OFPUTIL_P_OF14_OXM = 1 << 7,
|
||||||
OFPUTIL_P_OF15_OXM = 1 << 8,
|
OFPUTIL_P_OF15_OXM = 1 << 8,
|
||||||
OFPUTIL_P_OF16_OXM = 1 << 9,
|
|
||||||
#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
|
#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \
|
||||||
OFPUTIL_P_OF13_OXM | \
|
OFPUTIL_P_OF13_OXM | \
|
||||||
OFPUTIL_P_OF14_OXM | \
|
OFPUTIL_P_OF14_OXM | \
|
||||||
OFPUTIL_P_OF15_OXM | \
|
OFPUTIL_P_OF15_OXM)
|
||||||
OFPUTIL_P_OF16_OXM)
|
|
||||||
|
|
||||||
#define OFPUTIL_P_NXM_OF11_UP (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_OF11_STD | \
|
#define OFPUTIL_P_NXM_OF11_UP (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_OF11_STD | \
|
||||||
OFPUTIL_P_ANY_OXM)
|
OFPUTIL_P_ANY_OXM)
|
||||||
@ -96,8 +94,7 @@ enum ofputil_protocol {
|
|||||||
#define OFPUTIL_P_OF12_UP (OFPUTIL_P_OF12_OXM | OFPUTIL_P_OF13_UP)
|
#define OFPUTIL_P_OF12_UP (OFPUTIL_P_OF12_OXM | OFPUTIL_P_OF13_UP)
|
||||||
#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
|
#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_UP)
|
||||||
#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
|
#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP)
|
||||||
#define OFPUTIL_P_OF15_UP (OFPUTIL_P_OF15_OXM | OFPUTIL_P_OF16_UP)
|
#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM
|
||||||
#define OFPUTIL_P_OF16_UP OFPUTIL_P_OF16_OXM
|
|
||||||
|
|
||||||
/* All protocols. */
|
/* All protocols. */
|
||||||
#define OFPUTIL_P_ANY ((1 << 10) - 1)
|
#define OFPUTIL_P_ANY ((1 << 10) - 1)
|
||||||
|
@ -3720,9 +3720,7 @@ r r c c c.
|
|||||||
label at any given time. To match on the second label, one must first
|
label at any given time. To match on the second label, one must first
|
||||||
``pop'' the outer label and advance to another OpenFlow table, where the
|
``pop'' the outer label and advance to another OpenFlow table, where the
|
||||||
inner label may be matched. To match on the third label, one must pop
|
inner label may be matched. To match on the third label, one must pop
|
||||||
the two outer labels, and so on. The Open Networking Foundation is
|
the two outer labels, and so on.
|
||||||
considering support for directly matching on multiple MPLS labels for
|
|
||||||
OpenFlow 1.6.<!-- XXX add EXT-* link -->
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>MPLS Inner Protocol</h2>
|
<h2>MPLS Inner Protocol</h2>
|
||||||
|
@ -8632,7 +8632,6 @@ get_ofpact_map(enum ofp_version version)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
default:
|
default:
|
||||||
return of12;
|
return of12;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,6 @@ ofputil_encode_bundle_ctrl_request(enum ofp_version ofp_version,
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
request = ofpraw_alloc(ofp_version == OFP13_VERSION
|
request = ofpraw_alloc(ofp_version == OFP13_VERSION
|
||||||
? OFPRAW_ONFT13_BUNDLE_CONTROL
|
? OFPRAW_ONFT13_BUNDLE_CONTROL
|
||||||
: OFPRAW_OFPT14_BUNDLE_CONTROL, ofp_version, 0);
|
: OFPRAW_OFPT14_BUNDLE_CONTROL, ofp_version, 0);
|
||||||
|
@ -56,8 +56,6 @@ ofperr_domain_from_version(enum ofp_version version)
|
|||||||
return &ofperr_of14;
|
return &ofperr_of14;
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
return &ofperr_of15;
|
return &ofperr_of15;
|
||||||
case OFP16_VERSION:
|
|
||||||
return &ofperr_of16;
|
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -384,8 +384,7 @@ ofputil_encode_flow_mod(const struct ofputil_flow_mod *fm,
|
|||||||
case OFPUTIL_P_OF12_OXM:
|
case OFPUTIL_P_OF12_OXM:
|
||||||
case OFPUTIL_P_OF13_OXM:
|
case OFPUTIL_P_OF13_OXM:
|
||||||
case OFPUTIL_P_OF14_OXM:
|
case OFPUTIL_P_OF14_OXM:
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM: {
|
||||||
case OFPUTIL_P_OF16_OXM: {
|
|
||||||
struct ofp11_flow_mod *ofm;
|
struct ofp11_flow_mod *ofm;
|
||||||
int tailroom;
|
int tailroom;
|
||||||
|
|
||||||
@ -746,8 +745,7 @@ ofputil_encode_flow_stats_request(const struct ofputil_flow_stats_request *fsr,
|
|||||||
case OFPUTIL_P_OF12_OXM:
|
case OFPUTIL_P_OF12_OXM:
|
||||||
case OFPUTIL_P_OF13_OXM:
|
case OFPUTIL_P_OF13_OXM:
|
||||||
case OFPUTIL_P_OF14_OXM:
|
case OFPUTIL_P_OF14_OXM:
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM: {
|
||||||
case OFPUTIL_P_OF16_OXM: {
|
|
||||||
struct ofp11_flow_stats_request *ofsr;
|
struct ofp11_flow_stats_request *ofsr;
|
||||||
|
|
||||||
if (protocol > OFPUTIL_P_OF14_OXM) {
|
if (protocol > OFPUTIL_P_OF14_OXM) {
|
||||||
|
@ -274,8 +274,7 @@ ofputil_encode_group_desc_request(enum ofp_version ofp_version,
|
|||||||
ofp_version, 0);
|
ofp_version, 0);
|
||||||
break;
|
break;
|
||||||
case OFP10_VERSION:
|
case OFP10_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp15_group_desc_request *req;
|
struct ofp15_group_desc_request *req;
|
||||||
request = ofpraw_alloc((ofp_version == OFP10_VERSION
|
request = ofpraw_alloc((ofp_version == OFP10_VERSION
|
||||||
? OFPRAW_NXST_GROUP_DESC_REQUEST
|
? OFPRAW_NXST_GROUP_DESC_REQUEST
|
||||||
@ -369,8 +368,7 @@ ofputil_append_group_stats(struct ovs_list *replies,
|
|||||||
case OFP10_VERSION:
|
case OFP10_VERSION:
|
||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp13_group_stats *gs13;
|
struct ofp13_group_stats *gs13;
|
||||||
|
|
||||||
length = sizeof *gs13 + bucket_counter_size;
|
length = sizeof *gs13 + bucket_counter_size;
|
||||||
@ -1306,7 +1304,6 @@ ofputil_append_group_desc_reply(const struct ofputil_group_desc *gds,
|
|||||||
|
|
||||||
case OFP10_VERSION:
|
case OFP10_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
ofputil_append_ofp15_group_desc_reply(gds, buckets, replies, version);
|
ofputil_append_ofp15_group_desc_reply(gds, buckets, replies, version);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1780,7 +1777,6 @@ ofputil_decode_group_desc_reply(struct ofputil_group_desc *gd,
|
|||||||
|
|
||||||
case OFP10_VERSION:
|
case OFP10_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return ofputil_decode_ofp15_group_desc_reply(gd, msg, version);
|
return ofputil_decode_ofp15_group_desc_reply(gd, msg, version);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -2117,7 +2113,6 @@ ofputil_encode_group_mod(enum ofp_version ofp_version,
|
|||||||
|
|
||||||
case OFP10_VERSION:
|
case OFP10_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return ofputil_encode_ofp15_group_mod(ofp_version, gm, group_existed);
|
return ofputil_encode_ofp15_group_mod(ofp_version, gm, group_existed);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -2304,7 +2299,6 @@ ofputil_decode_group_mod(const struct ofp_header *oh,
|
|||||||
|
|
||||||
case OFP10_VERSION:
|
case OFP10_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
err = ofputil_pull_ofp15_group_mod(&msg, ofp_version, gm);
|
err = ofputil_pull_ofp15_group_mod(&msg, ofp_version, gm);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -564,7 +564,6 @@ ofputil_match_typical_len(enum ofputil_protocol protocol)
|
|||||||
case OFPUTIL_P_OF13_OXM:
|
case OFPUTIL_P_OF13_OXM:
|
||||||
case OFPUTIL_P_OF14_OXM:
|
case OFPUTIL_P_OF14_OXM:
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
return NXM_TYPICAL_LEN;
|
return NXM_TYPICAL_LEN;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -607,7 +606,6 @@ ofputil_put_ofp11_match(struct ofpbuf *b, const struct match *match,
|
|||||||
case OFPUTIL_P_OF13_OXM:
|
case OFPUTIL_P_OF13_OXM:
|
||||||
case OFPUTIL_P_OF14_OXM:
|
case OFPUTIL_P_OF14_OXM:
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
return oxm_put_match(b, match,
|
return oxm_put_match(b, match,
|
||||||
ofputil_protocol_to_ofp_version(protocol));
|
ofputil_protocol_to_ofp_version(protocol));
|
||||||
}
|
}
|
||||||
|
@ -218,8 +218,7 @@ ofputil_encode_flow_removed(const struct ofputil_flow_removed *fr,
|
|||||||
ofputil_put_ofp11_match(msg, &fr->match, protocol);
|
ofputil_put_ofp11_match(msg, &fr->match, protocol);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM: {
|
||||||
case OFPUTIL_P_OF16_OXM: {
|
|
||||||
struct ofp15_flow_removed *ofr;
|
struct ofp15_flow_removed *ofr;
|
||||||
|
|
||||||
msg = ofpraw_alloc_xid(OFPRAW_OFPT15_FLOW_REMOVED,
|
msg = ofpraw_alloc_xid(OFPRAW_OFPT15_FLOW_REMOVED,
|
||||||
|
@ -327,7 +327,6 @@ ofp_is_stat_request(enum ofp_version version, uint8_t type)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return type == OFPT11_STATS_REQUEST;
|
return type == OFPT11_STATS_REQUEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,7 +344,6 @@ ofp_is_stat_reply(enum ofp_version version, uint8_t type)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return type == OFPT11_STATS_REPLY;
|
return type == OFPT11_STATS_REPLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,7 +385,6 @@ ofphdrs_len(const struct ofphdrs *hdrs)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
if (hdrs->type == OFPT11_STATS_REQUEST ||
|
if (hdrs->type == OFPT11_STATS_REQUEST ||
|
||||||
hdrs->type == OFPT11_STATS_REPLY) {
|
hdrs->type == OFPT11_STATS_REPLY) {
|
||||||
return (hdrs->stat == OFPST_VENDOR
|
return (hdrs->stat == OFPST_VENDOR
|
||||||
@ -807,7 +804,6 @@ ofpraw_stats_request_to_reply(enum ofpraw raw, uint8_t version)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
ovs_assert(hdrs.type == OFPT11_STATS_REQUEST);
|
ovs_assert(hdrs.type == OFPT11_STATS_REQUEST);
|
||||||
hdrs.type = OFPT11_STATS_REPLY;
|
hdrs.type = OFPT11_STATS_REPLY;
|
||||||
break;
|
break;
|
||||||
@ -1038,7 +1034,6 @@ ofpmp_flags__(const struct ofp_header *oh)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return &((struct ofp11_stats_msg *) oh)->flags;
|
return &((struct ofp11_stats_msg *) oh)->flags;
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
|
@ -667,7 +667,6 @@ ofputil_encode_packet_in_private(const struct ofputil_packet_in_private *pin,
|
|||||||
case OFPUTIL_P_OF13_OXM:
|
case OFPUTIL_P_OF13_OXM:
|
||||||
case OFPUTIL_P_OF14_OXM:
|
case OFPUTIL_P_OF14_OXM:
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
msg = ofputil_encode_ofp12_packet_in(&pin->base, version);
|
msg = ofputil_encode_ofp12_packet_in(&pin->base, version);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1193,8 +1192,7 @@ ofputil_encode_packet_out(const struct ofputil_packet_out *po,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp15_packet_out *opo;
|
struct ofp15_packet_out *opo;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
|
114
lib/ofp-port.c
114
lib/ofp-port.c
@ -165,7 +165,7 @@ ofputil_port_from_string(const char *s,
|
|||||||
"be translated to %u when talking to an OF1.1 or "
|
"be translated to %u when talking to an OF1.1 or "
|
||||||
"later controller", port32, port32 + OFPP11_OFFSET);
|
"later controller", port32, port32 + OFPP11_OFFSET);
|
||||||
} else if (port32 <= ofp_to_u16(OFPP_LAST_RESV)) {
|
} else if (port32 <= ofp_to_u16(OFPP_LAST_RESV)) {
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN];
|
char name[OFP_MAX_PORT_NAME_LEN];
|
||||||
|
|
||||||
ofputil_port_to_string(u16_to_ofp(port32), NULL,
|
ofputil_port_to_string(u16_to_ofp(port32), NULL,
|
||||||
name, sizeof name);
|
name, sizeof name);
|
||||||
@ -553,34 +553,6 @@ ofputil_pull_ofp14_port(struct ofputil_phy_port *pp, struct ofpbuf *msg)
|
|||||||
return ofputil_pull_ofp14_port_properties(ofpbuf_pull(msg, len), len, pp);
|
return ofputil_pull_ofp14_port_properties(ofpbuf_pull(msg, len), len, pp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum ofperr
|
|
||||||
ofputil_pull_ofp16_port(struct ofputil_phy_port *pp, struct ofpbuf *msg)
|
|
||||||
{
|
|
||||||
const struct ofp16_port *op = ofpbuf_try_pull(msg, sizeof *op);
|
|
||||||
if (!op) {
|
|
||||||
return OFPERR_OFPBRC_BAD_LEN;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t len = ntohs(op->length);
|
|
||||||
if (len < sizeof *op || len - sizeof *op > msg->size) {
|
|
||||||
return OFPERR_OFPBRC_BAD_LEN;
|
|
||||||
}
|
|
||||||
len -= sizeof *op;
|
|
||||||
|
|
||||||
enum ofperr error = ofputil_port_from_ofp11(op->port_no, &pp->port_no);
|
|
||||||
if (error) {
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
pp->hw_addr = op->hw_addr;
|
|
||||||
pp->hw_addr64 = op->hw_addr64;
|
|
||||||
ovs_strlcpy_arrays(pp->name, op->name);
|
|
||||||
|
|
||||||
pp->config = ntohl(op->config) & OFPPC11_ALL;
|
|
||||||
pp->state = ntohl(op->state) & OFPPS11_ALL;
|
|
||||||
|
|
||||||
return ofputil_pull_ofp14_port_properties(ofpbuf_pull(msg, len), len, pp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ofputil_encode_ofp10_phy_port(const struct ofputil_phy_port *pp,
|
ofputil_encode_ofp10_phy_port(const struct ofputil_phy_port *pp,
|
||||||
struct ofp10_phy_port *opp)
|
struct ofp10_phy_port *opp)
|
||||||
@ -655,27 +627,6 @@ ofputil_put_ofp14_port(const struct ofputil_phy_port *pp, struct ofpbuf *b)
|
|||||||
ofputil_encode_ofp14_port_ethernet_prop(pp, eth);
|
ofputil_encode_ofp14_port_ethernet_prop(pp, eth);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
ofputil_put_ofp16_port(const struct ofputil_phy_port *pp, struct ofpbuf *b)
|
|
||||||
{
|
|
||||||
struct ofp16_port *op;
|
|
||||||
struct ofp14_port_desc_prop_ethernet *eth;
|
|
||||||
|
|
||||||
ofpbuf_prealloc_tailroom(b, sizeof *op + sizeof *eth);
|
|
||||||
|
|
||||||
op = ofpbuf_put_zeros(b, sizeof *op);
|
|
||||||
op->port_no = ofputil_port_to_ofp11(pp->port_no);
|
|
||||||
op->length = htons(sizeof *op + sizeof *eth);
|
|
||||||
op->hw_addr = pp->hw_addr;
|
|
||||||
op->hw_addr64 = pp->hw_addr64;
|
|
||||||
ovs_strlcpy_arrays(op->name, pp->name);
|
|
||||||
op->config = htonl(pp->config & OFPPC11_ALL);
|
|
||||||
op->state = htonl(pp->state & OFPPS11_ALL);
|
|
||||||
|
|
||||||
eth = ofpprop_put_zeros(b, OFPPDPT14_ETHERNET, sizeof *eth);
|
|
||||||
ofputil_encode_ofp14_port_ethernet_prop(pp, eth);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ofputil_put_phy_port(enum ofp_version ofp_version,
|
ofputil_put_phy_port(enum ofp_version ofp_version,
|
||||||
const struct ofputil_phy_port *pp, struct ofpbuf *b)
|
const struct ofputil_phy_port *pp, struct ofpbuf *b)
|
||||||
@ -699,9 +650,6 @@ ofputil_put_phy_port(enum ofp_version ofp_version,
|
|||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
ofputil_put_ofp14_port(pp, b);
|
ofputil_put_ofp14_port(pp, b);
|
||||||
break;
|
break;
|
||||||
case OFP16_VERSION:
|
|
||||||
ofputil_put_ofp16_port(pp, b);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
@ -743,8 +691,7 @@ ofputil_encode_port_desc_stats_request(enum ofp_version ofp_version,
|
|||||||
request = ofpraw_alloc(OFPRAW_OFPST10_PORT_DESC_REQUEST,
|
request = ofpraw_alloc(OFPRAW_OFPST10_PORT_DESC_REQUEST,
|
||||||
ofp_version, 0);
|
ofp_version, 0);
|
||||||
break;
|
break;
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION:{
|
|
||||||
struct ofp15_port_desc_request *req;
|
struct ofp15_port_desc_request *req;
|
||||||
request = ofpraw_alloc(OFPRAW_OFPST15_PORT_DESC_REQUEST,
|
request = ofpraw_alloc(OFPRAW_OFPST15_PORT_DESC_REQUEST,
|
||||||
ofp_version, 0);
|
ofp_version, 0);
|
||||||
@ -795,8 +742,6 @@ ofputil_pull_phy_port(enum ofp_version ofp_version, struct ofpbuf *b,
|
|||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
return b->size ? ofputil_pull_ofp14_port(pp, b) : EOF;
|
return b->size ? ofputil_pull_ofp14_port(pp, b) : EOF;
|
||||||
case OFP16_VERSION:
|
|
||||||
return b->size ? ofputil_pull_ofp16_port(pp, b) : EOF;
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
}
|
}
|
||||||
@ -821,11 +766,6 @@ ofputil_phy_port_format(struct ds *s, const struct ofputil_phy_port *port)
|
|||||||
ds_put_format(s, "(%s): addr:"ETH_ADDR_FMT"\n",
|
ds_put_format(s, "(%s): addr:"ETH_ADDR_FMT"\n",
|
||||||
name, ETH_ADDR_ARGS(port->hw_addr));
|
name, ETH_ADDR_ARGS(port->hw_addr));
|
||||||
|
|
||||||
if (!eth_addr64_is_zero(port->hw_addr64)) {
|
|
||||||
ds_put_format(s, " addr64: "ETH_ADDR64_FMT"\n",
|
|
||||||
ETH_ADDR64_ARGS(port->hw_addr64));
|
|
||||||
}
|
|
||||||
|
|
||||||
ds_put_cstr(s, " config: ");
|
ds_put_cstr(s, " config: ");
|
||||||
ofputil_port_config_format(s, port->config);
|
ofputil_port_config_format(s, port->config);
|
||||||
|
|
||||||
@ -952,10 +892,6 @@ ofputil_encode_port_status(const struct ofputil_port_status *ps,
|
|||||||
raw = OFPRAW_OFPT14_PORT_STATUS;
|
raw = OFPRAW_OFPT14_PORT_STATUS;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OFP16_VERSION:
|
|
||||||
raw = OFPRAW_OFPT16_PORT_STATUS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
}
|
}
|
||||||
@ -1078,24 +1014,6 @@ ofputil_decode_ofp14_port_mod(struct ofpbuf *b, bool loose,
|
|||||||
return ofputil_decode_ofp14_port_mod_properties(b, loose, pm);
|
return ofputil_decode_ofp14_port_mod_properties(b, loose, pm);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum ofperr
|
|
||||||
ofputil_decode_ofp16_port_mod(struct ofpbuf *b, bool loose,
|
|
||||||
struct ofputil_port_mod *pm)
|
|
||||||
{
|
|
||||||
const struct ofp16_port_mod *opm = ofpbuf_pull(b, sizeof *opm);
|
|
||||||
enum ofperr error = ofputil_port_from_ofp11(opm->port_no, &pm->port_no);
|
|
||||||
if (error) {
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
pm->hw_addr = opm->hw_addr;
|
|
||||||
pm->hw_addr64 = opm->hw_addr64;
|
|
||||||
pm->config = ntohl(opm->config) & OFPPC11_ALL;
|
|
||||||
pm->mask = ntohl(opm->mask) & OFPPC11_ALL;
|
|
||||||
|
|
||||||
return ofputil_decode_ofp14_port_mod_properties(b, loose, pm);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Decodes the OpenFlow "port mod" message in '*oh' into an abstract form in
|
/* Decodes the OpenFlow "port mod" message in '*oh' into an abstract form in
|
||||||
* '*pm'. Returns 0 if successful, otherwise an OFPERR_* value. */
|
* '*pm'. Returns 0 if successful, otherwise an OFPERR_* value. */
|
||||||
enum ofperr
|
enum ofperr
|
||||||
@ -1114,8 +1032,6 @@ ofputil_decode_port_mod(const struct ofp_header *oh,
|
|||||||
error = ofputil_decode_ofp11_port_mod(b.data, pm);
|
error = ofputil_decode_ofp11_port_mod(b.data, pm);
|
||||||
} else if (raw == OFPRAW_OFPT14_PORT_MOD) {
|
} else if (raw == OFPRAW_OFPT14_PORT_MOD) {
|
||||||
error = ofputil_decode_ofp14_port_mod(&b, loose, pm);
|
error = ofputil_decode_ofp14_port_mod(&b, loose, pm);
|
||||||
} else if (raw == OFPRAW_OFPT16_PORT_MOD) {
|
|
||||||
error = ofputil_decode_ofp16_port_mod(&b, loose, pm);
|
|
||||||
} else {
|
} else {
|
||||||
error = OFPERR_OFPBRC_BAD_TYPE;
|
error = OFPERR_OFPBRC_BAD_TYPE;
|
||||||
}
|
}
|
||||||
@ -1179,23 +1095,6 @@ ofputil_encode_port_mod(const struct ofputil_port_mod *pm,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp16_port_mod *opm;
|
|
||||||
|
|
||||||
b = ofpraw_alloc(OFPRAW_OFPT16_PORT_MOD, ofp_version, 0);
|
|
||||||
opm = ofpbuf_put_zeros(b, sizeof *opm);
|
|
||||||
opm->port_no = ofputil_port_to_ofp11(pm->port_no);
|
|
||||||
opm->hw_addr = pm->hw_addr;
|
|
||||||
opm->hw_addr64 = pm->hw_addr64;
|
|
||||||
opm->config = htonl(pm->config & OFPPC11_ALL);
|
|
||||||
opm->mask = htonl(pm->mask & OFPPC11_ALL);
|
|
||||||
|
|
||||||
if (pm->advertise) {
|
|
||||||
ofpprop_put_be32(b, OFPPMPT14_ETHERNET,
|
|
||||||
netdev_port_features_to_ofp11(pm->advertise));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
}
|
}
|
||||||
@ -1211,10 +1110,6 @@ ofputil_port_mod_format(struct ds *s, const struct ofputil_port_mod *pm,
|
|||||||
ofputil_format_port(pm->port_no, port_map, s);
|
ofputil_format_port(pm->port_no, port_map, s);
|
||||||
ds_put_format(s, ": addr:"ETH_ADDR_FMT"\n",
|
ds_put_format(s, ": addr:"ETH_ADDR_FMT"\n",
|
||||||
ETH_ADDR_ARGS(pm->hw_addr));
|
ETH_ADDR_ARGS(pm->hw_addr));
|
||||||
if (!eth_addr64_is_zero(pm->hw_addr64)) {
|
|
||||||
ds_put_format(s, " addr64: "ETH_ADDR64_FMT"\n",
|
|
||||||
ETH_ADDR64_ARGS(pm->hw_addr64));
|
|
||||||
}
|
|
||||||
|
|
||||||
ds_put_cstr(s, " config: ");
|
ds_put_cstr(s, " config: ");
|
||||||
ofputil_port_config_format(s, pm->config);
|
ofputil_port_config_format(s, pm->config);
|
||||||
@ -1251,8 +1146,7 @@ ofputil_encode_dump_ports_request(enum ofp_version ofp_version,
|
|||||||
case OFP12_VERSION:
|
case OFP12_VERSION:
|
||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp11_port_stats_request *req;
|
struct ofp11_port_stats_request *req;
|
||||||
request = ofpraw_alloc(OFPRAW_OFPST11_PORT_REQUEST, ofp_version, 0);
|
request = ofpraw_alloc(OFPRAW_OFPST11_PORT_REQUEST, ofp_version, 0);
|
||||||
req = ofpbuf_put_zeros(request, sizeof *req);
|
req = ofpbuf_put_zeros(request, sizeof *req);
|
||||||
@ -1462,7 +1356,6 @@ ofputil_append_port_stat(struct ovs_list *replies,
|
|||||||
|
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
ofputil_append_ofp14_port_stats(ops, replies);
|
ofputil_append_ofp14_port_stats(ops, replies);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1941,7 +1834,6 @@ ofputil_decode_port_stats_request(const struct ofp_header *request,
|
|||||||
ofp_port_t *ofp10_port)
|
ofp_port_t *ofp10_port)
|
||||||
{
|
{
|
||||||
switch ((enum ofp_version)request->version) {
|
switch ((enum ofp_version)request->version) {
|
||||||
case OFP16_VERSION:
|
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
|
@ -807,9 +807,6 @@ ofp_print_version(const struct ofp_header *oh,
|
|||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
ds_put_cstr(string, " (OF1.5)");
|
ds_put_cstr(string, " (OF1.5)");
|
||||||
break;
|
break;
|
||||||
case OFP16_VERSION:
|
|
||||||
ds_put_cstr(string, " (OF1.6)");
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
ds_put_format(string, " (OF 0x%02"PRIx8")", oh->version);
|
ds_put_format(string, " (OF 0x%02"PRIx8")", oh->version);
|
||||||
break;
|
break;
|
||||||
|
@ -46,7 +46,6 @@ static const struct proto_abbrev proto_abbrevs[] = {
|
|||||||
#define N_PROTO_ABBREVS ARRAY_SIZE(proto_abbrevs)
|
#define N_PROTO_ABBREVS ARRAY_SIZE(proto_abbrevs)
|
||||||
|
|
||||||
enum ofputil_protocol ofputil_flow_dump_protocols[] = {
|
enum ofputil_protocol ofputil_flow_dump_protocols[] = {
|
||||||
OFPUTIL_P_OF16_OXM,
|
|
||||||
OFPUTIL_P_OF15_OXM,
|
OFPUTIL_P_OF15_OXM,
|
||||||
OFPUTIL_P_OF14_OXM,
|
OFPUTIL_P_OF14_OXM,
|
||||||
OFPUTIL_P_OF13_OXM,
|
OFPUTIL_P_OF13_OXM,
|
||||||
@ -77,8 +76,6 @@ ofputil_protocols_from_ofp_version(enum ofp_version version)
|
|||||||
return OFPUTIL_P_OF14_OXM;
|
return OFPUTIL_P_OF14_OXM;
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
return OFPUTIL_P_OF15_OXM;
|
return OFPUTIL_P_OF15_OXM;
|
||||||
case OFP16_VERSION:
|
|
||||||
return OFPUTIL_P_OF16_OXM;
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -116,8 +113,6 @@ ofputil_protocol_to_ofp_version(enum ofputil_protocol protocol)
|
|||||||
return OFP14_VERSION;
|
return OFP14_VERSION;
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
return OFP15_VERSION;
|
return OFP15_VERSION;
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
return OFP16_VERSION;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
@ -200,9 +195,6 @@ ofputil_protocol_set_tid(enum ofputil_protocol protocol, bool enable)
|
|||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
return OFPUTIL_P_OF15_OXM;
|
return OFPUTIL_P_OF15_OXM;
|
||||||
|
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
return OFPUTIL_P_OF16_OXM;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
}
|
}
|
||||||
@ -249,9 +241,6 @@ ofputil_protocol_set_base(enum ofputil_protocol cur,
|
|||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
return ofputil_protocol_set_tid(OFPUTIL_P_OF15_OXM, tid);
|
return ofputil_protocol_set_tid(OFPUTIL_P_OF15_OXM, tid);
|
||||||
|
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
return ofputil_protocol_set_tid(OFPUTIL_P_OF16_OXM, tid);
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
}
|
}
|
||||||
@ -294,9 +283,6 @@ ofputil_protocol_to_string(enum ofputil_protocol protocol)
|
|||||||
|
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
return "OXM-OpenFlow15";
|
return "OXM-OpenFlow15";
|
||||||
|
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
return "OXM-OpenFlow16";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check abbreviations. */
|
/* Check abbreviations. */
|
||||||
@ -438,9 +424,6 @@ ofputil_version_from_string(const char *s)
|
|||||||
if (!strcasecmp(s, "OpenFlow15")) {
|
if (!strcasecmp(s, "OpenFlow15")) {
|
||||||
return OFP15_VERSION;
|
return OFP15_VERSION;
|
||||||
}
|
}
|
||||||
if (!strcasecmp(s, "OpenFlow16")) {
|
|
||||||
return OFP16_VERSION;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -515,8 +498,6 @@ ofputil_version_to_string(enum ofp_version ofp_version)
|
|||||||
return "OpenFlow14";
|
return "OpenFlow14";
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
return "OpenFlow15";
|
return "OpenFlow15";
|
||||||
case OFP16_VERSION:
|
|
||||||
return "OpenFlow16";
|
|
||||||
default:
|
default:
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
}
|
}
|
||||||
@ -599,7 +580,6 @@ ofputil_encode_set_protocol(enum ofputil_protocol current,
|
|||||||
case OFPUTIL_P_OF13_OXM:
|
case OFPUTIL_P_OF13_OXM:
|
||||||
case OFPUTIL_P_OF14_OXM:
|
case OFPUTIL_P_OF14_OXM:
|
||||||
case OFPUTIL_P_OF15_OXM:
|
case OFPUTIL_P_OF15_OXM:
|
||||||
case OFPUTIL_P_OF16_OXM:
|
|
||||||
/* There is only one variant of each OpenFlow 1.1+ protocol, and we
|
/* There is only one variant of each OpenFlow 1.1+ protocol, and we
|
||||||
* verified above that we're not trying to change versions. */
|
* verified above that we're not trying to change versions. */
|
||||||
OVS_NOT_REACHED();
|
OVS_NOT_REACHED();
|
||||||
|
@ -542,7 +542,6 @@ ofputil_decode_queue_stats_request(const struct ofp_header *request,
|
|||||||
struct ofputil_queue_stats_request *oqsr)
|
struct ofputil_queue_stats_request *oqsr)
|
||||||
{
|
{
|
||||||
switch ((enum ofp_version)request->version) {
|
switch ((enum ofp_version)request->version) {
|
||||||
case OFP16_VERSION:
|
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
@ -584,8 +583,7 @@ ofputil_encode_queue_stats_request(
|
|||||||
case OFP12_VERSION:
|
case OFP12_VERSION:
|
||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp11_queue_stats_request *req;
|
struct ofp11_queue_stats_request *req;
|
||||||
request = ofpraw_alloc(OFPRAW_OFPST11_QUEUE_REQUEST, ofp_version, 0);
|
request = ofpraw_alloc(OFPRAW_OFPST11_QUEUE_REQUEST, ofp_version, 0);
|
||||||
req = ofpbuf_put_zeros(request, sizeof *req);
|
req = ofpbuf_put_zeros(request, sizeof *req);
|
||||||
@ -851,8 +849,7 @@ ofputil_append_queue_stat(struct ovs_list *replies,
|
|||||||
}
|
}
|
||||||
|
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp14_queue_stats *reply = ofpmp_append(replies, sizeof *reply);
|
struct ofp14_queue_stats *reply = ofpmp_append(replies, sizeof *reply);
|
||||||
ofputil_queue_stats_to_ofp14(oqs, reply);
|
ofputil_queue_stats_to_ofp14(oqs, reply);
|
||||||
break;
|
break;
|
||||||
|
@ -52,7 +52,6 @@ ofputil_capabilities_mask(enum ofp_version ofp_version)
|
|||||||
return OFPC_COMMON | OFPC12_PORT_BLOCKED;
|
return OFPC_COMMON | OFPC12_PORT_BLOCKED;
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return OFPC_COMMON | OFPC12_PORT_BLOCKED | OFPC14_BUNDLES
|
return OFPC_COMMON | OFPC12_PORT_BLOCKED | OFPC14_BUNDLES
|
||||||
| OFPC14_FLOW_MONITORING;
|
| OFPC14_FLOW_MONITORING;
|
||||||
default:
|
default:
|
||||||
@ -168,7 +167,6 @@ ofputil_encode_switch_features(const struct ofputil_switch_features *features,
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
raw = OFPRAW_OFPT13_FEATURES_REPLY;
|
raw = OFPRAW_OFPT13_FEATURES_REPLY;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -193,7 +191,6 @@ ofputil_encode_switch_features(const struct ofputil_switch_features *features,
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
osf->auxiliary_id = features->auxiliary_id;
|
osf->auxiliary_id = features->auxiliary_id;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case OFP11_VERSION:
|
case OFP11_VERSION:
|
||||||
|
@ -584,7 +584,6 @@ ofputil_encode_table_features_request(enum ofp_version ofp_version)
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
request = ofpraw_alloc(OFPRAW_OFPST13_TABLE_FEATURES_REQUEST,
|
request = ofpraw_alloc(OFPRAW_OFPST13_TABLE_FEATURES_REQUEST,
|
||||||
ofp_version, 0);
|
ofp_version, 0);
|
||||||
break;
|
break;
|
||||||
@ -999,7 +998,6 @@ ofputil_encode_table_config(enum ofputil_table_miss miss,
|
|||||||
|
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
/* OpenFlow 1.4 introduced OFPTC14_EVICTION and
|
/* OpenFlow 1.4 introduced OFPTC14_EVICTION and
|
||||||
* OFPTC14_VACANCY_EVENTS. */
|
* OFPTC14_VACANCY_EVENTS. */
|
||||||
if (eviction == OFPUTIL_TABLE_EVICTION_ON) {
|
if (eviction == OFPUTIL_TABLE_EVICTION_ON) {
|
||||||
@ -1136,8 +1134,7 @@ ofputil_encode_table_mod(const struct ofputil_table_mod *tm,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION: {
|
||||||
case OFP16_VERSION: {
|
|
||||||
struct ofp14_table_mod *otm;
|
struct ofp14_table_mod *otm;
|
||||||
|
|
||||||
b = ofpraw_alloc(OFPRAW_OFPT14_TABLE_MOD, ofp_version, 0);
|
b = ofpraw_alloc(OFPRAW_OFPT14_TABLE_MOD, ofp_version, 0);
|
||||||
@ -1954,7 +1951,6 @@ ofputil_append_table_stats_reply(struct ofpbuf *reply,
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
ofputil_put_ofp13_table_stats(stats, reply);
|
ofputil_put_ofp13_table_stats(stats, reply);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2125,7 +2121,6 @@ ofputil_decode_table_stats_reply(struct ofpbuf *msg,
|
|||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP16_VERSION:
|
|
||||||
return ofputil_decode_ofp13_table_stats(msg, stats, features);
|
return ofputil_decode_ofp13_table_stats(msg, stats, features);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -219,7 +219,6 @@ ofputil_encode_barrier_request(enum ofp_version ofp_version)
|
|||||||
enum ofpraw type;
|
enum ofpraw type;
|
||||||
|
|
||||||
switch (ofp_version) {
|
switch (ofp_version) {
|
||||||
case OFP16_VERSION:
|
|
||||||
case OFP15_VERSION:
|
case OFP15_VERSION:
|
||||||
case OFP14_VERSION:
|
case OFP14_VERSION:
|
||||||
case OFP13_VERSION:
|
case OFP13_VERSION:
|
||||||
|
@ -36,7 +36,3 @@ and development purposes. They are not enabled by default:
|
|||||||
.RS
|
.RS
|
||||||
.IP \(bu
|
.IP \(bu
|
||||||
\fBOpenFlow15\fR, for OpenFlow 1.5.
|
\fBOpenFlow15\fR, for OpenFlow 1.5.
|
||||||
.
|
|
||||||
.IP \(bu
|
|
||||||
\fBOpenFlow16\fR, for OpenFlow 1.6.
|
|
||||||
.RE
|
|
||||||
|
@ -5146,7 +5146,7 @@ xlate_output_trunc_action(struct xlate_ctx *ctx,
|
|||||||
{
|
{
|
||||||
bool support_trunc = ctx->xbridge->support.trunc;
|
bool support_trunc = ctx->xbridge->support.trunc;
|
||||||
struct ovs_action_trunc *trunc;
|
struct ovs_action_trunc *trunc;
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN];
|
char name[OFP_MAX_PORT_NAME_LEN];
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case OFPP_TABLE:
|
case OFPP_TABLE:
|
||||||
|
@ -5224,7 +5224,7 @@ ofproto_unixctl_fdb_show(struct unixctl_conn *conn, int argc OVS_UNUSED,
|
|||||||
ovs_rwlock_rdlock(&ofproto->ml->rwlock);
|
ovs_rwlock_rdlock(&ofproto->ml->rwlock);
|
||||||
LIST_FOR_EACH (e, lru_node, &ofproto->ml->lrus) {
|
LIST_FOR_EACH (e, lru_node, &ofproto->ml->lrus) {
|
||||||
struct ofbundle *bundle = mac_entry_get_port(ofproto->ml, e);
|
struct ofbundle *bundle = mac_entry_get_port(ofproto->ml, e);
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN];
|
char name[OFP_MAX_PORT_NAME_LEN];
|
||||||
|
|
||||||
ofputil_port_to_string(ofbundle_get_a_port(bundle)->up.ofp_port,
|
ofputil_port_to_string(ofbundle_get_a_port(bundle)->up.ofp_port,
|
||||||
NULL, name, sizeof name);
|
NULL, name, sizeof name);
|
||||||
@ -5328,7 +5328,7 @@ ofproto_unixctl_mcast_snooping_show(struct unixctl_conn *conn,
|
|||||||
ovs_rwlock_rdlock(&ofproto->ms->rwlock);
|
ovs_rwlock_rdlock(&ofproto->ms->rwlock);
|
||||||
LIST_FOR_EACH (grp, group_node, &ofproto->ms->group_lru) {
|
LIST_FOR_EACH (grp, group_node, &ofproto->ms->group_lru) {
|
||||||
LIST_FOR_EACH(b, bundle_node, &grp->bundle_lru) {
|
LIST_FOR_EACH(b, bundle_node, &grp->bundle_lru) {
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN];
|
char name[OFP_MAX_PORT_NAME_LEN];
|
||||||
|
|
||||||
bundle = b->port;
|
bundle = b->port;
|
||||||
ofputil_port_to_string(ofbundle_get_a_port(bundle)->up.ofp_port,
|
ofputil_port_to_string(ofbundle_get_a_port(bundle)->up.ofp_port,
|
||||||
@ -5342,7 +5342,7 @@ ofproto_unixctl_mcast_snooping_show(struct unixctl_conn *conn,
|
|||||||
|
|
||||||
/* ports connected to multicast routers */
|
/* ports connected to multicast routers */
|
||||||
LIST_FOR_EACH(mrouter, mrouter_node, &ofproto->ms->mrouter_lru) {
|
LIST_FOR_EACH(mrouter, mrouter_node, &ofproto->ms->mrouter_lru) {
|
||||||
char name[OFP10_MAX_PORT_NAME_LEN];
|
char name[OFP_MAX_PORT_NAME_LEN];
|
||||||
|
|
||||||
bundle = mrouter->port;
|
bundle = mrouter->port;
|
||||||
ofputil_port_to_string(ofbundle_get_a_port(bundle)->up.ofp_port,
|
ofputil_port_to_string(ofbundle_get_a_port(bundle)->up.ofp_port,
|
||||||
|
@ -2357,7 +2357,6 @@ ofport_open(struct ofproto *ofproto,
|
|||||||
}
|
}
|
||||||
pp->port_no = ofproto_port->ofp_port;
|
pp->port_no = ofproto_port->ofp_port;
|
||||||
netdev_get_etheraddr(netdev, &pp->hw_addr);
|
netdev_get_etheraddr(netdev, &pp->hw_addr);
|
||||||
pp->hw_addr64 = eth_addr64_zero;
|
|
||||||
ovs_strlcpy(pp->name, ofproto_port->name, sizeof pp->name);
|
ovs_strlcpy(pp->name, ofproto_port->name, sizeof pp->name);
|
||||||
netdev_get_flags(netdev, &flags);
|
netdev_get_flags(netdev, &flags);
|
||||||
pp->config = flags & NETDEV_UP ? 0 : OFPUTIL_PC_PORT_DOWN;
|
pp->config = flags & NETDEV_UP ? 0 : OFPUTIL_PC_PORT_DOWN;
|
||||||
@ -2378,7 +2377,6 @@ ofport_equal(const struct ofputil_phy_port *a,
|
|||||||
const struct ofputil_phy_port *b)
|
const struct ofputil_phy_port *b)
|
||||||
{
|
{
|
||||||
return (eth_addr_equals(a->hw_addr, b->hw_addr)
|
return (eth_addr_equals(a->hw_addr, b->hw_addr)
|
||||||
&& eth_addr64_equals(a->hw_addr64, b->hw_addr64)
|
|
||||||
&& a->state == b->state
|
&& a->state == b->state
|
||||||
&& a->config == b->config
|
&& a->config == b->config
|
||||||
&& a->curr == b->curr
|
&& a->curr == b->curr
|
||||||
@ -3689,8 +3687,7 @@ port_mod_start(struct ofconn *ofconn, struct ofputil_port_mod *pm,
|
|||||||
if (!*port) {
|
if (!*port) {
|
||||||
return OFPERR_OFPPMFC_BAD_PORT;
|
return OFPERR_OFPPMFC_BAD_PORT;
|
||||||
}
|
}
|
||||||
if (!eth_addr_equals((*port)->pp.hw_addr, pm->hw_addr) ||
|
if (!eth_addr_equals((*port)->pp.hw_addr, pm->hw_addr)) {
|
||||||
!eth_addr64_equals((*port)->pp.hw_addr64, pm->hw_addr64)) {
|
|
||||||
return OFPERR_OFPPMFC_BAD_HW_ADDR;
|
return OFPERR_OFPPMFC_BAD_HW_ADDR;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -102,7 +102,6 @@ OpenFlow 1.2: vendor 0, type 3, code 5
|
|||||||
OpenFlow 1.3: vendor 0, type 3, code 5
|
OpenFlow 1.3: vendor 0, type 3, code 5
|
||||||
OpenFlow 1.4: vendor 0, type 3, code 5
|
OpenFlow 1.4: vendor 0, type 3, code 5
|
||||||
OpenFlow 1.5: vendor 0, type 3, code 5
|
OpenFlow 1.5: vendor 0, type 3, code 5
|
||||||
OpenFlow 1.6: vendor 0, type 3, code 5
|
|
||||||
])
|
])
|
||||||
AT_CHECK([ovs-ofctl print-error OFPBIC_BAD_EXP_TYPE], [0], [dnl
|
AT_CHECK([ovs-ofctl print-error OFPBIC_BAD_EXP_TYPE], [0], [dnl
|
||||||
OpenFlow 1.1: vendor 0, type 3, code 5
|
OpenFlow 1.1: vendor 0, type 3, code 5
|
||||||
@ -110,7 +109,6 @@ OpenFlow 1.2: vendor 0, type 3, code 6
|
|||||||
OpenFlow 1.3: vendor 0, type 3, code 6
|
OpenFlow 1.3: vendor 0, type 3, code 6
|
||||||
OpenFlow 1.4: vendor 0, type 3, code 6
|
OpenFlow 1.4: vendor 0, type 3, code 6
|
||||||
OpenFlow 1.5: vendor 0, type 3, code 6
|
OpenFlow 1.5: vendor 0, type 3, code 6
|
||||||
OpenFlow 1.6: vendor 0, type 3, code 6
|
|
||||||
])
|
])
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
@ -711,32 +711,6 @@ OFPT_PORT_STATUS (OF1.4) (xid=0x0): MOD: 3(eth0): addr:50:54:00:00:00:01
|
|||||||
])
|
])
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
AT_SETUP([OFPT_PORT_STATUS - OF1.6])
|
|
||||||
AT_KEYWORDS([ofp-print])
|
|
||||||
AT_CHECK([ovs-ofctl ofp-print "\
|
|
||||||
07 0c 00 90 00 00 00 00 02 00 00 00 00 00 00 00 \
|
|
||||||
\
|
|
||||||
00 00 00 03 00 80 00 03 50 54 00 00 00 01 00 00 \
|
|
||||||
50 54 00 ff fe 00 00 01 \
|
|
||||||
65 74 68 30 00 00 00 00 00 00 00 00 00 00 00 00 \
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \
|
|
||||||
00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 \
|
|
||||||
00 00 20 08 00 00 28 0f 00 00 28 0f 00 00 00 00 \
|
|
||||||
00 01 86 a0 00 01 86 a0 \
|
|
||||||
"], [0], [dnl
|
|
||||||
OFPT_PORT_STATUS (OF1.6) (xid=0x0): MOD: 3(eth0): addr:50:54:00:00:00:01
|
|
||||||
addr64: 50:54:00:ff:fe:00:00:01
|
|
||||||
config: 0
|
|
||||||
state: 0
|
|
||||||
current: 100MB-FD AUTO_NEG
|
|
||||||
advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD COPPER AUTO_NEG
|
|
||||||
supported: 10MB-HD 10MB-FD 100MB-HD 100MB-FD COPPER AUTO_NEG
|
|
||||||
speed: 100 Mbps now, 100 Mbps max
|
|
||||||
])
|
|
||||||
AT_CLEANUP
|
|
||||||
|
|
||||||
AT_SETUP([OFPT_PACKET_OUT - OF1.0])
|
AT_SETUP([OFPT_PACKET_OUT - OF1.0])
|
||||||
AT_KEYWORDS([ofp-print])
|
AT_KEYWORDS([ofp-print])
|
||||||
AT_CHECK([ovs-ofctl ofp-print "\
|
AT_CHECK([ovs-ofctl ofp-print "\
|
||||||
@ -1234,21 +1208,6 @@ OFPT_PORT_MOD (OF1.4) (xid=0x3): port: 3: addr:50:54:00:00:00:01
|
|||||||
])
|
])
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
AT_SETUP([OFPT_PORT_MOD - OF1.6])
|
|
||||||
AT_KEYWORDS([ofp-print])
|
|
||||||
AT_CHECK([ovs-ofctl ofp-print "\
|
|
||||||
07 10 00 30 00 00 00 03 00 00 00 03 00 03 00 00 \
|
|
||||||
50 54 00 00 00 01 00 00 50 54 00 ff fe 00 00 01 \
|
|
||||||
00 00 00 01 00 00 00 01 00 00 00 08 00 00 00 01
|
|
||||||
" 3], [0], [dnl
|
|
||||||
OFPT_PORT_MOD (OF1.6) (xid=0x3): port: 3: addr:50:54:00:00:00:01
|
|
||||||
addr64: 50:54:00:ff:fe:00:00:01
|
|
||||||
config: PORT_DOWN
|
|
||||||
mask: PORT_DOWN
|
|
||||||
advertise: 10MB-HD
|
|
||||||
])
|
|
||||||
AT_CLEANUP
|
|
||||||
|
|
||||||
AT_SETUP([OFPT_TABLE_MOD - OF1.1])
|
AT_SETUP([OFPT_TABLE_MOD - OF1.1])
|
||||||
AT_KEYWORDS([ofp-print])
|
AT_KEYWORDS([ofp-print])
|
||||||
AT_CHECK([ovs-ofctl ofp-print "\
|
AT_CHECK([ovs-ofctl ofp-print "\
|
||||||
|
@ -434,8 +434,7 @@ add_of_br () {
|
|||||||
other-config:datapath-id=$dpid \
|
other-config:datapath-id=$dpid \
|
||||||
other-config:hwaddr=$mac \
|
other-config:hwaddr=$mac \
|
||||||
protocols="[[OpenFlow10,OpenFlow11,OpenFlow12,\
|
protocols="[[OpenFlow10,OpenFlow11,OpenFlow12,\
|
||||||
OpenFlow13,OpenFlow14,OpenFlow15,\
|
OpenFlow13,OpenFlow14,OpenFlow15]]" \
|
||||||
OpenFlow16]]" \
|
|
||||||
-- "$@"
|
-- "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
155
tests/ofproto.at
155
tests/ofproto.at
@ -181,40 +181,6 @@ OFPST_PORT_DESC reply (OF1.5):
|
|||||||
OVS_VSWITCHD_STOP
|
OVS_VSWITCHD_STOP
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
AT_SETUP([ofproto - port-desc stats (OpenFlow 1.6)])
|
|
||||||
OVS_VSWITCHD_START
|
|
||||||
add_of_ports br0 1 2 3
|
|
||||||
AT_CHECK([ovs-ofctl -F OXM-OpenFlow16 -O OpenFlow16 -vwarn dump-ports-desc br0], [0], [stdout])
|
|
||||||
AT_CHECK([strip_xids < stdout | sed 's/00:0./00:0x/'], [0], [dnl
|
|
||||||
OFPST_PORT_DESC reply (OF1.6):
|
|
||||||
1(p1): addr:aa:55:aa:55:00:0x
|
|
||||||
config: 0
|
|
||||||
state: LIVE
|
|
||||||
speed: 0 Mbps now, 0 Mbps max
|
|
||||||
2(p2): addr:aa:55:aa:55:00:0x
|
|
||||||
config: 0
|
|
||||||
state: LIVE
|
|
||||||
speed: 0 Mbps now, 0 Mbps max
|
|
||||||
3(p3): addr:aa:55:aa:55:00:0x
|
|
||||||
config: 0
|
|
||||||
state: LIVE
|
|
||||||
speed: 0 Mbps now, 0 Mbps max
|
|
||||||
LOCAL(br0): addr:aa:55:aa:55:00:0x
|
|
||||||
config: 0
|
|
||||||
state: LIVE
|
|
||||||
speed: 0 Mbps now, 0 Mbps max
|
|
||||||
])
|
|
||||||
AT_CHECK([ovs-ofctl -F OXM-OpenFlow16 -O OpenFlow16 -vwarn dump-ports-desc br0 2], [0], [stdout])
|
|
||||||
AT_CHECK([strip_xids < stdout | sed 's/00:0./00:0x/'], [0], [dnl
|
|
||||||
OFPST_PORT_DESC reply (OF1.6):
|
|
||||||
2(p2): addr:aa:55:aa:55:00:0x
|
|
||||||
config: 0
|
|
||||||
state: LIVE
|
|
||||||
speed: 0 Mbps now, 0 Mbps max
|
|
||||||
])
|
|
||||||
OVS_VSWITCHD_STOP
|
|
||||||
AT_CLEANUP
|
|
||||||
|
|
||||||
dnl CHECK_QUEUE_STATS(label, option, format)
|
dnl CHECK_QUEUE_STATS(label, option, format)
|
||||||
m4_define([CHECK_QUEUE_STATS], [
|
m4_define([CHECK_QUEUE_STATS], [
|
||||||
AT_SETUP([ofproto - queue stats - (OpenFlow $1)])
|
AT_SETUP([ofproto - queue stats - (OpenFlow $1)])
|
||||||
@ -747,7 +713,7 @@ OFPT_GROUP_MOD (OF1.5):
|
|||||||
])
|
])
|
||||||
# Negative test.
|
# Negative test.
|
||||||
AT_CHECK([ovs-ofctl -O OpenFlow11 -vwarn remove-buckets br0 group_id=1234,command_bucket_id=last], [1], [],
|
AT_CHECK([ovs-ofctl -O OpenFlow11 -vwarn remove-buckets br0 group_id=1234,command_bucket_id=last], [1], [],
|
||||||
[ovs-ofctl: none of the usable flow formats (OpenFlow10,NXM,OXM-OpenFlow15,OXM-OpenFlow16) is among the allowed flow formats (OpenFlow11)
|
[ovs-ofctl: none of the usable flow formats (OpenFlow10,NXM,OXM-OpenFlow15) is among the allowed flow formats (OpenFlow11)
|
||||||
])
|
])
|
||||||
OVS_VSWITCHD_STOP
|
OVS_VSWITCHD_STOP
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@ -1054,7 +1020,7 @@ Error OFPBFC_MSG_FAILED for: OFPT_BUNDLE_CONTROL (OF1.5):
|
|||||||
])
|
])
|
||||||
# Negative test.
|
# Negative test.
|
||||||
AT_CHECK([ovs-ofctl --bundle -O OpenFlow11 -vwarn remove-buckets br0 group_id=1234,command_bucket_id=last], [1], [],
|
AT_CHECK([ovs-ofctl --bundle -O OpenFlow11 -vwarn remove-buckets br0 group_id=1234,command_bucket_id=last], [1], [],
|
||||||
[ovs-ofctl: none of the usable flow formats (OXM-OpenFlow15,OXM-OpenFlow16) is among the allowed flow formats (OXM-OpenFlow14)
|
[ovs-ofctl: none of the usable flow formats (OXM-OpenFlow15) is among the allowed flow formats (OXM-OpenFlow14)
|
||||||
])
|
])
|
||||||
OVS_VSWITCHD_STOP
|
OVS_VSWITCHD_STOP
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@ -1374,39 +1340,6 @@ done
|
|||||||
OVS_VSWITCHD_STOP
|
OVS_VSWITCHD_STOP
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
AT_SETUP([ofproto - mod-port (OpenFlow 1.6)])
|
|
||||||
OVS_VSWITCHD_START
|
|
||||||
for command_config_state in \
|
|
||||||
'up 0 LIVE' \
|
|
||||||
'no-receive NO_RECV LIVE' \
|
|
||||||
'no-forward NO_RECV,NO_FWD LIVE' \
|
|
||||||
'no-packet-in NO_RECV,NO_FWD,NO_PACKET_IN LIVE' \
|
|
||||||
'forward NO_RECV,NO_PACKET_IN LIVE' \
|
|
||||||
'packet-in NO_RECV LIVE' \
|
|
||||||
'up NO_RECV LIVE' \
|
|
||||||
'receive 0 LIVE' \
|
|
||||||
'down PORT_DOWN LINK_DOWN'
|
|
||||||
do
|
|
||||||
printf '\n--- %s --- \n\n' "$command_config_state"
|
|
||||||
set $command_config_state
|
|
||||||
command=$[1] config=`echo $[2] | sed 's/,/ /g'` state=$[3]
|
|
||||||
AT_CHECK([ovs-ofctl -O OpenFlow16 -vwarn mod-port br0 br0 $command])
|
|
||||||
AT_CHECK([ovs-ofctl -O OpenFlow16 -vwarn show br0], [0], [stdout])
|
|
||||||
AT_CHECK_UNQUOTED([strip_xids < stdout], [0], [dnl
|
|
||||||
OFPT_FEATURES_REPLY (OF1.6): dpid:fedcba9876543210
|
|
||||||
n_tables:254, n_buffers:0
|
|
||||||
capabilities: FLOW_STATS TABLE_STATS PORT_STATS GROUP_STATS QUEUE_STATS BUNDLES
|
|
||||||
OFPST_PORT_DESC reply (OF1.6):
|
|
||||||
LOCAL(br0): addr:aa:55:aa:55:00:00
|
|
||||||
config: $config
|
|
||||||
state: $state
|
|
||||||
speed: 0 Mbps now, 0 Mbps max
|
|
||||||
OFPT_GET_CONFIG_REPLY (OF1.6): frags=normal miss_send_len=0
|
|
||||||
])
|
|
||||||
done
|
|
||||||
OVS_VSWITCHD_STOP
|
|
||||||
AT_CLEANUP
|
|
||||||
|
|
||||||
AT_SETUP([ofproto - basic flow_mod commands (NXM)])
|
AT_SETUP([ofproto - basic flow_mod commands (NXM)])
|
||||||
OVS_VSWITCHD_START
|
OVS_VSWITCHD_START
|
||||||
AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [NXST_FLOW reply:
|
AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [NXST_FLOW reply:
|
||||||
@ -5564,19 +5497,19 @@ dnl Check logs for OpenFlow trace
|
|||||||
# Prevent race.
|
# Prevent race.
|
||||||
OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): NXST_FLOW reply" | wc -l` -ge 3])
|
OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): NXST_FLOW reply" | wc -l` -ge 3])
|
||||||
AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
|
AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: OFPT_FLOW_MOD: DEL actions=drop
|
vconn|DBG|unix: received: OFPT_FLOW_MOD: DEL actions=drop
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
||||||
version bitmap: 0x05
|
version bitmap: 0x05
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
|
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
|
||||||
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
@ -5614,11 +5547,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
@ -5626,11 +5559,11 @@ vconn|DBG|unix: received: NXST_FLOW request:
|
|||||||
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
||||||
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=output:5
|
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=output:5
|
||||||
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:6
|
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:6
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
||||||
version bitmap: 0x05
|
version bitmap: 0x05
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
|
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
|
||||||
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
@ -5647,11 +5580,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
@ -5659,11 +5592,11 @@ vconn|DBG|unix: received: NXST_FLOW request:
|
|||||||
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
||||||
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=drop
|
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=drop
|
||||||
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:7
|
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:7
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
||||||
version bitmap: 0x05
|
version bitmap: 0x05
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
|
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
|
||||||
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
@ -5683,11 +5616,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
@ -6246,19 +6179,19 @@ dnl Check logs for OpenFlow trace
|
|||||||
# Prevent race.
|
# Prevent race.
|
||||||
OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): NXST_FLOW reply" | wc -l` -ge 3])
|
OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): NXST_FLOW reply" | wc -l` -ge 3])
|
||||||
AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
|
AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: OFPT_FLOW_MOD: DEL actions=drop
|
vconn|DBG|unix: received: OFPT_FLOW_MOD: DEL actions=drop
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.3):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.3):
|
||||||
version bitmap: 0x04
|
version bitmap: 0x04
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x07 and earlier, peer supports version 0x04)
|
vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x06 and earlier, peer supports version 0x04)
|
||||||
vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
@ -6296,11 +6229,11 @@ vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
@ -6308,11 +6241,11 @@ vconn|DBG|unix: received: NXST_FLOW request:
|
|||||||
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
||||||
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=output:5
|
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=output:5
|
||||||
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:6
|
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:6
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.3):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.3):
|
||||||
version bitmap: 0x04
|
version bitmap: 0x04
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x07 and earlier, peer supports version 0x04)
|
vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x06 and earlier, peer supports version 0x04)
|
||||||
vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
@ -6329,11 +6262,11 @@ vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
@ -6341,11 +6274,11 @@ vconn|DBG|unix: received: NXST_FLOW request:
|
|||||||
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
vconn|DBG|unix: sent (Success): NXST_FLOW reply:
|
||||||
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=drop
|
idle_timeout=50, in_port=2,dl_src=00:66:77:88:99:aa actions=drop
|
||||||
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:7
|
idle_timeout=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:7
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.3):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.3):
|
||||||
version bitmap: 0x04
|
version bitmap: 0x04
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x07 and earlier, peer supports version 0x04)
|
vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x06 and earlier, peer supports version 0x04)
|
||||||
vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
@ -6365,11 +6298,11 @@ vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO:
|
vconn|DBG|unix: received: OFPT_HELLO:
|
||||||
version bitmap: 0x01
|
version bitmap: 0x01
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01)
|
vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01)
|
||||||
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm
|
||||||
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
vconn|DBG|unix: received: OFPT_BARRIER_REQUEST:
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY:
|
||||||
|
@ -3080,11 +3080,11 @@ dnl Check logs for OpenFlow trace
|
|||||||
OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): OFPST_FLOW reply" | wc -l` -ge 2])
|
OVS_WAIT_UNTIL([vconn_sub < ovs-vswitchd.log | test `grep -- "|vconn|DBG|unix: sent (Success): OFPST_FLOW reply" | wc -l` -ge 2])
|
||||||
# AT_CHECK([sed -n "s/^.*\(|vconn|DBG|.*xid=.*:\).*$/\1/p" ovs-vswitchd.log], [0], [dnl
|
# AT_CHECK([sed -n "s/^.*\(|vconn|DBG|.*xid=.*:\).*$/\1/p" ovs-vswitchd.log], [0], [dnl
|
||||||
AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
|
AT_CHECK([print_vconn_debug | vconn_sub | ofctl_strip], [0], [dnl
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
||||||
version bitmap: 0x05
|
version bitmap: 0x05
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
|
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
|
||||||
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
bundle_id=0 type=OPEN_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
@ -3119,11 +3119,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
||||||
version bitmap: 0x05
|
version bitmap: 0x05
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
|
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
|
||||||
vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
|
vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
|
||||||
vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
|
||||||
table=1, importance=1, dl_vlan=1 actions=drop
|
table=1, importance=1, dl_vlan=1 actions=drop
|
||||||
@ -3168,11 +3168,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4):
|
|||||||
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered
|
||||||
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4):
|
||||||
bundle_id=0 type=COMMIT_REPLY flags=0
|
bundle_id=0 type=COMMIT_REPLY flags=0
|
||||||
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6):
|
vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5):
|
||||||
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
|
||||||
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
vconn|DBG|unix: received: OFPT_HELLO (OF1.4):
|
||||||
version bitmap: 0x05
|
version bitmap: 0x05
|
||||||
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05)
|
vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05)
|
||||||
vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
|
vconn|DBG|unix: received: OFPST_FLOW request (OF1.4):
|
||||||
vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
|
vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4):
|
||||||
table=1, importance=11, dl_vlan=1 actions=drop
|
table=1, importance=11, dl_vlan=1 actions=drop
|
||||||
|
@ -1288,8 +1288,8 @@ vSwitch 2.10 added support for table names. Earlier versions always
|
|||||||
behaved as if \fB\-\-no\-names\fR were specified.
|
behaved as if \fB\-\-no\-names\fR were specified.
|
||||||
.IP
|
.IP
|
||||||
Open vSwitch does not place its own limit on the length of port names,
|
Open vSwitch does not place its own limit on the length of port names,
|
||||||
but OpenFlow 1.0 to 1.5 limit port names to 15 bytes and OpenFlow 1.6
|
but OpenFlow limits port names to 15 bytes.
|
||||||
limits them to 63 bytes. Because \fRovs\-ofctl\fR uses OpenFlow to
|
Because \fRovs\-ofctl\fR uses OpenFlow to
|
||||||
retrieve the mapping between port names and numbers, names longer than
|
retrieve the mapping between port names and numbers, names longer than
|
||||||
this limit will be truncated for both display and acceptance.
|
this limit will be truncated for both display and acceptance.
|
||||||
Truncation can also cause long names that are different to appear to
|
Truncation can also cause long names that are different to appear to
|
||||||
@ -1365,7 +1365,6 @@ format.
|
|||||||
.IQ "\fBOXM-OpenFlow13\fR"
|
.IQ "\fBOXM-OpenFlow13\fR"
|
||||||
.IQ "\fBOXM-OpenFlow14\fR"
|
.IQ "\fBOXM-OpenFlow14\fR"
|
||||||
.IQ "\fBOXM-OpenFlow15\fR"
|
.IQ "\fBOXM-OpenFlow15\fR"
|
||||||
.IQ "\fBOXM-OpenFlow16\fR"
|
|
||||||
These are the standard OXM (OpenFlow Extensible Match) flow format in
|
These are the standard OXM (OpenFlow Extensible Match) flow format in
|
||||||
OpenFlow 1.2 and later.
|
OpenFlow 1.2 and later.
|
||||||
.RE
|
.RE
|
||||||
|
@ -2489,7 +2489,6 @@ ofctl_mod_port(struct ovs_cmdl_context *ctx)
|
|||||||
|
|
||||||
pm.port_no = pp.port_no;
|
pm.port_no = pp.port_no;
|
||||||
pm.hw_addr = pp.hw_addr;
|
pm.hw_addr = pp.hw_addr;
|
||||||
pm.hw_addr64 = pp.hw_addr64;
|
|
||||||
pm.config = 0;
|
pm.config = 0;
|
||||||
pm.mask = 0;
|
pm.mask = 0;
|
||||||
pm.advertise = 0;
|
pm.advertise = 0;
|
||||||
@ -2695,8 +2694,7 @@ ofctl_mod_table(struct ovs_cmdl_context *ctx)
|
|||||||
* necessary to restore the current configuration of table-config
|
* necessary to restore the current configuration of table-config
|
||||||
* parameters using OFPMP14_TABLE_DESC request. */
|
* parameters using OFPMP14_TABLE_DESC request. */
|
||||||
if (allowed_versions & ((1u << OFP14_VERSION) |
|
if (allowed_versions & ((1u << OFP14_VERSION) |
|
||||||
(1u << OFP15_VERSION) |
|
(1u << OFP15_VERSION))) {
|
||||||
(1u << OFP16_VERSION))) {
|
|
||||||
struct ofputil_table_desc td;
|
struct ofputil_table_desc td;
|
||||||
|
|
||||||
if (tm.table_id == OFPTT_ALL) {
|
if (tm.table_id == OFPTT_ALL) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{"name": "Open_vSwitch",
|
{"name": "Open_vSwitch",
|
||||||
"version": "7.16.1",
|
"version": "8.0.0",
|
||||||
"cksum": "1452282319 23860",
|
"cksum": "1406362528 23817",
|
||||||
"tables": {
|
"tables": {
|
||||||
"Open_vSwitch": {
|
"Open_vSwitch": {
|
||||||
"columns": {
|
"columns": {
|
||||||
@ -104,8 +104,7 @@
|
|||||||
"OpenFlow12",
|
"OpenFlow12",
|
||||||
"OpenFlow13",
|
"OpenFlow13",
|
||||||
"OpenFlow14",
|
"OpenFlow14",
|
||||||
"OpenFlow15",
|
"OpenFlow15"]]},
|
||||||
"OpenFlow16"]]},
|
|
||||||
"min": 0, "max": "unlimited"}},
|
"min": 0, "max": "unlimited"}},
|
||||||
"fail_mode": {
|
"fail_mode": {
|
||||||
"type": {"key": {"type": "string",
|
"type": {"key": {"type": "string",
|
||||||
|
@ -1252,9 +1252,8 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
OpenFlow 1.5 and 1.6 are not enabled by default because their
|
OpenFlow 1.5 is not enabled by default because its
|
||||||
implementations are missing features. In addition, the OpenFlow 1.6
|
implementations is missing features.
|
||||||
specification is still under development and thus subject to change.
|
|
||||||
</p>
|
</p>
|
||||||
</column>
|
</column>
|
||||||
</group>
|
</group>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user