X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/215c14cbbc86acb7add18dab6477c533195ae614..HEAD:/print-aoe.c diff --git a/print-aoe.c b/print-aoe.c index 4ede55dc..0759ef38 100644 --- a/print-aoe.c +++ b/print-aoe.c @@ -31,12 +31,11 @@ * https://web.archive.org/web/20161025044402/http://brantleycoilecompany.com/AoEr11.pdf */ -#ifdef HAVE_CONFIG_H #include -#endif #include "netdissect-stdinc.h" +#define ND_LONGJMP_FROM_TCHECK #include "netdissect.h" #include "extract.h" #include "addrtoname.h" @@ -71,8 +70,8 @@ static const struct tok cmdcode_str[] = { static const struct tok aoev1_flag_str[] = { { AOEV1_FLAG_R, "Response" }, { AOEV1_FLAG_E, "Error" }, - { 0x02, "MBZ-0x02" }, - { 0x01, "MBZ-0x01" }, + { 0x02, "MBZ-1" }, + { 0x01, "MBZ-0" }, { 0, NULL } }; @@ -91,13 +90,13 @@ static const struct tok aoev1_errcode_str[] = { #define AOEV1_AFLAG_A 0x02 #define AOEV1_AFLAG_W 0x01 -static const struct tok aoev1_aflag_str[] = { - { 0x08, "MBZ-0x08" }, +static const struct tok aoev1_aflag_bitmap_str[] = { + { 0x80, "MBZ-7" }, { AOEV1_AFLAG_E, "Ext48" }, - { 0x06, "MBZ-0x06" }, + { 0x20, "MBZ-5" }, { AOEV1_AFLAG_D, "Device" }, - { 0x04, "MBZ-0x04" }, - { 0x03, "MBZ-0x03" }, + { 0x08, "MBZ-3" }, + { 0x04, "MBZ-2" }, { AOEV1_AFLAG_A, "Async" }, { AOEV1_AFLAG_W, "Write" }, { 0, NULL } @@ -147,7 +146,7 @@ aoev1_issue_print(netdissect_options *ndo, goto invalid; /* AFlags */ ND_PRINT("\n\tAFlags: [%s]", - bittok2str(aoev1_aflag_str, "none", GET_U_1(cp))); + bittok2str(aoev1_aflag_bitmap_str, "none", GET_U_1(cp))); cp += 1; len -= 1; /* Err/Feature */ @@ -191,16 +190,13 @@ aoev1_issue_print(netdissect_options *ndo, cp += 2; len -= 2; /* Data */ - if (len > AOEV1_ISSUE_ARG_LEN) + if (len) ND_PRINT("\n\tData: %u bytes", len); return; invalid: nd_print_invalid(ndo); ND_TCHECK_LEN(cp, len); - return; -trunc: - nd_trunc(ndo); } static void @@ -237,16 +233,13 @@ aoev1_query_print(netdissect_options *ndo, /* Config String */ if (cslen) { ND_PRINT("\n\tConfig String (length %u): ", cslen); - (void)nd_printn(ndo, cp, cslen, NULL); + nd_printjn(ndo, cp, cslen); } return; invalid: nd_print_invalid(ndo); ND_TCHECK_LEN(cp, len); - return; -trunc: - nd_trunc(ndo); } static void @@ -275,7 +268,7 @@ aoev1_mac_print(netdissect_options *ndo, cp += 1; len -= 1; ND_PRINT(", Dir Count: %u", dircount); - if (dircount * 8 > len) + if (dircount * 8U > len) goto invalid; /* directives */ for (i = 0; i < dircount; i++) { @@ -288,18 +281,15 @@ aoev1_mac_print(netdissect_options *ndo, cp += 1; len -= 1; /* Ethernet Address */ - ND_PRINT(", Ethernet Address: %s", GET_ETHERADDR_STRING(cp)); - cp += MAC_ADDR_LEN; - len -= MAC_ADDR_LEN; + ND_PRINT(", Ethernet Address: %s", GET_MAC48_STRING(cp)); + cp += MAC48_LEN; + len -= MAC48_LEN; } return; invalid: nd_print_invalid(ndo); ND_TCHECK_LEN(cp, len); - return; -trunc: - nd_trunc(ndo); } static void @@ -308,7 +298,7 @@ aoev1_reserve_print(netdissect_options *ndo, { uint8_t nmacs, i; - if (len < AOEV1_RESERVE_ARG_LEN || (len - AOEV1_RESERVE_ARG_LEN) % MAC_ADDR_LEN) + if (len < AOEV1_RESERVE_ARG_LEN || (len - AOEV1_RESERVE_ARG_LEN) % MAC48_LEN) goto invalid; /* RCmd */ ND_PRINT("\n\tRCmd: %s", @@ -320,22 +310,19 @@ aoev1_reserve_print(netdissect_options *ndo, cp += 1; len -= 1; ND_PRINT(", NMacs: %u", nmacs); - if (nmacs * MAC_ADDR_LEN != len) + if (nmacs * MAC48_LEN != len) goto invalid; /* addresses */ for (i = 0; i < nmacs; i++) { - ND_PRINT("\n\tEthernet Address %u: %s", i, GET_ETHERADDR_STRING(cp)); - cp += MAC_ADDR_LEN; - len -= MAC_ADDR_LEN; + ND_PRINT("\n\tEthernet Address %u: %s", i, GET_MAC48_STRING(cp)); + cp += MAC48_LEN; + len -= MAC48_LEN; } return; invalid: nd_print_invalid(ndo); ND_TCHECK_LEN(cp, len); - return; -trunc: - nd_trunc(ndo); } /* cp points to the Ver/Flags octet */ @@ -392,9 +379,6 @@ aoev1_print(netdissect_options *ndo, invalid: nd_print_invalid(ndo); ND_TCHECK_LEN(cp, len); - return; -trunc: - nd_trunc(ndo); } void @@ -423,8 +407,5 @@ aoe_print(netdissect_options *ndo, invalid: nd_print_invalid(ndo); ND_TCHECK_LEN(cp, len); - return; -trunc: - nd_trunc(ndo); }