]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-dtp.c
remove redundant ND_TCHECK, let GET_ routines handle checks
[tcpdump] / print-dtp.c
index 1d8c66a0004634e06206350eaad49a462ba222c9..4c3d6c780eac1d1fa9a2e5de730ff1825425b2c3 100644 (file)
 /* \summary: Dynamic Trunking Protocol (DTP) printer */
 
 #ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
 #endif
 
-#include <netdissect-stdinc.h>
+#include "netdissect-stdinc.h"
 
 #include "netdissect.h"
 #include "addrtoname.h"
 #include "extract.h"
 
-static const char tstr[] = " [|dtp]";
 
 #define DTP_HEADER_LEN                 1
 #define DTP_DOMAIN_TLV                 0x0001
@@ -44,21 +43,22 @@ static const struct tok dtp_tlv_values[] = {
 };
 
 void
-dtp_print (netdissect_options *ndo, const u_char *pptr, u_int length)
+dtp_print(netdissect_options *ndo, const u_char *pptr, u_int length)
 {
     int type, len;
     const u_char *tptr;
 
+    ndo->ndo_protocol = "dtp";
     if (length < DTP_HEADER_LEN)
         goto trunc;
 
     tptr = pptr;
 
-    ND_TCHECK2(*tptr, DTP_HEADER_LEN);
+    ND_TCHECK_LEN(tptr, DTP_HEADER_LEN);
 
-    ND_PRINT((ndo, "DTPv%u, length %u",
-           (*tptr),
-           length));
+    ND_PRINT("DTPv%u, length %u",
+           GET_U_1(tptr),
+           length);
 
     /*
      * In non-verbose mode, just print version.
@@ -71,38 +71,38 @@ dtp_print (netdissect_options *ndo, const u_char *pptr, u_int length)
 
     while (tptr < (pptr+length)) {
 
-        ND_TCHECK2(*tptr, 4);
-       type = EXTRACT_16BITS(tptr);
-        len  = EXTRACT_16BITS(tptr+2);
+        ND_TCHECK_4(tptr);
+       type = GET_BE_U_2(tptr);
+        len  = GET_BE_U_2(tptr + 2);
        /* XXX: should not be but sometimes it is, see the test captures */
         if (type == 0)
             return;
-        ND_PRINT((ndo, "\n\t%s (0x%04x) TLV, length %u",
+        ND_PRINT("\n\t%s (0x%04x) TLV, length %u",
                tok2str(dtp_tlv_values, "Unknown", type),
-               type, len));
+               type, len);
 
         /* infinite loop check */
         if (len < 4)
             goto invalid;
-        ND_TCHECK2(*tptr, len);
+        ND_TCHECK_LEN(tptr, len);
 
         switch (type) {
        case DTP_DOMAIN_TLV:
-               ND_PRINT((ndo, ", "));
-               fn_printzp(ndo, tptr+4, len-4, pptr+length);
+               ND_PRINT(", ");
+               nd_printzp(ndo, tptr+4, len-4, pptr+length);
                break;
 
        case DTP_STATUS_TLV:
        case DTP_DTP_TYPE_TLV:
                 if (len < 5)
                     goto invalid;
-                ND_PRINT((ndo, ", 0x%x", *(tptr+4)));
+                ND_PRINT(", 0x%x", GET_U_1(tptr + 4));
                 break;
 
        case DTP_NEIGHBOR_TLV:
                 if (len < 10)
                     goto invalid;
-                ND_PRINT((ndo, ", %s", etheraddr_string(ndo, tptr+4)));
+                ND_PRINT(", %s", GET_ETHERADDR_STRING(tptr+4));
                 break;
 
         default:
@@ -114,15 +114,8 @@ dtp_print (netdissect_options *ndo, const u_char *pptr, u_int length)
     return;
 
  invalid:
-    ND_PRINT((ndo, "%s", istr));
+    nd_print_invalid(ndo);
     return;
  trunc:
-    ND_PRINT((ndo, "%s", tstr));
+    nd_print_trunc(ndo);
 }
-
-/*
- * Local Variables:
- * c-style: whitesmith
- * c-basic-offset: 4
- * End:
- */