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