]> git.ipfire.org Git - thirdparty/dhcp.git/blame - RELNOTES
remove these from the mainline.
[thirdparty/dhcp.git] / RELNOTES
CommitLineData
da411127 1 Internet Software Consortium DHCP Distribution
0596b051
TL
2 Version 3, Release Candidate 4
3 April 30, 2001
72c7bd79
TL
4
5 Release Notes
6
74f45f96
TL
7This is a development snapshot of Version 3 of the Internet Software
8Consortium DHCP Distribution.
72c7bd79 9
da411127 10 NEW FEATURES
16449d9c 11
6d779c72
TL
12Version 3 of the ISC DHCP Distribution includes the following features
13that are new since version 2.0:
29d5553a 14
da411127
TL
15 - DHCP Failover Protocol support
16 - OMAPI, an API for accessing and modifying the DHCP server and
17 client state.
18 - Conditional behaviour
19 - Storing arbitrary information on leases
20 - Address pools with access control
21 - Client classing
22 - Address allocation restriction by class
23 - Relay agent information option support
24 - Dynamic DNS updates
25 - Many bug fixes, performance enhancements, and minor new DHCP
26 protocol features.
72c7bd79 27
6d779c72
TL
28This release has been beta tested quite thorougly, and we think it is
29substantially more robust at this time than 2.0pl5. The release
30candidate is expected to be free of serious bugs, but it's called a
31release candidate because we want people to try it and find any last
32real problems before we call it done. We do not expect to add
33anything other than documentation and any remaining bug fixes to the
343.0 release.
35
36The 3.0 Release Candidate 1 lease file is not backwards compatible
f67f6c4a
TL
37with the 3.0 Beta 1 lease file, so if you have to go back, you will
38have to convert your lease files back to the 3.0 Beta 1 format - if
87784777 39you try to run a 3.0 Beta 1 server on a 3.0 lease file, it will
6d779c72
TL
40cheerfully delete all your leases.
41
42If you are running 3.0 beta 1 and are doing dynamic DNS updates, the
43lease file is no longer forward-compatible to 3.0 final. A script
44has been provided to convert 3.0b1 lease files. This is in
45contrib/3.0b1-lease-convert.
4ff4053b 46
ca4606b5
TL
47For information on how to install, configure and run this software,
48as well as how to find documentation and report bugs, please consult
49the README file.
50
da411127
TL
51The Dynamic DNS Update support is a descendent of an implementation
52done by Lans Carstensen and Brian Dols at Rose-Hulman Institute of
de57e64b
TL
53Technology, Jim Watt at Applied Biosystems, Irina Goble at Integrated
54Measurement Systems, Igor Sharfmesser at Kazakh Telecom, and Brian
55Murrell at BC Tel Advanced Communications. I'd like to express my
56thanks to all of these good people here, both for working on the code
57and for prodding me into improving it.
58
0596b051
TL
59 Changes since 3.0 Release Candidate 3
60
61- Do lease billing on startup in a way that I *think* will finally do
62 the billing correctly - the previous method could overbill as a
63 result of duplicate leases.
64
65- Document OMAPI server objects.
66
892fe689
TL
67 Changes since 3.0 Release Candidate 2 Patchlevel 1
68
69- Fix some problems in the DDNS update code. Thanks to Albert
70 Herranz for figuring out the main problem.
71
72- Fix some reference counting errors on host entries that were causing
73 core dumps.
74
75- Fix a byte-swap bug in the token ring code, thanks to Jochen
76 Friedrich.
77
78- Fix a bug in lease billing, thanks to Jonas Bulow.
79
80 Changes since 3.0 Release Candidate 2
81
82- Change the conditions under which a DHCPRELEASE is actually
83 committed to be consistent with lease binding states rather than
84 using the lease end time. THis may fix some problems with the
85 billing class code.
86
87- Fix a bug where lease updates would fail on Digital Unix (and maybe
88 others) because malloc was called with a size of zero.
89
90- Fix a core dump that happens when the DHCP server can't create its
91 trace file.
92
79ea3de8 93 Changes since 3.0 Release Candidate 1 Patchlevel 1
87784777 94
79ea3de8
TL
95- Fix the dhcp_failover_put_message to not attempt to allocate a
96 zero-length buffer. Some versions of malloc() fail if you try to
97 allocate a zero-length buffer, and this was causing problems on,
98 e.g., Digital Unix.
99
100- Fix a case where the failover code was printing an error message
101 when no error had occurred.
102
103- Fix a problem where when a server went down and back up again, the
104 peer would not see a state transition and so would stay in the
105 non-communicating state.
106
107- Be smart about going into recover_wait.
108
109- Fix a problem in the failover implementation where peers would fail
110 to come into sync if interrupted in the RECOVER state. This could
111 have been the cause of some problems people have reported recently.
112
113- Fix a problem with billing classes where they would not be unbilled
114 when the client lease expired.
115
116- If select fails, figure out which descriptor is bad, and cut it out
117 of the I/O loop. This prevents a potentially nasty spin. I
118 haven't heard any report it in a while, but it came up consistently
119 in testing.
120
121- Fix a bug in the relay agent where if you specified interfaces on
122 the command line, it would fail.
123
124- Fix a couple of small bugs in the omapi connection object (no known
125 user impact).
126
127- Add the missing 3.0 Beta 1 lease conversion script.
128
129- Read dhcp client script hooks if they exist, rather than only if
130 they're executable.
131
132 Changes since 3.0 Release Candidate 1
87784777
TL
133
134- Fix a memory smash that happens when fixed-address leases are used.
135 ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
136 UPGRADE IMMEDIATELY. This has been a long-standing bug - thanks to
137 Alvise Nobile for discovering it and helping me to find it!
138
79ea3de8
TL
139- Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
140 Transmeta.
141
87784777
TL
142- There is a known problem with the DHCP server doing failover on
143 Compaq Alpha systems. This patchlevel is not a release candidate
144 because of this bug. The bug should be straightforward to fix, so
145 a new release candidate is expected shortly.
146
147- There is a known problem in the DDNS update code that is probably a
148 bug, and is not, as far as we know, fixed in this patchlevel.
149
6d779c72
TL
150 Changes since 3.0 Beta 2 Patchlevel 24
151
152- Went over problematic failover state transitions and made them all
153 work, so that failover should now much less fragile.
154
155- Add some dhcpctl and omapi documentation
156
157- Fix compile errors when compiling with unusual predefines.
158
159- Make Token Ring work on Linux 2.4
160
161- Fix the Digital Unix BPF_WORDALIGN bug.
162
163- Fix some dhcp client documentation errors.
164
165- Update some parts of the README file.
166
167- Support GCC on SCO.
168
de57e64b
TL
169 Changes since 3.0 Beta 2 Patchlevel 23
170
171- Fix a bug in the DNS update code where a status code was not being
172 checked. This may have been causing core dumps.
173
174- When parsing the lease file, if a lease declaration includes a
175 billing class statement, and the lease already has a billing class,
176 unbill the old class.
177
178- When processing failover transactions, where acks will be deferred,
179 process the state transition immediately.
180
181- Don't try to use the new SIOCGIFCONF buffer size detection code on
182 Linux 2.0, which doesn't provide this functionality.
183
184- Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
185
186- Fix a problem in using the which command in the configure script.
187
188- Fix a parse error in the client when setting up an omapi listener.
189
190- Document the -n and -g flags to the client.
191
192- Make sure there is always a stdin and stdout on startup. This
193 prevents shell scripts from accidentally writing error messages into
194 configuration files that happen to be opened as stderr.
195
196- If an interface is removed, the client will now notice that it is
197 gone rather than spinning. This has only been tested on NetBSD.
198
199- The client will attempt to get an address even if it can't create a
200 lease file.
201
202- Don't overwrite tracefiles.
203
204- Fix some memory allocation bugs in failover.
2aa36519 205
140158d3
TL
206 Changes since 3.0 Beta 2 Patchlevel 22
207
208- Apply some patches suggested by Cyrille Lefevre, who is maintaining
209 the FreeBSD ISC DHCP Distribution port.
210
211- Fix a core dump in DHCPRELEASE.
212
3a395e60
TL
213 Changes since 3.0 Beta 2 Patchlevel 21
214
215- This time for sure: fix the spin described in the changes for pl20.
216
fc74dd0c
TL
217 Changes since 3.0 Beta 2 Patchlevel 20
218
219- Fix a problem with Linux detecting large numbers of interfaces (Ben)
220
221- Fix a memory smash in the quotify code, which was introduced in
222 pl19.
223
224- Actually fix the spin described in the changes for pl20. The
225 previous fix only partially fixed the problem - enough to get it
226 past the regression test.
227
ed5ee591
TL
228 Changes since 3.0 Beta 2 Patchlevel 19
229
230- Fix a bug that could cause the server to abort if compiled with
231 POINTER_DEBUG enabled.
232
233- Fix a bug that could cause the server to spin when responding to a
234 DHCPREQUEST.
235
236- Apply Joost Mulders' suggested patches for DLPI on x86.
237
238- Support NUL characters in quoted strings.
239
240- Install unformatted man pages on SunOS.
241
b3fad8ac
TL
242 Changes since 3.0 Beta 2 Patchlevel 18
243
3350f5b7
TL
244- Allow the server to be placed in partner-down state using OMAPI.
245 (Damien Neil)
246
247- Implement omshell, which can be used to do arbitrary things to the
248 server (in theory). (Damien Neil)
249
250- Fix a case where if a client had two different leases the server could
251 actually dereference the second one when it hadn't been referenced,
252 leading to memory corruption and a core dump. (James Brister)
253
254- Fix a case where a client could request the address of another client's
255 lease, but find_lease wouldn't detect that the other client had it, and
256 would attempt to allocate it to the client, resulting in a lease conflict
257 message.
258
259- Fix a case where a client with more than one client identifier could be
260 given a lease where the hardware address was correct but the client
261 identifier was not, resulting in a lease conflict message.
262
263- Fix a problem where the server could write out a colon-seperated
264 hex list as a value for a variable, which would then not parse.
265 The fix is to always write strings as quoted strings, with any
266 non-printable characters quoted as octal escape sequences. So
267 a file written the old way still won't work, but new files written
268 this way will work.
269
b3fad8ac
TL
270- Fix documentation for sending non-standard options.
271
272- Use unparsable names for unknown options. WARNING: this will
273 break any configuration files that use the option-nnn convention.
274 If you want to continue to use this convention for some options,
275 please be sure to write a definition, like this:
276
277 option option-nnn code nnn = string;
278
279 You can use a descriptive name instead of option-nnn if you like.
280
281- Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
282 DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence. This was the
283 result of a deceptively silly bug in supersede_lease.
284
285- Fix client script exit status check, according to a fix supplied by
286 Hermann Lauer.
287
288- Fix an endianness bug in the tracefile support, regarding ICMP
289 messages.
290
3350f5b7
TL
291- Fix a bug in the client where the medium would not work correctly if
292 it contained quoted strings.
293
b3fad8ac
TL
294 ** there was no pl17 **
295
e6d30fd6
TL
296 Changes since 3.0 Beta 2 Patchlevel 16
297
6da9db9d
TL
298- Add support for transaction tracing. This allows the state of the
299 DHCP server on startup, and all the subsequent transactions, to be
300 recorded in a file which can then be played back to reproduce the
301 behaviour of the DHCP server. This can be used to quickly
302 reproduce bugs that cause core dumps or corruption, and also for
303 tracking down memory leaks.
304
305- Incorporate some bug fixes provided by Joost Mulders for the DLPI
306 package which should clear up problems people have been seeing on
307 Solaris.
308
309- Fix bugs in the handling of options stored as linked lists (agent
310 options, fqdn options and nwip options) that could cause memory
311 corruption and core dumps.
312
313- Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
314 not being send in some cases when they were needed.
315
316- Make the lease structure somewhat more compact.
317
318- Make initial failover startup *much* faster. This was researched
319 and implemented by Damien Neil.
320
321- Add a --version flag to all executables, which prints the program
322 name and version to standard output.
323
324- Don't rewrite the lease file every thousand leases.
325
e6d30fd6
TL
326- A bug in nit.c for older SunOS machines was fixed by a patch sent in
327 by Takeshi Hagiwara.
328
6da9db9d
TL
329- Fix a memory corruption bug in the DHCP client.
330
331- Lots of documentation updates.
332
333- Add a feature allowing environment variables to be passed to the
334 DHCP client script on the DHCP client command line.
335
336- Fix client medium support, which had been broken for some time.
337
338- Fix a bug in the DHCP client initial startup backoff interval, which
339 would cause two DHCPDISCOVERS to be sent back-to-back on startup.
340
341
af49fdff
TL
342 Changes since 3.0 Beta 2 Patchlevel 15
343
344- Some documentation tweaks.
345
346- Maybe fix a problem in the DLPI code.
347
348- Fix some error code space inconsistencies in ddns update code.
349
350- Support relay agents that intercept unicast DHCP messages to stuff
351 agent options into them.
352
353- Fix a small memory leak in the relay agent option support code.
354
c5b569f8
TL
355- Fix a core dump that would occur if a packet was sent with no
356 options.
357
754ae3e9
TL
358 Changes since 3.0 Beta 2 Patchlevel 14
359
360- Finish fixing a long-standing bug in the agent options code. This
361 was causing core dumps and failing to operate correctly - in
362 particular, agent option stashing wasn't working. Agent option
363 stashing should now be working, meaning that agent options can be
364 used in class statements to control address allocation.
365
366- Fix up documentation.
367
368- Fix a couple of small memory leaks that would have added up
369 significantly in a high-demand situation.
370
371- Add a log-facility configuration parameter.
372
373- Fix a compile error on some older operating systems.
374
375- Add the ability in the client to execute certain statements before
376 transmitting packets to the server. Handy for debugging; not much
377 practical use otherwise.
378
379- Don't send faked-out giaddr when renewing or bound - again, useful
380 for debugging.
381
2f2e7960
TL
382 Changes since 3.0 Beta 2 Patchlevel 13
383
384- Fixed a problem where the fqdn decoder would sometimes try to store
385 an option with an (unsigned) negative length, resulting in a core
386 dump on some systems.
387
388- Work around the Win98 DHCP client, which NUL-terminates the FQDN
389 option.
390
391- Work around Win98 and Win2k clients that will claim they want to do
392 the update even when they don't have any way to do it.
393
394- Fix some log messages that can be printed when failover is operating
395 that were not printing enough information.
396
397- It was possible for a DHCPDISCOVER to get an allocation even when
398 the state machine said the server shouldn't be responding.
399
400- Don't load balance DHCPREQUESTs from clients in RENEWING and
401 REBINDING, since in RENEWING, if we heard it, it's for us, and in
402 REBINDING, the client wouldn't have got to REBINDING if its primary
403 were answering.
404
405- When we get a bogus state lease binding state transition, don't do
406 the transition.
407
408
66e98927
TL
409 Changes since 3.0 Beta 2 Patchlevel 12
410
411- Fixed a couple of silly compile errors.
412
a1e2e3d6
TL
413 Changes since 3.0 Beta 2 Patchlevel 11
414
415- Albert Herranz tracked down and fixed a subtle bug in the base64
416 decoder that would prevent any key with an 'x' in its base64
417 representation from working correctly.
418
419- Thanks to Chris Cheney and Michael Sanders, we have a fix for the
420 hang that they both spotted in the DHCP server - when
421 one-lease-per-client was set, the code to release the "other" lease
422 could spin.
423
424- Fix a problem with alignment of the input buffer in bpf in cases
425 where two packets arrive in the same bpf read.
426
427- Fix a problem where the relay agent would crash if you specified an
428 interface name on the command line.
429
430- Add the ability to conditionalize client behaviour based on the
431 client state.
432
433- Add support for the FQDN option, and added support for a new way of
434 doing ddns updates (ddns update style interim) that allows more than
435 one DHCP server to update the DNS for the same network(s). This
436 was implemented by Damien Neil with some additional functionality
437 added by Ted Lemon.
438
439- Damien added a "log" statement, so that the configuration file can
440 be made to log debugging information and other information.
441
442- Fixed a bug that caused option buffers not to be terminated with an
443 end option.
444
445- Fixed a long-standing bug in the support for option spaces where the
446 options are stored as an ordered list rather than in a hash table,
447 which could theoretically result in memory pool corruption.
448
449- Prevent hardware declarations with no actual hardware address from
450 being written as something unparsable, and behave correctly in the
451 face of a null hardware address on input.
452
453- Allow key names to be FQDNs, and qualify the algorithm name if it is
454 specified unqualified.
455
456- Modify the DDNS update code so that it never prints the "resolver
457 failed" message, but instead says *why* the resolver failed.
458
459- Officially support the subnet selection option, which now has an
460 RFC.
461
462- Fix a build bug on MacOS X.
463
464- Allow administrator to disable ping checking.
465
466- Clean up dhcpd.conf documentation and add more information about how
467 it works.
468
6c68ec36
TL
469 Changes since 3.0 Beta 2 Patchlevel 10
470
471- Fix a bug introduced during debugging (!) and accidentally committed
472 to CVS.
473
9fd337e7
TL
474 Changes since 3.0 Beta 2 Patchlevel 9
475
476- Fix DHCP client handling of vendor encapsulated options.
477
478- Fix a bug in the handling of relay agent information options introduced
479 in patchlevel 9.
480
481- Stash agent options on client leases by default, and use the stashed
482 options at renewal time.
483
484- Add the ability to test the client's binding state in the client
485 configuration language.
486
487- Fix a core dump in the DNS update code.
488
489- Fix some expression evaluation bugs that were causing updates to be
490 done when no client hostname was received.
491
492- Fix expression evaluation debugging printfs.
493
494- Teach pretty_print_option to print options in option spaces other than
495 the DHCP option space.
496
497- Add a warning message if the RHS of a not is not boolean.
498
499- Never select for more than a day, because some implementations of
500 select will just fail if the timeout is too long (!).
501
502- Fix a case where a DHCPDISCOVER from an unknown network would be
503 silently dropped.
504
505- Fix a bug where if a client requested an IP address for which a different
506 client had the lease, the DHCP server would reallocate it anyway.
507
508- Fix the DNS update code so that if the client changes its name, the DNS
509 will be correctly updated.
510
3922772a
TL
511 Changes since 3.0 Beta 2 Patchlevel 8
512
513- Oops, there was another subtle math error in the header-length
514 bounds-checking.
515
516 Changes since 3.0 Beta 2 Patchlevel 7
848c2547
TL
517
518- Oops, forgot to byte-swap udp header length before bounds-checking it.
519
3922772a 520 Changes since 3.0 Beta 2 Patchlevel 6
0f6045f8 521
f8572308
TL
522- Fix a possible DoS attack where a client could cause the checksummer
523 to dump core. This was a read, not a write, so it shouldn't be
524 possible to exploit it any further than that.
525
526- Implement client- and server-side support for using the Client FQDN
527 option.
528
529- Support for other option spaces in the client has been added. This
530 means that it is now possible to define a vendor option space on the
531 client, request options in that space from the server (which must
532 define the same option space), and then use those options in the
533 client. This also allows NWIP and Client FQDN options to be used
534 meaningfully.
535
536- Add object initializer support. This means that objects can now be
537 initialized to something other than all-zeros when allocated, which
538 makes, e.g., the interface object support code a little more robust.
539
540- Fix an off-by-one bug in the host stuffer. This was causing host
541 deletes not the work, and may also have been causing OMAPI
542 connections to get dropped. Thanks to James Brister for tracking
543 this one down!
544
545- Fixed a core dump in the interface discovery code that is triggered
546 when there is no subnet declaration for an interface, but the server
547 decides to continue running. Thanks to Shane Kerr for tracking
548 down and fixing this problem.
549
550 Changes since 3.0 Beta 2 Patchlevel 5
551
0f6045f8
TL
552- Fix a bug in the recent enhancement to the interface discovery code
553 to support arbitrary-length interface lists.
554
555- Support NUL-terminated DHCP options when initializing client-script
556 environment.
557
558- Fix suffix operator.
559
560- Fix NetWare/IP option parsing.
561
562- Better error/status checking in dhcpctl initialization and omapi
563 connection code.
564
565- Fix a potential memory smash in dhcpctl code.
566
567- Fix SunOS4 and (maybe) Ultrix builds.
568
569- Fix a bug where a certain sort of incoming packet could cause a core
570 dump on Solaris (and probably elsewhere).
571
572- Add some more safety checks in error logging code.
573
574- Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
575
576- Fix relay agent so that if an interface is specified on the command
577 line, the relay agent does not dump core.
578
579- Fix class matching so that match if can be combined with match or
580 spawn with.
581
582- Do not allow spurious leases in the lease database to introduce
583 potentially bogus leases into the in-memory database.
584
585- Fix a byte-order problem in the client hardware address type code
586 for OMAPI.
587
588- Be slightly less picky about what sort of hardware addresses OMAPI
589 can install in host declarations.
590
801de092
TL
591 Changes since 3.0 Beta 2 Patchlevel 4
592
593- Incorporated Peter Marschall's proposed change to array/record
594 parsing, which allows things like the slp-agent option to be encoded
595 correctly. Thanks very much to Peter for taking the initiative to
596 do this, and for doing such a careful job of it (e.g., updating the
597 comments)!
598
599- Added an encoding for the slp-agent option. :')
600
6ed7a93d
TL
601- Fixed SunOS 4 build. Thanks to Robert Elz for responding to my
602 request for help on this with patches!
603
604- Incorporated a change that should fix a problem reported by Philippe
605 Jumelle where when the network connection between two servers is
606 lost, they never reconnect.
607
608- Fix client script files other than that for NetBSD to actually use
609 make_resolv_conf as documented in the manual page.
610
611- Fix a bug in the packet handling code that could result in a core
612 dump.
613
614- Fix a bug in the bootp code where responses on the local net would
615 be sent to the wrong MAC address. Thanks to Jerry Schave for
616 catching this one.
617
490eb5e7
TL
618 Changes since 3.0 Beta 2 Patchlevel 3
619
620- In the DHCP client, execute client statements prior to using the values
621 of options, so that the client configuration can overried, e.g., the
622 lease renewal time.
623
624- Fix a reference counting error that would result in very reproducible
625 failures in updates, as well as occasional core dumps, if a zone was
626 declared without a key.
627
628- Fix some Linux 2.0 compilation problems.
629
630- Fix a bug in scope evaluation during execution of "on" statements that
631 caused values not to be recorded on leases.
632
633- If the dhcp-max-message-size option is specified in scope, and the
634 client didn't send this option, use the one specified in scope to
635 determine the maximum size of the response.
636
592d8153
TL
637 Changes since 3.0 Beta 2 Patchlevel 2
638
359b023e
TL
639- Fix a case where spawning subclasses were being allocated
640 incorrectly, resulting in a core dump.
641
592d8153
TL
642- Fix a case where the DHCP server might inappropriately NAK a
643 RENEWING client.
644
645- Fix a place dhcprequest() where static leases could leak.
646
647- Include memory.h in omapip_p.h so that we don't get warnings about
648 using memcmp().
649
2aa36519
TL
650 Changes since 3.0 Beta 2 Patchlevel 1
651
652- Notice when SIOCFIGCONF returns more data than fit in the buffer -
653 allocate a larger buffer, and retry. Thanks to Greg Fausak for
654 pointing this out.
655
656- In the server, if no interfaces were configured, report an error and
657 exit.
658
659- Don't ever record a state of 'startup'.
660
661- Don't try to evaluate the local failover binding address if none was
662 specified. Thanks to Joseph Breu for finding this.