From 44d3732d5e172a8528ae2f36c232dfa5a1c18b74 Mon Sep 17 00:00:00 2001 From: Simon Horman Date: Sun, 22 Jul 2012 21:14:41 -0700 Subject: [PATCH] ofp-util: Add OFPUTIL_P_OF12 and NXFF_OPENFLOW12 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 Signed-off-by: Ben Pfaff --- include/openflow/nicira-ext.h | 3 ++- lib/ofp-util.c | 27 +++++++++++++++++++++++++-- lib/ofp-util.h | 3 +++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h index 1104dbf8..630511b0 100644 --- a/include/openflow/nicira-ext.h +++ b/include/openflow/nicira-ext.h @@ -1779,7 +1779,8 @@ 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_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 faa0687c..8f2217f5 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -1180,12 +1180,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) { @@ -1195,6 +1196,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(); @@ -1230,6 +1233,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(); } @@ -1261,6 +1267,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(); } @@ -1288,6 +1297,9 @@ ofputil_protocol_to_string(enum ofputil_protocol protocol) case OFPUTIL_P_OF10_TID: return "OpenFlow10+table_id"; + + case OFPUTIL_P_OF12: + return NULL; } /* Check abbreviations. */ @@ -1564,6 +1576,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(); @@ -1611,6 +1626,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; } @@ -1633,6 +1651,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(); } @@ -1822,6 +1842,7 @@ ofputil_encode_flow_mod(const struct ofputil_flow_mod *fm, nfm->match_len = htons(match_len); break; + case OFPUTIL_P_OF12: default: NOT_REACHED(); } @@ -1984,6 +2005,7 @@ ofputil_encode_flow_stats_request(const struct ofputil_flow_stats_request *fsr, break; } + case OFPUTIL_P_OF12: default: NOT_REACHED(); } @@ -2357,6 +2379,7 @@ ofputil_encode_flow_removed(const struct ofputil_flow_removed *fr, break; } + case OFPUTIL_P_OF12: default: NOT_REACHED(); } diff --git a/lib/ofp-util.h b/lib/ofp-util.h index f7d3307f..36ae5815 100644 --- a/lib/ofp-util.h +++ b/lib/ofp-util.h @@ -147,6 +147,9 @@ 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) -- 2.30.2