summaryrefslogtreecommitdiffstats
path: root/contrib/tcpdump/print-tftp.c
diff options
context:
space:
mode:
authorbms <bms@FreeBSD.org>2004-03-31 09:17:26 +0000
committerbms <bms@FreeBSD.org>2004-03-31 09:17:26 +0000
commit281e9d71408deb6e8c5046c746c2e97002b0e7fe (patch)
treeeb08e08f0f875c3b16f8e1aec86091f100906f1c /contrib/tcpdump/print-tftp.c
parentbe6faec6d07fc3a2a54836e76d0309c36192dfad (diff)
downloadFreeBSD-src-281e9d71408deb6e8c5046c746c2e97002b0e7fe.zip
FreeBSD-src-281e9d71408deb6e8c5046c746c2e97002b0e7fe.tar.gz
Import tcpdump 3.8.3, from http://www.tcpdump.org/releases/tcpdump-3.8.3.tar.gz
Diffstat (limited to 'contrib/tcpdump/print-tftp.c')
-rw-r--r--contrib/tcpdump/print-tftp.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/contrib/tcpdump/print-tftp.c b/contrib/tcpdump/print-tftp.c
index 66c1392..261b594 100644
--- a/contrib/tcpdump/print-tftp.c
+++ b/contrib/tcpdump/print-tftp.c
@@ -22,30 +22,27 @@
*/
#ifndef lint
-static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.31 1999/11/21 09:37:03 fenner Exp $ (LBL)";
+static const char rcsid[] _U_ =
+ "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.35.2.2 2003/11/16 08:51:50 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include <sys/param.h>
-#include <sys/time.h>
-
-#include <netinet/in.h>
+#include <tcpdump-stdinc.h>
#ifdef SEGSIZE
#undef SEGSIZE /* SINIX sucks */
#endif
#include <arpa/tftp.h>
-#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include "interface.h"
#include "addrtoname.h"
+#include "extract.h"
/* op code to string mapping */
static struct tok op2str[] = {
@@ -89,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 */
@@ -112,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;
@@ -119,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('"');
OpenPOWER on IntegriCloud