Add OFPUTIL_P_OF12 and NXFF_OPENFLOW12 for Open Flow 1.2 OFPUTIL_P_OF12_TID and in turn OFPUTIL_P_OF12_ANY is not provided as OFPUTIL_P_OF12 supports the use of table ids in modify flow messages.
Signed-off-by: Simon Horman <ho...@verge.net.au> --- v4 * No change v3 * Don't add NXPIF_OPENFLOW12, it doesn't seem to be needed v2 * No change --- include/openflow/nicira-ext.h | 9 +++++---- lib/ofp-util.c | 24 ++++++++++++++++++++++-- lib/ofp-util.h | 7 +++++-- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h index e71932d..4ffcb86 100644 --- a/include/openflow/nicira-ext.h +++ b/include/openflow/nicira-ext.h @@ -210,8 +210,8 @@ struct nx_flow_mod_table_id { OFP_ASSERT(sizeof(struct nx_flow_mod_table_id) == 24); enum nx_packet_in_format { - NXPIF_OPENFLOW10 = 0, /* Standard OpenFlow 1.0 compatible. */ - NXPIF_NXM = 1 /* Nicira Extended. */ + NXPIF_OPENFLOW10 = 0, /* OpenFlow 1.0 format. */ + NXPIF_NXM = 1, /* Nicira Extended. */ }; /* NXT_SET_PACKET_IN_FORMAT request. */ @@ -1776,8 +1776,9 @@ OFP_ASSERT(sizeof(struct nx_action_output_reg) == 24); /* ## --------------------- ## */ enum nx_flow_format { - NXFF_OPENFLOW10 = 0, /* Standard OpenFlow 1.0 compatible. */ - NXFF_NXM = 2 /* Nicira extended match. */ + NXFF_OPENFLOW10 = 0, /* OpenFlow 1.0 format. */ + NXFF_NXM = 2, /* Nicira extended match. */ + NXFF_OPENFLOW12 = 3 /* OpenFlow 1.2 format. */ }; /* NXT_SET_FLOW_FORMAT request. */ diff --git a/lib/ofp-util.c b/lib/ofp-util.c index ee0cb34..cfaad7b 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -1037,12 +1037,13 @@ ofputil_protocol_from_ofp_version(int version) { switch (version) { case OFP10_VERSION: return OFPUTIL_P_OF10; + case OFP12_VERSION: return OFPUTIL_P_OF12; default: return 0; } } -/* Returns the OpenFlow protocol version number (e.g. OFP10_VERSION or - * OFP11_VERSION) that corresponds to 'protocol'. */ +/* Returns the OpenFlow protocol version number (e.g. OFP10_VERSION, + * OFP11_VERSION or OFP12_VERSION) that corresponds to 'protocol'. */ uint8_t ofputil_protocol_to_ofp_version(enum ofputil_protocol protocol) { @@ -1052,6 +1053,8 @@ ofputil_protocol_to_ofp_version(enum ofputil_protocol protocol) case OFPUTIL_P_NXM: case OFPUTIL_P_NXM_TID: return OFP10_VERSION; + case OFPUTIL_P_OF12: + return OFP12_VERSION; } NOT_REACHED(); @@ -1087,6 +1090,9 @@ ofputil_protocol_set_tid(enum ofputil_protocol protocol, bool enable) case OFPUTIL_P_NXM_TID: return enable ? OFPUTIL_P_NXM_TID : OFPUTIL_P_NXM; + case OFPUTIL_P_OF12: + return OFPUTIL_P_OF12; + default: NOT_REACHED(); } @@ -1118,6 +1124,9 @@ ofputil_protocol_set_base(enum ofputil_protocol cur, case OFPUTIL_P_NXM_TID: return ofputil_protocol_set_tid(OFPUTIL_P_NXM, tid); + case OFPUTIL_P_OF12: + return ofputil_protocol_set_tid(OFPUTIL_P_OF12, tid); + default: NOT_REACHED(); } @@ -1145,6 +1154,9 @@ ofputil_protocol_to_string(enum ofputil_protocol protocol) case OFPUTIL_P_OF10_TID: return "OpenFlow10+table_id"; + + case OFPUTIL_P_OF12: + return "OpenFlow12"; } /* Check abbreviations. */ @@ -1415,6 +1427,9 @@ ofputil_encode_set_protocol(enum ofputil_protocol current, case OFPUTIL_P_OF10: return ofputil_encode_nx_set_flow_format(NXFF_OPENFLOW10); + case OFPUTIL_P_OF12: + return ofputil_encode_nx_set_flow_format(NXFF_OPENFLOW12); + case OFPUTIL_P_OF10_TID: case OFPUTIL_P_NXM_TID: NOT_REACHED(); @@ -1462,6 +1477,9 @@ ofputil_nx_flow_format_to_protocol(enum nx_flow_format flow_format) case NXFF_NXM: return OFPUTIL_P_NXM; + case NXFF_OPENFLOW12: + return OFPUTIL_P_OF12; + default: return 0; } @@ -1484,6 +1502,8 @@ ofputil_nx_flow_format_to_string(enum nx_flow_format flow_format) return "openflow10"; case NXFF_NXM: return "nxm"; + case NXFF_OPENFLOW12: + return "openflow12"; default: NOT_REACHED(); } diff --git a/lib/ofp-util.h b/lib/ofp-util.h index 277f058..8f38c54 100644 --- a/lib/ofp-util.h +++ b/lib/ofp-util.h @@ -147,11 +147,14 @@ enum ofputil_protocol { OFPUTIL_P_NXM_TID = 1 << 3, /* NXM + flow_mod_table_id extension. */ #define OFPUTIL_P_NXM_ANY (OFPUTIL_P_NXM | OFPUTIL_P_NXM_TID) + /* OpenFlow 1.2 */ + OFPUTIL_P_OF12 = 1 << 4, /* OpenFlow 1.2 flow format. */ + /* All protocols. */ -#define OFPUTIL_P_ANY (OFPUTIL_P_OF10_ANY | OFPUTIL_P_NXM_ANY) +#define OFPUTIL_P_ANY (OFPUTIL_P_OF10_ANY | OFPUTIL_P_NXM_ANY | OFPUTIL_P_OF12) /* Protocols in which a specific table may be specified in flow_mods. */ -#define OFPUTIL_P_TID (OFPUTIL_P_OF10_TID | OFPUTIL_P_NXM_TID) +#define OFPUTIL_P_TID (OFPUTIL_P_OF10_TID | OFPUTIL_P_NXM_TID | OFPUTIL_P_OF12) }; /* Protocols to use for flow dumps, from most to least preferred. */ -- 1.7.10.2.484.gcd07cc5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev