]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-aoe.c
CI: Add warning exemptions for Sun C (suncc-5.14) on Solaris 10
[tcpdump] / print-aoe.c
index 4ede55dc3662d7a77c001c3f4f62cad64e43bd3f..0759ef38ef6cbad48cad11723b81ac784c8b9407 100644 (file)
  * https://web.archive.org/web/20161025044402/http://brantleycoilecompany.com/AoEr11.pdf
  */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#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);
 }