--- /dev/null
+ Internet Software Consortium DHCP Distribution
+ Version 3 Patch Level 1
+ April 30, 2002
+
+ Release Notes
+
+ NEW FEATURES
+
+Version 3 of the ISC DHCP Distribution includes the following features
+that are new since version 2.0:
+
+ - DHCP Failover Protocol support
+ - OMAPI, an API for accessing and modifying the DHCP server and
+ client state.
+ - Conditional behaviour
+ - Storing arbitrary information on leases
+ - Address pools with access control
+ - Client classing
+ - Address allocation restriction by class
+ - Relay agent information option support
+ - Dynamic DNS updates
+ - Many bug fixes, performance enhancements, and minor new DHCP
+ protocol features.
+
+This release has been beta tested quite thorougly, and we think it is
+substantially more robust at this time than 2.0pl5. This patch level
+release includes a fix for a serious security whole. All DHCP 3.0
+sites are urged to upgrade to 3.0pl1 (or 3.0.1RC9 or later).
+
+The 3.0 Release Candidate 1 lease file is not backwards compatible
+with the 3.0 Beta 1 lease file, so if you have to go back, you will
+have to convert your lease files back to the 3.0 Beta 1 format - if
+you try to run a 3.0 Beta 1 server on a 3.0 lease file, it will
+cheerfully delete all your leases.
+
+If you are running 3.0 beta 1 and are doing dynamic DNS updates, the
+lease file is no longer forward-compatible to 3.0 final. A script
+has been provided to convert 3.0b1 lease files. This is in
+contrib/3.0b1-lease-convert.
+
+For information on how to install, configure and run this software,
+as well as how to find documentation and report bugs, please consult
+the README file.
+
+The Dynamic DNS Update support is a descendent of an implementation
+done by Lans Carstensen and Brian Dols at Rose-Hulman Institute of
+Technology, Jim Watt at Applied Biosystems, Irina Goble at Integrated
+Measurement Systems, Igor Sharfmesser at Kazakh Telecom, and Brian
+Murrell at BC Tel Advanced Communications. I'd like to express my
+thanks to all of these good people here, both for working on the code
+and for prodding me into improving it.
+
+ Changes since 3.0p1
+
+- Potential buffer overflows in minires repaired.
+
+ Changes since 3.0
+
+- Fix a format string vulnerability in the server that could lead to a
+ remote root compromise (discovered by NGSEC Research Team, www.ngsec.com).
+
+ Changes since 3.0 Release Candidate 12
+
+- Fix a memory leak in the evaluation code.
+
+- Fix an obscure core dump.
+
+- Print a couple of new warnings when parsing the configuration file
+ when crucial information is left out.
+
+- Log "no free leases" as an error.
+
+- Documentation updates.
+
+ Changes since 3.0 Release Candidate 11
+
+- Always return a subnet selection option if one is sent.
+
+- Fix a warning that was being printed because an automatic data
+ structure wasn't zeroed.
+
+- Fix some failover state transitions that were being handled
+ incorrectly.
+
+- When supersede_lease is called on a lease whose end time has already
+ expired, but for which a state transition has not yet been done, do
+ a state transition. This fixes the case where if the secondary
+ allocated a lease to a client and the lease "expired" while the
+ secondary was in partner-down, no expiry event would actually
+ happen, so the lease would remain active until the primary was
+ restarted.
+
+ Changes since 3.0 Release Candidate 10
+
+- Fix a bug that was preventing released leases from changing state
+ in failover-enabled pools.
+
+- Fix a core dump in the client identifier finder code (for host
+ declarations).
+
+- Finish fixing a bug where bogus data would sometimes get logged to
+ the dhclient.leases file because it was opened as descriptor 2.
+
+- Fix the linux dhclient-script according to suggestions made by
+ several people on the dhcp-client mailing list.
+
+- Log successful DNS updates at LOG_INFO, not LOG_ERROR.
+
+- Print an error message and refuse to run if a failover peer is
+ defined but not referenced by any pools.
+
+- Correct a confusing error message in failover.
+
+ Changes since 3.0 Release Candidate 9
+
+- Fix a bug in lease allocation for Dynamic BOOTP clients.
+
+ Changes since 3.0 Release Candidate 8 Patchlevel 2
+
+- Fix a bug that prevented update-static-leases from working.
+
+- Document failover-state OMAPI object.
+
+- Fix a compilation error on SunOS 4.
+
+ Changes since 3.0 Release Candidate 8 Patchlevel 1
+
+- Fix a parsing bug that broke dns updates (both interim and ad-hoc).
+ This was introduced in rc8pl1 as an unintended result of the memory
+ leakage fixes that were in pl1.
+
+- Fix a long-standing bug where the server would record that an update
+ had been done for a client with no name, even though no update had
+ been done, and then when the client's lease expired the deletion of
+ that nonexistant record would time out because the name was the null
+ string.
+
+- Clean up the omshell, dhcpctl and omapi man pages a bit.
+
+ Changes since 3.0 Release Candidate 8
+
+- Fix a bug that could cause the DHCP server to spin if
+ one-lease-per-client was enabled.
+
+- Fix a bug that was causing core dumps on BSD/os in the presence of
+ malformed packets.
+
+- In partner-down state, don't restrict lease lengths to MCLT.
+
+- On the failover secondary, record the MCLT received from the primary
+ so that if we come up without a connection to the primary we don't
+ wind up giving out zero-length leases.
+
+- Fix some compilation problems on BSD/os.
+
+- Fix a bunch of memory leaks.
+
+- Fix a couple of bugs in the option printer.
+
+- Fix an obscure error reporting bug in the dns update code, and also
+ make the message clearer when a key algorithm isn't supported.
+
+- Fix a bug in the tracing code that prevented trace runs that used
+ tcp connections from being played back.
+
+- Add some additional debugging capability for catching memory leaks
+ on exit.
+
+- Make the client release the lease correctly on shutdown.
+
+- Add some configurability to the build system.
+
+- Install omshell manual page in man1, not man8.
+
+- Craig Gwydir sent in a patch that fixes a long-standing bug in the
+ DHCP client that could cause core dumps, but that for some reason
+ hadn't been noticed until now.
+
+ Changes since 3.0 Release Candidate 7
+
+- Fix a bug in failover where we weren't sending updates after a
+ transition from communications-interrupted to normal.
+
+- Handle expired/released/reset -> free transition according to the
+ protocol specification (this works - the other way not only wasn't
+ conformant, but also didn't work).
+
+- Add a control object in both client and server that allows either
+ daemon to be shut down cleanly.
+
+- When writing a lease, if we run out of disk space, shut down the
+ output file and insist on writing a new one before proceeding.
+
+- In the server, if the OMAPI listener port is occupied, keep trying
+ to get it, rather than simply giving up and exiting.
+
+- Support fetching variables from leases and also updating and adding
+ variables to leases via OMAPI.
+
+- If two failover peers have wildly different clocks, refuse to start
+ doing failover.
+
+- Fix a bug in the DNS update code that could cause core dumps when
+ running on alpha processors.
+
+- Fixed a bug in ddns updates for static lease entries, thanks to a
+ patch from Andrey M Linkevitch.
+
+- Add support for Darwin/MacOS X
+
+- Install omshell (including new documentation).
+
+- Support DNS updates in the client (this is a very obscure feature
+ that most DHCP client users probably will not be able to use).
+
+- Somewhat cleaner status logging in the client.
+
+- Make OMAPI key naming syntax compatible with the way keys are
+ actually named (key names are domain names).
+
+- Fix a bug in the lease file writer.
+
+- Install DHCP ISC headers in a different place than BIND 9 ISC
+ headers, to avoid causing trouble in BIND 9 builds.
+
+- Don't send updates for attributes on an object when the attributes
+ haven't changed. Support deleting attributes on remote objects.
+
+- Fix a number of bugs in omshell, and add the unset and refresh
+ statements.
+
+- Handle disconnects in OMAPI a little bit more intelligently (so that
+ the caller gets ECONNRESET instead of EINVAL).
+
+- Fix a bunch of bugs in the handling of clients that have existing
+ leases when the try to renew their leases while failover is
+ operating.
+
+ Changes since 3.0 Release Candidate 6
+
+- Fix a core dump that could happen when processing a DHCPREQUEST from
+ a client that had a host declaration that contained both a
+ fixed-address declaration and a dhcp-client-identifier option
+ declaration, if the client identifier was longer than nine bytes.
+
+- Fix a memory leak that could happen in certain obscure cases when
+ using omapi to manipulate leases.
+
+- Fix some bugs and omissions in omshell.
+
+
+ Changes since 3.0 Release Candidate 5
+
+- Fix a bug in omapi_object_dereference that prevented objects in
+ chains from having their reference counts decreased on dereference.
+
+- Fix a bug in omapi_object_dereference that would prevent object
+ chains from being freed upon removal of the last reference external
+ to the chain.
+
+- Fix a number of other memory leaks in the OMAPI protocol subsystem.
+
+- Add code in the OMAPI protocol handler to trace memory leakage.
+
+- Clean up the memory allocation/reference history printer.
+
+- Support input of dotted quads and colon-separated hex lists as
+ attribute values in omshell.
+
+- Fix a typo in the linux interface discovery code.
+
+- Conditionalize a piece of trace code that wasn't conditional.
+
+ Changes since 3.0 Release Candidate 4
+
+- Fix a bug that would prevent leases from being abandoned properly on
+ DHCPDECLINE.
+
+- Fix failover peer OMAPI support.
+
+- In failover, correctly handle expiration of leases. Previously,
+ leases would never be reclaimed because they couldn't make the
+ transition from EXPIRED to FREE.
+
+- Fix some broken failover state transitions.
+
+- Documentation fixes.
+
+- Take out an unnecessary check in DHCP relay agent information option
+ stashing code that was preventing REBINDING clients from rebinding.
+
+- Prevent failover peers from allocating leases in DHCPREQUEST
+ processing if the lease belongs to the other server.
+
+- Record server version in lease file introductory comment.
+
+- Correctly report connection errors in OMAPI and failover.
+
+- Make authentication signature algorithm name comparisons in OMAPI
+ case-insensitive.
+
+- Fix compile problem on SunOS 4.x
+
+- If a signature algorithm is not termined with '.', terminate it so
+ that comparisons between fully-qualified names will work
+ consistently.
+
+- Different SIOCGIFCONF probe code, may "fix" problem on some Linux
+ systems with the probe not working correctly.
+
+- Don't allow user to type omapi key on command line of omshell.
+
+ Changes since 3.0 Release Candidate 3
+
+- Do lease billing on startup in a way that I *think* will finally do
+ the billing correctly - the previous method could overbill as a
+ result of duplicate leases.
+
+- Document OMAPI server objects.
+
+ Changes since 3.0 Release Candidate 2 Patchlevel 1
+
+- Fix some problems in the DDNS update code. Thanks to Albert
+ Herranz for figuring out the main problem.
+
+- Fix some reference counting errors on host entries that were causing
+ core dumps.
+
+- Fix a byte-swap bug in the token ring code, thanks to Jochen
+ Friedrich.
+
+- Fix a bug in lease billing, thanks to Jonas Bulow.
+
+ Changes since 3.0 Release Candidate 2
+
+- Change the conditions under which a DHCPRELEASE is actually
+ committed to be consistent with lease binding states rather than
+ using the lease end time. THis may fix some problems with the
+ billing class code.
+
+- Fix a bug where lease updates would fail on Digital Unix (and maybe
+ others) because malloc was called with a size of zero.
+
+- Fix a core dump that happens when the DHCP server can't create its
+ trace file.
+
+ Changes since 3.0 Release Candidate 1 Patchlevel 1
+
+- Fix the dhcp_failover_put_message to not attempt to allocate a
+ zero-length buffer. Some versions of malloc() fail if you try to
+ allocate a zero-length buffer, and this was causing problems on,
+ e.g., Digital Unix.
+
+- Fix a case where the failover code was printing an error message
+ when no error had occurred.
+
+- Fix a problem where when a server went down and back up again, the
+ peer would not see a state transition and so would stay in the
+ non-communicating state.
+
+- Be smart about going into recover_wait.
+
+- Fix a problem in the failover implementation where peers would fail
+ to come into sync if interrupted in the RECOVER state. This could
+ have been the cause of some problems people have reported recently.
+
+- Fix a problem with billing classes where they would not be unbilled
+ when the client lease expired.
+
+- If select fails, figure out which descriptor is bad, and cut it out
+ of the I/O loop. This prevents a potentially nasty spin. I
+ haven't heard any report it in a while, but it came up consistently
+ in testing.
+
+- Fix a bug in the relay agent where if you specified interfaces on
+ the command line, it would fail.
+
+- Fix a couple of small bugs in the omapi connection object (no known
+ user impact).
+
+- Add the missing 3.0 Beta 1 lease conversion script.
+
+- Read dhcp client script hooks if they exist, rather than only if
+ they're executable.
+
+ Changes since 3.0 Release Candidate 1
+
+- Fix a memory smash that happens when fixed-address leases are used.
+ ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
+ UPGRADE IMMEDIATELY. This has been a long-standing bug - thanks to
+ Alvise Nobile for discovering it and helping me to find it!
+
+- Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
+ Transmeta.
+
+- There is a known problem with the DHCP server doing failover on
+ Compaq Alpha systems. This patchlevel is not a release candidate
+ because of this bug. The bug should be straightforward to fix, so
+ a new release candidate is expected shortly.
+
+- There is a known problem in the DDNS update code that is probably a
+ bug, and is not, as far as we know, fixed in this patchlevel.
+
+ Changes since 3.0 Beta 2 Patchlevel 24
+
+- Went over problematic failover state transitions and made them all
+ work, so that failover should now much less fragile.
+
+- Add some dhcpctl and omapi documentation
+
+- Fix compile errors when compiling with unusual predefines.
+
+- Make Token Ring work on Linux 2.4
+
+- Fix the Digital Unix BPF_WORDALIGN bug.
+
+- Fix some dhcp client documentation errors.
+
+- Update some parts of the README file.
+
+- Support GCC on SCO.
+
+ Changes since 3.0 Beta 2 Patchlevel 23
+
+- Fix a bug in the DNS update code where a status code was not being
+ checked. This may have been causing core dumps.
+
+- When parsing the lease file, if a lease declaration includes a
+ billing class statement, and the lease already has a billing class,
+ unbill the old class.
+
+- When processing failover transactions, where acks will be deferred,
+ process the state transition immediately.
+
+- Don't try to use the new SIOCGIFCONF buffer size detection code on
+ Linux 2.0, which doesn't provide this functionality.
+
+- Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
+
+- Fix a problem in using the which command in the configure script.
+
+- Fix a parse error in the client when setting up an omapi listener.
+
+- Document the -n and -g flags to the client.
+
+- Make sure there is always a stdin and stdout on startup. This
+ prevents shell scripts from accidentally writing error messages into
+ configuration files that happen to be opened as stderr.
+
+- If an interface is removed, the client will now notice that it is
+ gone rather than spinning. This has only been tested on NetBSD.
+
+- The client will attempt to get an address even if it can't create a
+ lease file.
+
+- Don't overwrite tracefiles.
+
+- Fix some memory allocation bugs in failover.
+
+ Changes since 3.0 Beta 2 Patchlevel 22
+
+- Apply some patches suggested by Cyrille Lefevre, who is maintaining
+ the FreeBSD ISC DHCP Distribution port.
+
+- Fix a core dump in DHCPRELEASE.
+
+ Changes since 3.0 Beta 2 Patchlevel 21
+
+- This time for sure: fix the spin described in the changes for pl20.
+
+ Changes since 3.0 Beta 2 Patchlevel 20
+
+- Fix a problem with Linux detecting large numbers of interfaces (Ben)
+
+- Fix a memory smash in the quotify code, which was introduced in
+ pl19.
+
+- Actually fix the spin described in the changes for pl20. The
+ previous fix only partially fixed the problem - enough to get it
+ past the regression test.
+
+ Changes since 3.0 Beta 2 Patchlevel 19
+
+- Fix a bug that could cause the server to abort if compiled with
+ POINTER_DEBUG enabled.
+
+- Fix a bug that could cause the server to spin when responding to a
+ DHCPREQUEST.
+
+- Apply Joost Mulders' suggested patches for DLPI on x86.
+
+- Support NUL characters in quoted strings.
+
+- Install unformatted man pages on SunOS.
+
+ Changes since 3.0 Beta 2 Patchlevel 18
+
+- Allow the server to be placed in partner-down state using OMAPI.
+ (Damien Neil)
+
+- Implement omshell, which can be used to do arbitrary things to the
+ server (in theory). (Damien Neil)
+
+- Fix a case where if a client had two different leases the server could
+ actually dereference the second one when it hadn't been referenced,
+ leading to memory corruption and a core dump. (James Brister)
+
+- Fix a case where a client could request the address of another client's
+ lease, but find_lease wouldn't detect that the other client had it, and
+ would attempt to allocate it to the client, resulting in a lease conflict
+ message.
+
+- Fix a case where a client with more than one client identifier could be
+ given a lease where the hardware address was correct but the client
+ identifier was not, resulting in a lease conflict message.
+
+- Fix a problem where the server could write out a colon-separated
+ hex list as a value for a variable, which would then not parse.
+ The fix is to always write strings as quoted strings, with any
+ non-printable characters quoted as octal escape sequences. So
+ a file written the old way still won't work, but new files written
+ this way will work.
+
+- Fix documentation for sending non-standard options.
+
+- Use unparsable names for unknown options. WARNING: this will
+ break any configuration files that use the option-nnn convention.
+ If you want to continue to use this convention for some options,
+ please be sure to write a definition, like this:
+
+ option option-nnn code nnn = string;
+
+ You can use a descriptive name instead of option-nnn if you like.
+
+- Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
+ DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence. This was the
+ result of a deceptively silly bug in supersede_lease.
+
+- Fix client script exit status check, according to a fix supplied by
+ Hermann Lauer.
+
+- Fix an endianness bug in the tracefile support, regarding ICMP
+ messages.
+
+- Fix a bug in the client where the medium would not work correctly if
+ it contained quoted strings.
+
+ ** there was no pl17 **
+
+ Changes since 3.0 Beta 2 Patchlevel 16
+
+- Add support for transaction tracing. This allows the state of the
+ DHCP server on startup, and all the subsequent transactions, to be
+ recorded in a file which can then be played back to reproduce the
+ behaviour of the DHCP server. This can be used to quickly
+ reproduce bugs that cause core dumps or corruption, and also for
+ tracking down memory leaks.
+
+- Incorporate some bug fixes provided by Joost Mulders for the DLPI
+ package which should clear up problems people have been seeing on
+ Solaris.
+
+- Fix bugs in the handling of options stored as linked lists (agent
+ options, fqdn options and nwip options) that could cause memory
+ corruption and core dumps.
+
+- Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
+ not being send in some cases when they were needed.
+
+- Make the lease structure somewhat more compact.
+
+- Make initial failover startup *much* faster. This was researched
+ and implemented by Damien Neil.
+
+- Add a --version flag to all executables, which prints the program
+ name and version to standard output.
+
+- Don't rewrite the lease file every thousand leases.
+
+- A bug in nit.c for older SunOS machines was fixed by a patch sent in
+ by Takeshi Hagiwara.
+
+- Fix a memory corruption bug in the DHCP client.
+
+- Lots of documentation updates.
+
+- Add a feature allowing environment variables to be passed to the
+ DHCP client script on the DHCP client command line.
+
+- Fix client medium support, which had been broken for some time.
+
+- Fix a bug in the DHCP client initial startup backoff interval, which
+ would cause two DHCPDISCOVERS to be sent back-to-back on startup.
+
+
+ Changes since 3.0 Beta 2 Patchlevel 15
+
+- Some documentation tweaks.
+
+- Maybe fix a problem in the DLPI code.
+
+- Fix some error code space inconsistencies in ddns update code.
+
+- Support relay agents that intercept unicast DHCP messages to stuff
+ agent options into them.
+
+- Fix a small memory leak in the relay agent option support code.
+
+- Fix a core dump that would occur if a packet was sent with no
+ options.
+
+ Changes since 3.0 Beta 2 Patchlevel 14
+
+- Finish fixing a long-standing bug in the agent options code. This
+ was causing core dumps and failing to operate correctly - in
+ particular, agent option stashing wasn't working. Agent option
+ stashing should now be working, meaning that agent options can be
+ used in class statements to control address allocation.
+
+- Fix up documentation.
+
+- Fix a couple of small memory leaks that would have added up
+ significantly in a high-demand situation.
+
+- Add a log-facility configuration parameter.
+
+- Fix a compile error on some older operating systems.
+
+- Add the ability in the client to execute certain statements before
+ transmitting packets to the server. Handy for debugging; not much
+ practical use otherwise.
+
+- Don't send faked-out giaddr when renewing or bound - again, useful
+ for debugging.
+
+ Changes since 3.0 Beta 2 Patchlevel 13
+
+- Fixed a problem where the fqdn decoder would sometimes try to store
+ an option with an (unsigned) negative length, resulting in a core
+ dump on some systems.
+
+- Work around the Win98 DHCP client, which NUL-terminates the FQDN
+ option.
+
+- Work around Win98 and Win2k clients that will claim they want to do
+ the update even when they don't have any way to do it.
+
+- Fix some log messages that can be printed when failover is operating
+ that were not printing enough information.
+
+- It was possible for a DHCPDISCOVER to get an allocation even when
+ the state machine said the server shouldn't be responding.
+
+- Don't load balance DHCPREQUESTs from clients in RENEWING and
+ REBINDING, since in RENEWING, if we heard it, it's for us, and in
+ REBINDING, the client wouldn't have got to REBINDING if its primary
+ were answering.
+
+- When we get a bogus state lease binding state transition, don't do
+ the transition.
+
+
+ Changes since 3.0 Beta 2 Patchlevel 12
+
+- Fixed a couple of silly compile errors.
+
+ Changes since 3.0 Beta 2 Patchlevel 11
+
+- Albert Herranz tracked down and fixed a subtle bug in the base64
+ decoder that would prevent any key with an 'x' in its base64
+ representation from working correctly.
+
+- Thanks to Chris Cheney and Michael Sanders, we have a fix for the
+ hang that they both spotted in the DHCP server - when
+ one-lease-per-client was set, the code to release the "other" lease
+ could spin.
+
+- Fix a problem with alignment of the input buffer in bpf in cases
+ where two packets arrive in the same bpf read.
+
+- Fix a problem where the relay agent would crash if you specified an
+ interface name on the command line.
+
+- Add the ability to conditionalize client behaviour based on the
+ client state.
+
+- Add support for the FQDN option, and added support for a new way of
+ doing ddns updates (ddns update style interim) that allows more than
+ one DHCP server to update the DNS for the same network(s). This
+ was implemented by Damien Neil with some additional functionality
+ added by Ted Lemon.
+
+- Damien added a "log" statement, so that the configuration file can
+ be made to log debugging information and other information.
+
+- Fixed a bug that caused option buffers not to be terminated with an
+ end option.
+
+- Fixed a long-standing bug in the support for option spaces where the
+ options are stored as an ordered list rather than in a hash table,
+ which could theoretically result in memory pool corruption.
+
+- Prevent hardware declarations with no actual hardware address from
+ being written as something unparsable, and behave correctly in the
+ face of a null hardware address on input.
+
+- Allow key names to be FQDNs, and qualify the algorithm name if it is
+ specified unqualified.
+
+- Modify the DDNS update code so that it never prints the "resolver
+ failed" message, but instead says *why* the resolver failed.
+
+- Officially support the subnet selection option, which now has an
+ RFC.
+
+- Fix a build bug on MacOS X.
+
+- Allow administrator to disable ping checking.
+
+- Clean up dhcpd.conf documentation and add more information about how
+ it works.
+
+ Changes since 3.0 Beta 2 Patchlevel 10
+
+- Fix a bug introduced during debugging (!) and accidentally committed
+ to CVS.
+
+ Changes since 3.0 Beta 2 Patchlevel 9
+
+- Fix DHCP client handling of vendor encapsulated options.
+
+- Fix a bug in the handling of relay agent information options introduced
+ in patchlevel 9.
+
+- Stash agent options on client leases by default, and use the stashed
+ options at renewal time.
+
+- Add the ability to test the client's binding state in the client
+ configuration language.
+
+- Fix a core dump in the DNS update code.
+
+- Fix some expression evaluation bugs that were causing updates to be
+ done when no client hostname was received.
+
+- Fix expression evaluation debugging printfs.
+
+- Teach pretty_print_option to print options in option spaces other than
+ the DHCP option space.
+
+- Add a warning message if the RHS of a not is not boolean.
+
+- Never select for more than a day, because some implementations of
+ select will just fail if the timeout is too long (!).
+
+- Fix a case where a DHCPDISCOVER from an unknown network would be
+ silently dropped.
+
+- Fix a bug where if a client requested an IP address for which a different
+ client had the lease, the DHCP server would reallocate it anyway.
+
+- Fix the DNS update code so that if the client changes its name, the DNS
+ will be correctly updated.
+
+ Changes since 3.0 Beta 2 Patchlevel 8
+
+- Oops, there was another subtle math error in the header-length
+ bounds-checking.
+
+ Changes since 3.0 Beta 2 Patchlevel 7
+
+- Oops, forgot to byte-swap udp header length before bounds-checking it.
+
+ Changes since 3.0 Beta 2 Patchlevel 6
+
+- Fix a possible DoS attack where a client could cause the checksummer
+ to dump core. This was a read, not a write, so it shouldn't be
+ possible to exploit it any further than that.
+
+- Implement client- and server-side support for using the Client FQDN
+ option.
+
+- Support for other option spaces in the client has been added. This
+ means that it is now possible to define a vendor option space on the
+ client, request options in that space from the server (which must
+ define the same option space), and then use those options in the
+ client. This also allows NWIP and Client FQDN options to be used
+ meaningfully.
+
+- Add object initializer support. This means that objects can now be
+ initialized to something other than all-zeros when allocated, which
+ makes, e.g., the interface object support code a little more robust.
+
+- Fix an off-by-one bug in the host stuffer. This was causing host
+ deletes not the work, and may also have been causing OMAPI
+ connections to get dropped. Thanks to James Brister for tracking
+ this one down!
+
+- Fixed a core dump in the interface discovery code that is triggered
+ when there is no subnet declaration for an interface, but the server
+ decides to continue running. Thanks to Shane Kerr for tracking
+ down and fixing this problem.
+
+ Changes since 3.0 Beta 2 Patchlevel 5
+
+- Fix a bug in the recent enhancement to the interface discovery code
+ to support arbitrary-length interface lists.
+
+- Support NUL-terminated DHCP options when initializing client-script
+ environment.
+
+- Fix suffix operator.
+
+- Fix NetWare/IP option parsing.
+
+- Better error/status checking in dhcpctl initialization and omapi
+ connection code.
+
+- Fix a potential memory smash in dhcpctl code.
+
+- Fix SunOS4 and (maybe) Ultrix builds.
+
+- Fix a bug where a certain sort of incoming packet could cause a core
+ dump on Solaris (and probably elsewhere).
+
+- Add some more safety checks in error logging code.
+
+- Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
+
+- Fix relay agent so that if an interface is specified on the command
+ line, the relay agent does not dump core.
+
+- Fix class matching so that match if can be combined with match or
+ spawn with.
+
+- Do not allow spurious leases in the lease database to introduce
+ potentially bogus leases into the in-memory database.
+
+- Fix a byte-order problem in the client hardware address type code
+ for OMAPI.
+
+- Be slightly less picky about what sort of hardware addresses OMAPI
+ can install in host declarations.
+
+ Changes since 3.0 Beta 2 Patchlevel 4
+
+- Incorporated Peter Marschall's proposed change to array/record
+ parsing, which allows things like the slp-agent option to be encoded
+ correctly. Thanks very much to Peter for taking the initiative to
+ do this, and for doing such a careful job of it (e.g., updating the
+ comments)!
+
+- Added an encoding for the slp-agent option. :')
+
+- Fixed SunOS 4 build. Thanks to Robert Elz for responding to my
+ request for help on this with patches!
+
+- Incorporated a change that should fix a problem reported by Philippe
+ Jumelle where when the network connection between two servers is
+ lost, they never reconnect.
+
+- Fix client script files other than that for NetBSD to actually use
+ make_resolv_conf as documented in the manual page.
+
+- Fix a bug in the packet handling code that could result in a core
+ dump.
+
+- Fix a bug in the bootp code where responses on the local net would
+ be sent to the wrong MAC address. Thanks to Jerry Schave for
+ catching this one.
+
+ Changes since 3.0 Beta 2 Patchlevel 3
+
+- In the DHCP client, execute client statements prior to using the values
+ of options, so that the client configuration can overried, e.g., the
+ lease renewal time.
+
+- Fix a reference counting error that would result in very reproducible
+ failures in updates, as well as occasional core dumps, if a zone was
+ declared without a key.
+
+- Fix some Linux 2.0 compilation problems.
+
+- Fix a bug in scope evaluation during execution of "on" statements that
+ caused values not to be recorded on leases.
+
+- If the dhcp-max-message-size option is specified in scope, and the
+ client didn't send this option, use the one specified in scope to
+ determine the maximum size of the response.
+
+ Changes since 3.0 Beta 2 Patchlevel 2
+
+- Fix a case where spawning subclasses were being allocated
+ incorrectly, resulting in a core dump.
+
+- Fix a case where the DHCP server might inappropriately NAK a
+ RENEWING client.
+
+- Fix a place dhcprequest() where static leases could leak.
+
+- Include memory.h in omapip_p.h so that we don't get warnings about
+ using memcmp().
+
+ Changes since 3.0 Beta 2 Patchlevel 1
+
+- Notice when SIOCFIGCONF returns more data than fit in the buffer -
+ allocate a larger buffer, and retry. Thanks to Greg Fausak for
+ pointing this out.
+
+- In the server, if no interfaces were configured, report an error and
+ exit.
+
+- Don't ever record a state of 'startup'.
+
+- Don't try to evaluate the local failover binding address if none was
+ specified. Thanks to Joseph Breu for finding this.