#define ONF_EXP_OTRANS 0xff000007
extern const struct tok onf_exp_str[];
+extern const char * of_vendor_name(const uint32_t);
+extern void of_data_print(netdissect_options *ndo,
+ const u_char *, const u_int);
+
/*
* Routines to print packets for various versions of OpenFlow.
*/
extern void of10_header_body_print(netdissect_options *ndo,
const u_char *, const uint8_t, uint16_t, const uint32_t);
-extern const char * of_vendor_name(const uint32_t);
ND_PRINT((v & u) ? ") (bogus)" : ")");
}
-static void
-of10_data_print(netdissect_options *ndo,
- const u_char *cp, const u_int len)
-{
- if (len == 0)
- return;
- /* data */
- ND_PRINT("\n\t data (%u octets)", len);
- if (ndo->ndo_vflag >= 2)
- hex_and_ascii_print(ndo, "\n\t ", cp, len);
- else
- ND_TCHECK_LEN(cp, len);
-}
-
static void
of10_bsn_message_print(netdissect_options *ndo,
const u_char *cp, u_int len)
/* data */
decoder =
vendor == OUI_BSN ? of10_bsn_actions_print :
- of10_data_print;
+ of_data_print;
decoder(ndo, cp, len);
return;
/* data */
decoder =
vendor == OUI_BSN ? of10_bsn_message_print :
- of10_data_print;
+ of_data_print;
decoder(ndo, cp, len);
return;
OF_FWD(4);
ND_PRINT(", vendor 0x%08x (%s)", vendor, of_vendor_name(vendor));
/* data */
- of10_data_print(ndo, cp, len);
+ of_data_print(ndo, cp, len);
return;
invalid: /* skip the undersized data */
else
ND_PRINT(", code invalid (0x%04x)", code);
/* data */
- of10_data_print(ndo, cp, len);
+ of_data_print(ndo, cp, len);
}
void
case OFPT_ECHO_REPLY: /* [OF10] Section 5.5.3 */
if (ndo->ndo_vflag < 1)
break;
- of10_data_print(ndo, cp, len);
+ of_data_print(ndo, cp, len);
return;
/* OpenFlow header, fixed-size message body and variable-size data. */
return tok2str(table, "unknown", vendor);
}
+void
+of_data_print(netdissect_options *ndo,
+ const u_char *cp, const u_int len)
+{
+ if (len == 0)
+ return;
+ /* data */
+ ND_PRINT("\n\t data (%u octets)", len);
+ if (ndo->ndo_vflag >= 2)
+ hex_and_ascii_print(ndo, "\n\t ", cp, len);
+ else
+ ND_TCHECK_LEN(cp, len);
+}
+
static void
of_header_print(netdissect_options *ndo, const uint8_t version, const uint8_t type,
const uint16_t length, const uint32_t xid)