1.0.1 LGPL (GNU Lesser General Public License)    
2.9/5 16
WvTftp is the world's fastest TFTP server.





WvTftp is the world's fastest TFTP server. No, really, it is. The project was originally developed for the NetIntegrator, but is also useful on its own, and so is available for free under the terms of the GNU LesserGeneralPublicLicense, or LGPL.

Compiling and Installing WvTFTPd

You need to have a recent version of the WvStreams library and header files
installed on your system to use WvTFTPd. We recommend version 4.0 or higher.
You can download WvStreams from


You also require the "pkg-config" program, unless you want to modify the
Makefile and insert the appropriate paths.

WvTFTPd installs itself into /sbin and the man page into
/man, where is the same prefix to which WvStreams is
installed (typically "/usr" or "/usr/local"). Again, edit the Makefile if
you wish to change this. Eventually WvTFTPd might have a configure script
to do this.

To compile WvTFTPd, untar the package to somewhere like /usr/src and type
"make". If there were no errors, type "make install". Root privileges are,
of course, required to install the program.

Configuring WvTFTPd

The configuration file for WvTFTPd is /etc/wvtftpd.conf. WvTFTPd will
run fine without any special configuration, but in order to take
advantage of some of its special features, you'll need to create a
configuration file.

The first section of the configuration file might look like this (default
values are shown):

Base dir = /tftpboot/
Port = 69
Min Timeout = 100
Max Timeout = 5000
Max Timeout Count = 80
Total Timeout Seconds = 0
Prefetch = 3
Readonly = 1
Default File =
Strip Prefix =
Overwrite existing file = 0
Client directory = 0
Create client directory = 0

"Base dir" is the default directory. If a client requests a file
without specifying the full path, the base dir is prepended.

"Port" specifies the port WvTFTP should use, if you don't want to use the
standard, 69, for some reason.

"Min Timeout", "Max Timeout", and "Max Timeout Count" all specify values for
WvTFTP's exponential timeout. This multiplier starts at 1. WvTFTP will
retransmit a packet if it does not get an answer in the average RTT thus far
times the square of the current multiplier or the "Min Timeout" value,
whichever is greater. The multipler is increased by one for each timeout.
You can also specify a "Max Timeout" as the maximum waiting time until

You can also specify a timeout in seconds which will always specify the time
to retransmission; for example, you can configure WvTFTP to time out every. This
overrides exponential backoff. If the number of timeouts reaches "Max Timeout Count",
the transfer is aborted.

If "Total Timeout Seconds" is specified and not zero, the transfer will be
aborted if the specified number of seconds elapse from the time of the
reception of the last packet, regardless of the number of retries.

"Prefetch" specifies the amount of negative latency, that is, how many
packets are sent out at a time.

"Readonly" determines if TFTP writes are allowed. The default is 1 (writes
not allowed).

"Default File" is the file sent to a client if the requested file is

The path given as "Strip Prefix" is automatically stripped from the
beginning of any client requests. This is done before adding "base dir".

"Overwrite existing file" specifies if existing files should be overwritten
when the client uploads a file with the same name. If the file exists and
this is set to 0 then the upload will fail. The default is to not overwrite
existing files (0).

"Client directory" specifies if the client IP address should be appended to
the "Base dir" when a file is uploaded. This will cause clients to upload
into their own directory. If the client directory does not exist and the
"Create client directory" directive is set to false (0) then the upload will
fail. The default is to not append the client IP address to the "Base dir"
when a file is uploaded (0).

"Create client directory" will create the client's directory when the client
uploads a file (assuming "Client Directory" is set to 1; otherwise, this
option does nothing). The directory is a subdirectory of "Base dir" and is
the IP address of the client (e.g /tftpboot/ The default is to
not create the client directory (0).

The second section is [TFTP/Aliases]. It contains a list of filename
overrides. You can specify an override for a particular IP address and also
default overrides for IPs not explicitly listed. Per-client filename
overrides look like "IPAddress/filename = clientnewfilename". Default
overrides look like "default/filename = newfilename".

For example:

default/image = image2_4.img = image2_5b.img

In this instance, if a user at attempted to download the
file "image", the file "image2_5b.img" would actually be sent. Users
from other machines will get the file "image2_4.img" when they request

You can also specify one-time aliases in the [TFTP/Alias Once] section. The
format is identical to [TFTP/Aliases]; you may have global or per-client
one-time aliases. When a client asks for a file, WvTftp checks the
[TFTP/Alias Once] section first. If a match is made, this alias is used,
and when the download finishes the alias is removed from the section
(regardless of whether the alias is global or client-specific). Subsequent
matching requests will then be checked against [TFTP/Aliases] as normal.
Note that the [TFTP/Alias Once] entry is only removed after a successful
download; the entry will be left alone if a download fails.

The last sections are [TFTP/Registered Clients] and [TFTP/New Clients].
[TFTP/Registered Clients] holds a list of client IP addresses ("
= 1") that are known to the server. When a client attempts to connect, if
its address is not in [TFTP/Registered Clients], it is added to
[TFTP/New Clients]. This has no function inside of WvTFTP itself but might
be useful in some situations (such as in our Net Integrators).

Note that UniConf, the configuration system that WvTFTPd uses, may rearrange
your config file such that all your settings, including [Aliases] and [New
Clients] and such, will be under the [TFTP] section. Thus, your config may
end up looking like this:

Port = 69
Aliases/default/image = image2_4.img
New Clients/ = 1

This format and the above examples are completely interchangeable in
UniConf, but UniConf prefers the latter and will rearrange variables thusly.
The above examples use separate sections just for clarity.
Last updated on October 25th, 2008

0 User reviews so far.