Signed-off-by: Ben Pfaff <b...@ovn.org> --- FAQ.md | 33 +++++++++------ build-aux/extract-ofp-errors | 3 +- build-aux/extract-ofp-msgs | 3 +- include/openflow/openflow-common.h | 5 ++- lib/ofp-actions.c | 1 + lib/ofp-errors.c | 4 +- lib/ofp-msgs.c | 5 +++ lib/ofp-print.c | 4 ++ lib/ofp-util.c | 82 +++++++++++++++++++++++++++++++------ lib/ofp-util.h | 9 ++-- tests/ofp-errors.at | 2 + tests/ofproto-macros.at | 3 +- tests/ofproto.at | 84 +++++++++++++++++++------------------- tests/ovs-ofctl.at | 18 ++++---- vswitchd/vswitch.ovsschema | 7 ++-- vswitchd/vswitch.xml | 5 ++- 16 files changed, 177 insertions(+), 91 deletions(-)
diff --git a/FAQ.md b/FAQ.md index 04ffc84..0fee992 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1511,25 +1511,32 @@ Using OpenFlow (Manually or Via Controller) A: The following table lists the versions of OpenFlow supported by each version of Open vSwitch: - Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 - ###============ ===== ===== ===== ===== ===== ===== - 1.9 and earlier yes --- --- --- --- --- - 1.10 yes --- [*] [*] --- --- - 1.11 yes --- [*] [*] --- --- - 2.0 yes [*] [*] [*] --- --- - 2.1 yes [*] [*] [*] --- --- - 2.2 yes [*] [*] [*] [%] [*] - 2.3 yes yes yes yes [*] [*] + Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 OF1.6 + ###============ ===== ===== ===== ===== ===== ===== ===== + 1.9 and earlier yes --- --- --- --- --- --- + 1.10 yes --- [*] [*] --- --- --- + 1.11 yes --- [*] [*] --- --- --- + 2.0 yes [*] [*] [*] --- --- --- + 2.1 yes [*] [*] [*] --- --- --- + 2.2 yes [*] [*] [*] [%] [*] --- + 2.3 yes yes yes yes [*] [*] --- + 2.4 yes yes yes yes [*] [*] --- + 2.5 yes yes yes yes [*] [*] [*] [*] Supported, with one or more missing features. [%] Experimental, unsafe implementation. Open vSwitch 2.3 enables OpenFlow 1.0, 1.1, 1.2, and 1.3 by default in ovs-vswitchd. In Open vSwitch 1.10 through 2.2, OpenFlow 1.1, - 1.2, and 1.3 must be enabled manually in ovs-vswitchd. OpenFlow - 1.4 and 1.5 are also supported, with missing features, in Open - vSwitch 2.3 and later, but not enabled by default. In any case, - the user may override the default: + 1.2, and 1.3 must be enabled manually in ovs-vswitchd. + + Some versions of OpenFlow are supported with missing features and + therefore not enabled by default: OpenFlow 1.4 and 1.5, in Open + vSwitch 2.3 and later, as well as OpenFlow 1.6 in Open vSwitch 2.5 + and later. Also, the OpenFlow 1.6 specification is still under + development and thus subject to change. + + In any case, the user may override the default: - To enable OpenFlow 1.0, 1.1, 1.2, and 1.3 on bridge br0: diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors index 7349644..9642593 100755 --- a/build-aux/extract-ofp-errors +++ b/build-aux/extract-ofp-errors @@ -12,7 +12,8 @@ version_map = {"1.0": 0x01, "1.2": 0x03, "1.3": 0x04, "1.4": 0x05, - "1.5": 0x06} + "1.5": 0x06, + "1.6": 0x07} version_reverse_map = dict((v, k) for (k, v) in version_map.iteritems()) token = None diff --git a/build-aux/extract-ofp-msgs b/build-aux/extract-ofp-msgs index d3c4d4c..1813638 100755 --- a/build-aux/extract-ofp-msgs +++ b/build-aux/extract-ofp-msgs @@ -12,7 +12,8 @@ VERSION = {"1.0": 0x01, "1.2": 0x03, "1.3": 0x04, "1.4": 0x05, - "1.5": 0x06} + "1.5": 0x06, + "1.6": 0x07} NX_VENDOR_ID = 0x00002320 ONF_VENDOR_ID = 0x4f4e4600 diff --git a/include/openflow/openflow-common.h b/include/openflow/openflow-common.h index 97beec4..089ff18 100644 --- a/include/openflow/openflow-common.h +++ b/include/openflow/openflow-common.h @@ -32,7 +32,7 @@ */ /* - * Copyright (c) 2008-2014 Nicira, Inc. + * Copyright (c) 2008-2015 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -77,7 +77,8 @@ enum ofp_version { OFP12_VERSION = 0x03, OFP13_VERSION = 0x04, OFP14_VERSION = 0x05, - OFP15_VERSION = 0x06 + OFP15_VERSION = 0x06, + OFP16_VERSION = 0x07 }; /* Vendor (aka experimenter) IDs. diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index aac4ff0..d1eb59e 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -7192,6 +7192,7 @@ get_ofpact_map(enum ofp_version version) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: default: return of12; } diff --git a/lib/ofp-errors.c b/lib/ofp-errors.c index ec04096..ce6f934 100644 --- a/lib/ofp-errors.c +++ b/lib/ofp-errors.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, 2014, 2016 Nicira, Inc. + * Copyright (c) 2012, 2013, 2014, 2015, 2016 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -54,6 +54,8 @@ ofperr_domain_from_version(enum ofp_version version) return &ofperr_of14; case OFP15_VERSION: return &ofperr_of15; + case OFP16_VERSION: + return &ofperr_of16; default: return NULL; } diff --git a/lib/ofp-msgs.c b/lib/ofp-msgs.c index 0cfea4f..de333a0 100644 --- a/lib/ofp-msgs.c +++ b/lib/ofp-msgs.c @@ -327,6 +327,7 @@ ofp_is_stat_request(enum ofp_version version, uint8_t type) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return type == OFPT11_STATS_REQUEST; } @@ -344,6 +345,7 @@ ofp_is_stat_reply(enum ofp_version version, uint8_t type) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return type == OFPT11_STATS_REPLY; } @@ -385,6 +387,7 @@ ofphdrs_len(const struct ofphdrs *hdrs) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: if (hdrs->type == OFPT11_STATS_REQUEST || hdrs->type == OFPT11_STATS_REPLY) { return (hdrs->stat == OFPST_VENDOR @@ -810,6 +813,7 @@ ofpraw_stats_request_to_reply(enum ofpraw raw, uint8_t version) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: ovs_assert(hdrs.type == OFPT11_STATS_REQUEST); hdrs.type = OFPT11_STATS_REPLY; break; @@ -1030,6 +1034,7 @@ ofpmp_flags__(const struct ofp_header *oh) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return &((struct ofp11_stats_msg *) oh)->flags; default: OVS_NOT_REACHED(); diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 69050cf..55ea01d 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -547,6 +547,7 @@ ofp_print_switch_features(struct ds *string, const struct ofp_header *oh) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return; /* no ports in ofp13_switch_features */ default: OVS_NOT_REACHED(); @@ -2342,6 +2343,9 @@ ofp_print_version(const struct ofp_header *oh, case OFP15_VERSION: ds_put_cstr(string, " (OF1.5)"); break; + case OFP16_VERSION: + ds_put_cstr(string, " (OF1.6)"); + break; default: ds_put_format(string, " (OF 0x%02"PRIx8")", oh->version); break; diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 53baaf8..1b5accd 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -575,6 +575,7 @@ ofputil_match_typical_len(enum ofputil_protocol protocol) case OFPUTIL_P_OF13_OXM: case OFPUTIL_P_OF14_OXM: case OFPUTIL_P_OF15_OXM: + case OFPUTIL_P_OF16_OXM: return NXM_TYPICAL_LEN; default: @@ -617,6 +618,7 @@ ofputil_put_ofp11_match(struct ofpbuf *b, const struct match *match, case OFPUTIL_P_OF13_OXM: case OFPUTIL_P_OF14_OXM: case OFPUTIL_P_OF15_OXM: + case OFPUTIL_P_OF16_OXM: return oxm_put_match(b, match, ofputil_protocol_to_ofp_version(protocol)); } @@ -664,6 +666,7 @@ static const struct proto_abbrev proto_abbrevs[] = { #define N_PROTO_ABBREVS ARRAY_SIZE(proto_abbrevs) enum ofputil_protocol ofputil_flow_dump_protocols[] = { + OFPUTIL_P_OF16_OXM, OFPUTIL_P_OF15_OXM, OFPUTIL_P_OF14_OXM, OFPUTIL_P_OF13_OXM, @@ -694,6 +697,8 @@ ofputil_protocols_from_ofp_version(enum ofp_version version) return OFPUTIL_P_OF14_OXM; case OFP15_VERSION: return OFPUTIL_P_OF15_OXM; + case OFP16_VERSION: + return OFPUTIL_P_OF16_OXM; default: return 0; } @@ -731,6 +736,8 @@ ofputil_protocol_to_ofp_version(enum ofputil_protocol protocol) return OFP14_VERSION; case OFPUTIL_P_OF15_OXM: return OFP15_VERSION; + case OFPUTIL_P_OF16_OXM: + return OFP16_VERSION; } OVS_NOT_REACHED(); @@ -813,6 +820,9 @@ ofputil_protocol_set_tid(enum ofputil_protocol protocol, bool enable) case OFPUTIL_P_OF15_OXM: return OFPUTIL_P_OF15_OXM; + case OFPUTIL_P_OF16_OXM: + return OFPUTIL_P_OF16_OXM; + default: OVS_NOT_REACHED(); } @@ -859,6 +869,9 @@ ofputil_protocol_set_base(enum ofputil_protocol cur, case OFPUTIL_P_OF15_OXM: 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: OVS_NOT_REACHED(); } @@ -901,6 +914,9 @@ ofputil_protocol_to_string(enum ofputil_protocol protocol) case OFPUTIL_P_OF15_OXM: return "OXM-OpenFlow15"; + + case OFPUTIL_P_OF16_OXM: + return "OXM-OpenFlow16"; } /* Check abbreviations. */ @@ -1042,6 +1058,9 @@ ofputil_version_from_string(const char *s) if (!strcasecmp(s, "OpenFlow15")) { return OFP15_VERSION; } + if (!strcasecmp(s, "OpenFlow16")) { + return OFP16_VERSION; + } return 0; } @@ -1116,6 +1135,8 @@ ofputil_version_to_string(enum ofp_version ofp_version) return "OpenFlow14"; case OFP15_VERSION: return "OpenFlow15"; + case OFP16_VERSION: + return "OpenFlow16"; default: OVS_NOT_REACHED(); } @@ -1357,6 +1378,7 @@ ofputil_encode_set_protocol(enum ofputil_protocol current, case OFPUTIL_P_OF13_OXM: case OFPUTIL_P_OF14_OXM: case OFPUTIL_P_OF15_OXM: + case OFPUTIL_P_OF16_OXM: /* There is only one variant of each OpenFlow 1.1+ protocol, and we * verified above that we're not trying to change versions. */ OVS_NOT_REACHED(); @@ -2132,7 +2154,8 @@ ofputil_encode_flow_mod(const struct ofputil_flow_mod *fm, case OFPUTIL_P_OF12_OXM: case OFPUTIL_P_OF13_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; int tailroom; @@ -2735,7 +2758,8 @@ ofputil_encode_flow_stats_request(const struct ofputil_flow_stats_request *fsr, case OFPUTIL_P_OF12_OXM: case OFPUTIL_P_OF13_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; raw = (fsr->aggregate @@ -3229,7 +3253,8 @@ ofputil_encode_flow_removed(const struct ofputil_flow_removed *fr, case OFPUTIL_P_OF12_OXM: case OFPUTIL_P_OF13_OXM: case OFPUTIL_P_OF14_OXM: - case OFPUTIL_P_OF15_OXM: { + case OFPUTIL_P_OF15_OXM: + case OFPUTIL_P_OF16_OXM: { struct ofp12_flow_removed *ofr; msg = ofpraw_alloc_xid(OFPRAW_OFPT11_FLOW_REMOVED, @@ -3890,6 +3915,7 @@ ofputil_encode_packet_in_private(const struct ofputil_packet_in_private *pin, case OFPUTIL_P_OF13_OXM: case OFPUTIL_P_OF14_OXM: case OFPUTIL_P_OF15_OXM: + case OFPUTIL_P_OF16_OXM: msg = ofputil_encode_ofp12_packet_in(&pin->public, version, buffer_id); break; @@ -4473,6 +4499,7 @@ ofputil_put_phy_port(enum ofp_version ofp_version, case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: ofputil_put_ofp14_port(pp, b); break; @@ -4516,7 +4543,8 @@ ofputil_encode_port_desc_stats_request(enum ofp_version ofp_version, request = ofpraw_alloc(OFPRAW_OFPST10_PORT_DESC_REQUEST, ofp_version, 0); break; - case OFP15_VERSION:{ + case OFP15_VERSION: + case OFP16_VERSION:{ struct ofp15_port_desc_request *req; request = ofpraw_alloc(OFPRAW_OFPST15_PORT_DESC_REQUEST, ofp_version, 0); @@ -4640,6 +4668,7 @@ ofputil_capabilities_mask(enum ofp_version ofp_version) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return OFPC_COMMON | OFPC12_PORT_BLOCKED; default: /* Caller needs to check osf->header.version itself */ @@ -4754,6 +4783,7 @@ ofputil_encode_switch_features(const struct ofputil_switch_features *features, case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: raw = OFPRAW_OFPT13_FEATURES_REPLY; break; default: @@ -4779,6 +4809,7 @@ ofputil_encode_switch_features(const struct ofputil_switch_features *features, case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: osf->auxiliary_id = features->auxiliary_id; /* fall through */ case OFP11_VERSION: @@ -4865,6 +4896,7 @@ ofputil_encode_port_status(const struct ofputil_port_status *ps, case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: raw = OFPRAW_OFPT14_PORT_STATUS; break; @@ -5011,7 +5043,8 @@ ofputil_encode_port_mod(const struct ofputil_port_mod *pm, break; } case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp14_port_mod *opm; b = ofpraw_alloc(OFPRAW_OFPT14_PORT_MOD, ofp_version, 0); @@ -5331,6 +5364,7 @@ ofputil_encode_table_features_request(enum ofp_version ofp_version) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: request = ofpraw_alloc(OFPRAW_OFPST13_TABLE_FEATURES_REQUEST, ofp_version, 0); break; @@ -5684,6 +5718,7 @@ ofputil_encode_table_config(enum ofputil_table_miss miss, case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: /* OpenFlow 1.4 introduced OFPTC14_EVICTION and * OFPTC14_VACANCY_EVENTS. */ if (eviction == OFPUTIL_TABLE_EVICTION_ON) { @@ -5820,7 +5855,8 @@ ofputil_encode_table_mod(const struct ofputil_table_mod *tm, break; } case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp14_table_mod *otm; b = ofpraw_alloc(OFPRAW_OFPT14_TABLE_MOD, ofp_version, 0); @@ -6351,6 +6387,7 @@ ofputil_append_table_stats_reply(struct ofpbuf *reply, case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: ofputil_put_ofp13_table_stats(stats, reply); break; @@ -6521,6 +6558,7 @@ ofputil_decode_table_stats_reply(struct ofpbuf *msg, case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return ofputil_decode_ofp13_table_stats(msg, stats, features); default: @@ -6825,7 +6863,8 @@ ofputil_encode_packet_out(const struct ofputil_packet_out *po, case OFP12_VERSION: case OFP13_VERSION: case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp11_packet_out *opo; size_t len; @@ -6881,6 +6920,7 @@ ofputil_encode_barrier_request(enum ofp_version ofp_version) enum ofpraw type; switch (ofp_version) { + case OFP16_VERSION: case OFP15_VERSION: case OFP14_VERSION: case OFP13_VERSION: @@ -7173,6 +7213,7 @@ ofputil_pull_phy_port(enum ofp_version ofp_version, struct ofpbuf *b, } case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: return b->size ? ofputil_pull_ofp14_port(pp, b) : EOF; default: OVS_NOT_REACHED(); @@ -7402,7 +7443,8 @@ ofputil_encode_dump_ports_request(enum ofp_version ofp_version, ofp_port_t port) case OFP12_VERSION: case OFP13_VERSION: case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp11_port_stats_request *req; request = ofpraw_alloc(OFPRAW_OFPST11_PORT_REQUEST, ofp_version, 0); req = ofpbuf_put_zeros(request, sizeof *req); @@ -7523,6 +7565,7 @@ ofputil_append_port_stat(struct ovs_list *replies, case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: ofputil_append_ofp14_port_stats(ops, replies); break; @@ -7764,6 +7807,7 @@ ofputil_decode_port_stats_request(const struct ofp_header *request, ofp_port_t *ofp10_port) { switch ((enum ofp_version)request->version) { + case OFP16_VERSION: case OFP15_VERSION: case OFP14_VERSION: case OFP13_VERSION: @@ -7916,7 +7960,8 @@ ofputil_encode_group_stats_request(enum ofp_version ofp_version, case OFP12_VERSION: case OFP13_VERSION: case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp11_group_stats_request *req; request = ofpraw_alloc(OFPRAW_OFPST11_GROUP_REQUEST, ofp_version, 0); req = ofpbuf_put_zeros(request, sizeof *req); @@ -7979,7 +8024,8 @@ ofputil_encode_group_desc_request(enum ofp_version ofp_version, request = ofpraw_alloc(OFPRAW_OFPST11_GROUP_DESC_REQUEST, ofp_version, 0); break; - case OFP15_VERSION:{ + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp15_group_desc_request *req; request = ofpraw_alloc(OFPRAW_OFPST15_GROUP_DESC_REQUEST, ofp_version, 0); @@ -8058,7 +8104,8 @@ ofputil_append_group_stats(struct ovs_list *replies, case OFP13_VERSION: case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp13_group_stats *gs13; length = sizeof *gs13 + bucket_counter_size; @@ -8089,6 +8136,7 @@ ofputil_encode_group_features_request(enum ofp_version ofp_version) case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: request = ofpraw_alloc(OFPRAW_OFPST12_GROUP_FEATURES_REQUEST, ofp_version, 0); break; @@ -8390,6 +8438,7 @@ ofputil_append_group_desc_reply(const struct ofputil_group_desc *gds, break; case OFP15_VERSION: + case OFP16_VERSION: ofputil_append_ofp15_group_desc_reply(gds, buckets, replies, version); break; @@ -8840,6 +8889,7 @@ ofputil_decode_group_desc_reply(struct ofputil_group_desc *gd, return ofputil_decode_ofp11_group_desc_reply(gd, msg, version); case OFP15_VERSION: + case OFP16_VERSION: return ofputil_decode_ofp15_group_desc_reply(gd, msg, version); case OFP10_VERSION: @@ -9015,6 +9065,7 @@ ofputil_encode_group_mod(enum ofp_version ofp_version, return ofputil_encode_ofp11_group_mod(ofp_version, gm); case OFP15_VERSION: + case OFP16_VERSION: return ofputil_encode_ofp15_group_mod(ofp_version, gm); default: @@ -9127,6 +9178,7 @@ ofputil_decode_group_mod(const struct ofp_header *oh, break; case OFP15_VERSION: + case OFP16_VERSION: err = ofputil_pull_ofp15_group_mod(&msg, ofp_version, gm); break; @@ -9205,6 +9257,7 @@ ofputil_decode_queue_stats_request(const struct ofp_header *request, struct ofputil_queue_stats_request *oqsr) { switch ((enum ofp_version)request->version) { + case OFP16_VERSION: case OFP15_VERSION: case OFP14_VERSION: case OFP13_VERSION: @@ -9245,7 +9298,8 @@ ofputil_encode_queue_stats_request(enum ofp_version ofp_version, case OFP12_VERSION: case OFP13_VERSION: case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp11_queue_stats_request *req; request = ofpraw_alloc(OFPRAW_OFPST11_QUEUE_REQUEST, ofp_version, 0); req = ofpbuf_put_zeros(request, sizeof *req); @@ -9489,7 +9543,8 @@ ofputil_append_queue_stat(struct ovs_list *replies, } case OFP14_VERSION: - case OFP15_VERSION: { + case OFP15_VERSION: + case OFP16_VERSION: { struct ofp14_queue_stats *reply = ofpmp_append(replies, sizeof *reply); ofputil_queue_stats_to_ofp14(oqs, reply); break; @@ -9533,6 +9588,7 @@ ofputil_encode_bundle_ctrl_request(enum ofp_version ofp_version, case OFP13_VERSION: case OFP14_VERSION: case OFP15_VERSION: + case OFP16_VERSION: request = ofpraw_alloc(ofp_version == OFP13_VERSION ? OFPRAW_ONFT13_BUNDLE_CONTROL : OFPRAW_OFPT14_BUNDLE_CONTROL, ofp_version, 0); diff --git a/lib/ofp-util.h b/lib/ofp-util.h index 379257c..e17771c 100644 --- a/lib/ofp-util.h +++ b/lib/ofp-util.h @@ -115,10 +115,12 @@ enum ofputil_protocol { OFPUTIL_P_OF13_OXM = 1 << 6, OFPUTIL_P_OF14_OXM = 1 << 7, OFPUTIL_P_OF15_OXM = 1 << 8, + OFPUTIL_P_OF16_OXM = 1 << 9, #define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | \ OFPUTIL_P_OF13_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 | \ OFPUTIL_P_ANY_OXM) @@ -130,10 +132,11 @@ enum ofputil_protocol { #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_OF14_UP (OFPUTIL_P_OF14_OXM | OFPUTIL_P_OF15_UP) -#define OFPUTIL_P_OF15_UP OFPUTIL_P_OF15_OXM +#define OFPUTIL_P_OF15_UP (OFPUTIL_P_OF15_OXM | OFPUTIL_P_OF16_UP) +#define OFPUTIL_P_OF16_UP OFPUTIL_P_OF16_OXM /* All protocols. */ -#define OFPUTIL_P_ANY ((1 << 9) - 1) +#define OFPUTIL_P_ANY ((1 << 10) - 1) /* Protocols in which a specific table may be specified in flow_mods. */ #define OFPUTIL_P_TID (OFPUTIL_P_OF10_STD_TID | \ diff --git a/tests/ofp-errors.at b/tests/ofp-errors.at index daf7ddd..caf4e4a 100644 --- a/tests/ofp-errors.at +++ b/tests/ofp-errors.at @@ -102,6 +102,7 @@ OpenFlow 1.2: 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.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 OpenFlow 1.1: vendor 0, type 3, code 5 @@ -109,6 +110,7 @@ OpenFlow 1.2: 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.5: vendor 0, type 3, code 6 +OpenFlow 1.6: vendor 0, type 3, code 6 ]) AT_CLEANUP diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at index 2c52eca..bd38ac6 100644 --- a/tests/ofproto-macros.at +++ b/tests/ofproto-macros.at @@ -339,7 +339,8 @@ add_of_br () { other-config:datapath-id=$dpid \ other-config:hwaddr=$mac \ protocols="[[OpenFlow10,OpenFlow11,OpenFlow12,\ - OpenFlow13,OpenFlow14,OpenFlow15]]" \ + OpenFlow13,OpenFlow14,OpenFlow15,\ + OpenFlow16]]" \ -- "$@" } diff --git a/tests/ofproto.at b/tests/ofproto.at index fbb6d71..c4260ab 100644 --- a/tests/ofproto.at +++ b/tests/ofproto.at @@ -4319,19 +4319,19 @@ dnl Check logs for OpenFlow trace # Prevent race. 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 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: OFPT_FLOW_MOD: DEL actions=drop vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.4): version bitmap: 0x05 -vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) +vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): @@ -4367,11 +4367,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: @@ -4379,11 +4379,11 @@ vconn|DBG|unix: received: NXST_FLOW request: 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=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:6 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.4): version bitmap: 0x05 -vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) +vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): @@ -4398,11 +4398,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: @@ -4410,11 +4410,11 @@ vconn|DBG|unix: received: NXST_FLOW request: 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=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:7 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.4): version bitmap: 0x05 -vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) +vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): @@ -4432,11 +4432,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: @@ -4804,19 +4804,19 @@ dnl Check logs for OpenFlow trace # Prevent race. 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 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: OFPT_FLOW_MOD: DEL actions=drop vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.3): version bitmap: 0x04 -vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x06 and earlier, peer supports version 0x04) +vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x07 and earlier, peer supports version 0x04) vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3): @@ -4852,11 +4852,11 @@ vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: @@ -4864,11 +4864,11 @@ vconn|DBG|unix: received: NXST_FLOW request: 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=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:6 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.3): version bitmap: 0x04 -vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x06 and earlier, peer supports version 0x04) +vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x07 and earlier, peer supports version 0x04) vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3): @@ -4883,11 +4883,11 @@ vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: @@ -4895,11 +4895,11 @@ vconn|DBG|unix: received: NXST_FLOW request: 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=60, in_port=2,dl_src=00:77:88:99:aa:bb actions=output:7 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.3): version bitmap: 0x04 -vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x06 and earlier, peer supports version 0x04) +vconn|DBG|unix: negotiated OpenFlow version 0x04 (we support version 0x07 and earlier, peer supports version 0x04) vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3): @@ -4917,11 +4917,11 @@ vconn|DBG|unix: received: ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): ONFT_BUNDLE_CONTROL (OF1.3): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO: version bitmap: 0x01 -vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x06 and earlier, peer supports version 0x01) +vconn|DBG|unix: negotiated OpenFlow version 0x01 (we support version 0x07 and earlier, peer supports version 0x01) vconn|DBG|unix: received: NXT_SET_FLOW_FORMAT: format=nxm vconn|DBG|unix: received: OFPT_BARRIER_REQUEST: vconn|DBG|unix: sent (Success): OFPT_BARRIER_REPLY: diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at index f26f622..8287cd2 100644 --- a/tests/ovs-ofctl.at +++ b/tests/ovs-ofctl.at @@ -2908,11 +2908,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]) # 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 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.4): version bitmap: 0x05 -vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) +vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=OPEN_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): @@ -2945,11 +2945,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.4): version bitmap: 0x05 -vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) +vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPST_FLOW request (OF1.4): vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4): table=1, importance=1, dl_vlan=1 actions=drop @@ -2992,11 +2992,11 @@ vconn|DBG|unix: received: OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REQUEST flags=atomic ordered vconn|DBG|unix: sent (Success): OFPT_BUNDLE_CONTROL (OF1.4): bundle_id=0 type=COMMIT_REPLY flags=0 -vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.5): - version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 +vconn|DBG|unix: sent (Success): OFPT_HELLO (OF1.6): + version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 vconn|DBG|unix: received: OFPT_HELLO (OF1.4): version bitmap: 0x05 -vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x06 and earlier, peer supports version 0x05) +vconn|DBG|unix: negotiated OpenFlow version 0x05 (we support version 0x07 and earlier, peer supports version 0x05) vconn|DBG|unix: received: OFPST_FLOW request (OF1.4): vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4): table=1, importance=11, dl_vlan=1 actions=drop diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema index 35f145f..e0937f4 100644 --- a/vswitchd/vswitch.ovsschema +++ b/vswitchd/vswitch.ovsschema @@ -1,6 +1,6 @@ {"name": "Open_vSwitch", - "version": "7.12.1", - "cksum": "2211824403 22535", + "version": "7.13.0", + "cksum": "2202834738 22577", "tables": { "Open_vSwitch": { "columns": { @@ -97,7 +97,8 @@ "OpenFlow12", "OpenFlow13", "OpenFlow14", - "OpenFlow15"]]}, + "OpenFlow15", + "OpenFlow16"]]}, "min": 0, "max": "unlimited"}}, "fail_mode": { "type": {"key": {"type": "string", diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml index 161e163..3c7227e 100644 --- a/vswitchd/vswitch.xml +++ b/vswitchd/vswitch.xml @@ -708,8 +708,9 @@ </p> <p> - OpenFlow 1.4 and 1.5 are not enabled by default because their - implementations are missing features. + OpenFlow 1.4, 1.5, and 1.6 are not enabled by default because their + implementations are missing features. In addition, the OpenFlow 1.6 + specification is still under development and thus subject to change. </p> </column> </group> -- 2.1.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev