Define _XPG4_2 on Solaris
[tftp-hpa.git] / README
blobd4c0daaf659f1294b9f97d837241f1f748955f9c
1 This is tftp-hpa-0.21; this version was put out by H. Peter Anvin
2 <hpa@zytor.com>.
4 The latest version of this collection can be found at:
6     ftp://ftp.kernel.org/pub/software/network/tftp/
8 This software can be discussed on the SYSLINUX mailing list.  To
9 subscribe, send a message containing the word "subscribe" in the body
10 to <syslinux-request@linux.kernel.org>.
12 Please note that my main focus in this work is the tftpd
13 server. Although a tftp client is included, it is by and large the
14 stock OpenBSD version, with a small handful of portability
15 improvements.
18 ===> IMPORTANT: SEE THE FILE "README.security" FOR IMPORTANT SECURITY
19 ===> CHANGES ENACTED IN VERSION 0.17!!!!!!!!!
21 Changes in 0.22:
22         Even more portability improvements: FreeBSD and
23         Tru64/Digital Unix.
25         Fix tsize option on systems on which off_t is "long long".
27         Support large files on systems which need _LARGE_FILE_BITS or
28         similar.
30         Some source cleanups; change to autoconf 2.52.
33 Changes in 0.21:
34         Support running in standalone mode, without inetd.
36         Even more portability improvements.  Now known to compile and
37         run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
38         success or failure on other modern systems always appreciated.
40         Clean and modernize some really ugly old code.
42         Fix a potential illegal memory access when running in "totally
43         insecure mode" - no -s, no directories listed.
46 Changes in 0.20:
47         Portability improvements.  Now known to compile and run on
48         Solaris 8.
51 Changes in 0.19:
52         Fork before performing tcpwrappers check.
54         Don't rely on nonstandard bsd_signal() function, instead
55         require that the platform has sigaction().  This is 2001,
56         after all.  This may resolve some potential portability
57         problems.
59         Log a message if memory allocation fails, instead of dying
60         silently.
62         Clean up the main dispatch loop.
64         Use <sysexits.h> for exit codes, if it exists.
66         Add support for debugging remapping rulefiles; if logging with
67         -vvv tftpd will log all rules actions.
69         Correct the error code issued by an "abort" rule.
72 Changes in 0.18:
73         Support (almost) arbitrary filename remappings via regular
74         expression-based rulesets.
76         Added -v option for more verbose logging.
79 Changes in 0.17:
81         Add support for tcpwrapper checking (/etc/hosts.allow;
82         /etc/hosts.deny) in tftpd.
84         Compile correctly on glibc 2.1.2.
86         Add -u option to specify the user id to run as (default
87         "nobody".)
89         Operate in "daemon mode" as long as we keep getting requests.
90         This should speed up handling large amounts of requests at
91         once, as can happen when a client starts up, and avoids inetd
92         misconfiguration problems.
93         
95 Changes in 0.16:
97         Correct massive lossage from 0.15: apparently 0.15 was based
98         on an out-of-date CVS repository, somehow.
100         Fix for ACKs in TFTP PUT; patch by Roger Venning.
103 Changes in 0.15:
105         If the operating system allows, try to obtain the local
106         address used for the request packet, and reply using the same
107         local IP address.  Some embedded TFTP clients are (probably
108         incorrectly) picky about this.
111 Changes in 0.14:
113         Hacks to signal handling to avoid "zombie servers."
116 Changes in 0.13:
118         Added the non-standard option "blksize2".  The "blksize"
119         option is limited in its usability, since TFTP is designed to
120         be implemented in a ROM, and ROM code might find it painful to
121         deal with packets that don't meet certain alignment
122         restrictions.
124         The "blksize2" option tells the server that the block size
125         must be a power of 2 to be usable to the client.  The server
126         SHALL respond with a block size that is a power of two, up to
127         a maximum of 32768, or reject the option.  Furthermore, the
128         server SHALL grant a block size that is no smaller than 512
129         bytes unless the client explicitly requested a smaller block
130         size.  If the client request both options, the server MAY
131         accept one or the other, but not both.  At some point I will
132         probably write up an IETF draft for this option.
135 General information on the tftp-hpa series:
137 This is a conglomerate of a number of versions of the BSD TFTP code,
138 ported to Linux, although it should work on mostly any POSIX-compliant
139 OS with sockets.  You may have to use GNU make to build it.
141 The core software was taken from OpenBSD (CVS source as of
142 1999-09-21).  I believe this was the most secure source base available
143 at the time I obtained this code, and it included support for the -s
144 and -c options.
146 The un-BSD-ized Makefiles and a lot of the configure macros were taken
147 from netkit-tftp-0.10 by David Holland; I also followed this example
148 and modernized the code style throughout.
150 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
151 option negotiation as well as the "blksize" and "tsize" option
152 support, although I made a fair amount of mostly stylistic changes to
153 their code.
155 Adding the -r option (disable a specific option), the "timeout"
156 option, converting to using autoconf for setup, and any additions
157 listed in the Changes list above, has all been my own code, as are any
158 bugs introduced in the merge.