diff options
author | guy <guy> | 2007-09-14 01:02:07 +0000 |
---|---|---|
committer | guy <guy> | 2007-09-14 01:02:07 +0000 |
commit | 065843bbbe43f98ebea0d0947d48109359d156dc (patch) | |
tree | de8f2641f53bc17b2451ec3ebc0fef1a60cd08ac | |
parent | 2b9311703dc4ca6d04294309ef31499d36224cba (diff) | |
download | tcpdump-065843bbbe43f98ebea0d0947d48109359d156dc.tar.gz |
From Christian Sievers: add support for TFTP option acknowledgements
(RFC 2347), and add an opening quotation mark to the error message
string.
Don't use the system's <arpa/tftp.h>, use our own.
Update the README to reflect the current practice for submitting
patches, and fix a spelling error.
-rw-r--r-- | CREDITS | 1 | ||||
-rw-r--r-- | FILES | 1 | ||||
-rw-r--r-- | INSTALL | 3 | ||||
-rw-r--r-- | README | 7 | ||||
-rw-r--r-- | print-tftp.c | 18 | ||||
-rw-r--r-- | tftp.h | 82 |
6 files changed, 102 insertions, 10 deletions
@@ -34,6 +34,7 @@ Additional people who have contributed patches: Charles M. Hannum <mycroft@netbsd.org> Chris Cogdon <chris@cogdon.org> Chris G. Demetriou <cgd@netbsd.org> + Christian Sievers <c_s@users.sourceforge.net> Chris Jepeway <jepeway@blasted-heath.com> Chris Larson <clarson@kergoth.com> Craig Rodrigues <rodrigc@mediaone.net> @@ -241,6 +241,7 @@ tcpdump.1 tcpdump.c tcpdump-stdinc.h telnet.h +tftp.h timed.h token.h udp.h @@ -1,4 +1,4 @@ -@(#) $Header: /tcpdump/master/tcpdump/Attic/INSTALL,v 1.69 2007-09-12 19:36:18 guy Exp $ (LBL) +@(#) $Header: /tcpdump/master/tcpdump/Attic/INSTALL,v 1.70 2007-09-14 01:02:07 guy Exp $ (LBL) If you have not built libpcap, and your system does not have libpcap installed, install libpcap first. Your system might provide a version @@ -243,6 +243,7 @@ tcp.h - TCP definitions tcpdump.1 - manual entry tcpdump.c - main program telnet.h - Telnet definitions +tftp.h - TFTP definitions timed.h - BSD time daemon protocol definitions token.h - Token Ring definitions udp.h - UDP definitions @@ -1,4 +1,4 @@ -@(#) $Header: /tcpdump/master/tcpdump/README,v 1.65 2004-10-12 02:01:59 guy Exp $ (LBL) +@(#) $Header: /tcpdump/master/tcpdump/README,v 1.66 2007-09-14 01:02:07 guy Exp $ (LBL) TCPDUMP 3.9 Now maintained by "The Tcpdump Group" @@ -11,10 +11,11 @@ Anonymous CVS is available via: (password "anoncvs") cvs -d :pserver:cvs.tcpdump.org:/tcpdump/master checkout tcpdump -Version 3.9 of TCPDUMP can be retrived with the CVS tag "tcpdump_3_9rel1": +Version 3.9 of TCPDUMP can be retrieved with the CVS tag "tcpdump_3_9rel1": cvs -d :pserver:cvs.tcpdump.org:/tcpdump/master checkout -r tcpdump_3_9rel1 tcpdump -Please send patches against the master copy to patches@tcpdump.org. +Please submit patches against the master copy to the tcpdump project on +sourceforge.net. formerly from Lawrence Berkeley National Laboratory Network Research Group <tcpdump@ee.lbl.gov> diff --git a/print-tftp.c b/print-tftp.c index 3ab61bc6..6baf82ef 100644 --- a/print-tftp.c +++ b/print-tftp.c @@ -23,7 +23,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.37 2003-11-16 09:36:40 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.38 2007-09-14 01:02:07 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -35,7 +35,6 @@ static const char rcsid[] _U_ = #ifdef SEGSIZE #undef SEGSIZE /* SINIX sucks */ #endif -#include <arpa/tftp.h> #include <stdio.h> #include <string.h> @@ -43,6 +42,7 @@ static const char rcsid[] _U_ = #include "interface.h" #include "addrtoname.h" #include "extract.h" +#include "tftp.h" /* op code to string mapping */ static struct tok op2str[] = { @@ -51,6 +51,7 @@ static struct tok op2str[] = { { DATA, "DATA" }, /* data packet */ { ACK, "ACK" }, /* acknowledgement */ { ERROR, "ERROR" }, /* error code */ + { OACK, "OACK" }, /* option acknowledgement */ { 0, NULL } }; @@ -97,6 +98,7 @@ tftp_print(register const u_char *bp, u_int length) case RRQ: case WRQ: + case OACK: /* * XXX Not all arpa/tftp.h's specify th_stuff as any * array; use address of th_block instead @@ -106,11 +108,15 @@ tftp_print(register const u_char *bp, u_int length) #else p = (u_char *)&tp->th_block; #endif - fputs(" \"", stdout); + putchar(' '); + /* Print filename or first option */ + if (opcode != OACK) + putchar('"'); i = fn_print(p, snapend); - putchar('"'); + if (opcode != OACK) + putchar('"'); - /* Print the mode and any options */ + /* Print the mode (RRQ and WRQ only) 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; @@ -134,7 +140,7 @@ tftp_print(register const u_char *bp, u_int length) case ERROR: /* Print error code string */ TCHECK(tp->th_code); - printf(" %s ", tok2str(err2str, "tftp-err-#%d \"", + printf(" %s \"", tok2str(err2str, "tftp-err-#%d \"", EXTRACT_16BITS(&tp->th_code))); /* Print error message string */ i = fn_print((const u_char *)tp->th_data, snapend); @@ -0,0 +1,82 @@ +/* @(#) $Header: /tcpdump/master/tcpdump/tftp.h,v 1.1 2007-09-14 01:02:07 guy Exp $ (LBL) */ +/* + * Copyright (c) 1983, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)tftp.h 8.1 (Berkeley) 6/2/93 + */ + +#ifndef _TFTP_H_ +#define _TFTP_H_ + +/* + * Trivial File Transfer Protocol (IEN-133) + */ +#define SEGSIZE 512 /* data segment size */ + +/* + * Packet types. + */ +#define RRQ 01 /* read request */ +#define WRQ 02 /* write request */ +#define DATA 03 /* data packet */ +#define ACK 04 /* acknowledgement */ +#define ERROR 05 /* error code */ +#define OACK 06 /* option acknowledgement */ + +struct tftphdr { + unsigned short th_opcode; /* packet type */ + union { + unsigned short tu_block; /* block # */ + unsigned short tu_code; /* error code */ + char tu_stuff[1]; /* request packet stuff */ + } th_u; + char th_data[1]; /* data or error string */ +}; + +#define th_block th_u.tu_block +#define th_code th_u.tu_code +#define th_stuff th_u.tu_stuff +#define th_msg th_data + +/* + * Error codes. + */ +#define EUNDEF 0 /* not defined */ +#define ENOTFOUND 1 /* file not found */ +#define EACCESS 2 /* access violation */ +#define ENOSPACE 3 /* disk full or allocation exceeded */ +#define EBADOP 4 /* illegal TFTP operation */ +#define EBADID 5 /* unknown transfer ID */ +#define EEXISTS 6 /* file already exists */ +#define ENOUSER 7 /* no such user */ + +#endif /* !_TFTP_H_ */ |