svn commit: r183798 - in user/edwin/tftpd: libexec/tftpd usr.bin/tftp

Stanislav Sedov stas at FreeBSD.org
Mon Oct 13 23:16:05 UTC 2008


On Sun, 12 Oct 2008 10:10:42 +0000 (UTC)
Edwin Groothuis <edwin at FreeBSD.org> mentioned:

> Author: edwin
> Date: Sun Oct 12 10:10:42 2008
> New Revision: 183798
> URL: http://svn.freebsd.org/changeset/base/183798
> 
> Log:
>   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.

Great!
The old tftp serves was quite buggy in a number of places.

Just FYI, style(9) requies parenthesis around values of return.
Let me know if you'll need a review.

-- 
Stanislav Sedov
ST4096-RIPE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-user/attachments/20081013/218480d7/attachment.pgp


More information about the svn-src-user mailing list