tftpd.8: we're no longer limited to IPv4
[tftp-hpa.git] / CHANGES
blobc74fd95f0314542b535460d865d9bbead0dca0f9
1 Changes in 5.0:
2         Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
3         AI_CANONNAME.
5         Implement the "rollover" option, for clients which want block
6         number to rollover to anything other than zero.
8         Correctly disable PMTU in standalone mode.  Patch by Florian
9         Lohoff.
12 Changes in 0.49:
13         Add IPv6 support.  Patch by Karsten Keil.
15         Support systems with editline instead of readline.
17         Support long options in the server.
20 Changes in 0.48:
21         Unbreak -l -s in the server, which was broken in 0.47.
24 Changes in 0.47:
25         Add -L option to the server to run standalone without
26         detaching from the shell.
28         Parallel make fix.
31 Changes in 0.46:
32         Minor portability improvements.
35 Changes in 0.45:
36         Add -l (literal) option to the client, to override the special
37         treatment of the colon (:) character as a hostname separator.
40 Changes in 0.44:
41         Allow the client to specify a range of local port numbers,
42         just like the server can.
44         Fix sending SIGHUP to update the regular expression table.
47 Changes in 0.43:
48         Fix double-free error on ^c in client.
50         Try to deal with clients that send TFTP requests to broadcasts
51         (apparently some recent Sun boxes do this instead of using the
52         address told by DHCP.  Bad Sun!  Bad Sun!)
54         Portability fixes.
57 Changes in 0.42:
58         Try to disable path MTU discovery for TFTP connections (it's
59         useless anyway.)
61         Add a hack to allow the admin to specify a range of local port
62         numbers to use.
64         Fix local IP number handling on systems which present
65         IP_RECVDSTADDR in recvmsg().
68 Changes in 0.41:
69         Fix bug by which patterns of the form \U\1 weren't converted
70         correctly.
73 Changes in 0.40.1:
74         Solaris build fix.
77 Changes in 0.40:
78         Fix bug which would cause "r" remapping rules to be
79         incorrectly rejected.
82 Changes in 0.39:
83         Support Perl-style \U...\E and \L...\E, as well as allow
84         matching rules to be inverted (execute if rule *doesn't*
85         match.)
87         Fix a timeout bug.
89         Add an RPM spec file.
92 Changes in 0.38:
93         Portability fixes.
96 Changes in 0.37:
97         Fix a pathology where a client sending ACKs for the wrong
98         packet can prevent proper retransmission.
101 Changes in 0.36:
102         Portability fixes.
105 Changes in 0.35:
106         Add an option to control the maximum value of blksize
107         negotiated.
109         Removed workaround for obsolete Cygwin problem.
111         Don't use getopt() -- the -c option doesn't work correctly
112         since it depends on the ordering of arguments and options.  It
113         is now possible to do:
115         tftp -m binary hostname -c get filename
117         This was previous possible by doing:
119         tftp -m binary -c get hostname:filename
121         ... but it seemed that was counterintuitive to people.
123         Somewhat improved configure scripts.
126 Changes in 0.34:
127         Additional Solaris gcc compiler bug workarounds; these
128         actually make the code somewhat cleaner.
129         
131 Changes in 0.33:
132         Even better error messages.
134         Work around a suspect Solaris gcc bug.
136         Configuration fix: readline needs termcap.
138         Support running the tftp client from the command line.  For
139         example:
141                 tftp -m binary -c get hostname:file
144 Changes in 0.32:
145         Better error messages; including the capability to send a
146         custom error message to the client when hitting an "a" rule in
147         a remapping table.
150 Changes in 0.31:
151         Put in a check to make sure xinetd (in particular) doesn't
152         pass us an IPv6 socket.
154         Fix some problems related to timeout negotiation.
156         Allow the user to set the default timeout speed.
159 Changes in 0.30:
160         (Hopefully) better timeout algorithm.
162         Add a "utimeout" option; like "timeout" but in microseconds.
164         Change the log level of client-side errors to LOG_WARNING.
166         autoconf portability improvements.
168         Minor bugfixes.
171 Changes in 0.29:
172         Posixly correctness.
174         Now compiles and runs on Win32 systems using Cygwin
175         (http://www.cygwin.com/).
176         (<http://www.cygwin.com/>).
178         Fixed a bug which could cause a standalone server to exit with
179         a "recvfrom: Interrupted system call" log message if signals
180         arrive at a particularly inopportune moment.
182         Fix a macro substitution bug (thanks to Richard Nyberg.)
185 Changes in 0.28:
186         Fix stupid one-liner bug which broke standalone mode (-l).
189 Changes in 0.27:
190         Make the Digital Unix 4.0F platform work again.  Thanks to
191         Alan Sundell for helping out with this platform!
193         Make the AIX 4.3 platform work again.  Thanks to Josef Siemes
194         for helping out with this platform!
196         Allow replacement patterns to include the IP address of the
197         requesting host (\i).
199         Allow relying on Unix permissions rather than o+r magic if the
200         -p option is specified.  As part of this, set all groups if
201         initgroups() is specified on the platform.
203         Clean up race conditions inherited from the BSD source base.
206 Changes in 0.26:
207         Fix the configuration process so tftpd doesn't end up
208         depending on readline, which apparently could happen on some
209         platforms before.
211         Make parallel builds (make -j) work correctly.
213         Improve parsing of the "connect" command in the tftp client.
215         Add a -V option to both tftp and tftpd to print the version
216         number on stdout and immediately exit.
218         Add a -v option to tftp to start out in verbose mode.
219         
220         Rewrite the man pages using standard "man" troff macros.
222         Enable the (limited) use of readline on systems which don't
223         have readline/history.h.
225         Support compiling under MacOS X with fink (see
226         <http://fink.sourceforge.net/>).  Thanks for Justin Hallett
227         and Eric Eslinger for their help in getting this working!
230 Changes in 0.25:
231         Fixed Sorcerer's Apprentice bug in both the client and the
232         server.  These bugs were inherited from the original BSD code.
235 Changes in 0.24:
236         Fix bugs in both client and server dealing with block number
237         wraparound, usually manifesting themselves as failure to
238         handle files over 32 MB in size.
240         Officially make the client a part of the tftp-hpa project.
243 Changes in 0.23:
244         Correct memory overwrite bug in the tftp client when compiled
245         with readline.
248 Changes in 0.22:
249         Even more portability improvements: FreeBSD and
250         Tru64/Digital Unix.
252         Fix tsize option on systems on which off_t is "long long".
254         Support large files on systems which need _LARGE_FILE_BITS or
255         similar.
257         Some source cleanups; change to autoconf 2.52.
259         Add support for readline command-line editing in tftp.
262 Changes in 0.21:
263         Support running in standalone mode, without inetd.
265         Even more portability improvements.  Now known to compile and
266         run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
267         success or failure on other modern systems always appreciated.
269         Clean and modernize some really ugly old code.
271         Fix a potential illegal memory access when running in "totally
272         insecure mode" - no -s, no directories listed.
275 Changes in 0.20:
276         Portability improvements.  Now known to compile and run on
277         Solaris 8.
280 Changes in 0.19:
281         Fork before performing tcpwrappers check.
283         Don't rely on nonstandard bsd_signal() function, instead
284         require that the platform has sigaction().  This is 2001,
285         after all.  This may resolve some potential portability
286         problems.
288         Log a message if memory allocation fails, instead of dying
289         silently.
291         Clean up the main dispatch loop.
293         Use <sysexits.h> for exit codes, if it exists.
295         Add support for debugging remapping rulefiles; if logging with
296         -vvv tftpd will log all rules actions.
298         Correct the error code issued by an "abort" rule.
301 Changes in 0.18:
302         Support (almost) arbitrary filename remappings via regular
303         expression-based rulesets.
305         Added -v option for more verbose logging.
308 Changes in 0.17:
310         Add support for tcpwrapper checking (/etc/hosts.allow;
311         /etc/hosts.deny) in tftpd.
313         Compile correctly on glibc 2.1.2.
315         Add -u option to specify the user id to run as (default
316         "nobody".)
318         Operate in "daemon mode" as long as we keep getting requests.
319         This should speed up handling large amounts of requests at
320         once, as can happen when a client starts up, and avoids inetd
321         misconfiguration problems.
322         
324 Changes in 0.16:
326         Correct massive lossage from 0.15: apparently 0.15 was based
327         on an out-of-date CVS repository, somehow.
329         Fix for ACKs in TFTP PUT; patch by Roger Venning.
332 Changes in 0.15:
334         If the operating system allows, try to obtain the local
335         address used for the request packet, and reply using the same
336         local IP address.  Some embedded TFTP clients are (probably
337         incorrectly) picky about this.
340 Changes in 0.14:
342         Hacks to signal handling to avoid "zombie servers."
345 Changes in 0.13:
347         Added the non-standard option "blksize2".  The "blksize"
348         option is limited in its usability, since TFTP is designed to
349         be implemented in a ROM, and ROM code might find it painful to
350         deal with packets that don't meet certain alignment
351         restrictions.
353         The "blksize2" option tells the server that the block size
354         must be a power of 2 to be usable to the client.  The server
355         SHALL respond with a block size that is a power of two, up to
356         a maximum of 32768, or reject the option.  Furthermore, the
357         server SHALL grant a block size that is no smaller than 512
358         bytes unless the client explicitly requested a smaller block
359         size.  If the client request both options, the server MAY
360         accept one or the other, but not both.  At some point I will
361         probably write up an IETF draft for this option.
364 General information on the tftp-hpa series:
366 The core software was taken from OpenBSD (CVS source as of
367 1999-09-21).  I believe this was the most secure source base available
368 at the time I obtained this code, and it included support for the -s
369 and -c options.
371 The un-BSD-ized Makefiles and a lot of the configure macros were taken
372 from netkit-tftp-0.10 by David Holland; I also followed this example
373 and modernized the code style throughout.
375 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
376 option negotiation as well as the "blksize" and "tsize" option
377 support, although I made a fair amount of mostly stylistic changes to
378 their code.
380 Adding the -r option (disable a specific option), the "timeout"
381 option, converting to using autoconf for setup, and any additions
382 listed in the Changes list above, has all been my own code, as are any
383 bugs introduced in the merge.