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