2 Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
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
13 Add IPv6 support. Patch by Karsten Keil.
15 Support systems with editline instead of readline.
17 Support long options in the server.
21 Unbreak -l -s in the server, which was broken in 0.47.
25 Add -L option to the server to run standalone without
26 detaching from the shell.
32 Minor portability improvements.
36 Add -l (literal) option to the client, to override the special
37 treatment of the colon (:) character as a hostname separator.
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.
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!)
58 Try to disable path MTU discovery for TFTP connections (it's
61 Add a hack to allow the admin to specify a range of local port
64 Fix local IP number handling on systems which present
65 IP_RECVDSTADDR in recvmsg().
69 Fix bug by which patterns of the form \U\1 weren't converted
78 Fix bug which would cause "r" remapping rules to be
83 Support Perl-style \U...\E and \L...\E, as well as allow
84 matching rules to be inverted (execute if rule *doesn't*
97 Fix a pathology where a client sending ACKs for the wrong
98 packet can prevent proper retransmission.
106 Add an option to control the maximum value of blksize
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.
127 Additional Solaris gcc compiler bug workarounds; these
128 actually make the code somewhat cleaner.
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
141 tftp -m binary -c get hostname:file
145 Better error messages; including the capability to send a
146 custom error message to the client when hitting an "a" rule in
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.
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.
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.)
186 Fix stupid one-liner bug which broke standalone mode (-l).
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.
207 Fix the configuration process so tftpd doesn't end up
208 depending on readline, which apparently could happen on some
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.
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!
231 Fixed Sorcerer's Apprentice bug in both the client and the
232 server. These bugs were inherited from the original BSD code.
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.
244 Correct memory overwrite bug in the tftp client when compiled
249 Even more portability improvements: FreeBSD and
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
257 Some source cleanups; change to autoconf 2.52.
259 Add support for readline command-line editing in tftp.
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.
276 Portability improvements. Now known to compile and run on
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
288 Log a message if memory allocation fails, instead of dying
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.
302 Support (almost) arbitrary filename remappings via regular
303 expression-based rulesets.
305 Added -v option for more verbose logging.
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
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.
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.
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.
342 Hacks to signal handling to avoid "zombie servers."
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
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
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
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.