]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-loopback.c
Add a malloc/free process with garbage collector
[tcpdump] / print-loopback.c
index b740202569d98a3582ddbb8237f8ef7224875951..46942c94d7190a73ee00ec9c78b5b0cef9e2e6ba 100644 (file)
  */
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
 #endif
 
-#include <netdissect-stdinc.h>
+#include "netdissect-stdinc.h"
 
 #include "netdissect.h"
 #include "extract.h"
-#include "ether.h"
 #include "addrtoname.h"
 
 static const char tstr[] = " [|loopback]";
@@ -57,7 +56,7 @@ static const struct tok fcode_str[] = {
 static void
 loopback_message_print(netdissect_options *ndo, const u_char *cp, const u_int len)
 {
-       const u_char *ep = cp + len;
+       const u_char *ep = ndo->ndo_snapend;
        uint16_t function;
 
        if (len < 2)
@@ -66,7 +65,7 @@ loopback_message_print(netdissect_options *ndo, const u_char *cp, const u_int le
        ND_TCHECK_2(cp);
        function = EXTRACT_LE_U_2(cp);
        cp += 2;
-       ND_PRINT((ndo, ", %s", tok2str(fcode_str, " invalid (%u)", function)));
+       ND_PRINT(", %s", tok2str(fcode_str, " invalid (%u)", function));
 
        switch (function) {
                case LOOPBACK_REPLY:
@@ -74,21 +73,21 @@ loopback_message_print(netdissect_options *ndo, const u_char *cp, const u_int le
                                goto invalid;
                        /* receipt number */
                        ND_TCHECK_2(cp);
-                       ND_PRINT((ndo, ", receipt number %u", EXTRACT_LE_U_2(cp)));
+                       ND_PRINT(", receipt number %u", EXTRACT_LE_U_2(cp));
                        cp += 2;
                        /* data */
-                       ND_PRINT((ndo, ", data (%u octets)", len - 4));
+                       ND_PRINT(", data (%u octets)", len - 4);
                        ND_TCHECK_LEN(cp, len - 4);
                        break;
                case LOOPBACK_FWDDATA:
                        if (len < 8)
                                goto invalid;
                        /* forwarding address */
-                       ND_TCHECK_LEN(cp, ETHER_ADDR_LEN);
-                       ND_PRINT((ndo, ", forwarding address %s", etheraddr_string(ndo, cp)));
-                       cp += ETHER_ADDR_LEN;
+                       ND_TCHECK_LEN(cp, MAC_ADDR_LEN);
+                       ND_PRINT(", forwarding address %s", etheraddr_string(ndo, cp));
+                       cp += MAC_ADDR_LEN;
                        /* data */
-                       ND_PRINT((ndo, ", data (%u octets)", len - 8));
+                       ND_PRINT(", data (%u octets)", len - 8);
                        ND_TCHECK_LEN(cp, len - 8);
                        break;
                default:
@@ -98,39 +97,39 @@ loopback_message_print(netdissect_options *ndo, const u_char *cp, const u_int le
        return;
 
 invalid:
-       ND_PRINT((ndo, "%s", istr));
+       ND_PRINT("%s", istr);
        ND_TCHECK_LEN(cp, ep - cp);
        return;
 trunc:
-       ND_PRINT((ndo, "%s", tstr));
+       ND_PRINT("%s", tstr);
 }
 
 void
 loopback_print(netdissect_options *ndo, const u_char *cp, const u_int len)
 {
-       const u_char *ep = cp + len;
+       const u_char *ep = ndo->ndo_snapend;
        uint16_t skipCount;
 
-       ND_PRINT((ndo, "Loopback"));
+       ND_PRINT("Loopback");
        if (len < 2)
                goto invalid;
        /* skipCount */
        ND_TCHECK_2(cp);
        skipCount = EXTRACT_LE_U_2(cp);
        cp += 2;
-       ND_PRINT((ndo, ", skipCount %u", skipCount));
+       ND_PRINT(", skipCount %u", skipCount);
        if (skipCount % 8)
-               ND_PRINT((ndo, " (bogus)"));
+               ND_PRINT(" (bogus)");
        if (skipCount > len - 2)
                goto invalid;
        loopback_message_print(ndo, cp + skipCount, len - 2 - skipCount);
        return;
 
 invalid:
-       ND_PRINT((ndo, "%s", istr));
+       ND_PRINT("%s", istr);
        ND_TCHECK_LEN(cp, ep - cp);
        return;
 trunc:
-       ND_PRINT((ndo, "%s", tstr));
+       ND_PRINT("%s", tstr);
 }