]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-tftp.c
Makefile.in: don't remove configure and config.h.in in make distclean.
[tcpdump] / print-tftp.c
index 548a36c5494ea76186228be1e6d41b933ea46ea0..39fc6964b8a26eac38b2a155ce892d0127a0de25 100644 (file)
@@ -27,8 +27,6 @@
 
 #include "netdissect-stdinc.h"
 
-#include <string.h>
-
 #include "netdissect.h"
 #include "extract.h"
 
@@ -58,7 +56,6 @@
 #define        EEXISTS         6               /* file already exists */
 #define        ENOUSER         7               /* no such user */
 
-static const char tstr[] = " [|tftp]";
 
 /* op code to string mapping */
 static const struct tok op2str[] = {
@@ -96,16 +93,18 @@ tftp_print(netdissect_options *ndo,
        u_int ui;
 
        ndo->ndo_protocol = "tftp";
+
+       /* Print protocol */
+       nd_print_protocol_caps(ndo);
        /* Print length */
-       ND_PRINT(" %u", length);
+       ND_PRINT(", length %u", length);
 
        /* Print tftp request type */
        if (length < 2)
                goto trunc;
-       ND_TCHECK_2(bp);
-       opcode = EXTRACT_BE_U_2(bp);
+       opcode = GET_BE_U_2(bp);
        cp = tok2str(op2str, "tftp-#%u", opcode);
-       ND_PRINT(" %s", cp);
+       ND_PRINT(", %s", cp);
        /* Bail if bogus opcode */
        if (*cp == 't')
                return;
@@ -140,8 +139,7 @@ tftp_print(netdissect_options *ndo,
 
                /* Print options, if any */
                while (length != 0) {
-                       ND_TCHECK_1(bp);
-                       if (EXTRACT_U_1(bp) != '\0')
+                       if (GET_U_1(bp) != '\0')
                                ND_PRINT(" ");
                        ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
                        if (ui == 0)
@@ -154,8 +152,7 @@ tftp_print(netdissect_options *ndo,
        case OACK:
                /* Print options */
                while (length != 0) {
-                       ND_TCHECK_1(bp);
-                       if (EXTRACT_U_1(bp) != '\0')
+                       if (GET_U_1(bp) != '\0')
                                ND_PRINT(" ");
                        ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
                        if (ui == 0)
@@ -169,17 +166,15 @@ tftp_print(netdissect_options *ndo,
        case DATA:
                if (length < 2)
                        goto trunc;     /* no block number */
-               ND_TCHECK_2(bp);
-               ND_PRINT(" block %u", EXTRACT_BE_U_2(bp));
+               ND_PRINT(" block %u", GET_BE_U_2(bp));
                break;
 
        case TFTP_ERROR:
                /* Print error code string */
                if (length < 2)
                        goto trunc;     /* no error code */
-               ND_TCHECK_2(bp);
                ND_PRINT(" %s", tok2str(err2str, "tftp-err-#%u \"",
-                                      EXTRACT_BE_U_2(bp)));
+                                      GET_BE_U_2(bp)));
                bp += 2;
                length -= 2;
                /* Print error message string */
@@ -199,6 +194,5 @@ tftp_print(netdissect_options *ndo,
        }
        return;
 trunc:
-       ND_PRINT("%s", tstr);
-       return;
+       nd_print_trunc(ndo);
 }