]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-openflow-1.0.c
Handle very large -f files by rejecting them.
[tcpdump] / print-openflow-1.0.c
index a36c32f3b29a3457351461b2632ae881be6ba1d6..ce9584305f9dd0eecc263a55dbff3c4d293e8f24 100644 (file)
@@ -14,7 +14,7 @@
  * * ep -- the pointer to the end of the captured frame
  * They return either the pointer to the next not-yet-decoded part of the frame
  * or the value of ep, which means the current frame processing is over as it
- * has been fully decoded or is malformed or truncated. This way it is possible
+ * has been fully decoded or is invalid or truncated. This way it is possible
  * to chain and nest such functions uniformly to decode an OF1.0 message, which
  * consists of several layers of nested structures.
  *
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define NETDISSECT_REWORKED
+/* \summary: OpenFlow protocol version 1.0 printer */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#include <tcpdump-stdinc.h>
+#include <netdissect-stdinc.h>
 
-#include "interface.h"
+#include "netdissect.h"
 #include "extract.h"
 #include "addrtoname.h"
 #include "ether.h"
@@ -73,7 +74,6 @@
 #include "openflow.h"
 
 static const char tstr[] = " [|openflow]";
-static const char cstr[] = " (corrupt)";
 
 #define OFPT_HELLO                    0x00
 #define OFPT_ERROR                    0x01
@@ -760,7 +760,7 @@ of10_bsn_message_print(netdissect_options *ndo,
        uint32_t subtype;
 
        if (len < 4)
-               goto corrupt;
+               goto invalid;
        /* subtype */
        ND_TCHECK2(*cp, 4);
        subtype = EXTRACT_32BITS(cp);
@@ -781,7 +781,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len != 12)
-                       goto corrupt;
+                       goto invalid;
                /* index */
                ND_TCHECK2(*cp, 1);
                ND_PRINT((ndo, ", index %u", *cp));
@@ -805,7 +805,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len != 12)
-                       goto corrupt;
+                       goto invalid;
                /* index */
                ND_TCHECK2(*cp, 1);
                ND_PRINT((ndo, ", index %u", *cp));
@@ -832,7 +832,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len != 8)
-                       goto corrupt;
+                       goto invalid;
                /* report_mirror_ports */
                ND_TCHECK2(*cp, 1);
                ND_PRINT((ndo, ", report_mirror_ports %s", tok2str(bsn_onoff_str, "bogus (%u)", *cp)));
@@ -855,7 +855,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len != 4)
-                       goto corrupt;
+                       goto invalid;
                break;
        case BSN_VIRTUAL_PORT_REMOVE_REQUEST:
                /*
@@ -869,7 +869,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len != 8)
-                       goto corrupt;
+                       goto invalid;
                /* vport_no */
                ND_TCHECK2(*cp, 4);
                ND_PRINT((ndo, ", vport_no %u", EXTRACT_32BITS(cp)));
@@ -889,7 +889,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len < 8)
-                       goto corrupt;
+                       goto invalid;
                /* service */
                ND_TCHECK2(*cp, 4);
                ND_PRINT((ndo, ", service %u", EXTRACT_32BITS(cp)));
@@ -936,7 +936,7 @@ of10_bsn_message_print(netdissect_options *ndo,
                 *
                 */
                if (len != 8)
-                       goto corrupt;
+                       goto invalid;
                /* status */
                ND_TCHECK2(*cp, 4);
                ND_PRINT((ndo, ", status 0x%08x", EXTRACT_32BITS(cp)));
@@ -948,8 +948,8 @@ of10_bsn_message_print(netdissect_options *ndo,
        }
        return cp;
 
-corrupt: /* skip the undersized data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len);
        return cp0 + len;
 trunc:
@@ -965,7 +965,7 @@ of10_bsn_actions_print(netdissect_options *ndo,
        uint32_t subtype, vlan_tag;
 
        if (len < 4)
-               goto corrupt;
+               goto invalid;
        /* subtype */
        ND_TCHECK2(*cp, 4);
        subtype = EXTRACT_32BITS(cp);
@@ -988,7 +988,7 @@ of10_bsn_actions_print(netdissect_options *ndo,
                 *
                 */
                if (len != 16)
-                       goto corrupt;
+                       goto invalid;
                /* dest_port */
                ND_TCHECK2(*cp, 4);
                ND_PRINT((ndo, ", dest_port %u", EXTRACT_32BITS(cp)));
@@ -1022,8 +1022,8 @@ of10_bsn_actions_print(netdissect_options *ndo,
 
        return cp;
 
-corrupt:
-       ND_PRINT((ndo, "%s", cstr));
+invalid:
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len);
        return cp0 + len;
 trunc:
@@ -1039,7 +1039,7 @@ of10_vendor_action_print(netdissect_options *ndo,
        const u_char *(*decoder)(netdissect_options *, const u_char *, const u_char *, const u_int);
 
        if (len < 4)
-               goto corrupt;
+               goto invalid;
        /* vendor */
        ND_TCHECK2(*cp, 4);
        vendor = EXTRACT_32BITS(cp);
@@ -1051,8 +1051,8 @@ of10_vendor_action_print(netdissect_options *ndo,
                of10_data_print;
        return decoder(ndo, cp, ep, len - 4);
 
-corrupt: /* skip the undersized data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp, len);
        return cp + len;
 trunc:
@@ -1068,7 +1068,7 @@ of10_vendor_message_print(netdissect_options *ndo,
        const u_char *(*decoder)(netdissect_options *, const u_char *, const u_char *, u_int);
 
        if (len < 4)
-               goto corrupt;
+               goto invalid;
        /* vendor */
        ND_TCHECK2(*cp, 4);
        vendor = EXTRACT_32BITS(cp);
@@ -1080,8 +1080,8 @@ of10_vendor_message_print(netdissect_options *ndo,
                of10_data_print;
        return decoder(ndo, cp, ep, len - 4);
 
-corrupt: /* skip the undersized data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp, len);
        return cp + len;
 trunc:
@@ -1097,7 +1097,7 @@ of10_vendor_data_print(netdissect_options *ndo,
        uint32_t vendor;
 
        if (len < 4)
-               goto corrupt;
+               goto invalid;
        /* vendor */
        ND_TCHECK2(*cp, 4);
        vendor = EXTRACT_32BITS(cp);
@@ -1106,8 +1106,8 @@ of10_vendor_data_print(netdissect_options *ndo,
        /* data */
        return of10_data_print(ndo, cp, ep, len - 4);
 
-corrupt: /* skip the undersized data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp, len);
        return cp + len;
 trunc:
@@ -1147,7 +1147,7 @@ of10_phy_ports_print(netdissect_options *ndo,
 
        while (len) {
                if (len < OF_PHY_PORT_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* port_no */
                ND_TCHECK2(*cp, 2);
                ND_PRINT((ndo, "\n\t  port_no %s", tok2str(ofpp_str, "%u", EXTRACT_16BITS(cp))));
@@ -1203,8 +1203,8 @@ next_port:
        } /* while */
        return cp;
 
-corrupt: /* skip the undersized trailing data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized trailing data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -1225,7 +1225,7 @@ of10_queue_props_print(netdissect_options *ndo,
                u_char plen_bogus = 0, skip = 0;
 
                if (len < OF_QUEUE_PROP_HEADER_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* property */
                ND_TCHECK2(*cp, 2);
                property = EXTRACT_16BITS(cp);
@@ -1237,7 +1237,7 @@ of10_queue_props_print(netdissect_options *ndo,
                cp += 2;
                ND_PRINT((ndo, ", len %u", plen));
                if (plen < OF_QUEUE_PROP_HEADER_LEN || plen > len)
-                       goto corrupt;
+                       goto invalid;
                /* pad */
                ND_TCHECK2(*cp, 4);
                cp += 4;
@@ -1279,8 +1279,8 @@ next_property:
        } /* while */
        return cp;
 
-corrupt: /* skip the rest of queue properties */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the rest of queue properties */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -1299,7 +1299,7 @@ of10_queues_print(netdissect_options *ndo,
 
        while (len) {
                if (len < OF_PACKET_QUEUE_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* queue_id */
                ND_TCHECK2(*cp, 4);
                ND_PRINT((ndo, "\n\t  queue_id %u", EXTRACT_32BITS(cp)));
@@ -1310,7 +1310,7 @@ of10_queues_print(netdissect_options *ndo,
                cp += 2;
                ND_PRINT((ndo, ", len %u", desclen));
                if (desclen < OF_PACKET_QUEUE_LEN || desclen > len)
-                       goto corrupt;
+                       goto invalid;
                /* pad */
                ND_TCHECK2(*cp, 2);
                cp += 2;
@@ -1327,8 +1327,8 @@ next_queue:
        } /* while */
        return cp;
 
-corrupt: /* skip the rest of queues */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the rest of queues */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -1454,7 +1454,7 @@ of10_actions_print(netdissect_options *ndo,
                u_char alen_bogus = 0, skip = 0;
 
                if (len < OF_ACTION_HEADER_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* type */
                ND_TCHECK2(*cp, 2);
                type = EXTRACT_16BITS(cp);
@@ -1467,7 +1467,7 @@ of10_actions_print(netdissect_options *ndo,
                ND_PRINT((ndo, ", len %u", alen));
                /* On action size underrun/overrun skip the rest of the action list. */
                if (alen < OF_ACTION_HEADER_LEN || alen > len)
-                       goto corrupt;
+                       goto invalid;
                /* On action size inappropriate for the given type or invalid type just skip
                 * the current action, as the basic length constraint has been met. */
                switch (type) {
@@ -1598,8 +1598,8 @@ next_action:
        } /* while */
        return cp;
 
-corrupt: /* skip the rest of actions */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the rest of actions */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -1766,12 +1766,12 @@ of10_stats_request_print(netdissect_options *ndo,
        case OFPST_DESC:
        case OFPST_TABLE:
                if (len)
-                       goto corrupt;
+                       goto invalid;
                return cp;
        case OFPST_FLOW:
        case OFPST_AGGREGATE:
                if (len != OF_FLOW_STATS_REQUEST_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* match */
                if (ep == (cp = of10_match_print(ndo, "\n\t ", cp, ep)))
                        return ep; /* end of snapshot */
@@ -1788,7 +1788,7 @@ of10_stats_request_print(netdissect_options *ndo,
                return cp + 2;
        case OFPST_PORT:
                if (len != OF_PORT_STATS_REQUEST_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* port_no */
                ND_TCHECK2(*cp, 2);
                ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_16BITS(cp))));
@@ -1798,7 +1798,7 @@ of10_stats_request_print(netdissect_options *ndo,
                return cp + 6;
        case OFPST_QUEUE:
                if (len != OF_QUEUE_STATS_REQUEST_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* port_no */
                ND_TCHECK2(*cp, 2);
                ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_16BITS(cp))));
@@ -1815,8 +1815,8 @@ of10_stats_request_print(netdissect_options *ndo,
        }
        return cp;
 
-corrupt: /* skip the message body */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the message body */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -1830,7 +1830,7 @@ of10_desc_stats_reply_print(netdissect_options *ndo,
                             const u_char *cp, const u_char *ep, const u_int len)
 {
        if (len != OF_DESC_STATS_LEN)
-               goto corrupt;
+               goto invalid;
        /* mfr_desc */
        ND_TCHECK2(*cp, DESC_STR_LEN);
        ND_PRINT((ndo, "\n\t  mfr_desc '"));
@@ -1862,8 +1862,8 @@ of10_desc_stats_reply_print(netdissect_options *ndo,
        ND_PRINT((ndo, "'"));
        return cp + DESC_STR_LEN;
 
-corrupt: /* skip the message body */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the message body */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp, len);
        return cp + len;
 trunc:
@@ -1882,13 +1882,13 @@ of10_flow_stats_reply_print(netdissect_options *ndo,
 
        while (len) {
                if (len < OF_FLOW_STATS_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* length */
                ND_TCHECK2(*cp, 2);
                entry_len = EXTRACT_16BITS(cp);
                ND_PRINT((ndo, "\n\t length %u", entry_len));
                if (entry_len < OF_FLOW_STATS_LEN || entry_len > len)
-                       goto corrupt;
+                       goto invalid;
                cp += 2;
                /* table_id */
                ND_TCHECK2(*cp, 1);
@@ -1943,8 +1943,8 @@ of10_flow_stats_reply_print(netdissect_options *ndo,
        } /* while */
        return cp;
 
-corrupt: /* skip the rest of flow statistics entries */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the rest of flow statistics entries */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -1959,7 +1959,7 @@ of10_aggregate_stats_reply_print(netdissect_options *ndo,
                                  const u_int len)
 {
        if (len != OF_AGGREGATE_STATS_REPLY_LEN)
-               goto corrupt;
+               goto invalid;
        /* packet_count */
        ND_TCHECK2(*cp, 8);
        ND_PRINT((ndo, "\n\t packet_count %" PRIu64, EXTRACT_64BITS(cp)));
@@ -1976,8 +1976,8 @@ of10_aggregate_stats_reply_print(netdissect_options *ndo,
        ND_TCHECK2(*cp, 4);
        return cp + 4;
 
-corrupt: /* skip the message body */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the message body */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp, len);
        return cp + len;
 trunc:
@@ -1995,7 +1995,7 @@ of10_table_stats_reply_print(netdissect_options *ndo,
 
        while (len) {
                if (len < OF_TABLE_STATS_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* table_id */
                ND_TCHECK2(*cp, 1);
                ND_PRINT((ndo, "\n\t table_id %s", tok2str(tableid_str, "%u", *cp)));
@@ -2035,8 +2035,8 @@ of10_table_stats_reply_print(netdissect_options *ndo,
        } /* while */
        return cp;
 
-corrupt: /* skip the undersized trailing data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized trailing data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -2054,7 +2054,7 @@ of10_port_stats_reply_print(netdissect_options *ndo,
 
        while (len) {
                if (len < OF_PORT_STATS_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* port_no */
                ND_TCHECK2(*cp, 2);
                ND_PRINT((ndo, "\n\t  port_no %s", tok2str(ofpp_str, "%u", EXTRACT_16BITS(cp))));
@@ -2120,8 +2120,8 @@ next_port:
        } /* while */
        return cp;
 
-corrupt: /* skip the undersized trailing data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized trailing data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -2139,7 +2139,7 @@ of10_queue_stats_reply_print(netdissect_options *ndo,
 
        while (len) {
                if (len < OF_QUEUE_STATS_LEN)
-                       goto corrupt;
+                       goto invalid;
                /* port_no */
                ND_TCHECK2(*cp, 2);
                ND_PRINT((ndo, "\n\t  port_no %s", tok2str(ofpp_str, "%u", EXTRACT_16BITS(cp))));
@@ -2168,8 +2168,8 @@ of10_queue_stats_reply_print(netdissect_options *ndo,
        } /* while */
        return cp;
 
-corrupt: /* skip the undersized trailing data */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the undersized trailing data */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -2239,15 +2239,15 @@ of10_packet_out_print(netdissect_options *ndo,
        actions_len = EXTRACT_16BITS(cp);
        cp += 2;
        if (actions_len > len - OF_PACKET_OUT_LEN)
-               goto corrupt;
+               goto invalid;
        /* actions */
        if (ep == (cp = of10_actions_print(ndo, "\n\t ", cp, ep, actions_len)))
                return ep; /* end of snapshot */
        /* data */
        return of10_packet_data_print(ndo, cp, ep, len - OF_PACKET_OUT_LEN - actions_len);
 
-corrupt: /* skip the rest of the message body */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the rest of the message body */
+       ND_PRINT((ndo, "%s", istr));
        ND_TCHECK2(*cp0, len0);
        return cp0 + len0;
 trunc:
@@ -2387,7 +2387,7 @@ of10_header_body_print(netdissect_options *ndo,
         * possible, check that message length meets the constraint, in remaining
         * cases check that the length is OK to begin decoding and leave any final
         * verification up to a lower-layer function. When the current message is
-        * corrupt, proceed to the next message. */
+        * invalid, proceed to the next message. */
 
        /* [OF10] Section 5.1 */
        ND_PRINT((ndo, "\n\tversion 1.0, type %s, length %u, xid 0x%08x",
@@ -2399,14 +2399,14 @@ of10_header_body_print(netdissect_options *ndo,
        case OFPT_BARRIER_REQUEST: /* [OF10] Section 5.3.7 */
        case OFPT_BARRIER_REPLY: /* ibid */
                if (len != OF_HEADER_LEN)
-                       goto corrupt;
+                       goto invalid;
                break;
 
        /* OpenFlow header and fixed-size message body. */
        case OFPT_SET_CONFIG: /* [OF10] Section 5.3.2 */
        case OFPT_GET_CONFIG_REPLY: /* ibid */
                if (len != OF_SWITCH_CONFIG_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                /* flags */
@@ -2419,13 +2419,13 @@ of10_header_body_print(netdissect_options *ndo,
                return cp + 2;
        case OFPT_PORT_MOD:
                if (len != OF_PORT_MOD_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_port_mod_print(ndo, cp, ep);
        case OFPT_QUEUE_GET_CONFIG_REQUEST: /* [OF10] Section 5.3.4 */
                if (len != OF_QUEUE_GET_CONFIG_REQUEST_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                /* port */
@@ -2437,13 +2437,13 @@ of10_header_body_print(netdissect_options *ndo,
                return cp + 2;
        case OFPT_FLOW_REMOVED:
                if (len != OF_FLOW_REMOVED_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_flow_removed_print(ndo, cp, ep);
        case OFPT_PORT_STATUS: /* [OF10] Section 5.4.3 */
                if (len != OF_PORT_STATUS_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                /* reason */
@@ -2459,7 +2459,7 @@ of10_header_body_print(netdissect_options *ndo,
        /* OpenFlow header, fixed-size message body and n * fixed-size data units. */
        case OFPT_FEATURES_REPLY:
                if (len < OF_SWITCH_FEATURES_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_features_reply_print(ndo, cp, ep, len);
@@ -2475,21 +2475,21 @@ of10_header_body_print(netdissect_options *ndo,
        /* OpenFlow header, fixed-size message body and variable-size data. */
        case OFPT_ERROR:
                if (len < OF_ERROR_MSG_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_error_print(ndo, cp, ep, len);
        case OFPT_VENDOR:
          /* [OF10] Section 5.5.4 */
                if (len < OF_VENDOR_HEADER_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_vendor_message_print(ndo, cp, ep, len - OF_HEADER_LEN);
        case OFPT_PACKET_IN:
                /* 2 mock octets count in OF_PACKET_IN_LEN but not in len */
                if (len < OF_PACKET_IN_LEN - 2)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_packet_in_print(ndo, cp, ep, len);
@@ -2499,7 +2499,7 @@ of10_header_body_print(netdissect_options *ndo,
        /* c. OpenFlow header, fixed-size message body and variable-size data. */
        case OFPT_STATS_REQUEST:
                if (len < OF_STATS_REQUEST_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_stats_request_print(ndo, cp, ep, len);
@@ -2510,7 +2510,7 @@ of10_header_body_print(netdissect_options *ndo,
        /* d. OpenFlow header, fixed-size message body and variable-size data. */
        case OFPT_STATS_REPLY:
                if (len < OF_STATS_REPLY_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_stats_reply_print(ndo, cp, ep, len);
@@ -2518,7 +2518,7 @@ of10_header_body_print(netdissect_options *ndo,
        /* OpenFlow header and n * variable-size data units and variable-size data. */
        case OFPT_PACKET_OUT:
                if (len < OF_PACKET_OUT_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_packet_out_print(ndo, cp, ep, len);
@@ -2526,7 +2526,7 @@ of10_header_body_print(netdissect_options *ndo,
        /* OpenFlow header, fixed-size message body and n * variable-size data units. */
        case OFPT_FLOW_MOD:
                if (len < OF_FLOW_MOD_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                return of10_flow_mod_print(ndo, cp, ep, len);
@@ -2534,7 +2534,7 @@ of10_header_body_print(netdissect_options *ndo,
        /* OpenFlow header, fixed-size message body and n * variable-size data units. */
        case OFPT_QUEUE_GET_CONFIG_REPLY: /* [OF10] Section 5.3.4 */
                if (len < OF_QUEUE_GET_CONFIG_REPLY_LEN)
-                       goto corrupt;
+                       goto invalid;
                if (ndo->ndo_vflag < 1)
                        goto next_message;
                /* port */
@@ -2549,8 +2549,8 @@ of10_header_body_print(netdissect_options *ndo,
        } /* switch (type) */
        goto next_message;
 
-corrupt: /* skip the message body */
-       ND_PRINT((ndo, "%s", cstr));
+invalid: /* skip the message body */
+       ND_PRINT((ndo, "%s", istr));
 next_message:
        ND_TCHECK2(*cp0, len0 - OF_HEADER_LEN);
        return cp0 + len0 - OF_HEADER_LEN;