Merge from vendor branch TCPDUMP:
[dragonfly.git] / contrib / isc-dhcp / RELNOTES
1             Internet Software Consortium DHCP Distribution
2                              Version 3.0.1
3                          Release Candidate 12
4                                June, 2002
5
6                              Release Notes
7
8                              NEW FEATURES
9
10 Version 3 of the ISC DHCP Distribution includes the following features
11 that are new since version 2.0:
12
13      - DHCP Failover Protocol support
14      - OMAPI, an API for accessing and modifying the DHCP server and
15        client state.
16      - Conditional behaviour
17      - Storing arbitrary information on leases
18      - Address pools with access control
19      - Client classing
20      - Address allocation restriction by class
21      - Relay agent information option support 
22      - Dynamic DNS updates
23      - Many bug fixes, performance enhancements, and minor new DHCP
24        protocol features. 
25
26 This is a release candidate for a minor bug fix release to follow ISC
27 DHCP 3.0.   The main bug fixed here is a bug in the subclass allocation
28 code that could result in a memory smash.   Any users of the ISC DHCP server
29 who are using subclasses should seriously consider upgrading to 3.0.1
30 either now or when the final 3.0.1 release comes out.
31
32 If you are running 3.0 beta 1 and are doing dynamic DNS updates, the
33 lease file is no longer forward-compatible to 3.0 final.   A script
34 has been provided to convert 3.0b1 lease files.   This is in
35 contrib/3.0b1-lease-convert.
36
37 For information on how to install, configure and run this software,
38 as well as how to find documentation and report bugs, please consult
39 the README file.
40
41 The Dynamic DNS Update support is a descendent of an implementation
42 done by Lans Carstensen and Brian Dols at Rose-Hulman Institute of
43 Technology, Jim Watt at Applied Biosystems, Irina Goble at Integrated
44 Measurement Systems, Igor Sharfmesser at Kazakh Telecom, and Brian
45 Murrell at BC Tel Advanced Communications.  I'd like to express my
46 thanks to all of these good people here, both for working on the code
47 and for prodding me into improving it.
48
49                         Changes since 3.0.1rc11
50
51 - A patch from Steve Campbell was applied with minor modifications to
52   permit reverse dns PTR record updates with values containing spaces.
53
54 - A patch from Florian Lohoff was applied with some modifications to
55   dhcrelay.  It now discards packets whose hop count exceeds 10 by default,
56   and a command-line option (-c) can be used to set this threshold.
57
58 - A failover bug relating to identifying peers by name length instead of
59   by name was fixed.
60
61 - Delcaring failover configs within shared-network statements should no
62   longer result in error.
63
64 - The -nw command line option to dhclient now works.
65
66 - Thanks to a patch from Michael Richardson:
67         - Some problems with long option processing have been fixed.
68         - Some fixes to minires so that updates of KEY records will work.
69
70 - contrib/ms2isc was updated by Shu-Min Chang of the Intel Corporation.
71   see contrib/ms2isc/readme.txt for revision notes.
72
73 - Dhclient no longer uses shell commands to kill another instance of
74   itself, it sends the signal directly.  Thanks to a patch from Martin
75   Blapp.
76
77 - The FreeBSD dhclient-script was changed so that a failure to write to
78   /etc/resolv.conf does not prematurely end the script.  This keeps dhclient
79   from looping infinitely when this is the case.  Thanks to a patch from
80   Martin Blapp.
81
82 - A patch from Bill Stephens was applied which resolves a problem with lease
83   expiry times in failover configurations.
84
85 - A memory leak in configuration parsing was closed thanks to a patch from
86   Steve G.
87
88 - The function which discovers interfaces will now skip non-broadcast or
89   point-to-point interfaces, thanks to a patch from David Brownlee.
90
91 - Options not yet known by the dhcpd or dhclient have had their names
92   changed such that they do not contain # symbols, in case they should ever
93   appear in a lease file.  An option that might have been named "#144" is
94   now "unknown-144".
95
96                         Changes since 3.0.1rc10
97
98 - Potential buffer overflows in minires repaired.
99
100 - A change to the linux client script to use /bin/bash, since /bin/sh may
101   not be bash.
102
103 - Some missing va_end cleanups thanks to a patch from Thomas Klausner.
104
105 - A correction of boolean parsing syntax validation - some illegal syntaxes
106   that worked before are now detected and produce errs, some legal syntaxes
107   that errored before will now work properly.
108
109 - Some search-and-replace errors that caused some options to change their
110   names was repaired.
111
112 - Shu-min Chang of the Intel corporation has contributed a perl script and
113   module that converts the MS NT4 DHCP configuration to a ISC DHCP3
114   configuration file.
115
116 - Applied the remainder of the dhcpctl memory leak patch provided by Bill
117   Squier at ReefEdge, Inc.  (groo@reefedge.com).
118
119 - Missing non-optional failover peer configurations will now result in a soft
120   error rather than a null dereference.
121
122                         Changes since 3.0.1rc9
123
124 - A format string was corrected to fix compiler warnings.
125
126 - A number of spelling corrections were made in the man pages.
127
128 - The dhclient.conf.5 man page was changed to refer to do-forward-updates
129   rather than a configuration option that doesn't exist.
130
131 - A FreeBSD-specific bug in the interface removal handling was fixed.
132
133 - A Linux-specific Token Ring detection problem was fixed.
134
135 - Hashes removed from as-yet-unknown agent options, having those options
136   appear in reality before we know about them will no longer produce
137   self-corrupting lease databases.
138
139 - dhclient will use the proper port numbers now when using the -g option.
140
141 - A order-of-operations bug with 2 match clauses in 1 class statement is
142   fixed thanks to a patch from Andrew Matheson.
143
144 - Compilation problems on Solaris were fixed.
145
146 - Compilation problems when built with DEBUG or DEBUG_PACKET were repaired.
147
148 - A fix to the dhcp ack process which makes certain group options will be
149   included in the first DHCPOFFER message was made thanks to a patch from
150   Ling Gou.
151
152 - A few memory leaks were repaired thanks to patches from Bill Squier at
153   ReefEdge, Inc.  (groo@reefedge.com).
154
155 - A fix for shared-networks that sometimes give clients options for the
156   wrong subnets (in particular, 'option routers') was applied, thanks to
157   Ted Lemon for the patch.
158
159 - Omshell's handling of dotted octets as values was changed such that dots
160   one after the other produce zero values in the integer string.
161
162                         Changes since 3.0.1rc8
163
164 - Fix a format string vulnerability in the server that could lead to a
165   remote root compromise (discovered by NGSEC Research Team, www.ngsec.com).
166
167 - Add additional support for NetBSD/sparc64.
168
169 - Fix a bug in the command-line parsing of the client.  Also, resolve
170   a memory leak.
171
172 - Add better support for shells other than bash in the Linux client
173   script.
174
175 - Various build fixes for modern versions of FreeBSD and Linux.
176
177 - Fix a bad bounds check when printing binding state names.
178
179 - Clarify documentation about fixed-address and multiple addresses.
180
181 - Fix a typo in the authoritative error message.
182
183 - Make a log entry when we can't write a billing class.
184
185 - Use conversion targets that are the right size on all architectures.
186
187 - Increment the hop count when relaying.
188
189 - Log a message when lease state is changed through OMAPI.
190
191 - Don't rerun the shared_network when evaluating the pool.
192
193 - Fix a reversed test in the parser.
194
195 - Change the type of rbuf_max.
196
197 - Make FTS_LAST a manifest constant to quiet warnings.
198
199                         Changes since 3.0.1rc7
200
201 - Fix two compiler warnings that are generated when compiling on Solaris
202   with gcc.   These stop the build, even though they weren't actually
203   errors, because we prefer that our builds generate no warnings.
204
205                         Changes since 3.0.1rc6
206
207 - Don't allow a lease that's in the EXPIRED, RELEASED or RESET state
208   to be renewed.
209
210 - Implement lease stealing for cases where the primary has fewer leases
211   than the secondary, as called for by the standard.
212
213 - Add a fudge factor to the lease expiry acceptance code, (suggested
214   by Kevin Miller of CMU).
215
216 - Fix a bug in permit_list_match that made it much too willing to say
217   that two permit lists matched.
218
219 - Unless DEBUG_DNS_UPDATES is defined, print more user-friendly (and
220   also more compact) messages about DNS updates.
221
222 - Fix a bug in generating wire-format domain names for the FQDN option.
223
224 - Fix a bug where the FQDN option would not be returned if the client
225   requested it, contrary to the standard.
226
227 - On Darwin, use the FreeBSD DHCP client script.
228
229 - On NetBSD/sparc, don't check for casting warnings.
230
231 - Add a flag in the DHCP client to disable updating the client's A
232   record when sending an FQDN option indicating that the client is
233   going to update its A record.
234
235 - In the client, don't attempt a DNS update until one second after
236   configuring the new IP address, and if the update times out, keep
237   trying until a response, positive or negative, is received from the
238   DNS server.
239
240 - Fix an uninitialized memory bug in the DHCP client.
241
242 - Apply some FreeBSD-specific bug fixes suggested by Murray Stokely.
243
244 - Fix a bug in ns_parserr(), where it was returning the wrong sort
245   of result code in some cases (suggested by Ben Harris of the
246   NetBSD project).
247
248 - Fix a bug in is_identifier(), where it was checking against EOF
249   instead of the END_OF_FILE token (also suggested by Ben Harris).
250
251 - Fix a bug where if an option universe contained no options, the
252   DHCP server could dump core (Walter Steiner).
253
254 - Fix a bug in the handling of encapsulated options.
255
256 - Fix a bug that prevented NWIP suboptions from being processed.
257
258 - Delete the FTS_BOOTP and FTS_RESERVED states and implement them
259   as modifier flags to the FTS_ACTIVE state, as called for in the
260   failover protocol standard.
261
262 - Fix bugs in the pool merging code that resulted in references and
263   dereferences of null pointers.   This bug had no impact unless the
264   POINTER_DEBUG flag was defined.
265
266 - In the server, added a do-forward-updates flag that can be used to
267   disable forward updates in all cases, so that sites that want the
268   clients to take sole responsibility for updating their A record can
269   do so.
270
271 - Make it possible to disable optimization of PTR record updates.
272
273                         Changes since 3.0.1rc5
274
275 - Include some new documentation and changes provided by Karl Auer.
276
277 - Add a workaround for some Lexmark printers that send a double-NUL-
278   terminated host-name option, which would break DNS updates.
279
280 - Fix an off-by-one error in the MAC-address checking code for
281   DHCPRELEASE that was added in 3.0.1rc5.
282
283 - Fix a bug where client-specific information was not being discarded
284   from the lease when it expired or was released, resulting in
285   problems if the lease was reallocated to a different client.
286
287 - If more than one allocation pool is specified that has the same set
288   of constraints as another allocation pool on the same shared
289   network, merge the two pools.
290
291 - Don't print an error in fallback_discard, since this just causes
292   confusion and does not appear to be helping to encourage anyone to
293   fix this bug.
294
295                         Changes since 3.0.1rc4
296
297 - Fix a bug that would cause the DHCP server to spin if asked to parse
298   a certain kind of incorrect statement.
299
300 - Fix a related bug that would prevent an error from being reported in
301   the same case.
302
303 - Additional documentation.
304
305 - Make sure that the hardware address matches the lease when
306   processing a DHCPRELEASE message.
307
308                         Changes since 3.0.1rc3
309
310 - A minor bug fix in the arguments to a logging function call.
311 - Documentation update for dhcpd.conf.
312
313                         Changes since 3.0.1rc2
314
315 - Allow the primary to send a POOLREQ message.   This isn't what the current
316   failover draft says to do, so we may have to back it out if I can't get the
317   authors to relent, but the scheme for balancing that's specified in the
318   current draft seems needlessly hairy, so I'm floating a trial balloon.
319   The rc1 code did not implement the method described in the draft either.
320
321                         Changes since 3.0.1rc1
322
323 - Treat NXDOMAIN and NXRRSET as success when we are trying to delete a
324   domain or RRSET.   This allows the DHCP server to forget about a name
325   it added to the DNS once it's been removed, even if the DHCP server
326   wasn't the one that removed it.
327
328 - Install defaults for failover maximum outstanding updates and maximum
329   silent time.   This prevents problems that might occur if these values
330   were not configured.
331
332 - Don't do DDNS deletes if ddns-update-style is none.
333
334 - Return relay agent information options in DHCPNAK.   This prevents DHCPNAK
335   messages from being dropped when the relay agent information option contains
336   routing information.
337
338 - Fix a problem where coming up in recover wouldn't result in an update
339   request being sent.
340
341 - Add some more chatty messages when we start a recovery update and when it's
342   done.
343
344 - Fix a possible problem where some state might have been left around
345   after the peer lost contact and regained contact about how many updates
346   were pending.
347
348 - Don't nix a lease update because of a lease conflict.   This test has
349   never (as far as I know) prevented a mistake, and it appears to cause
350   problems with failover.
351
352 - Add support in rc history code for keeping a selective history, rather
353   than a history of all references and dereferences.   This code is only used
354   when extensive additional debugging is enabled.
355
356                            Changes since 3.0
357
358 - Make allocators for hash tables.   As a side effect, this fixes a memory
359   smash in the subclass allocation code.
360
361 - Fix a small bug in omshell where if you try to close an object when
362   no object is open, it dumps core.
363
364 - Fix an obscure coredump that could occur on shutdown.
365
366 - Fix a bug in the recording of host declaration rubouts in the lease file.
367
368 - Fix two potential spins in the host deletion code.
369
370 - Fix a core dump that would happen if an application tried to update
371   a host object attribute with a null value.
372
373                 Changes since 3.0 Release Candidate 12
374
375 - Fix a memory leak in the evaluation code.
376
377 - Fix an obscure core dump.
378
379 - Print a couple of new warnings when parsing the configuration file
380   when crucial information is left out.
381
382 - Log "no free leases" as an error.
383
384 - Documentation updates.
385
386                 Changes since 3.0 Release Candidate 11
387
388 - Always return a subnet selection option if one is sent.
389
390 - Fix a warning that was being printed because an automatic data
391   structure wasn't zeroed.
392
393 - Fix some failover state transitions that were being handled
394   incorrectly.
395
396 - When supersede_lease is called on a lease whose end time has already
397   expired, but for which a state transition has not yet been done, do
398   a state transition.   This fixes the case where if the secondary
399   allocated a lease to a client and the lease "expired" while the
400   secondary was in partner-down, no expiry event would actually
401   happen, so the lease would remain active until the primary was
402   restarted.
403
404                 Changes since 3.0 Release Candidate 10
405
406 - Fix a bug that was preventing released leases from changing state
407   in failover-enabled pools.
408
409 - Fix a core dump in the client identifier finder code (for host
410   declarations).
411
412 - Finish fixing a bug where bogus data would sometimes get logged to
413   the dhclient.leases file because it was opened as descriptor 2.
414
415 - Fix the Linux dhclient-script according to suggestions made by
416   several people on the dhcp-client mailing list.
417
418 - Log successful DNS updates at LOG_INFO, not LOG_ERROR.
419
420 - Print an error message and refuse to run if a failover peer is
421   defined but not referenced by any pools.
422
423 - Correct a confusing error message in failover.
424
425                 Changes since 3.0 Release Candidate 9
426
427 - Fix a bug in lease allocation for Dynamic BOOTP clients.
428
429           Changes since 3.0 Release Candidate 8 Patchlevel 2
430
431 - Fix a bug that prevented update-static-leases from working.
432
433 - Document failover-state OMAPI object.
434
435 - Fix a compilation error on SunOS 4.
436
437           Changes since 3.0 Release Candidate 8 Patchlevel 1
438
439 - Fix a parsing bug that broke dns updates (both interim and ad-hoc).
440   This was introduced in rc8pl1 as an unintended result of the memory
441   leakage fixes that were in pl1.
442
443 - Fix a long-standing bug where the server would record that an update
444   had been done for a client with no name, even though no update had
445   been done, and then when the client's lease expired the deletion of
446   that nonexistant record would time out because the name was the null
447   string. 
448
449 - Clean up the omshell, dhcpctl and omapi man pages a bit.
450
451                 Changes since 3.0 Release Candidate 8
452
453 - Fix a bug that could cause the DHCP server to spin if
454   one-lease-per-client was enabled.
455
456 - Fix a bug that was causing core dumps on BSD/os in the presence of
457   malformed packets.
458
459 - In partner-down state, don't restrict lease lengths to MCLT.
460
461 - On the failover secondary, record the MCLT received from the primary
462   so that if we come up without a connection to the primary we don't
463   wind up giving out zero-length leases.
464
465 - Fix some compilation problems on BSD/os.
466
467 - Fix a bunch of memory leaks.
468
469 - Fix a couple of bugs in the option printer.
470
471 - Fix an obscure error reporting bug in the dns update code, and also
472   make the message clearer when a key algorithm isn't supported.
473
474 - Fix a bug in the tracing code that prevented trace runs that used
475   tcp connections from being played back.
476
477 - Add some additional debugging capability for catching memory leaks
478   on exit.
479
480 - Make the client release the lease correctly on shutdown.
481
482 - Add some configurability to the build system.
483
484 - Install omshell manual page in man1, not man8.
485
486 - Craig Gwydir sent in a patch that fixes a long-standing bug in the
487   DHCP client that could cause core dumps, but that for some reason
488   hadn't been noticed until now.
489
490                 Changes since 3.0 Release Candidate 7
491
492 - Fix a bug in failover where we weren't sending updates after a
493   transition from communications-interrupted to normal.
494
495 - Handle expired/released/reset -> free transition according to the
496   protocol specification (this works - the other way not only wasn't
497   conformant, but also didn't work).
498
499 - Add a control object in both client and server that allows either
500   daemon to be shut down cleanly.
501
502 - When writing a lease, if we run out of disk space, shut down the
503   output file and insist on writing a new one before proceeding.
504
505 - In the server, if the OMAPI listener port is occupied, keep trying
506   to get it, rather than simply giving up and exiting.
507
508 - Support fetching variables from leases and also updating and adding
509   variables to leases via OMAPI.
510
511 - If two failover peers have wildly different clocks, refuse to start
512   doing failover.
513
514 - Fix a bug in the DNS update code that could cause core dumps when
515   running on alpha processors.
516
517 - Fixed a bug in ddns updates for static lease entries, thanks to a
518   patch from Andrey M Linkevitch.
519
520 - Add support for Darwin/MacOS X
521
522 - Install omshell (including new documentation).
523
524 - Support DNS updates in the client (this is a very obscure feature
525   that most DHCP client users probably will not be able to use).
526
527 - Somewhat cleaner status logging in the client.
528
529 - Make OMAPI key naming syntax compatible with the way keys are
530   actually named (key names are domain names).
531
532 - Fix a bug in the lease file writer.
533
534 - Install DHCP ISC headers in a different place than BIND 9 ISC
535   headers, to avoid causing trouble in BIND 9 builds.
536
537 - Don't send updates for attributes on an object when the attributes
538   haven't changed.   Support deleting attributes on remote objects.
539
540 - Fix a number of bugs in omshell, and add the unset and refresh
541   statements.
542
543 - Handle disconnects in OMAPI a little bit more intelligently (so that
544   the caller gets ECONNRESET instead of EINVAL).
545
546 - Fix a bunch of bugs in the handling of clients that have existing
547   leases when the try to renew their leases while failover is
548   operating.
549
550                 Changes since 3.0 Release Candidate 6
551
552 - Fix a core dump that could happen when processing a DHCPREQUEST from
553   a client that had a host declaration that contained both a
554   fixed-address declaration and a dhcp-client-identifier option
555   declaration, if the client identifier was longer than nine bytes.
556
557 - Fix a memory leak that could happen in certain obscure cases when
558   using omapi to manipulate leases.
559
560 - Fix some bugs and omissions in omshell.
561
562
563                 Changes since 3.0 Release Candidate 5
564
565 - Fix a bug in omapi_object_dereference that prevented objects in
566   chains from having their reference counts decreased on dereference.
567
568 - Fix a bug in omapi_object_dereference that would prevent object
569   chains from being freed upon removal of the last reference external
570   to the chain.
571
572 - Fix a number of other memory leaks in the OMAPI protocol subsystem.
573
574 - Add code in the OMAPI protocol handler to trace memory leakage.
575
576 - Clean up the memory allocation/reference history printer.
577
578 - Support input of dotted quads and colon-separated hex lists as
579   attribute values in omshell.
580
581 - Fix a typo in the Linux interface discovery code.
582
583 - Conditionalize a piece of trace code that wasn't conditional.
584
585                 Changes since 3.0 Release Candidate 4
586
587 - Fix a bug that would prevent leases from being abandoned properly on
588   DHCPDECLINE.
589
590 - Fix failover peer OMAPI support.
591
592 - In failover, correctly handle expiration of leases.   Previously,
593   leases would never be reclaimed because they couldn't make the
594   transition from EXPIRED to FREE.
595
596 - Fix some broken failover state transitions.
597
598 - Documentation fixes.
599
600 - Take out an unnecessary check in DHCP relay agent information option
601   stashing code that was preventing REBINDING clients from rebinding.
602
603 - Prevent failover peers from allocating leases in DHCPREQUEST
604   processing if the lease belongs to the other server.
605
606 - Record server version in lease file introductory comment.
607
608 - Correctly report connection errors in OMAPI and failover.
609
610 - Make authentication signature algorithm name comparisons in OMAPI
611   case-insensitive.
612
613 - Fix compile problem on SunOS 4.x
614
615 - If a signature algorithm is not terminated with '.', terminate it so
616   that comparisons between fully-qualified names will work
617   consistently.
618
619 - Different SIOCGIFCONF probe code, may "fix" problem on some Linux
620   systems with the probe not working correctly.
621
622 - Don't allow user to type omapi key on command line of omshell.
623
624                 Changes since 3.0 Release Candidate 3
625
626 - Do lease billing on startup in a way that I *think* will finally do
627   the billing correctly - the previous method could overbill as a
628   result of duplicate leases.
629
630 - Document OMAPI server objects.
631
632           Changes since 3.0 Release Candidate 2 Patchlevel 1
633
634 - Fix some problems in the DDNS update code.   Thanks to Albert
635   Herranz for figuring out the main problem.
636
637 - Fix some reference counting errors on host entries that were causing
638   core dumps.
639
640 - Fix a byte-swap bug in the token ring code, thanks to Jochen
641   Friedrich.
642
643 - Fix a bug in lease billing, thanks to Jonas Bulow.
644
645                 Changes since 3.0 Release Candidate 2
646
647 - Change the conditions under which a DHCPRELEASE is actually
648   committed to be consistent with lease binding states rather than
649   using the lease end time.   This may fix some problems with the
650   billing class code.
651
652 - Fix a bug where lease updates would fail on Digital Unix (and maybe
653   others) because malloc was called with a size of zero.
654
655 - Fix a core dump that happens when the DHCP server can't create its
656   trace file.
657
658           Changes since 3.0 Release Candidate 1 Patchlevel 1
659
660 - Fix the dhcp_failover_put_message to not attempt to allocate a
661   zero-length buffer.   Some versions of malloc() fail if you try to
662   allocate a zero-length buffer, and this was causing problems on,
663   e.g., Digital Unix.
664
665 - Fix a case where the failover code was printing an error message
666   when no error had occurred.
667
668 - Fix a problem where when a server went down and back up again, the
669   peer would not see a state transition and so would stay in the
670   non-communicating state.
671
672 - Be smart about going into recover_wait.
673
674 - Fix a problem in the failover implementation where peers would fail
675   to come into sync if interrupted in the RECOVER state.   This could
676   have been the cause of some problems people have reported recently.
677
678 - Fix a problem with billing classes where they would not be unbilled
679   when the client lease expired.
680
681 - If select fails, figure out which descriptor is bad, and cut it out
682   of the I/O loop.   This prevents a potentially nasty spin.  I
683   haven't heard any report it in a while, but it came up consistently
684   in testing.
685
686 - Fix a bug in the relay agent where if you specified interfaces on
687   the command line, it would fail.
688
689 - Fix a couple of small bugs in the omapi connection object (no known
690   user impact).
691
692 - Add the missing 3.0 Beta 1 lease conversion script.
693
694 - Read dhcp client script hooks if they exist, rather than only if
695   they're executable.
696
697                 Changes since 3.0 Release Candidate 1
698
699 - Fix a memory smash that happens when fixed-address leases are used.
700   ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
701   UPGRADE IMMEDIATELY.   This has been a long-standing bug - thanks to
702   Alvise Nobile for discovering it and helping me to find it!
703
704 - Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
705   Transmeta.
706
707 - There is a known problem with the DHCP server doing failover on
708   Compaq Alpha systems.   This patchlevel is not a release candidate
709   because of this bug.   The bug should be straightforward to fix, so
710   a new release candidate is expected shortly.
711
712 - There is a known problem in the DDNS update code that is probably a
713   bug, and is not, as far as we know, fixed in this patchlevel.
714
715                 Changes since 3.0 Beta 2 Patchlevel 24
716
717 - Went over problematic failover state transitions and made them all
718   work, so that failover should now much less fragile.
719
720 - Add some dhcpctl and omapi documentation
721
722 - Fix compile errors when compiling with unusual predefines.
723
724 - Make Token Ring work on Linux 2.4
725
726 - Fix the Digital Unix BPF_WORDALIGN bug.
727
728 - Fix some dhcp client documentation errors.
729
730 - Update some parts of the README file.
731
732 - Support GCC on SCO.
733
734                 Changes since 3.0 Beta 2 Patchlevel 23
735
736 - Fix a bug in the DNS update code where a status code was not being
737   checked.   This may have been causing core dumps.
738
739 - When parsing the lease file, if a lease declaration includes a
740   billing class statement, and the lease already has a billing class,
741   unbill the old class.
742
743 - When processing failover transactions, where acks will be deferred,
744   process the state transition immediately.
745
746 -  Don't try to use the new SIOCGIFCONF buffer size detection code on
747    Linux 2.0, which doesn't provide this functionality.
748
749 - Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
750
751 - Fix a problem in using the which command in the configure script.
752
753 - Fix a parse error in the client when setting up an omapi listener.
754
755 - Document the -n and -g flags to the client.
756
757 - Make sure there is always a stdin and stdout on startup.   This
758   prevents shell scripts from accidentally writing error messages into
759   configuration files that happen to be opened as stderr.
760
761 - If an interface is removed, the client will now notice that it is
762   gone rather than spinning.   This has only been tested on NetBSD.
763
764 - The client will attempt to get an address even if it can't create a
765   lease file.
766
767 - Don't overwrite tracefiles.
768
769 - Fix some memory allocation bugs in failover.
770
771                 Changes since 3.0 Beta 2 Patchlevel 22
772
773 - Apply some patches suggested by Cyrille Lefevre, who is maintaining
774   the FreeBSD ISC DHCP Distribution port.
775
776 - Fix a core dump in DHCPRELEASE.
777
778                 Changes since 3.0 Beta 2 Patchlevel 21
779
780 - This time for sure: fix the spin described in the changes for pl20.
781
782                 Changes since 3.0 Beta 2 Patchlevel 20
783
784 - Fix a problem with Linux detecting large numbers of interfaces (Ben)
785
786 - Fix a memory smash in the quotify code, which was introduced in
787   pl19.
788
789 - Actually fix the spin described in the changes for pl20.   The
790   previous fix only partially fixed the problem - enough to get it
791   past the regression test.
792
793                 Changes since 3.0 Beta 2 Patchlevel 19
794
795 - Fix a bug that could cause the server to abort if compiled with
796   POINTER_DEBUG enabled.
797
798 - Fix a bug that could cause the server to spin when responding to a
799   DHCPREQUEST.
800
801 - Apply Joost Mulders' suggested patches for DLPI on x86.
802
803 - Support NUL characters in quoted strings.
804
805 - Install unformatted man pages on SunOS.
806
807                 Changes since 3.0 Beta 2 Patchlevel 18
808
809 - Allow the server to be placed in partner-down state using OMAPI.
810   (Damien Neil)
811
812 - Implement omshell, which can be used to do arbitrary things to the
813   server (in theory). (Damien Neil)
814
815 - Fix a case where if a client had two different leases the server could
816   actually dereference the second one when it hadn't been referenced,
817   leading to memory corruption and a core dump. (James Brister)
818
819 - Fix a case where a client could request the address of another client's
820   lease, but find_lease wouldn't detect that the other client had it, and
821   would attempt to allocate it to the client, resulting in a lease conflict
822   message.
823
824 - Fix a case where a client with more than one client identifier could be
825   given a lease where the hardware address was correct but the client
826   identifier was not, resulting in a lease conflict message.
827
828 - Fix a problem where the server could write out a colon-separated
829   hex list as a value for a variable, which would then not parse.
830   The fix is to always write strings as quoted strings, with any
831   non-printable characters quoted as octal escape sequences.   So
832   a file written the old way still won't work, but new files written
833   this way will work.
834
835 - Fix documentation for sending non-standard options.
836
837 - Use unparsable names for unknown options.    WARNING: this will
838   break any configuration files that use the option-nnn convention.
839   If you want to continue to use this convention for some options,
840   please be sure to write a definition, like this:
841
842   option option-nnn code nnn = string;
843
844   You can use a descriptive name instead of option-nnn if you like.
845
846 - Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
847   DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence.   This was the
848   result of a deceptively silly bug in supersede_lease.
849
850 - Fix client script exit status check, according to a fix supplied by
851   Hermann Lauer.
852
853 - Fix an endianness bug in the tracefile support, regarding ICMP
854   messages.
855
856 - Fix a bug in the client where the medium would not work correctly if
857   it contained quoted strings.
858
859                        ** there was no pl17 **
860
861                 Changes since 3.0 Beta 2 Patchlevel 16
862
863 - Add support for transaction tracing.   This allows the state of the
864   DHCP server on startup, and all the subsequent transactions, to be
865   recorded in a file which can then be played back to reproduce the
866   behaviour of the DHCP server.   This can be used to quickly
867   reproduce bugs that cause core dumps or corruption, and also for
868   tracking down memory leaks.
869
870 - Incorporate some bug fixes provided by Joost Mulders for the DLPI
871   package which should clear up problems people have been seeing on
872   Solaris.
873
874 - Fix bugs in the handling of options stored as linked lists (agent
875   options, fqdn options and nwip options) that could cause memory
876   corruption and core dumps.
877
878 - Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
879   not being send in some cases when they were needed.
880
881 - Make the lease structure somewhat more compact.
882
883 - Make initial failover startup *much* faster.   This was researched
884   and implemented by Damien Neil.
885
886 - Add a --version flag to all executables, which prints the program
887   name and version to standard output.
888
889 - Don't rewrite the lease file every thousand leases.
890
891 - A bug in nit.c for older SunOS machines was fixed by a patch sent in
892   by Takeshi Hagiwara.
893
894 - Fix a memory corruption bug in the DHCP client.
895
896 - Lots of documentation updates.
897
898 - Add a feature allowing environment variables to be passed to the
899   DHCP client script on the DHCP client command line.
900
901 - Fix client medium support, which had been broken for some time.
902
903 - Fix a bug in the DHCP client initial startup backoff interval, which
904   would cause two DHCPDISCOVERS to be sent back-to-back on startup.
905
906
907                 Changes since 3.0 Beta 2 Patchlevel 15
908
909 - Some documentation tweaks.
910
911 - Maybe fix a problem in the DLPI code.
912
913 - Fix some error code space inconsistencies in ddns update code.
914
915 - Support relay agents that intercept unicast DHCP messages to stuff
916   agent options into them.
917
918 - Fix a small memory leak in the relay agent option support code.
919
920 - Fix a core dump that would occur if a packet was sent with no
921   options.
922
923                 Changes since 3.0 Beta 2 Patchlevel 14
924
925 - Finish fixing a long-standing bug in the agent options code.   This
926   was causing core dumps and failing to operate correctly - in
927   particular, agent option stashing wasn't working.   Agent option
928   stashing should now be working, meaning that agent options can be
929   used in class statements to control address allocation.
930
931 - Fix up documentation.
932
933 - Fix a couple of small memory leaks that would have added up
934   significantly in a high-demand situation.
935
936 - Add a log-facility configuration parameter.
937
938 - Fix a compile error on some older operating systems.
939
940 - Add the ability in the client to execute certain statements before
941   transmitting packets to the server.   Handy for debugging; not much
942   practical use otherwise.
943
944 - Don't send faked-out giaddr when renewing or bound - again, useful
945   for debugging.
946
947                 Changes since 3.0 Beta 2 Patchlevel 13
948
949 - Fixed a problem where the fqdn decoder would sometimes try to store
950   an option with an (unsigned) negative length, resulting in a core
951   dump on some systems.
952
953 - Work around the Win98 DHCP client, which NUL-terminates the FQDN
954   option.
955
956 - Work around Win98 and Win2k clients that will claim they want to do
957   the update even when they don't have any way to do it.
958
959 - Fix some log messages that can be printed when failover is operating
960   that were not printing enough information.
961
962 - It was possible for a DHCPDISCOVER to get an allocation even when
963   the state machine said the server shouldn't be responding.
964
965 - Don't load balance DHCPREQUESTs from clients in RENEWING and
966   REBINDING, since in RENEWING, if we heard it, it's for us, and in
967   REBINDING, the client wouldn't have got to REBINDING if its primary
968   were answering.
969
970 - When we get a bogus state lease binding state transition, don't do
971   the transition.
972   
973
974                 Changes since 3.0 Beta 2 Patchlevel 12
975
976 - Fixed a couple of silly compile errors.
977
978                 Changes since 3.0 Beta 2 Patchlevel 11
979
980 - Albert Herranz tracked down and fixed a subtle bug in the base64
981   decoder that would prevent any key with an 'x' in its base64
982   representation from working correctly.
983
984 - Thanks to Chris Cheney and Michael Sanders, we have a fix for the
985   hang that they both spotted in the DHCP server - when
986   one-lease-per-client was set, the code to release the "other" lease
987   could spin.
988
989 - Fix a problem with alignment of the input buffer in bpf in cases
990   where two packets arrive in the same bpf read.
991
992 - Fix a problem where the relay agent would crash if you specified an
993   interface name on the command line.
994
995 - Add the ability to conditionalize client behaviour based on the
996   client state.
997
998 - Add support for the FQDN option, and added support for a new way of
999   doing ddns updates (ddns update style interim) that allows more than
1000   one DHCP server to update the DNS for the same network(s).   This
1001   was implemented by Damien Neil with some additional functionality
1002   added by Ted Lemon.
1003
1004 - Damien added a "log" statement, so that the configuration file can
1005   be made to log debugging information and other information.
1006
1007 - Fixed a bug that caused option buffers not to be terminated with an
1008   end option.
1009
1010 - Fixed a long-standing bug in the support for option spaces where the
1011   options are stored as an ordered list rather than in a hash table,
1012   which could theoretically result in memory pool corruption.
1013
1014 - Prevent hardware declarations with no actual hardware address from
1015   being written as something unparsable, and behave correctly in the
1016   face of a null hardware address on input.
1017
1018 - Allow key names to be FQDNs, and qualify the algorithm name if it is
1019   specified unqualified.
1020
1021 - Modify the DDNS update code so that it never prints the "resolver
1022   failed" message, but instead says *why* the resolver failed.
1023
1024 - Officially support the subnet selection option, which now has an
1025   RFC.
1026
1027 - Fix a build bug on MacOS X.
1028
1029 - Allow administrator to disable ping checking.
1030
1031 - Clean up dhcpd.conf documentation and add more information about how
1032   it works.
1033
1034                 Changes since 3.0 Beta 2 Patchlevel 10
1035
1036 - Fix a bug introduced during debugging (!) and accidentally committed
1037   to CVS.
1038
1039                 Changes since 3.0 Beta 2 Patchlevel 9
1040
1041 - Fix DHCP client handling of vendor encapsulated options.
1042
1043 - Fix a bug in the handling of relay agent information options introduced
1044   in patchlevel 9.
1045
1046 - Stash agent options on client leases by default, and use the stashed
1047   options at renewal time.
1048
1049 - Add the ability to test the client's binding state in the client
1050   configuration language.
1051
1052 - Fix a core dump in the DNS update code.
1053
1054 - Fix some expression evaluation bugs that were causing updates to be
1055   done when no client hostname was received.
1056
1057 - Fix expression evaluation debugging printfs.
1058
1059 - Teach pretty_print_option to print options in option spaces other than
1060   the DHCP option space.
1061
1062 - Add a warning message if the RHS of a not is not boolean.
1063
1064 - Never select for more than a day, because some implementations of
1065   select will just fail if the timeout is too long (!).
1066
1067 - Fix a case where a DHCPDISCOVER from an unknown network would be
1068   silently dropped.
1069
1070 - Fix a bug where if a client requested an IP address for which a different
1071   client had the lease, the DHCP server would reallocate it anyway.
1072
1073 - Fix the DNS update code so that if the client changes its name, the DNS
1074   will be correctly updated.
1075
1076                 Changes since 3.0 Beta 2 Patchlevel 8
1077
1078 - Oops, there was another subtle math error in the header-length
1079   bounds-checking.
1080
1081                 Changes since 3.0 Beta 2 Patchlevel 7
1082
1083 - Oops, forgot to byte-swap udp header length before bounds-checking it.
1084
1085                 Changes since 3.0 Beta 2 Patchlevel 6
1086
1087 - Fix a possible DoS attack where a client could cause the checksummer
1088   to dump core.   This was a read, not a write, so it shouldn't be
1089   possible to exploit it any further than that.
1090
1091 - Implement client- and server-side support for using the Client FQDN
1092   option.
1093
1094 - Support for other option spaces in the client has been added.   This
1095   means that it is now possible to define a vendor option space on the
1096   client, request options in that space from the server (which must
1097   define the same option space), and then use those options in the
1098   client.   This also allows NWIP and Client FQDN options to be used
1099   meaningfully.
1100
1101 - Add object initializer support.   This means that objects can now be
1102   initialized to something other than all-zeros when allocated, which
1103   makes, e.g., the interface object support code a little more robust.
1104
1105 - Fix an off-by-one bug in the host stuffer.   This was causing host
1106   deletes not the work, and may also have been causing OMAPI
1107   connections to get dropped.   Thanks to James Brister for tracking
1108   this one down!
1109
1110 - Fixed a core dump in the interface discovery code that is triggered
1111   when there is no subnet declaration for an interface, but the server
1112   decides to continue running.   Thanks to Shane Kerr for tracking
1113   down and fixing this problem.
1114
1115                 Changes since 3.0 Beta 2 Patchlevel 5
1116
1117 - Fix a bug in the recent enhancement to the interface discovery code
1118   to support arbitrary-length interface lists.
1119
1120 - Support NUL-terminated DHCP options when initializing client-script
1121   environment.
1122
1123 - Fix suffix operator.
1124
1125 - Fix NetWare/IP option parsing.
1126
1127 - Better error/status checking in dhcpctl initialization and omapi
1128   connection code.
1129
1130 - Fix a potential memory smash in dhcpctl code.
1131
1132 - Fix SunOS4 and (maybe) Ultrix builds.
1133
1134 - Fix a bug where a certain sort of incoming packet could cause a core
1135   dump on Solaris (and probably elsewhere).
1136
1137 - Add some more safety checks in error logging code.
1138
1139 - Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
1140
1141 - Fix relay agent so that if an interface is specified on the command
1142   line, the relay agent does not dump core.
1143
1144 - Fix class matching so that match if can be combined with match or
1145   spawn with.
1146
1147 - Do not allow spurious leases in the lease database to introduce
1148   potentially bogus leases into the in-memory database.
1149
1150 - Fix a byte-order problem in the client hardware address type code
1151   for OMAPI.
1152
1153 - Be slightly less picky about what sort of hardware addresses OMAPI
1154   can install in host declarations.
1155
1156                 Changes since 3.0 Beta 2 Patchlevel 4
1157
1158 - Incorporated Peter Marschall's proposed change to array/record
1159   parsing, which allows things like the slp-agent option to be encoded
1160   correctly.   Thanks very much to Peter for taking the initiative to
1161   do this, and for doing such a careful job of it (e.g., updating the
1162   comments)!
1163
1164 - Added an encoding for the slp-agent option.   :')
1165
1166 - Fixed SunOS 4 build.  Thanks to Robert Elz for responding to my
1167   request for help on this with patches!
1168
1169 - Incorporated a change that should fix a problem reported by Philippe
1170   Jumelle where when the network connection between two servers is
1171   lost, they never reconnect.
1172
1173 - Fix client script files other than that for NetBSD to actually use
1174   make_resolv_conf as documented in the manual page.
1175
1176 - Fix a bug in the packet handling code that could result in a core
1177   dump.
1178
1179 - Fix a bug in the bootp code where responses on the local net would
1180   be sent to the wrong MAC address.   Thanks to Jerry Schave for
1181   catching this one.
1182
1183                 Changes since 3.0 Beta 2 Patchlevel 3
1184
1185 - In the DHCP client, execute client statements prior to using the values
1186   of options, so that the client configuration can overried, e.g., the
1187   lease renewal time.
1188
1189 - Fix a reference counting error that would result in very reproducible
1190   failures in updates, as well as occasional core dumps, if a zone was
1191   declared without a key.
1192
1193 - Fix some Linux 2.0 compilation problems.
1194
1195 - Fix a bug in scope evaluation during execution of "on" statements that
1196   caused values not to be recorded on leases.
1197
1198 - If the dhcp-max-message-size option is specified in scope, and the
1199   client didn't send this option, use the one specified in scope to
1200   determine the maximum size of the response.
1201
1202                 Changes since 3.0 Beta 2 Patchlevel 2
1203
1204 - Fix a case where spawning subclasses were being allocated
1205   incorrectly, resulting in a core dump.
1206
1207 - Fix a case where the DHCP server might inappropriately NAK a
1208   RENEWING client.
1209
1210 - Fix a place dhcprequest() where static leases could leak.
1211
1212 - Include memory.h in omapip_p.h so that we don't get warnings about
1213   using memcmp().
1214
1215                 Changes since 3.0 Beta 2 Patchlevel 1
1216
1217 - Notice when SIOCFIGCONF returns more data than fit in the buffer -
1218   allocate a larger buffer, and retry.   Thanks to Greg Fausak for
1219   pointing this out.
1220
1221 - In the server, if no interfaces were configured, report an error and
1222   exit.
1223
1224 - Don't ever record a state of 'startup'.
1225
1226 - Don't try to evaluate the local failover binding address if none was
1227   specified.   Thanks to Joseph Breu for finding this.
1228
1229 $DragonFly: src/contrib/isc-dhcp/Attic/RELNOTES,v 1.2 2003/10/11 21:14:10 dillon Exp $