]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-decnet.c
CI: Add warning exemptions for Sun C (suncc-5.15) on Solaris 10
[tcpdump] / print-decnet.c
index d39a768ab4eed2f290174f5c9ca2d83bc133e051..989776b4df316af5fc91082fa39beac1dc56a6eb 100644 (file)
  */
 
 /* \summary: DECnet printer */
+/*
+ * specification: Section 10.0 MESSAGES
+ * DECnet Digital Network Architecture
+ * Phase IV
+ * Routing Layer Functional Specification
+ * Order No. AA-X435A-TK
+ * Version 2.0.0 December 1983
+ */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include "netdissect-stdinc.h"
 
@@ -52,7 +58,7 @@ typedef nd_uint32_t longword;         /* 4 bytes field */
  * Definitions for DECNET Phase IV protocol headers
  */
 typedef union {
-       nd_byte dne_addr[MAC_ADDR_LEN]; /* full Ethernet address */
+       nd_mac48 dne_addr;      /* full Ethernet address */
        struct {
                nd_byte dne_hiord[4];   /* DECnet HIORD prefix */
                nd_byte dne_nodeaddr[2]; /* DECnet node address */
@@ -478,13 +484,18 @@ decnet_print(netdissect_options *ndo,
 
        ndo->ndo_protocol = "decnet";
        if (length < sizeof(struct shorthdr)) {
-               ND_PRINT(" (length %u < %u)", length, (unsigned)sizeof(struct shorthdr));
+               ND_PRINT(" (length %u < %zu)", length, sizeof(struct shorthdr));
                goto invalid;
        }
 
+       /*
+        * This length does not seem to be in any specification, but it is present
+        * in the test case packet capture, which is consistent with the Wireshark
+        * protocol decoder.
+        */
        pktlen = GET_LE_U_2(ap);
        if (pktlen < sizeof(struct shorthdr)) {
-               ND_PRINT(" (pktlen %u < %u)", pktlen, (unsigned)sizeof(struct shorthdr));
+               ND_PRINT(" (pktlen %u < %zu)", pktlen, sizeof(struct shorthdr));
                goto invalid;
        }
        if (pktlen > length) {
@@ -529,7 +540,7 @@ decnet_print(netdissect_options *ndo,
        switch (mflags & RMF_MASK) {
        case RMF_LONG:
            if (length < sizeof(struct longhdr)) {
-               ND_PRINT(" (length %u < %u)", length, (unsigned)sizeof(struct longhdr));
+               ND_PRINT(" (length %u < %zu)", length, sizeof(struct longhdr));
                goto invalid;
            }
            ND_TCHECK_SIZE(&rhp->rh_long);
@@ -799,7 +810,7 @@ print_nsp(netdissect_options *ndo,
        u_int dst, src, flags;
 
        if (nsplen < sizeof(struct nsphdr)) {
-               ND_PRINT(" (nsplen %u < %u)", nsplen, (unsigned)sizeof(struct nsphdr));
+               ND_PRINT(" (nsplen %u < %zu)", nsplen, sizeof(struct nsphdr));
                goto invalid;
        }
        flags = GET_U_1(nsphp->nh_flags);