]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-ether.c
CI: Add warning exemptions for Sun C (suncc-5.14) on Solaris 10
[tcpdump] / print-ether.c
index 5607bfc3ba5a00951c057bdaa73e4097e4e7e7de..324d089fc3138836b663bbe185cad7a7752c488e 100644 (file)
@@ -21,9 +21,7 @@
 
 /* \summary: Ethernet printer */
 
-#ifdef HAVE_CONFIG_H
 #include <config.h>
-#endif
 
 #include "netdissect-stdinc.h"
 
@@ -37,8 +35,8 @@
  * Structure of an Ethernet header.
  */
 struct ether_header {
-       nd_mac_addr     ether_dhost;
-       nd_mac_addr     ether_shost;
+       nd_mac48        ether_dhost;
+       nd_mac48        ether_shost;
        nd_uint16_t     ether_length_type;
 };
 
@@ -112,7 +110,7 @@ ether_addresses_print(netdissect_options *ndo, const u_char *src,
                      const u_char *dst)
 {
        ND_PRINT("%s > %s, ",
-                GET_ETHERADDR_STRING(src), GET_ETHERADDR_STRING(dst));
+                GET_MAC48_STRING(src), GET_MAC48_STRING(dst));
 }
 
 static void
@@ -171,14 +169,14 @@ ether_common_print(netdissect_options *ndo, const u_char *p, u_int length,
         */
        ehp = (const struct ether_header *)p;
        src.addr = ehp->ether_shost;
-       src.addr_string = etheraddr_string;
+       src.addr_string = mac48_string;
        dst.addr = ehp->ether_dhost;
-       dst.addr_string = etheraddr_string;
+       dst.addr_string = mac48_string;
 
-       length -= 2*MAC_ADDR_LEN;
-       caplen -= 2*MAC_ADDR_LEN;
-       p += 2*MAC_ADDR_LEN;
-       hdrlen = 2*MAC_ADDR_LEN;
+       length -= 2*MAC48_LEN;
+       caplen -= 2*MAC48_LEN;
+       p += 2*MAC48_LEN;
+       hdrlen = 2*MAC48_LEN;
 
        if (ndo->ndo_eflag)
                ether_addresses_print(ndo, src.addr, dst.addr);
@@ -306,7 +304,10 @@ recurse:
                 * Cut off the snapshot length to the end of the
                 * payload.
                 */
-               nd_push_snapend(ndo, p + length);
+               if (!nd_push_snaplen(ndo, p, length)) {
+                       (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC,
+                               "%s: can't push snaplen on buffer stack", __func__);
+               }
 
                if (ndo->ndo_eflag) {
                        ND_PRINT("802.3");
@@ -409,7 +410,7 @@ invalid:
 }
 
 /*
- * Print an Ethernet frame while specyfing a non-standard Ethernet header
+ * Print an Ethernet frame while specifying a non-standard Ethernet header
  * length.
  * This might be encapsulated within another frame; we might be passed
  * a pointer to a function that can print header information for that
@@ -478,7 +479,7 @@ netanalyzer_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
         * Fail if we don't have enough data for the Hilscher pseudo-header.
         */
        ndo->ndo_protocol = "netanalyzer";
-       ND_TCHECK_LEN(p, 4);
+       ND_TCHECK_4(p);
 
        /* Skip the pseudo-header. */
        ndo->ndo_ll_hdr_len += 4;