2 Fix breakage on newer Linux when a single interface has
7 Add -P option to write a PID file. Patch by Ferenc Wagner.
9 Bounce the syslog socket in standalone mode, in case the
10 syslog daemon has been restarted. Patch by Ferenc Wagner.
14 Fix handling of block number wraparound after a successful
17 Fix a buffer overflow in option parsing.
21 Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
24 Implement the "rollover" option, for clients which want block
25 number to rollover to anything other than zero.
27 Correctly disable PMTU in standalone mode. Patch by Florian
32 Add IPv6 support. Patch by Karsten Keil.
34 Support systems with editline instead of readline.
36 Support long options in the server.
40 Unbreak -l -s in the server, which was broken in 0.47.
44 Add -L option to the server to run standalone without
45 detaching from the shell.
51 Minor portability improvements.
55 Add -l (literal) option to the client, to override the special
56 treatment of the colon (:) character as a hostname separator.
60 Allow the client to specify a range of local port numbers,
61 just like the server can.
63 Fix sending SIGHUP to update the regular expression table.
67 Fix double-free error on ^c in client.
69 Try to deal with clients that send TFTP requests to broadcasts
70 (apparently some recent Sun boxes do this instead of using the
71 address told by DHCP. Bad Sun! Bad Sun!)
77 Try to disable path MTU discovery for TFTP connections (it's
80 Add a hack to allow the admin to specify a range of local port
83 Fix local IP number handling on systems which present
84 IP_RECVDSTADDR in recvmsg().
88 Fix bug by which patterns of the form \U\1 weren't converted
97 Fix bug which would cause "r" remapping rules to be
102 Support Perl-style \U...\E and \L...\E, as well as allow
103 matching rules to be inverted (execute if rule *doesn't*
108 Add an RPM spec file.
116 Fix a pathology where a client sending ACKs for the wrong
117 packet can prevent proper retransmission.
125 Add an option to control the maximum value of blksize
128 Removed workaround for obsolete Cygwin problem.
130 Don't use getopt() -- the -c option doesn't work correctly
131 since it depends on the ordering of arguments and options. It
132 is now possible to do:
134 tftp -m binary hostname -c get filename
136 This was previous possible by doing:
138 tftp -m binary -c get hostname:filename
140 ... but it seemed that was counterintuitive to people.
142 Somewhat improved configure scripts.
146 Additional Solaris gcc compiler bug workarounds; these
147 actually make the code somewhat cleaner.
151 Even better error messages.
153 Work around a suspect Solaris gcc bug.
155 Configuration fix: readline needs termcap.
157 Support running the tftp client from the command line. For
160 tftp -m binary -c get hostname:file
164 Better error messages; including the capability to send a
165 custom error message to the client when hitting an "a" rule in
170 Put in a check to make sure xinetd (in particular) doesn't
171 pass us an IPv6 socket.
173 Fix some problems related to timeout negotiation.
175 Allow the user to set the default timeout speed.
179 (Hopefully) better timeout algorithm.
181 Add a "utimeout" option; like "timeout" but in microseconds.
183 Change the log level of client-side errors to LOG_WARNING.
185 autoconf portability improvements.
193 Now compiles and runs on Win32 systems using Cygwin
194 (http://www.cygwin.com/).
195 (<http://www.cygwin.com/>).
197 Fixed a bug which could cause a standalone server to exit with
198 a "recvfrom: Interrupted system call" log message if signals
199 arrive at a particularly inopportune moment.
201 Fix a macro substitution bug (thanks to Richard Nyberg.)
205 Fix stupid one-liner bug which broke standalone mode (-l).
209 Make the Digital Unix 4.0F platform work again. Thanks to
210 Alan Sundell for helping out with this platform!
212 Make the AIX 4.3 platform work again. Thanks to Josef Siemes
213 for helping out with this platform!
215 Allow replacement patterns to include the IP address of the
216 requesting host (\i).
218 Allow relying on Unix permissions rather than o+r magic if the
219 -p option is specified. As part of this, set all groups if
220 initgroups() is specified on the platform.
222 Clean up race conditions inherited from the BSD source base.
226 Fix the configuration process so tftpd doesn't end up
227 depending on readline, which apparently could happen on some
230 Make parallel builds (make -j) work correctly.
232 Improve parsing of the "connect" command in the tftp client.
234 Add a -V option to both tftp and tftpd to print the version
235 number on stdout and immediately exit.
237 Add a -v option to tftp to start out in verbose mode.
239 Rewrite the man pages using standard "man" troff macros.
241 Enable the (limited) use of readline on systems which don't
242 have readline/history.h.
244 Support compiling under MacOS X with fink (see
245 <http://fink.sourceforge.net/>). Thanks for Justin Hallett
246 and Eric Eslinger for their help in getting this working!
250 Fixed Sorcerer's Apprentice bug in both the client and the
251 server. These bugs were inherited from the original BSD code.
255 Fix bugs in both client and server dealing with block number
256 wraparound, usually manifesting themselves as failure to
257 handle files over 32 MB in size.
259 Officially make the client a part of the tftp-hpa project.
263 Correct memory overwrite bug in the tftp client when compiled
268 Even more portability improvements: FreeBSD and
271 Fix tsize option on systems on which off_t is "long long".
273 Support large files on systems which need _LARGE_FILE_BITS or
276 Some source cleanups; change to autoconf 2.52.
278 Add support for readline command-line editing in tftp.
282 Support running in standalone mode, without inetd.
284 Even more portability improvements. Now known to compile and
285 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of
286 success or failure on other modern systems always appreciated.
288 Clean and modernize some really ugly old code.
290 Fix a potential illegal memory access when running in "totally
291 insecure mode" - no -s, no directories listed.
295 Portability improvements. Now known to compile and run on
300 Fork before performing tcpwrappers check.
302 Don't rely on nonstandard bsd_signal() function, instead
303 require that the platform has sigaction(). This is 2001,
304 after all. This may resolve some potential portability
307 Log a message if memory allocation fails, instead of dying
310 Clean up the main dispatch loop.
312 Use <sysexits.h> for exit codes, if it exists.
314 Add support for debugging remapping rulefiles; if logging with
315 -vvv tftpd will log all rules actions.
317 Correct the error code issued by an "abort" rule.
321 Support (almost) arbitrary filename remappings via regular
322 expression-based rulesets.
324 Added -v option for more verbose logging.
329 Add support for tcpwrapper checking (/etc/hosts.allow;
330 /etc/hosts.deny) in tftpd.
332 Compile correctly on glibc 2.1.2.
334 Add -u option to specify the user id to run as (default
337 Operate in "daemon mode" as long as we keep getting requests.
338 This should speed up handling large amounts of requests at
339 once, as can happen when a client starts up, and avoids inetd
340 misconfiguration problems.
345 Correct massive lossage from 0.15: apparently 0.15 was based
346 on an out-of-date CVS repository, somehow.
348 Fix for ACKs in TFTP PUT; patch by Roger Venning.
353 If the operating system allows, try to obtain the local
354 address used for the request packet, and reply using the same
355 local IP address. Some embedded TFTP clients are (probably
356 incorrectly) picky about this.
361 Hacks to signal handling to avoid "zombie servers."
366 Added the non-standard option "blksize2". The "blksize"
367 option is limited in its usability, since TFTP is designed to
368 be implemented in a ROM, and ROM code might find it painful to
369 deal with packets that don't meet certain alignment
372 The "blksize2" option tells the server that the block size
373 must be a power of 2 to be usable to the client. The server
374 SHALL respond with a block size that is a power of two, up to
375 a maximum of 32768, or reject the option. Furthermore, the
376 server SHALL grant a block size that is no smaller than 512
377 bytes unless the client explicitly requested a smaller block
378 size. If the client request both options, the server MAY
379 accept one or the other, but not both. At some point I will
380 probably write up an IETF draft for this option.
383 General information on the tftp-hpa series:
385 The core software was taken from OpenBSD (CVS source as of
386 1999-09-21). I believe this was the most secure source base available
387 at the time I obtained this code, and it included support for the -s
390 The un-BSD-ized Makefiles and a lot of the configure macros were taken
391 from netkit-tftp-0.10 by David Holland; I also followed this example
392 and modernized the code style throughout.
394 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
395 option negotiation as well as the "blksize" and "tsize" option
396 support, although I made a fair amount of mostly stylistic changes to
399 Adding the -r option (disable a specific option), the "timeout"
400 option, converting to using autoconf for setup, and any additions
401 listed in the Changes list above, has all been my own code, as are any
402 bugs introduced in the merge.