]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-arp.c
NTP: Use tstr for truncation indicator.
[tcpdump] / print-arp.c
index 0d3522157cfa841c6f67db0d612f7dcc357a3b9f..eff97c469074d215360ea8666b1389d521e6f348 100644 (file)
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
+/* \summary: Address Resolution Protocol (ARP) printer */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#include <tcpdump-stdinc.h>
+#include <netdissect-stdinc.h>
 
 #include <string.h>
 
@@ -175,7 +177,17 @@ struct  atmarp_pkthdr {
 #define ATMTSA(ap) (aar_tsa(ap))
 #define ATMTPA(ap) (aar_tpa(ap))
 
-static u_char ezero[6];
+static int
+isnonzero(const u_char *a, size_t len)
+{
+       while (len > 0) {
+               if (*a != 0)
+                       return (1);
+               a++;
+               len--;
+       }
+       return (0);
+}
 
 static void
 atmarp_addr_print(netdissect_options *ndo,
@@ -356,7 +368,7 @@ arp_print(netdissect_options *ndo,
 
        case ARPOP_REQUEST:
                ND_PRINT((ndo, "who-has %s", ipaddr_string(ndo, TPA(ap))));
-               if (memcmp((const char *)ezero, (const char *)THA(ap), HRD_LEN(ap)) != 0)
+               if (isnonzero((const u_char *)THA(ap), HRD_LEN(ap)))
                        ND_PRINT((ndo, " (%s)",
                                  linkaddr_string(ndo, THA(ap), linkaddr, HRD_LEN(ap))));
                ND_PRINT((ndo, " tell %s", ipaddr_string(ndo, SPA(ap))));