[ovs-dev] [PATCH 27/34] ofp-util: Enable decoding of more Open Flow 1.1 and 1.2 messages

Simon Horman horms at verge.net.au
Tue Jun 19 07:49:05 UTC 2012


Enable the decoding of some Open Flow 1.2 and 1.1 messages which
have the same wire-format and thus decoders as Open Flow 1.0.

Signed-off-by: Simon Horman <horms at verge.net.au>

---

v3
* Enable decoding of stats messages

v3
* Initial post
---
 lib/ofp-util.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index 0c6cd9e..b5bd115 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -821,18 +821,38 @@ static const struct ofputil_msg_type ofputil_msg_types[] = {
         MIN_SIZE,                               \
         EXTRA_MULTIPLE                          \
     }
+    OFPT12(OFPT_HELLO,              OFPT_HELLO,
+           sizeof(struct ofp_hello), 1),
+    OFPT12(OFPT_ECHO_REQUEST,       OFPT_ECHO_REQUEST,
+           sizeof(struct ofp_header), 1),
+    OFPT12(OFPT_ECHO_REPLY,         OFPT_ECHO_REPLY,
+           sizeof(struct ofp_header), 1),
+    OFPT12(OFPT_FEATURES_REQUEST,   OFPT_FEATURES_REQUEST,
+           sizeof(struct ofp_header), 0),
     OFPT12(OFPT_FEATURES_REPLY, OFPT_FEATURES_REPLY,
            sizeof(struct ofp_switch_features), sizeof(struct ofp11_port)),
+    OFPT12(OFPT_GET_CONFIG_REQUEST, OFPT_GET_CONFIG_REQUEST,
+           sizeof(struct ofp_header), 0),
+    OFPT12(OFPT_GET_CONFIG_REPLY,   OFPT_GET_CONFIG_REPLY,
+           sizeof(struct ofp_switch_config), 0),
+    OFPT12(OFPT_SET_CONFIG,         OFPT_SET_CONFIG,
+           sizeof(struct ofp_switch_config), 0),
     OFPT12(OFPT_FLOW_REMOVED,       OFPT_FLOW_REMOVED,
            sizeof(struct ofp12_flow_removed), 0),
     OFPT12(OFPT_PACKET_IN,          OFPT_PACKET_IN,
            offsetof(struct ofp_packet_in, data), 1),
     OFPT12(OFPT_PACKET_OUT,     OFPT11_PACKET_OUT,
            sizeof(struct ofp11_packet_out), 1),
+    OFPT10(OFPT_SET_CONFIG,         OFPT_SET_CONFIG,
+           sizeof(struct ofp_switch_config), 0),
     OFPT12(OFPT11_FLOW_MOD,     OFPT11_FLOW_MOD,
            sizeof(struct ofp11_flow_mod), 1),
     OFPT12(OFPT_PORT_MOD,       OFPT11_PORT_MOD,
            sizeof(struct ofp11_port_mod), 0),
+    OFPT12(OFPT_BARRIER_REQUEST,    OFPT10_BARRIER_REQUEST,
+           sizeof(struct ofp_header), 0),
+    OFPT12(OFPT_BARRIER_REPLY,      OFPT10_BARRIER_REPLY,
+           sizeof(struct ofp_header), 0),
 #undef OPFT12
 
 #define OFPST10_REQUEST(STAT, RAW_STAT, MIN_SIZE, EXTRA_MULTIPLE)  \
@@ -856,6 +876,32 @@ static const struct ofputil_msg_type ofputil_msg_types[] = {
     OFPST10_REQUEST(OFPST_PORT_DESC, OFPST_PORT_DESC, 0, 0),
 #undef OFPST10_REQUEST
 
+#define OFPST11_REQUEST(STAT, RAW_STAT, MIN_SIZE, EXTRA_MULTIPLE)  \
+    {                                                           \
+        OFPUTIL_##STAT##_REQUEST,                               \
+        { OFP11_VERSION, OFPT11_STATS_REQUEST, RAW_STAT, 0, 0 },\
+        "OFPST_" #STAT " request",                              \
+        sizeof(struct ofp11_stats_msg) + (MIN_SIZE),            \
+        EXTRA_MULTIPLE                                          \
+    }
+    OFPST11_REQUEST(OFPST_DESC, OFPST_DESC, 0, 0),
+    OFPST11_REQUEST(OFPST_TABLE, OFPST_TABLE, 0, 0),
+    OFPST11_REQUEST(OFPST_PORT_DESC, OFPST_PORT_DESC, 0, 0),
+#undef OFPST11_REQUEST
+
+#define OFPST12_REQUEST(STAT, RAW_STAT, MIN_SIZE, EXTRA_MULTIPLE)  \
+    {                                                           \
+        OFPUTIL_##STAT##_REQUEST,                               \
+        { OFP12_VERSION, OFPT11_STATS_REQUEST, RAW_STAT, 0, 0 },\
+        "OFPST_" #STAT " request",                              \
+        sizeof(struct ofp11_stats_msg) + (MIN_SIZE),            \
+        EXTRA_MULTIPLE                                          \
+    }
+    OFPST12_REQUEST(OFPST_DESC, OFPST_DESC, 0, 0),
+    OFPST12_REQUEST(OFPST_TABLE, OFPST_TABLE, 0, 0),
+    OFPST12_REQUEST(OFPST_PORT_DESC, OFPST_PORT_DESC, 0, 0),
+#undef OFPST12_REQUEST
+
 #define OFPST10_REPLY(STAT, RAW_STAT, MIN_SIZE, EXTRA_MULTIPLE)  \
     {                                                       \
         OFPUTIL_##STAT##_REPLY,                             \
@@ -879,6 +925,30 @@ static const struct ofputil_msg_type ofputil_msg_types[] = {
                   0, sizeof(struct ofp10_phy_port)),
 #undef OFPST10_REPLY
 
+#define OFPST11_REPLY(STAT, RAW_STAT, MIN_SIZE, EXTRA_MULTIPLE)  \
+    {                                                       \
+        OFPUTIL_##STAT##_REPLY,                             \
+        { OFP11_VERSION, OFPT11_STATS_REPLY, RAW_STAT, 0, 0 },  \
+        "OFPST_" #STAT " reply",                            \
+        sizeof(struct ofp11_stats_msg) + (MIN_SIZE),        \
+        EXTRA_MULTIPLE                                      \
+    }
+    OFPST11_REPLY(OFPST_DESC, OFPST_DESC,
+                  sizeof(struct ofp_desc_stats), 0),
+#undef OFPST11_REPLY
+
+#define OFPST12_REPLY(STAT, RAW_STAT, MIN_SIZE, EXTRA_MULTIPLE)  \
+    {                                                       \
+        OFPUTIL_##STAT##_REPLY,                             \
+        { OFP12_VERSION, OFPT11_STATS_REPLY, RAW_STAT, 0, 0 },  \
+        "OFPST_" #STAT " reply",                            \
+        sizeof(struct ofp11_stats_msg) + (MIN_SIZE),        \
+        EXTRA_MULTIPLE                                      \
+    }
+    OFPST12_REPLY(OFPST_DESC, OFPST_DESC,
+                  sizeof(struct ofp_desc_stats), 0),
+#undef OFPST12_REPLY
+
 #define NXT(SUBTYPE, MIN_SIZE, EXTRA_MULTIPLE)                          \
     {                                                                   \
         OFPUTIL_NXT_##SUBTYPE,                                          \
-- 
1.7.10.2.484.gcd07cc5




More information about the dev mailing list