X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3d932490b826facb568937a1290910a1265267f5..9bdbb51f4122817ca8bdba9fb9917969809ff451:/print-tftp.c diff --git a/print-tftp.c b/print-tftp.c index 2a09c4c2..3ab61bc6 100644 --- a/print-tftp.c +++ b/print-tftp.c @@ -22,8 +22,8 @@ */ #ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.32 2002-08-01 08:53:32 risso Exp $ (LBL)"; +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.37 2003-11-16 09:36:40 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -42,6 +42,7 @@ static const char rcsid[] = #include "interface.h" #include "addrtoname.h" +#include "extract.h" /* op code to string mapping */ static struct tok op2str[] = { @@ -85,7 +86,7 @@ tftp_print(register const u_char *bp, u_int length) /* Print tftp request type */ TCHECK(tp->th_opcode); - opcode = ntohs(tp->th_opcode); + opcode = EXTRACT_16BITS(&tp->th_opcode); cp = tok2str(op2str, "tftp-#%d", opcode); printf(" %s", cp); /* Bail if bogus opcode */ @@ -108,6 +109,18 @@ tftp_print(register const u_char *bp, u_int length) fputs(" \"", stdout); i = fn_print(p, snapend); putchar('"'); + + /* Print the mode and any options */ + while ((p = (const u_char *)strchr((const char *)p, '\0')) != NULL) { + if (length <= (u_int)(p - (const u_char *)&tp->th_block)) + break; + p++; + if (*p != '\0') { + putchar(' '); + fn_print(p, snapend); + } + } + if (i) goto trunc; break; @@ -115,14 +128,14 @@ tftp_print(register const u_char *bp, u_int length) case ACK: case DATA: TCHECK(tp->th_block); - printf(" block %d", ntohs(tp->th_block)); + printf(" block %d", EXTRACT_16BITS(&tp->th_block)); break; case ERROR: /* Print error code string */ TCHECK(tp->th_code); printf(" %s ", tok2str(err2str, "tftp-err-#%d \"", - ntohs(tp->th_code))); + EXTRACT_16BITS(&tp->th_code))); /* Print error message string */ i = fn_print((const u_char *)tp->th_data, snapend); putchar('"');