From: Ben Pfaff <blp@nicira.com>
Date: Wed, 15 Feb 2012 23:28:25 +0000 (-0800)
Subject: ofp-print: Print OpenFlow version number of message, unless it's 1.0.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3811e66bb6e6ea4d56271f6061495b89fdd547bd;p=openvswitch

ofp-print: Print OpenFlow version number of message, unless it's 1.0.

The version number is an important part of the OpenFlow message's
meaning, so include it.  Version 1.0 is grandfathered in so existing output
parsers don't have to change.

Reviewed-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
---

diff --git a/lib/ofp-print.c b/lib/ofp-print.c
index b1f46df8..c5312a38 100644
--- a/lib/ofp-print.c
+++ b/lib/ofp-print.c
@@ -1424,8 +1424,18 @@ ofp_to_string__(const struct ofp_header *oh,
     enum ofputil_msg_code code;
     const void *msg = oh;
 
-    ds_put_format(string, "%s (xid=0x%"PRIx32"):",
-                  ofputil_msg_type_name(type), ntohl(oh->xid));
+    ds_put_cstr(string, ofputil_msg_type_name(type));
+    switch (oh->version) {
+    case OFP10_VERSION:
+        break;
+    case OFP11_VERSION:
+        ds_put_cstr(string, " (OF1.1)");
+        break;
+    default:
+        ds_put_format(string, " (OF 0x%02"PRIx8")", oh->version);
+        break;
+    }
+    ds_put_format(string, " (xid=0x%"PRIx32"):", ntohl(oh->xid));
 
     code = ofputil_msg_type_code(type);
     switch (code) {
diff --git a/tests/ofp-print.at b/tests/ofp-print.at
index 6d17d01c..46b16175 100644
--- a/tests/ofp-print.at
+++ b/tests/ofp-print.at
@@ -68,7 +68,7 @@ AT_CLEANUP
 AT_SETUP([OFPT_ERROR with type OFPET_HELLO_FAILED - OF1.1])
 AT_KEYWORDS([ofp-print])
 AT_CHECK([ovs-ofctl ofp-print 020100170000000000000001657874726120646174610a], [0], [dnl
-OFPT_ERROR (xid=0x0): OFPHFC_EPERM
+OFPT_ERROR (OF1.1) (xid=0x0): OFPHFC_EPERM
 extra data\012
 ])
 AT_CLEANUP
@@ -93,7 +93,7 @@ AT_CLEANUP
 AT_SETUP([OFPT_ERROR with code NXBRC_NXM_BAD_PREREQ - OF1.1])
 AT_KEYWORDS([ofp-print])
 AT_CHECK([ovs-ofctl ofp-print '0201001c55555555 b0c20000 0000232000010104 0102000811111111'], [0], [dnl
-OFPT_ERROR (xid=0x55555555): NXBRC_NXM_BAD_PREREQ
+OFPT_ERROR (OF1.1) (xid=0x55555555): NXBRC_NXM_BAD_PREREQ
 OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
 ])
 AT_CLEANUP
@@ -111,7 +111,7 @@ AT_CLEANUP
 AT_SETUP([OFPT_ERROR with type OFPBIC_UNSUP_INST - OF1.1])
 AT_KEYWORDS([ofp-print])
 AT_CHECK([ovs-ofctl ofp-print 02010014000000000003000102bbccddeeff0011], [0], [dnl
-OFPT_ERROR (xid=0x0): OFPBIC_UNSUP_INST
+OFPT_ERROR (OF1.1) (xid=0x0): OFPBIC_UNSUP_INST
 (***truncated to 8 bytes from 52445***)
 00000000  02 bb cc dd ee ff 00 11-                        |........        |
 ])