ofp-print: Improve formatting for bad OpenFlow messages.
authorBen Pfaff <blp@nicira.com>
Tue, 14 Dec 2010 00:27:20 +0000 (16:27 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 15 Dec 2010 17:48:18 +0000 (09:48 -0800)
lib/ofp-print.c

index e565569789742de5862445010966c9ad725417d5..63edb79c41c520de5618ef2dbfb9fdf9717ef44c 100644 (file)
@@ -1036,7 +1036,7 @@ ofp_print_error(struct ds *string, int error)
     if (string->length) {
         ds_put_char(string, ' ');
     }
-    ds_put_format(string, " ***decode error type:%d(%s) code:%d(%s)***",
+    ds_put_format(string, " ***decode error type:%d(%s) code:%d(%s)***\n",
                   type, lookup_error_type(type),
                   code, lookup_error_code(type, code));
 }
@@ -1720,14 +1720,17 @@ ofp_to_string(const void *oh_, size_t len, int verbosity)
     struct ds string = DS_EMPTY_INITIALIZER;
     const struct ofp_header *oh = oh_;
 
-    if (len < sizeof(struct ofp_header)) {
-        ds_put_cstr(&string, "OpenFlow packet too short:\n");
+    if (!len) {
+        ds_put_cstr(&string, "OpenFlow message is empty\n");
+    } else if (len < sizeof(struct ofp_header)) {
+        ds_put_format(&string, "OpenFlow packet too short (only %zu bytes):\n",
+                      len);
     } else if (oh->version != OFP_VERSION) {
         ds_put_format(&string, "Bad OpenFlow version %"PRIu8":\n",
                       oh->version);
     } else if (ntohs(oh->length) > len) {
         ds_put_format(&string,
-                      "(***truncated to %zu bytes from %"PRIu16"***)",
+                      "(***truncated to %zu bytes from %"PRIu16"***)\n",
                       len, ntohs(oh->length));
     } else if (ntohs(oh->length) < len) {
         ds_put_format(&string,