/* \summary: Trivial File Transfer Protocol (TFTP) printer */
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif
#include "netdissect-stdinc.h"
#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[] = {
u_int opcode;
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;
ND_PRINT(" ");
/* Print filename */
ND_PRINT("\"");
- ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
+ ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
ND_PRINT("\"");
if (ui == 0)
goto trunc;
if (length == 0)
goto trunc; /* no mode */
ND_PRINT(" ");
- ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
+ ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
if (ui == 0)
goto trunc;
bp += ui;
/* 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 = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
+ ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
if (ui == 0)
goto trunc;
bp += ui;
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 = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
+ ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
if (ui == 0)
goto trunc;
bp += ui;
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 */
if (length == 0)
goto trunc; /* no error message */
ND_PRINT(" \"");
- ui = fn_printztn(ndo, bp, length, ndo->ndo_snapend);
+ ui = nd_printztn(ndo, bp, length, ndo->ndo_snapend);
ND_PRINT("\"");
if (ui == 0)
goto trunc;
}
return;
trunc:
- ND_PRINT("%s", tstr);
+ nd_print_trunc(ndo);
return;
}