1	      Internet Systems Consortium DHCP Distribution
2			      Version 3.0.3
3			      July 22, 2005
4
5			     Release Notes
6
7			     NEW FEATURES
8
9Version 3 of the ISC DHCP Distribution includes the following features
10that are new since version 2.0:
11
12     - DHCP Failover Protocol support
13     - OMAPI, an API for accessing and modifying the DHCP server and
14       client state.
15     - Conditional behaviour
16     - Storing arbitrary information on leases
17     - Address pools with access control
18     - Client classing
19     - Address allocation restriction by class
20     - Relay agent information option support 
21     - Dynamic DNS updates
22     - Many bug fixes, performance enhancements, and minor new DHCP
23       protocol features. 
24
25The main bug fixed here is a bug in the subclass allocation code that
26could result in a memory smash.   Any users of the ISC DHCP server who
27are using subclasses should seriously consider upgrading to 3.0.1.
28
29If you are running 3.0 beta 1 and are doing dynamic DNS updates, the
30lease file is no longer forward-compatible to 3.0 final.   A script
31has been provided to convert 3.0b1 lease files.   This is in
32contrib/3.0b1-lease-convert.
33
34For information on how to install, configure and run this software,
35as well as how to find documentation and report bugs, please consult
36the README file.
37
38The Dynamic DNS Update support is a descendent of an implementation
39done by Lans Carstensen and Brian Dols at Rose-Hulman Institute of
40Technology, Jim Watt at Applied Biosystems, Irina Goble at Integrated
41Measurement Systems, Igor Sharfmesser at Kazakh Telecom, and Brian
42Murrell at BC Tel Advanced Communications.  I'd like to express my
43thanks to all of these good people here, both for working on the code
44and for prodding me into improving it.
45
46			Changes since 3.0.3b3
47
48- dhclient.conf documentation for interface {} was updated to reflect recent
49  discussion on the dhcp-hackers mailing list.
50
51- In response to reports that the software does not compile on GCC 4.0.0,
52  -Werror was removed from Makefile.conf for all platforms that used it.
53  We will address the true problem in a future release; this is a temporary
54  workaround.
55
56			Changes since 3.0.3b2
57
58- An error in code changes introduced in 3.0.3b2 was corrected, which caused
59  static BOOTP clients to receive random addresses.
60
61			Changes since 3.0.3b1
62
63- A bug was fixed in BOOTPREQUEST handling code wherein stale references to
64  host records would be left behind on leases that were not allocated to the
65  client currently booting (eg in the case where the host was denied booting).
66
67- The dhcpd.conf.5 manpage was updated to be more clear in regards to
68  multiple host declarations (thanks to Vincent McIntyre).  'Interim' style
69  dynamic updates were also retouched.
70
71			Changes since 3.0.2
72
73- A bug was fixed where a server might load balance a DHCP REQUEST to its
74  peer after already choosing not to load balance the preceeding DISCOVER.
75  The peer cannot allocate the originating server's lease.
76
77- In the case where a secondary server lost its stable storage while the
78  primary was still in communications-interrupted, and came back online,
79  the lease databases would not be fully transferred to the secondary.
80  This was due to the secondary errantly sending an extra UPDREQ message
81  when the primary made its state transition to PARTNER-DOWN known.
82
83- The package will now compile cleanly in gcc 3.3 and 3.4.  As a side effect,
84  lease structures will be 9 bytes smaller on all platforms.  Thanks to
85  Jason Vas Dias at Redhat.
86
87- Interface discovery code in DISCOVER_UNCONFIGURED mode is now
88  properly restricted to only detecting broadcast interfaces.  Thanks
89  to a patch from Jason Vas Dias at RedHat.
90
91- decode_udp_ip_header was changed so that the IP address was copied out
92  to a variable, rather than referenced by a pointer.  This enforces 4-byte
93  alignment of the 32-bit IP address value.  Thanks to a patch from Dr.
94  Peter Poeml.
95
96- An incorrect log message was corrected thanks to a patch from
97  Dr. Peter Poeml.
98
99- A bug in DDNS was repaired, where if the server's first DDNS action was
100  a DDNS removal rather than a DDNS update, the resolver library's
101  retransmit timer and retry timer was set to the default, implying a
102  15 second timeout interval.  Which is a little excessive in a synchronous,
103  single-threaded system.  In all cases, ISC DHCP should now hold fast to
104  a 1-second timeout, trying only once.
105
106- The siaddr field was being improperly set to the server-identifier when
107  responding to DHCP messages.  RFC2131 clarified the siaddr field as
108  meaning the 'next server in the bootstrap process', eg a tftp server.
109  The siaddr field is now left zeroed unless next-server is configured.
110
111- mockup_lease() could have returned in an error condition (or in the
112  condition where no fixed-address was found matching the shared
113  network) with stale references to a host record.  This is probably not
114  a memory leak since host records generally never die anyway.
115
116- A bug was repaired where failover servers would let stale client identifiers
117  persist on leases that were reallocated to new clients not sending an id.
118
119- Binding scopes ("set var = value;") are now removed from leases allocated
120  by failover peers if the lease had expired.  This should help reduce the
121  number of stale binding scopes on leases.
122
123- A small memory leak was closed involving client identifiers larger than
124  7 bytes, and failover.
125
126- Configuring a subnet in dhcpd.conf with a subnet mask of 32 bits might
127  cause an internal function to overflow heap.  Thanks to Jason Vas Dias
128  at Redhat.
129
130- Some inconsistencies in treating numbers that the lexer parsed as 'NUMBER'
131  or 'NUMBER_OR_NAME' was repaired.  Hexadecimal parsing is affected, and
132  should work better.
133
134- In several cases, parse warnings were being issued before the lexical
135  token had been advanced to the token whose value was causing an error...
136  causing parse warnings to claim the problem is on the wrong token.
137
138- Host declarations matching on client identifier for dynamic leases will
139  no longer match fixed-address host declarations (this is now identical
140  to behaviour for host records matching on hardware address).
141
142			Changes since 3.0.2rc3
143
144- A previously undocumented configuration directive, 'local-address',
145  was documented in the dhcpd.conf manpage.
146
147			Changes since 3.0.2rc2
148
149- Two varaibles introduced in 3.0.2b1 were used without being initialized
150  in the case where neither the FILE nor SNAME fields were available for
151  overloading.  This was repaired.
152
153- A heretofore believed to be impossible corner case of the option
154  overloading implementation turned out to be possible ("Unable to sort
155  overloaded options after 10 tries.").  The implementation was reworked
156  to consider the case of an option so large it would require more than
157  three chunks to fit.
158
159- Many other instances of variables being used without being initialized
160  were repaired.
161
162- An uninitialized variable in omapi_io_destroy() led to the discovery
163  that this function may result in orphaned pointers (and hence, a memory
164  leak).
165
166			Changes since 3.0.2rc1
167
168- allocate_lease() was rewritten to repair a bug in which the server would
169  try to allocate an ABANDONED lease when FREE leases were available.
170
171			Changes since 3.0.2b1
172
173- Some dhcp-eval.5 manpage formatting was repaired.
174
175			Changes since 3.0.1
176
177- A bug was fixed in the server's 'option overloading' implementation,
178  where options loaded into the 'file' and 'sname' packet fields were
179  not aligned precisely as rfc2131 dictates.
180
181- The FreeBSD client script was changed to support the case where a domain
182  name was not provided by the server.
183
184- A memory leak in 'omshell' per each command line parsed was
185  repaired, thanks to a patch from Jarkko Torppa.
186
187- Log functions writing to stderr were adjusted to use the STDERR_FILENO
188  system definition rather than '2'.  This is a no-op for 90% of platforms.
189
190- One call to trace_write_packet_iov() counted the number of io vectors
191  incorrectly, causing inconsistent tracefiles.  This was fixed.
192
193- Some expression parse failure memory leaks were closed.
194
195- A host byte order problem in tracefiles was repaired.
196
197- Pools configured in DHCPD for failover possessing permission lists that
198  previously were assumed to not include dyanmic bootp clients are now
199  a little more pessimistic.  The result is, dhcpd will nag you about just
200  about most pools that possess a 'allow' statement with no 'deny' that
201  would definitely match a dynamic bootp client.
202
203- The 'ddns-update-style' configuration warning bit now insists that
204  the configuration be globally scoped.
205
206- Two memory leaks in dhclient were closed thanks to a patch from Felix
207  Farkas.
208
209- Some minor but excellently pedantic documentation errors were fixed
210  thanks to a patch from Thomas Klausner.
211
212- Bugs in operator precedence in executable statements have been repaired
213  once again.  More legal syntaxes should be parsed legally.
214
215- Failing to initialize a tracefile for any reason if a tracefile was
216  specified is now a fatal error.  Thanks to a patch from Albert Herranz.
217
218- Corrected a bug in which the number of leases transferred as calculated
219  by the failover primary and sent to peers in POOLRESP responses may be
220  incorrect.  This value is not believed to be used by other failover
221  implementations, excepting perhaps as logged information.
222
223- Corrected a bug in which 'dhcp_failover_send_poolresp()' was in fact
224  sending POOLREQ messages instead of POOLRESP mesasges.  This message
225  was essentially ignored since failover secondaries effectively do not
226  respond to POOLREQ messages.
227
228- Type definitions for various bitwidths of integers in the sunos5-5
229  build of ISC DHCP have been fixed.  It should compile and run more
230  easily when built in 64-bit for this platform.
231
232- "allow known-clients;" is now a legal syntax, to avoid confusion.
233
234- If one dhcp server chooses to 'load balance' a request to its failover
235  peer, it first checks to see if it believes said peer has a free
236  lease to allocate before ignoring the DISCOVER.
237
238- log() was logging a work buffer, rather than the value returned by
239  executing the statements configured by the user.  In some cases,
240  the work buffer and the intended results were the same.  In some other
241  cases, they were not.  This was fixed thanks to a patch from Gunnar
242  Fjone and directconnect.no.
243
244- Compiler warnings for some string type conversions was fixed, thanks
245  to Andreas Gustafsson.
246
247- The netbsd build environments were simplified to one, in which
248  -Wconversion is not used, thanks to Andreas Gustafsson.
249
250- How randomness in the backoff-cutoff dhclient configuration variable
251  is implemented was better documented in the manpage, and the behaviour
252  of dhclient in REQUEST timeout handling was changed to match that of
253  DISCOVER timeout handling.
254
255- Omapi was hardened against clients that pass in null values, thanks
256  to a patch from Mark Jason Dominus.
257
258- A bug was fixed in dhclient that kept it from doing client-side
259  ddns updates.  Thanks to a patch from Andreas Gustafsson, which
260  underwent some modification after review by Jason Vas Dias.
261
262- Failover implementations disconnected due to the network between
263  them (rather than one of the two shutting down) will now try to
264  re-establish the failover connection every 5 seconds, rather than
265  to simply try once and give up until one of them is restarted.
266  Thanks to a patch from Ulf Ekberg from Infoblox, and field testing
267  by Greger V. Teigre which led to an enhancement to it.
268
269- A problem that kept DHCP Failover secondaries from tearing down
270  ddns records was repaired.  Thanks to a patch from Ulf Ekberg from
271  Infoblox.
272
273- 64bit pointer sizes are detected properly on FreeBSD now.
274
275- A bug was repaired where the DHCP server would leave stale references
276  to host records on leases it once thought about offering to certain
277  clients.  The result would be to apply host and 'known' scopes to the
278  wrong clients (possibly denying booting).  NOTE:  The 'mis-host' patch
279  that was being circulated as a workaround is not the way this bug was
280  fixed.  If you were a victim of this bug in 3.0.1, you are cautioned
281  to proceed carefully and see if it fixes your problem.
282
283- A bug was repaired in the server's DHCPINFORM handling, where it
284  tried to divine the client's address from the source packet and
285  would get it wrong.  Thanks to Anshuman Singh Rawat.
286
287- A log message was introduced to help illuminate the case where the
288  server was unable to find a lease to assign to any BOOTP client.
289  Thanks to Daniel Baker.
290
291- A minor dhcpd.conf.5 manpage error was fixed.
292
293			Changes since 3.0.1rc14
294
295- The global variable 'cur_time' was centralized and is now uniformly of a
296  type #defined in system-dependent headers.  It had previously been defined
297  in one of many places as a 32-bit value, and this causes mayhem on 64-bit
298  big endian systems.  It probably wasn't too healthy on little endian
299  systems either.
300
301- A printf format string error introduced in rc14 was repaired.
302
303- AIX system-dependent header file was altered to only define NO_SNPRINTF
304  if the condition used to #ifdef in vsnprintf in AIX' header files
305  is false.
306
307- The Alpha/OSF system-dependent header file was altered to define
308  NO_SNPRINTF on OS revisions older than 4.0G.
309
310- omapip/test.c had string.h added to its includes.
311
312			Changes since 3.0.1rc13
313
314! CAN-2004-0460 - CERT VU#317350: Five stack overflow exploits were closed
315  in logging messages with excessively long hostnames provided by the
316  clients.  It is highly probable that these could have been used by
317  attackers to gain arbitrary root access on systems using ISC DHCP 3.0.1
318  release candidates 12 or 13.  Special thanks to Gregory Duchemin for
319  both finding and solving the problem.
320
321! CAN-2004-0461 - CERT VU#654390: Once the above was closed, an opening
322  in log_*() functions was evidented, on some specific platforms where
323  vsnprintf() was not believed to be available and calls were wrapped to
324  sprintf() instead.  Again, credit goes to Gregory Duchemin for finding
325  the problem.  Calls to snprintf() are now linked to a distribution-local
326  snprintf implementation, only in those cases where the architecture is
327  not known to provide one (see includes/cf/[arch].h).  If you experience
328  linking problems with snprintf/vsnprintf or 'isc_print_' functions, this
329  is where to look.  This vulnerability did not exist in any previously
330  published version of ISC DHCP.
331
332- Compilation on hpux 11.11 was repaired.
333
334- 'The cross-compile bug fix' was backed out.
335
336			Changes since 3.0.1rc12
337
338- Fixed a bug in omapi lease lookup function, to form the hardware
339  address for the hash lookup correctly, thanks to a patch from
340  Richard Hirst.
341
342- Fixed a bug where dhcrelay was sending relayed responses back to the
343  broadcast address, but with the source's unicast mac address.  Should
344  now conform to rfc2131 section 4.1.
345
346- Cross-compile bug fix; use $(AR) instead of ar.  Thanks to Morten Brorup.
347
348- Fixed a crash bug in dhclient where dhcpd servers that do not provide
349  renewal times results in an FPE.  As a side effect, dhclient can now
350  properly handle 0xFFFFFFFF (-1) expiry times supplied by servers.  Thanks
351  to a patch from Burt Silverman.
352
353- The 'ping timeout' debugs from rc12 were removed to -DDEBUG only,
354  and reformatted to correct a compilation error on solaris platforms.
355
356- A patch was applied which fixes a case where leases read from the
357  leases database do not properly over-ride previously read leases.
358
359- dhcpctl.3 manpage was tweaked.
360
361			Changes since 3.0.1rc11
362
363- A patch from Steve Campbell was applied with minor modifications to
364  permit reverse dns PTR record updates with values containing spaces.
365
366- A patch from Florian Lohoff was applied with some modifications to
367  dhcrelay.  It now discards packets whose hop count exceeds 10 by default,
368  and a command-line option (-c) can be used to set this threshold.
369
370- A failover bug relating to identifying peers by name length instead of
371  by name was fixed.
372
373- Delcaring failover configs within shared-network statements should no
374  longer result in error.
375
376- The -nw command line option to dhclient now works.
377
378- Thanks to a patch from Michael Richardson:
379	- Some problems with long option processing have been fixed.
380	- Some fixes to minires so that updates of KEY records will work.
381
382- contrib/ms2isc was updated by Shu-Min Chang of the Intel Corporation.
383  see contrib/ms2isc/readme.txt for revision notes.
384
385- Dhclient no longer uses shell commands to kill another instance of
386  itself, it sends the signal directly.  Thanks to a patch from Martin
387  Blapp.
388
389- The FreeBSD dhclient-script was changed so that a failure to write to
390  /etc/resolv.conf does not prematurely end the script.  This keeps dhclient
391  from looping infinitely when this is the case.  Thanks to a patch from
392  Martin Blapp.
393
394- A patch from Bill Stephens was applied which resolves a problem with lease
395  expiry times in failover configurations.
396
397- A memory leak in configuration parsing was closed thanks to a patch from
398  Steve G.
399
400- The function which discovers interfaces will now skip non-broadcast or
401  point-to-point interfaces, thanks to a patch from David Brownlee.
402
403- Options not yet known by the dhcpd or dhclient have had their names
404  changed such that they do not contain # symbols, in case they should ever
405  appear in a lease file.  An option that might have been named "#144" is
406  now "unknown-144".
407
408- Another patch from Bill Stephens which allows the ping-check timeout to
409  be configured as 'ping-timeout'.  Defaults to 1.
410
411			Changes since 3.0.1rc10
412
413- Potential buffer overflows in minires repaired.
414
415- A change to the linux client script to use /bin/bash, since /bin/sh may
416  not be bash.
417
418- Some missing va_end cleanups thanks to a patch from Thomas Klausner.
419
420- A correction of boolean parsing syntax validation - some illegal syntaxes
421  that worked before are now detected and produce errs, some legal syntaxes
422  that errored before will now work properly.
423
424- Some search-and-replace errors that caused some options to change their
425  names was repaired.
426
427- Shu-min Chang of the Intel corporation has contributed a perl script and
428  module that converts the MS NT4 DHCP configuration to a ISC DHCP3
429  configuration file.
430
431- Applied the remainder of the dhcpctl memory leak patch provided by Bill
432  Squier at ReefEdge, Inc.  (groo@reefedge.com).
433
434- Missing non-optional failover peer configurations will now result in a soft
435  error rather than a null dereference.
436
437			Changes since 3.0.1rc9
438
439- A format string was corrected to fix compiler warnings.
440
441- A number of spelling corrections were made in the man pages.
442
443- The dhclient.conf.5 man page was changed to refer to do-forward-updates
444  rather than a configuration option that doesn't exist.
445
446- A FreeBSD-specific bug in the interface removal handling was fixed.
447
448- A Linux-specific Token Ring detection problem was fixed.
449
450- Hashes removed from as-yet-unknown agent options, having those options
451  appear in reality before we know about them will no longer produce
452  self-corrupting lease databases.
453
454- dhclient will use the proper port numbers now when using the -g option.
455
456- A order-of-operations bug with 2 match clauses in 1 class statement is
457  fixed thanks to a patch from Andrew Matheson.
458
459- Compilation problems on Solaris were fixed.
460
461- Compilation problems when built with DEBUG or DEBUG_PACKET were repaired.
462
463- A fix to the dhcp ack process which makes certain group options will be
464  included in the first DHCPOFFER message was made thanks to a patch from
465  Ling Gou.
466
467- A few memory leaks were repaired thanks to patches from Bill Squier at
468  ReefEdge, Inc.  (groo@reefedge.com).
469
470- A fix for shared-networks that sometimes give clients options for the
471  wrong subnets (in particular, 'option routers') was applied, thanks to
472  Ted Lemon for the patch.
473
474- Omshell's handling of dotted octets as values was changed such that dots
475  one after the other produce zero values in the integer string.
476
477			Changes since 3.0.1rc8
478
479- Fix a format string vulnerability in the server that could lead to a
480  remote root compromise (discovered by NGSEC Research Team, www.ngsec.com).
481
482- Add additional support for NetBSD/sparc64.
483
484- Fix a bug in the command-line parsing of the client.  Also, resolve
485  a memory leak.
486
487- Add better support for shells other than bash in the Linux client
488  script.
489
490- Various build fixes for modern versions of FreeBSD and Linux.
491
492- Fix a bad bounds check when printing binding state names.
493
494- Clarify documentation about fixed-address and multiple addresses.
495
496- Fix a typo in the authoritative error message.
497
498- Make a log entry when we can't write a billing class.
499
500- Use conversion targets that are the right size on all architectures.
501
502- Increment the hop count when relaying.
503
504- Log a message when lease state is changed through OMAPI.
505
506- Don't rerun the shared_network when evaluating the pool.
507
508- Fix a reversed test in the parser.
509
510- Change the type of rbuf_max.
511
512- Make FTS_LAST a manifest constant to quiet warnings.
513
514			Changes since 3.0.1rc7
515
516- Fix two compiler warnings that are generated when compiling on Solaris
517  with gcc.   These stop the build, even though they weren't actually
518  errors, because we prefer that our builds generate no warnings.
519
520			Changes since 3.0.1rc6
521
522- Don't allow a lease that's in the EXPIRED, RELEASED or RESET state
523  to be renewed.
524
525- Implement lease stealing for cases where the primary has fewer leases
526  than the secondary, as called for by the standard.
527
528- Add a fudge factor to the lease expiry acceptance code, (suggested
529  by Kevin Miller of CMU).
530
531- Fix a bug in permit_list_match that made it much too willing to say
532  that two permit lists matched.
533
534- Unless DEBUG_DNS_UPDATES is defined, print more user-friendly (and
535  also more compact) messages about DNS updates.
536
537- Fix a bug in generating wire-format domain names for the FQDN option.
538
539- Fix a bug where the FQDN option would not be returned if the client
540  requested it, contrary to the standard.
541
542- On Darwin, use the FreeBSD DHCP client script.
543
544- On NetBSD/sparc, don't check for casting warnings.
545
546- Add a flag in the DHCP client to disable updating the client's A
547  record when sending an FQDN option indicating that the client is
548  going to update its A record.
549
550- In the client, don't attempt a DNS update until one second after
551  configuring the new IP address, and if the update times out, keep
552  trying until a response, positive or negative, is received from the
553  DNS server.
554
555- Fix an uninitialized memory bug in the DHCP client.
556
557- Apply some FreeBSD-specific bug fixes suggested by Murray Stokely.
558
559- Fix a bug in ns_parserr(), where it was returning the wrong sort
560  of result code in some cases (suggested by Ben Harris of the
561  NetBSD project).
562
563- Fix a bug in is_identifier(), where it was checking against EOF
564  instead of the END_OF_FILE token (also suggested by Ben Harris).
565
566- Fix a bug where if an option universe contained no options, the
567  DHCP server could dump core (Walter Steiner).
568
569- Fix a bug in the handling of encapsulated options.
570
571- Fix a bug that prevented NWIP suboptions from being processed.
572
573- Delete the FTS_BOOTP and FTS_RESERVED states and implement them
574  as modifier flags to the FTS_ACTIVE state, as called for in the
575  failover protocol standard.
576
577- Fix bugs in the pool merging code that resulted in references and
578  dereferences of null pointers.   This bug had no impact unless the
579  POINTER_DEBUG flag was defined.
580
581- In the server, added a do-forward-updates flag that can be used to
582  disable forward updates in all cases, so that sites that want the
583  clients to take sole responsibility for updating their A record can
584  do so.
585
586- Make it possible to disable optimization of PTR record updates.
587
588			Changes since 3.0.1rc5
589
590- Include some new documentation and changes provided by Karl Auer.
591
592- Add a workaround for some Lexmark printers that send a double-NUL-
593  terminated host-name option, which would break DNS updates.
594
595- Fix an off-by-one error in the MAC-address checking code for
596  DHCPRELEASE that was added in 3.0.1rc5.
597
598- Fix a bug where client-specific information was not being discarded
599  from the lease when it expired or was released, resulting in
600  problems if the lease was reallocated to a different client.
601
602- If more than one allocation pool is specified that has the same set
603  of constraints as another allocation pool on the same shared
604  network, merge the two pools.
605
606- Don't print an error in fallback_discard, since this just causes
607  confusion and does not appear to be helping to encourage anyone to
608  fix this bug.
609
610			Changes since 3.0.1rc4
611
612- Fix a bug that would cause the DHCP server to spin if asked to parse
613  a certain kind of incorrect statement.
614
615- Fix a related bug that would prevent an error from being reported in
616  the same case.
617
618- Additional documentation.
619
620- Make sure that the hardware address matches the lease when
621  processing a DHCPRELEASE message.
622
623			Changes since 3.0.1rc3
624
625- A minor bug fix in the arguments to a logging function call.
626- Documentation update for dhcpd.conf.
627
628		        Changes since 3.0.1rc2
629
630- Allow the primary to send a POOLREQ message.   This isn't what the current
631  failover draft says to do, so we may have to back it out if I can't get the
632  authors to relent, but the scheme for balancing that's specified in the
633  current draft seems needlessly hairy, so I'm floating a trial balloon.
634  The rc1 code did not implement the method described in the draft either.
635
636		        Changes since 3.0.1rc1
637
638- Treat NXDOMAIN and NXRRSET as success when we are trying to delete a
639  domain or RRSET.   This allows the DHCP server to forget about a name
640  it added to the DNS once it's been removed, even if the DHCP server
641  wasn't the one that removed it.
642
643- Install defaults for failover maximum outstanding updates and maximum
644  silent time.   This prevents problems that might occur if these values
645  were not configured.
646
647- Don't do DDNS deletes if ddns-update-style is none.
648
649- Return relay agent information options in DHCPNAK.   This prevents DHCPNAK
650  messages from being dropped when the relay agent information option contains
651  routing information.
652
653- Fix a problem where coming up in recover wouldn't result in an update
654  request being sent.
655
656- Add some more chatty messages when we start a recovery update and when it's
657  done.
658
659- Fix a possible problem where some state might have been left around
660  after the peer lost contact and regained contact about how many updates
661  were pending.
662
663- Don't nix a lease update because of a lease conflict.   This test has
664  never (as far as I know) prevented a mistake, and it appears to cause
665  problems with failover.
666
667- Add support in rc history code for keeping a selective history, rather
668  than a history of all references and dereferences.   This code is only used
669  when extensive additional debugging is enabled.
670
671		           Changes since 3.0
672
673- Make allocators for hash tables.   As a side effect, this fixes a memory
674  smash in the subclass allocation code.
675
676- Fix a small bug in omshell where if you try to close an object when
677  no object is open, it dumps core.
678
679- Fix an obscure coredump that could occur on shutdown.
680
681- Fix a bug in the recording of host declaration rubouts in the lease file.
682
683- Fix two potential spins in the host deletion code.
684
685- Fix a core dump that would happen if an application tried to update
686  a host object attribute with a null value.
687
688		Changes since 3.0 Release Candidate 12
689
690- Fix a memory leak in the evaluation code.
691
692- Fix an obscure core dump.
693
694- Print a couple of new warnings when parsing the configuration file
695  when crucial information is left out.
696
697- Log "no free leases" as an error.
698
699- Documentation updates.
700
701		Changes since 3.0 Release Candidate 11
702
703- Always return a subnet selection option if one is sent.
704
705- Fix a warning that was being printed because an automatic data
706  structure wasn't zeroed.
707
708- Fix some failover state transitions that were being handled
709  incorrectly.
710
711- When supersede_lease is called on a lease whose end time has already
712  expired, but for which a state transition has not yet been done, do
713  a state transition.   This fixes the case where if the secondary
714  allocated a lease to a client and the lease "expired" while the
715  secondary was in partner-down, no expiry event would actually
716  happen, so the lease would remain active until the primary was
717  restarted.
718
719		Changes since 3.0 Release Candidate 10
720
721- Fix a bug that was preventing released leases from changing state
722  in failover-enabled pools.
723
724- Fix a core dump in the client identifier finder code (for host
725  declarations).
726
727- Finish fixing a bug where bogus data would sometimes get logged to
728  the dhclient.leases file because it was opened as descriptor 2.
729
730- Fix the Linux dhclient-script according to suggestions made by
731  several people on the dhcp-client mailing list.
732
733- Log successful DNS updates at LOG_INFO, not LOG_ERROR.
734
735- Print an error message and refuse to run if a failover peer is
736  defined but not referenced by any pools.
737
738- Correct a confusing error message in failover.
739
740		Changes since 3.0 Release Candidate 9
741
742- Fix a bug in lease allocation for Dynamic BOOTP clients.
743
744	  Changes since 3.0 Release Candidate 8 Patchlevel 2
745
746- Fix a bug that prevented update-static-leases from working.
747
748- Document failover-state OMAPI object.
749
750- Fix a compilation error on SunOS 4.
751
752	  Changes since 3.0 Release Candidate 8 Patchlevel 1
753
754- Fix a parsing bug that broke dns updates (both interim and ad-hoc).
755  This was introduced in rc8pl1 as an unintended result of the memory
756  leakage fixes that were in pl1.
757
758- Fix a long-standing bug where the server would record that an update
759  had been done for a client with no name, even though no update had
760  been done, and then when the client's lease expired the deletion of
761  that nonexistant record would time out because the name was the null
762  string. 
763
764- Clean up the omshell, dhcpctl and omapi man pages a bit.
765
766		Changes since 3.0 Release Candidate 8
767
768- Fix a bug that could cause the DHCP server to spin if
769  one-lease-per-client was enabled.
770
771- Fix a bug that was causing core dumps on BSD/os in the presence of
772  malformed packets.
773
774- In partner-down state, don't restrict lease lengths to MCLT.
775
776- On the failover secondary, record the MCLT received from the primary
777  so that if we come up without a connection to the primary we don't
778  wind up giving out zero-length leases.
779
780- Fix some compilation problems on BSD/os.
781
782- Fix a bunch of memory leaks.
783
784- Fix a couple of bugs in the option printer.
785
786- Fix an obscure error reporting bug in the dns update code, and also
787  make the message clearer when a key algorithm isn't supported.
788
789- Fix a bug in the tracing code that prevented trace runs that used
790  tcp connections from being played back.
791
792- Add some additional debugging capability for catching memory leaks
793  on exit.
794
795- Make the client release the lease correctly on shutdown.
796
797- Add some configurability to the build system.
798
799- Install omshell manual page in man1, not man8.
800
801- Craig Gwydir sent in a patch that fixes a long-standing bug in the
802  DHCP client that could cause core dumps, but that for some reason
803  hadn't been noticed until now.
804
805		Changes since 3.0 Release Candidate 7
806
807- Fix a bug in failover where we weren't sending updates after a
808  transition from communications-interrupted to normal.
809
810- Handle expired/released/reset -> free transition according to the
811  protocol specification (this works - the other way not only wasn't
812  conformant, but also didn't work).
813
814- Add a control object in both client and server that allows either
815  daemon to be shut down cleanly.
816
817- When writing a lease, if we run out of disk space, shut down the
818  output file and insist on writing a new one before proceeding.
819
820- In the server, if the OMAPI listener port is occupied, keep trying
821  to get it, rather than simply giving up and exiting.
822
823- Support fetching variables from leases and also updating and adding
824  variables to leases via OMAPI.
825
826- If two failover peers have wildly different clocks, refuse to start
827  doing failover.
828
829- Fix a bug in the DNS update code that could cause core dumps when
830  running on alpha processors.
831
832- Fixed a bug in ddns updates for static lease entries, thanks to a
833  patch from Andrey M Linkevitch.
834
835- Add support for Darwin/MacOS X
836
837- Install omshell (including new documentation).
838
839- Support DNS updates in the client (this is a very obscure feature
840  that most DHCP client users probably will not be able to use).
841
842- Somewhat cleaner status logging in the client.
843
844- Make OMAPI key naming syntax compatible with the way keys are
845  actually named (key names are domain names).
846
847- Fix a bug in the lease file writer.
848
849- Install DHCP ISC headers in a different place than BIND 9 ISC
850  headers, to avoid causing trouble in BIND 9 builds.
851
852- Don't send updates for attributes on an object when the attributes
853  haven't changed.   Support deleting attributes on remote objects.
854
855- Fix a number of bugs in omshell, and add the unset and refresh
856  statements.
857
858- Handle disconnects in OMAPI a little bit more intelligently (so that
859  the caller gets ECONNRESET instead of EINVAL).
860
861- Fix a bunch of bugs in the handling of clients that have existing
862  leases when the try to renew their leases while failover is
863  operating.
864
865		Changes since 3.0 Release Candidate 6
866
867- Fix a core dump that could happen when processing a DHCPREQUEST from
868  a client that had a host declaration that contained both a
869  fixed-address declaration and a dhcp-client-identifier option
870  declaration, if the client identifier was longer than nine bytes.
871
872- Fix a memory leak that could happen in certain obscure cases when
873  using omapi to manipulate leases.
874
875- Fix some bugs and omissions in omshell.
876
877
878		Changes since 3.0 Release Candidate 5
879
880- Fix a bug in omapi_object_dereference that prevented objects in
881  chains from having their reference counts decreased on dereference.
882
883- Fix a bug in omapi_object_dereference that would prevent object
884  chains from being freed upon removal of the last reference external
885  to the chain.
886
887- Fix a number of other memory leaks in the OMAPI protocol subsystem.
888
889- Add code in the OMAPI protocol handler to trace memory leakage.
890
891- Clean up the memory allocation/reference history printer.
892
893- Support input of dotted quads and colon-separated hex lists as
894  attribute values in omshell.
895
896- Fix a typo in the Linux interface discovery code.
897
898- Conditionalize a piece of trace code that wasn't conditional.
899
900		Changes since 3.0 Release Candidate 4
901
902- Fix a bug that would prevent leases from being abandoned properly on
903  DHCPDECLINE.
904
905- Fix failover peer OMAPI support.
906
907- In failover, correctly handle expiration of leases.   Previously,
908  leases would never be reclaimed because they couldn't make the
909  transition from EXPIRED to FREE.
910
911- Fix some broken failover state transitions.
912
913- Documentation fixes.
914
915- Take out an unnecessary check in DHCP relay agent information option
916  stashing code that was preventing REBINDING clients from rebinding.
917
918- Prevent failover peers from allocating leases in DHCPREQUEST
919  processing if the lease belongs to the other server.
920
921- Record server version in lease file introductory comment.
922
923- Correctly report connection errors in OMAPI and failover.
924
925- Make authentication signature algorithm name comparisons in OMAPI
926  case-insensitive.
927
928- Fix compile problem on SunOS 4.x
929
930- If a signature algorithm is not terminated with '.', terminate it so
931  that comparisons between fully-qualified names will work
932  consistently.
933
934- Different SIOCGIFCONF probe code, may "fix" problem on some Linux
935  systems with the probe not working correctly.
936
937- Don't allow user to type omapi key on command line of omshell.
938
939		Changes since 3.0 Release Candidate 3
940
941- Do lease billing on startup in a way that I *think* will finally do
942  the billing correctly - the previous method could overbill as a
943  result of duplicate leases.
944
945- Document OMAPI server objects.
946
947	  Changes since 3.0 Release Candidate 2 Patchlevel 1
948
949- Fix some problems in the DDNS update code.   Thanks to Albert
950  Herranz for figuring out the main problem.
951
952- Fix some reference counting errors on host entries that were causing
953  core dumps.
954
955- Fix a byte-swap bug in the token ring code, thanks to Jochen
956  Friedrich.
957
958- Fix a bug in lease billing, thanks to Jonas Bulow.
959
960		Changes since 3.0 Release Candidate 2
961
962- Change the conditions under which a DHCPRELEASE is actually
963  committed to be consistent with lease binding states rather than
964  using the lease end time.   This may fix some problems with the
965  billing class code.
966
967- Fix a bug where lease updates would fail on Digital Unix (and maybe
968  others) because malloc was called with a size of zero.
969
970- Fix a core dump that happens when the DHCP server can't create its
971  trace file.
972
973	  Changes since 3.0 Release Candidate 1 Patchlevel 1
974
975- Fix the dhcp_failover_put_message to not attempt to allocate a
976  zero-length buffer.   Some versions of malloc() fail if you try to
977  allocate a zero-length buffer, and this was causing problems on,
978  e.g., Digital Unix.
979
980- Fix a case where the failover code was printing an error message
981  when no error had occurred.
982
983- Fix a problem where when a server went down and back up again, the
984  peer would not see a state transition and so would stay in the
985  non-communicating state.
986
987- Be smart about going into recover_wait.
988
989- Fix a problem in the failover implementation where peers would fail
990  to come into sync if interrupted in the RECOVER state.   This could
991  have been the cause of some problems people have reported recently.
992
993- Fix a problem with billing classes where they would not be unbilled
994  when the client lease expired.
995
996- If select fails, figure out which descriptor is bad, and cut it out
997  of the I/O loop.   This prevents a potentially nasty spin.  I
998  haven't heard any report it in a while, but it came up consistently
999  in testing.
1000
1001- Fix a bug in the relay agent where if you specified interfaces on
1002  the command line, it would fail.
1003
1004- Fix a couple of small bugs in the omapi connection object (no known
1005  user impact).
1006
1007- Add the missing 3.0 Beta 1 lease conversion script.
1008
1009- Read dhcp client script hooks if they exist, rather than only if
1010  they're executable.
1011
1012		Changes since 3.0 Release Candidate 1
1013
1014- Fix a memory smash that happens when fixed-address leases are used.
1015  ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
1016  UPGRADE IMMEDIATELY.   This has been a long-standing bug - thanks to
1017  Alvise Nobile for discovering it and helping me to find it!
1018
1019- Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
1020  Transmeta.
1021
1022- There is a known problem with the DHCP server doing failover on
1023  Compaq Alpha systems.   This patchlevel is not a release candidate
1024  because of this bug.   The bug should be straightforward to fix, so
1025  a new release candidate is expected shortly.
1026
1027- There is a known problem in the DDNS update code that is probably a
1028  bug, and is not, as far as we know, fixed in this patchlevel.
1029
1030		Changes since 3.0 Beta 2 Patchlevel 24
1031
1032- Went over problematic failover state transitions and made them all
1033  work, so that failover should now much less fragile.
1034
1035- Add some dhcpctl and omapi documentation
1036
1037- Fix compile errors when compiling with unusual predefines.
1038
1039- Make Token Ring work on Linux 2.4
1040
1041- Fix the Digital Unix BPF_WORDALIGN bug.
1042
1043- Fix some dhcp client documentation errors.
1044
1045- Update some parts of the README file.
1046
1047- Support GCC on SCO.
1048
1049	        Changes since 3.0 Beta 2 Patchlevel 23
1050
1051- Fix a bug in the DNS update code where a status code was not being
1052  checked.   This may have been causing core dumps.
1053
1054- When parsing the lease file, if a lease declaration includes a
1055  billing class statement, and the lease already has a billing class,
1056  unbill the old class.
1057
1058- When processing failover transactions, where acks will be deferred,
1059  process the state transition immediately.
1060
1061-  Don't try to use the new SIOCGIFCONF buffer size detection code on
1062   Linux 2.0, which doesn't provide this functionality.
1063
1064- Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
1065
1066- Fix a problem in using the which command in the configure script.
1067
1068- Fix a parse error in the client when setting up an omapi listener.
1069
1070- Document the -n and -g flags to the client.
1071
1072- Make sure there is always a stdin and stdout on startup.   This
1073  prevents shell scripts from accidentally writing error messages into
1074  configuration files that happen to be opened as stderr.
1075
1076- If an interface is removed, the client will now notice that it is
1077  gone rather than spinning.   This has only been tested on NetBSD.
1078
1079- The client will attempt to get an address even if it can't create a
1080  lease file.
1081
1082- Don't overwrite tracefiles.
1083
1084- Fix some memory allocation bugs in failover.
1085
1086	        Changes since 3.0 Beta 2 Patchlevel 22
1087
1088- Apply some patches suggested by Cyrille Lefevre, who is maintaining
1089  the FreeBSD ISC DHCP Distribution port.
1090
1091- Fix a core dump in DHCPRELEASE.
1092
1093	        Changes since 3.0 Beta 2 Patchlevel 21
1094
1095- This time for sure: fix the spin described in the changes for pl20.
1096
1097	        Changes since 3.0 Beta 2 Patchlevel 20
1098
1099- Fix a problem with Linux detecting large numbers of interfaces (Ben)
1100
1101- Fix a memory smash in the quotify code, which was introduced in
1102  pl19.
1103
1104- Actually fix the spin described in the changes for pl20.   The
1105  previous fix only partially fixed the problem - enough to get it
1106  past the regression test.
1107
1108	        Changes since 3.0 Beta 2 Patchlevel 19
1109
1110- Fix a bug that could cause the server to abort if compiled with
1111  POINTER_DEBUG enabled.
1112
1113- Fix a bug that could cause the server to spin when responding to a
1114  DHCPREQUEST.
1115
1116- Apply Joost Mulders' suggested patches for DLPI on x86.
1117
1118- Support NUL characters in quoted strings.
1119
1120- Install unformatted man pages on SunOS.
1121
1122	        Changes since 3.0 Beta 2 Patchlevel 18
1123
1124- Allow the server to be placed in partner-down state using OMAPI.
1125  (Damien Neil)
1126
1127- Implement omshell, which can be used to do arbitrary things to the
1128  server (in theory). (Damien Neil)
1129
1130- Fix a case where if a client had two different leases the server could
1131  actually dereference the second one when it hadn't been referenced,
1132  leading to memory corruption and a core dump. (James Brister)
1133
1134- Fix a case where a client could request the address of another client's
1135  lease, but find_lease wouldn't detect that the other client had it, and
1136  would attempt to allocate it to the client, resulting in a lease conflict
1137  message.
1138
1139- Fix a case where a client with more than one client identifier could be
1140  given a lease where the hardware address was correct but the client
1141  identifier was not, resulting in a lease conflict message.
1142
1143- Fix a problem where the server could write out a colon-separated
1144  hex list as a value for a variable, which would then not parse.
1145  The fix is to always write strings as quoted strings, with any
1146  non-printable characters quoted as octal escape sequences.   So
1147  a file written the old way still won't work, but new files written
1148  this way will work.
1149
1150- Fix documentation for sending non-standard options.
1151
1152- Use unparsable names for unknown options.    WARNING: this will
1153  break any configuration files that use the option-nnn convention.
1154  If you want to continue to use this convention for some options,
1155  please be sure to write a definition, like this:
1156
1157  option option-nnn code nnn = string;
1158
1159  You can use a descriptive name instead of option-nnn if you like.
1160
1161- Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
1162  DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence.   This was the
1163  result of a deceptively silly bug in supersede_lease.
1164
1165- Fix client script exit status check, according to a fix supplied by
1166  Hermann Lauer.
1167
1168- Fix an endianness bug in the tracefile support, regarding ICMP
1169  messages.
1170
1171- Fix a bug in the client where the medium would not work correctly if
1172  it contained quoted strings.
1173
1174		       ** there was no pl17 **
1175
1176	        Changes since 3.0 Beta 2 Patchlevel 16
1177
1178- Add support for transaction tracing.   This allows the state of the
1179  DHCP server on startup, and all the subsequent transactions, to be
1180  recorded in a file which can then be played back to reproduce the
1181  behaviour of the DHCP server.   This can be used to quickly
1182  reproduce bugs that cause core dumps or corruption, and also for
1183  tracking down memory leaks.
1184
1185- Incorporate some bug fixes provided by Joost Mulders for the DLPI
1186  package which should clear up problems people have been seeing on
1187  Solaris.
1188
1189- Fix bugs in the handling of options stored as linked lists (agent
1190  options, fqdn options and nwip options) that could cause memory
1191  corruption and core dumps.
1192
1193- Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
1194  not being send in some cases when they were needed.
1195
1196- Make the lease structure somewhat more compact.
1197
1198- Make initial failover startup *much* faster.   This was researched
1199  and implemented by Damien Neil.
1200
1201- Add a --version flag to all executables, which prints the program
1202  name and version to standard output.
1203
1204- Don't rewrite the lease file every thousand leases.
1205
1206- A bug in nit.c for older SunOS machines was fixed by a patch sent in
1207  by Takeshi Hagiwara.
1208
1209- Fix a memory corruption bug in the DHCP client.
1210
1211- Lots of documentation updates.
1212
1213- Add a feature allowing environment variables to be passed to the
1214  DHCP client script on the DHCP client command line.
1215
1216- Fix client medium support, which had been broken for some time.
1217
1218- Fix a bug in the DHCP client initial startup backoff interval, which
1219  would cause two DHCPDISCOVERS to be sent back-to-back on startup.
1220
1221
1222	        Changes since 3.0 Beta 2 Patchlevel 15
1223
1224- Some documentation tweaks.
1225
1226- Maybe fix a problem in the DLPI code.
1227
1228- Fix some error code space inconsistencies in ddns update code.
1229
1230- Support relay agents that intercept unicast DHCP messages to stuff
1231  agent options into them.
1232
1233- Fix a small memory leak in the relay agent option support code.
1234
1235- Fix a core dump that would occur if a packet was sent with no
1236  options.
1237
1238	        Changes since 3.0 Beta 2 Patchlevel 14
1239
1240- Finish fixing a long-standing bug in the agent options code.   This
1241  was causing core dumps and failing to operate correctly - in
1242  particular, agent option stashing wasn't working.   Agent option
1243  stashing should now be working, meaning that agent options can be
1244  used in class statements to control address allocation.
1245
1246- Fix up documentation.
1247
1248- Fix a couple of small memory leaks that would have added up
1249  significantly in a high-demand situation.
1250
1251- Add a log-facility configuration parameter.
1252
1253- Fix a compile error on some older operating systems.
1254
1255- Add the ability in the client to execute certain statements before
1256  transmitting packets to the server.   Handy for debugging; not much
1257  practical use otherwise.
1258
1259- Don't send faked-out giaddr when renewing or bound - again, useful
1260  for debugging.
1261
1262	        Changes since 3.0 Beta 2 Patchlevel 13
1263
1264- Fixed a problem where the fqdn decoder would sometimes try to store
1265  an option with an (unsigned) negative length, resulting in a core
1266  dump on some systems.
1267
1268- Work around the Win98 DHCP client, which NUL-terminates the FQDN
1269  option.
1270
1271- Work around Win98 and Win2k clients that will claim they want to do
1272  the update even when they don't have any way to do it.
1273
1274- Fix some log messages that can be printed when failover is operating
1275  that were not printing enough information.
1276
1277- It was possible for a DHCPDISCOVER to get an allocation even when
1278  the state machine said the server shouldn't be responding.
1279
1280- Don't load balance DHCPREQUESTs from clients in RENEWING and
1281  REBINDING, since in RENEWING, if we heard it, it's for us, and in
1282  REBINDING, the client wouldn't have got to REBINDING if its primary
1283  were answering.
1284
1285- When we get a bogus state lease binding state transition, don't do
1286  the transition.
1287  
1288
1289	        Changes since 3.0 Beta 2 Patchlevel 12
1290
1291- Fixed a couple of silly compile errors.
1292
1293		Changes since 3.0 Beta 2 Patchlevel 11
1294
1295- Albert Herranz tracked down and fixed a subtle bug in the base64
1296  decoder that would prevent any key with an 'x' in its base64
1297  representation from working correctly.
1298
1299- Thanks to Chris Cheney and Michael Sanders, we have a fix for the
1300  hang that they both spotted in the DHCP server - when
1301  one-lease-per-client was set, the code to release the "other" lease
1302  could spin.
1303
1304- Fix a problem with alignment of the input buffer in bpf in cases
1305  where two packets arrive in the same bpf read.
1306
1307- Fix a problem where the relay agent would crash if you specified an
1308  interface name on the command line.
1309
1310- Add the ability to conditionalize client behaviour based on the
1311  client state.
1312
1313- Add support for the FQDN option, and added support for a new way of
1314  doing ddns updates (ddns update style interim) that allows more than
1315  one DHCP server to update the DNS for the same network(s).   This
1316  was implemented by Damien Neil with some additional functionality
1317  added by Ted Lemon.
1318
1319- Damien added a "log" statement, so that the configuration file can
1320  be made to log debugging information and other information.
1321
1322- Fixed a bug that caused option buffers not to be terminated with an
1323  end option.
1324
1325- Fixed a long-standing bug in the support for option spaces where the
1326  options are stored as an ordered list rather than in a hash table,
1327  which could theoretically result in memory pool corruption.
1328
1329- Prevent hardware declarations with no actual hardware address from
1330  being written as something unparsable, and behave correctly in the
1331  face of a null hardware address on input.
1332
1333- Allow key names to be FQDNs, and qualify the algorithm name if it is
1334  specified unqualified.
1335
1336- Modify the DDNS update code so that it never prints the "resolver
1337  failed" message, but instead says *why* the resolver failed.
1338
1339- Officially support the subnet selection option, which now has an
1340  RFC.
1341
1342- Fix a build bug on MacOS X.
1343
1344- Allow administrator to disable ping checking.
1345
1346- Clean up dhcpd.conf documentation and add more information about how
1347  it works.
1348
1349		Changes since 3.0 Beta 2 Patchlevel 10
1350
1351- Fix a bug introduced during debugging (!) and accidentally committed
1352  to CVS.
1353
1354		Changes since 3.0 Beta 2 Patchlevel 9
1355
1356- Fix DHCP client handling of vendor encapsulated options.
1357
1358- Fix a bug in the handling of relay agent information options introduced
1359  in patchlevel 9.
1360
1361- Stash agent options on client leases by default, and use the stashed
1362  options at renewal time.
1363
1364- Add the ability to test the client's binding state in the client
1365  configuration language.
1366
1367- Fix a core dump in the DNS update code.
1368
1369- Fix some expression evaluation bugs that were causing updates to be
1370  done when no client hostname was received.
1371
1372- Fix expression evaluation debugging printfs.
1373
1374- Teach pretty_print_option to print options in option spaces other than
1375  the DHCP option space.
1376
1377- Add a warning message if the RHS of a not is not boolean.
1378
1379- Never select for more than a day, because some implementations of
1380  select will just fail if the timeout is too long (!).
1381
1382- Fix a case where a DHCPDISCOVER from an unknown network would be
1383  silently dropped.
1384
1385- Fix a bug where if a client requested an IP address for which a different
1386  client had the lease, the DHCP server would reallocate it anyway.
1387
1388- Fix the DNS update code so that if the client changes its name, the DNS
1389  will be correctly updated.
1390
1391		Changes since 3.0 Beta 2 Patchlevel 8
1392
1393- Oops, there was another subtle math error in the header-length
1394  bounds-checking.
1395
1396		Changes since 3.0 Beta 2 Patchlevel 7
1397
1398- Oops, forgot to byte-swap udp header length before bounds-checking it.
1399
1400		Changes since 3.0 Beta 2 Patchlevel 6
1401
1402- Fix a possible DoS attack where a client could cause the checksummer
1403  to dump core.   This was a read, not a write, so it shouldn't be
1404  possible to exploit it any further than that.
1405
1406- Implement client- and server-side support for using the Client FQDN
1407  option.
1408
1409- Support for other option spaces in the client has been added.   This
1410  means that it is now possible to define a vendor option space on the
1411  client, request options in that space from the server (which must
1412  define the same option space), and then use those options in the
1413  client.   This also allows NWIP and Client FQDN options to be used
1414  meaningfully.
1415
1416- Add object initializer support.   This means that objects can now be
1417  initialized to something other than all-zeros when allocated, which
1418  makes, e.g., the interface object support code a little more robust.
1419
1420- Fix an off-by-one bug in the host stuffer.   This was causing host
1421  deletes not the work, and may also have been causing OMAPI
1422  connections to get dropped.   Thanks to James Brister for tracking
1423  this one down!
1424
1425- Fixed a core dump in the interface discovery code that is triggered
1426  when there is no subnet declaration for an interface, but the server
1427  decides to continue running.   Thanks to Shane Kerr for tracking
1428  down and fixing this problem.
1429
1430		Changes since 3.0 Beta 2 Patchlevel 5
1431
1432- Fix a bug in the recent enhancement to the interface discovery code
1433  to support arbitrary-length interface lists.
1434
1435- Support NUL-terminated DHCP options when initializing client-script
1436  environment.
1437
1438- Fix suffix operator.
1439
1440- Fix NetWare/IP option parsing.
1441
1442- Better error/status checking in dhcpctl initialization and omapi
1443  connection code.
1444
1445- Fix a potential memory smash in dhcpctl code.
1446
1447- Fix SunOS4 and (maybe) Ultrix builds.
1448
1449- Fix a bug where a certain sort of incoming packet could cause a core
1450  dump on Solaris (and probably elsewhere).
1451
1452- Add some more safety checks in error logging code.
1453
1454- Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
1455
1456- Fix relay agent so that if an interface is specified on the command
1457  line, the relay agent does not dump core.
1458
1459- Fix class matching so that match if can be combined with match or
1460  spawn with.
1461
1462- Do not allow spurious leases in the lease database to introduce
1463  potentially bogus leases into the in-memory database.
1464
1465- Fix a byte-order problem in the client hardware address type code
1466  for OMAPI.
1467
1468- Be slightly less picky about what sort of hardware addresses OMAPI
1469  can install in host declarations.
1470
1471		Changes since 3.0 Beta 2 Patchlevel 4
1472
1473- Incorporated Peter Marschall's proposed change to array/record
1474  parsing, which allows things like the slp-agent option to be encoded
1475  correctly.   Thanks very much to Peter for taking the initiative to
1476  do this, and for doing such a careful job of it (e.g., updating the
1477  comments)!
1478
1479- Added an encoding for the slp-agent option.   :')
1480
1481- Fixed SunOS 4 build.  Thanks to Robert Elz for responding to my
1482  request for help on this with patches!
1483
1484- Incorporated a change that should fix a problem reported by Philippe
1485  Jumelle where when the network connection between two servers is
1486  lost, they never reconnect.
1487
1488- Fix client script files other than that for NetBSD to actually use
1489  make_resolv_conf as documented in the manual page.
1490
1491- Fix a bug in the packet handling code that could result in a core
1492  dump.
1493
1494- Fix a bug in the bootp code where responses on the local net would
1495  be sent to the wrong MAC address.   Thanks to Jerry Schave for
1496  catching this one.
1497
1498		Changes since 3.0 Beta 2 Patchlevel 3
1499
1500- In the DHCP client, execute client statements prior to using the values
1501  of options, so that the client configuration can overried, e.g., the
1502  lease renewal time.
1503
1504- Fix a reference counting error that would result in very reproducible
1505  failures in updates, as well as occasional core dumps, if a zone was
1506  declared without a key.
1507
1508- Fix some Linux 2.0 compilation problems.
1509
1510- Fix a bug in scope evaluation during execution of "on" statements that
1511  caused values not to be recorded on leases.
1512
1513- If the dhcp-max-message-size option is specified in scope, and the
1514  client didn't send this option, use the one specified in scope to
1515  determine the maximum size of the response.
1516
1517		Changes since 3.0 Beta 2 Patchlevel 2
1518
1519- Fix a case where spawning subclasses were being allocated
1520  incorrectly, resulting in a core dump.
1521
1522- Fix a case where the DHCP server might inappropriately NAK a
1523  RENEWING client.
1524
1525- Fix a place dhcprequest() where static leases could leak.
1526
1527- Include memory.h in omapip_p.h so that we don't get warnings about
1528  using memcmp().
1529
1530		Changes since 3.0 Beta 2 Patchlevel 1
1531
1532- Notice when SIOCFIGCONF returns more data than fit in the buffer -
1533  allocate a larger buffer, and retry.   Thanks to Greg Fausak for
1534  pointing this out.
1535
1536- In the server, if no interfaces were configured, report an error and
1537  exit.
1538
1539- Don't ever record a state of 'startup'.
1540
1541- Don't try to evaluate the local failover binding address if none was
1542  specified.   Thanks to Joseph Breu for finding this.
1543