Commit Graph

52 Commits

Author SHA1 Message Date
gavin
ae037afd15 Fix transfer statistics in the "send file" case - The conditional used
to print the stats were using an uninitialised variable. [1]

Fix trasnfer statistics in the "receive file" case - the statistics struct
was being cleared both before and after the initial connect to the remote
server.  As a result, the printed time and calculated bandwidth covers
the time to connect ad well as the time to transfer the file.  This may
not be ideal, but now at least matches the "send file" case.

Found by:	clang static analyser [1]
Reviewed by:	imp
2010-06-27 14:21:08 +00:00
gavin
8b5cecf84e Fix core dump when server fails to respond.
Reviewed by:	imp
2010-06-27 14:11:03 +00:00
gavin
994fa9362d These files are no longer required since r207607 2010-06-12 19:32:52 +00:00
imp
3f06f24240 Doh! Add another new file forgotten by the importer of edwin@'s tftp
improvements.

MFC after:	1 week
Pointy Hat: imp-o-rama...
2010-05-04 17:00:18 +00:00
imp
338b266e1a Go ahead and merge the work edwin@ on tftpd into the tree. It is a
lot better than what's in the tree now.  Edwin tested it at a prior
employer, but can't test it today.  I've found that it works a lot
better with the various uboot versions that I've used in my embedded
work.  Here's the pkg-descr from the port that describes the changes:

It all started when we got some new routers, which told me the
following when trying to upload configuration or download images
from it: The TFTP server doesn't support the blocksize option.

My curiousity was triggered, it took me some reading of RFCs and
other documentation to find out what was possible and what could
be done. Was plain TFTP very simple in its handshake, TFTP with
options was kind of messy because of its backwards capability: The
first packet returned could either be an acknowledgement of options,
or the first data packet.

Going through the source code of src/libexec/tftpd and going through
the code of src/usr.bin/tftp showed that there was a lot of duplicate
code, and the addition of options would only increase the amount
of duplicate code. After all, both the client and the server can
act as a sender and receiver.

At the end, it ended up with a nearly complete rewrite of the tftp
client and server. It has been tested against the following TFTP
clients and servers:

- Itself (yay!)
- The standard FreeBSD tftp client and server
- The Fedora Core 6 tftp client and server
- Cisco router tftp client
- Extreme Networks tftp client

It supports the following RFCs:

RFC1350 - THE TFTP PROTOCOL (REVISION 2)
RFC2347 - TFTP Option Extension
RFC2348 - TFTP Blocksize Option
RFC2349 - TFTP Timeout Interval and Transfer Size Options
RFC3617 - Uniform Resource Identifier (URI) Scheme and Applicability
          Statement for the Trivial File Transfer Protocol (TFTP)

It supports the following unofficial TFTP Options as described at
http://www.compuphase.com/tftp.htm:

blksize2 - Block size restricted to powers of 2, excluding protocol headers
rollover - Block counter roll-over (roll back to zero or to one)

From the tftp program point of view the following things are changed:

- New commands: "blocksize", "blocksize2", "rollover" and "options"
- Development features: "debug" and "packetdrop"

If you try this tftp/tftpd implementation, please let me know if
it works (or doesn't work) and against which implementaion so I can
get a list of confirmed working systems.

Author: Edwin Groothuis <edwin@FreeBSD.org>
2010-05-04 06:13:17 +00:00
gavin
8f4db7ad0c Fix return code in the case of successful file transfer, broken in
tftp.c 1.13

PR:		bin/117452
Submitted by:	Spencer Minear  minear securecomputing.com
Approved by:	ed (mentor)
MFC after:	2 weeks
2010-01-03 13:48:58 +00:00
delphij
c4910a5368 ANSIfy, plus constify interfaces where possible. 2008-10-13 23:10:19 +00:00
delphij
ce7f7a7323 Use strlcpy() instead of strncpy() when we want the string to be
NUL-terminated.
2008-10-13 22:50:38 +00:00
ru
cec1358ab6 Fix markup. 2007-11-07 07:56:57 +00:00
matteo
945cd1291e Set txrx_error to 1 when we reach abort. This makes the program correctly set the exit code.
The PR has further details on this.

PR:		bin/103206
Submitted by:	John Hickey <jjh-freebsd@daedalian.us>
MFC after:	3 days
2006-09-28 21:22:21 +00:00
stefanf
267cbf8d22 Use the new name H_SETSIZE instead of the old H_EVENT to set the history
size.

PR:	86355
2005-10-19 15:37:43 +00:00
stefanf
364138732b Use socklen_t where appropriate. 2005-08-05 09:58:49 +00:00
stefanf
03a2de3818 Fix most cases where the address of an int is passed to a function expecting a
socklen_t * argument.
2005-02-14 17:42:58 +00:00
ru
7f3c7f0d46 Sort sections. 2005-01-18 13:43:56 +00:00
ru
fb1d8b3724 Mechanically kill hard sentence breaks. 2004-07-02 22:22:35 +00:00
ru
4c01ec9500 Bumped the document date. 2004-05-19 09:54:14 +00:00
tjr
fef194d740 Fix BSS buffer overflow in makeargv(). 2003-10-12 00:27:55 +00:00
simon
7b927af0e1 tftp.1:
- Add the optional port argument to SYNOPSIS.
main.c:
- Sync usage with the manual page.

Approved by:	trhodes (main.c part)
Obtained from:	OpenBSD (jmc)
MFC after:	2 weeks
2003-10-01 21:01:14 +00:00
simon
9e88fd273d Make the description of the connect, get, and put commands clearer.
Reported by:	Gary W. Swearingen <underway@comcast.net>
Submitted by:	Jim Brown <jpb@sixshooter.v6.thrupoint.net> (original version)
Reviewed by:	ru
PR:		docs/36459
MFC after:	3 weeks
2003-09-13 23:34:34 +00:00
jon
1718e1586d fix reverse logic in "connect" command that cause port specifications to be ignored.
MFC after:	1 week
2003-03-25 02:33:35 +00:00
ru
b67068895d mdoc(7) police: markup polishing.
Approved by:	re
2002-11-26 17:33:37 +00:00
ru
4898ea0542 mdoc(7) police: markup nits. 2002-05-30 06:18:53 +00:00
bsd
7fd0cc174c To perform even basic error checking, one must have an exit code that
indicates that not everything worked as expected.  Exit non-zero if we
timed out while transmitting or receiving a file or if the file did
not exist, etc.

MFC After:	3 days (re@ willing)
2002-05-12 01:47:50 +00:00
ume
64ac411ccb Backout copyright notice I broke by my previous commit. 2002-04-26 12:16:34 +00:00
charnier
ad8a79e6a5 Use `The .Nm utility' 2002-04-20 12:18:28 +00:00
dwmalone
9504d77e9c Add some constness to make this WARNS clean again. 2002-04-13 18:38:16 +00:00
ume
4f51ffc3fe IPv6 support for tftp/tftpd.
Obtained from:	KAME
MFC after:	2 weeks
2002-04-11 17:14:22 +00:00
dwmalone
80fda637a4 Clean up vendor ID and FBSDID.
We now seem to include <arpa/inet.h> to get ntoh*.
2002-03-30 14:18:15 +00:00
imp
0b20191705 remove __P 2002-03-22 01:42:45 +00:00
dwmalone
316f120601 1) Move FreeBSD ID below vendor ID and don't compile vendor ID.
2) Cast some numbers we know to be positive to size_t before we MIN them
   with the result of a sizeof.
3) Compare result of inet_addr to INADDR_NONE, not -1.
2002-02-27 15:22:12 +00:00
markm
31d81e4fbc Remove NO_WERRORs and WARNS=n's. To be revisited after GCC3. 2002-02-08 23:07:37 +00:00
guido
ef47e8e61b Argh...argv->argc 2002-01-04 13:46:57 +00:00
guido
f43a533e3e Fix the coredump that occurs when, from the tfpt prompt, a 'c' command is
issued without an argument.
2002-01-04 13:42:14 +00:00
markm
1aabf9d8de WARNS=2 fixes. NO_WERROR set as there are some hard-to-fix
signed/unsigned comparisons. Use __FBSDID().
2001-12-11 23:43:15 +00:00
bde
cd74f31039 Fixed most style bugs in previous commit. 2001-10-19 12:27:26 +00:00
bde
5667be14fe Fixed missing DPADD and misplaced $FreeBSD$ in previous commit. 2001-10-19 12:15:56 +00:00
mdodd
7fc1eccefc Add libedit support to tftp. 2001-10-19 00:23:07 +00:00
dd
911ca14c87 Remove whitespace at EOL. 2001-07-15 08:06:20 +00:00
ru
36f138439b mdoc(7) police: removed HISTORY info from the .Os call. 2001-07-10 14:16:33 +00:00
dd
eaa6ee03b8 mdoc(7) police: remove extraneous .Pp before and/or after .Sh. 2001-07-09 09:54:33 +00:00
asmodai
09632ab08c Fix tftpd and tftp to support file transfers of over 65535 blocks
(about 31 MB - 32 MB).

Submitted (partially)
	by: Pascal Hofstee <daeron@wit401305.student.utwente.nl>
2001-02-02 10:53:02 +00:00
ru
0d1334ca0c mdoc(7) police: use the new features of the Nm macro. 2000-11-20 19:21:22 +00:00
peter
3b842d34e8 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nik
6578739ddb Add $Id$, to make it simpler for members of the translation teams to
track.

The $Id$ line is normally at the bottom of the main comment block in the
man page, separated from the rest of the manpage by an empty comment,
like so;

     .\"    $Id$
     .\"

If the immediately preceding comment is a @(#) format ID marker than the
the $Id$ will line up underneath it with no intervening blank lines.
Otherwise, an additional blank line is inserted.

Approved by:            bde
1999-07-12 20:24:20 +00:00
dg
49185b19a8 Rename a function name so that it doesn't conflict with a future system call. 1998-10-30 16:17:50 +00:00
imp
8c96be00ef Don't assume that hp->h_lenght == 4. Be conservative in its use.
Submitted by:	 J. Assange a long time ago.
1998-06-09 04:31:02 +00:00
jb
0c290fd53e Add #include <string.h> to get prototypes. 1998-02-20 04:33:03 +00:00
charnier
1cc1919e6e Use err(3). 100 -> MAXHOSTNAMELEN from OpenBSD.
Obtained from: OpenBSD
1997-08-14 06:47:41 +00:00
bde
6ed5ccfb8f Don't use __dead or __pure in user code. They were obfuscations
for gcc >= 2.5 and no-ops for gcc >= 2.6.  Converted to use __dead2
or __pure2 where it wasn't already done, except in math.h where use
of __pure was mostly wrong.
1996-09-14 03:00:32 +00:00
joerg
10ec2134d5 Kill the (hopefully) last occurance of gets(3) in the base source tree. 1995-12-27 23:23:43 +00:00