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