/* \summary: Trivial File Transfer Protocol (TFTP) printer */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
-#include <string.h>
-
#include "netdissect.h"
#include "extract.h"
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;
/* 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)
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)
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 */
return;
trunc:
nd_print_trunc(ndo);
- return;
}