[ovs-dev] [PATCH 03/48] ofp-util: Add OFPUTIL_P_OF12 and NXFF_OPENFLOW12
Simon Horman
horms at verge.net.au
Mon Jun 25 06:44:06 UTC 2012
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 <horms at 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
More information about the dev
mailing list