]> git.ipfire.org Git - thirdparty/dhcp.git/blame - RELNOTES
[master] Added lease-id-format to server and client
[thirdparty/dhcp.git] / RELNOTES
CommitLineData
5ddbe8e4 1 Internet Systems Consortium DHCP Distribution
5fc79cfd
TM
2 Version 4.3.3
3 03 September 2015
72c7bd79 4
5ddbe8e4 5 Release Notes
72c7bd79 6
5ddbe8e4 7 NEW FEATURES
16449d9c 8
5ade3c84 9The major "theme" for ISC DHCP 4.3.x was to update the support for
324257e3
SR
10DHCPv6 to include several of the features that have been available
11for DHCPv4. These include:
37ec5845 12
324257e3
SR
13- Support the use of classes
14
15- Support for on_commit, on_expiry and on_release statements
16
4809ef5c 17- Better logging of address assignments
324257e3
SR
18
19- Support for using DHCPv6 relay options in expressions
20
21This release also adds suppport for the standard DDNS as described in the
22current RFCs as well as enhancing support for dynamically adding and removing
23subclasses via OMAPI.
98bf1607 24
01a54c17
EH
25There are a number of DHCPv6 limitations and features missing in this
26release, which will be addressed in the future:
98bd7ca0 27
01a54c17 28- Only Solaris, Linux, FreeBSD, NetBSD, and OpenBSD are supported.
3a16098f 29
adbef119
DH
30- DHCPv6 includes human-readable text in status code messages, in
31 English. A method to reconfigure or support other languages would
80778e94 32 be preferable.
98bd7ca0
DH
33
34- The "host-identifier" option is limited to a simple token.
35
98bd7ca0 36- The client and server can only operate DHCPv4 or DHCPv6 at a time,
45d545f0 37 not both. To use both protocols simultaneously, two instances of the
6de1f33e 38 relevant daemon are required, one with the '-6' command line option.
4ff4053b 39
01a54c17
EH
40For information on how to install, configure and run this software, as
41well as how to find documentation and report bugs, please consult the
42README file.
ca4606b5 43
01a54c17
EH
44ISC DHCP uses standard GNU configure for installation. Please review the
45output of "./configure --help" to see what options are available.
fe5b0fdd 46
01a54c17
EH
47The system has only been tested on Linux, FreeBSD, and Solaris, and may not
48work on other platforms. Please report any problems and suggested fixes to
49<dhcp-users@isc.org>.
98bd7ca0 50
fef8c6f0
SR
51ISC DHCP is open source software maintained by Internet Systems
52Consortium. This product includes cryptographic software written
53by Eric Young (eay@cryptsoft.com).
54
7da1ac2b
TM
55 Changes since 4.3.3
56
555093da
TM
57- Corrected a static analyzer warning in common/execute.c
58 [ISC-Bugs #40374]
e82906fc 59
555093da
TM
60- ISC DHCP now follows the common convention to use the base name a
61 program is invoked with (aka argv[0], vs. a builtin name) for
62 logs. This should help differentiate syslog entires for DHCPv4 and
63 DHCPv6 servers. You can define OLD_LOG_NAME in includes/site.h to
64 keep the previous behavior.
65 [ISC-Bugs #38692]
20931f53 66
555093da
TM
67- The linux packet filter code now correctly treats only least significant
68 12 bits an inbound packet's TCI value as the VLAN id (per IEEE 802.1Q).
69 Prior to this it was using the entire 16 bit value as the VLAN id and
70 incorrectly discarding packets. Thanks to Jiri Popelka at Red Hat for
71 reporting this issue and supplying its patch.
72 [ISC-Bugs #40591]
5cc6f201 73
e8e6768a
TM
74- Fixed several issues static analysis issues such as potential null
75 references, unchecked strdup returns. Thanks to Bill Parker (wp02855 at
76 gmail dot com) who identified these issues and supplied patches to
77 address them.
88c3ff5d 78 [ISC-Bugs #40754]
e8e6768a 79 [ISC-Bugs #40823]
88c3ff5d 80
555093da
TM
81- Corrected compilation errors that prohibited building the server
82 and its ATF unit tests when failover is disabled.
83 [ISC-Bugs #40372]
f10cbbfa 84
555093da
TM
85- Added the lease address to the end of the debug level log message
86 emitted when an existing lease is renewed within the dhcp-cache-threshold.
87 Thanks to Nathan Neulinger at Missouri S&T for suggesting the change.
88 [ISC-Bugs #40598]
5fc79cfd 89
555093da
TM
90- Added dhcpv6 and delayed-ack to settings listed in the "Features:"
91 section of the configure script output. Additionally, all of the
92 features reported on will now always show either a "yes" or "no"
93 value. Prior to this features left to their default setting would
94 not show a value.
95 [ISC-Bugs #40381]
96
97- Added a parameter, authoring-byte-order, to the lease file. This value
98 is automatically added to the top of new lease files by the server and
99 indicates the internal byte order (big endian or little endian) of the
100 server. This permits lease files generated on a server with one form of
101 byte order to be used on a server with the opposite form. Our thanks to
102 Timothe Litt for calling this to our attention and for the suggestions
103 he provided.
104 [ISC-Bugs #38396]
646acb59 105
d1d1da8f 106- Fixed a small memory leak in the DHCPv6 version of the client code.
18ba0ff3
SR
107 This is unlikely to cause significant issues in actual use.
108 [ISC-Bugs #40990]
109
ce29e695
TM
110- Corrected a few minor memory leaks in omapi's dereferencing of
111 host objects. Thanks to Jiri Popelka at Red Hat for reporting
112 the issue and supplying the patches.
113 [ISC-Bugs #33990]
75ab52e1 114 [ISC-Bugs #41325]
ce29e695 115
d1d1da8f
FD
116- Cleaned up some of the Make infrastructure to make --with-libbind
117 work better. Though it still only works with an absolute path.
118 [ISC-Bugs #39210]
119
120- Made the embedded bind libraries able to be cross compiled
121 (please refer to the bind9 documentation to learn how to cross
122 compile DHCP and its bind library dependency).
123 [ISC-Bugs #38836]
124
c88dfebd
SR
125- Update the client code to better support getting IA_NAs and IA_PDs
126 in the same packet, see RFC7550 for some discussion.
127 [ISC-Bugs #40190]
128
08ad1e3c 129! Update the bounds checking when receiving a packet.
4ce21cb6
SR
130 Thanks to Sebastian Poehn from Sophos for the bug report and a suggested
131 patch.
132 [ISC-Bugs #41267]
825c459c 133 CVE: CVE-2015-8605
4ce21cb6 134
b2cb745b
SR
135- When handling an incorrect command line for dhcpd, dhclient or dhcrelay
136 print out a specific error message about the first error in addition
137 to the usage string. This may be disabled by editing includes/site.h.
138 [ISC-Bugs #40321]
eda1d0aa 139 [ISC-Bugs #41454]
b2cb745b 140
cacce092
TM
141- The configure script will now exit with an error message if it cannot find
142 a GNU-style make tool (needed when building BIND libraries) or pkg-config
143 (needed to locate ATF used for building unit tests). Prior to this the
144 script would exit indicating success causing subsequent attempts to build
145 the software to fail.
146 [ISC-Bugs #40371]
147
4ced250f
SR
148- Properly terminate strings before passing them to regex and fix
149 a boudnary error when creating certain new data strings.
150 Thanks to Andrey Jr. Melnikov for the bug report.
151 [ISC-Bugs #41217]
152
a3471269
TM
153- Option expressions, such as prepend and append, are now supported when
154 running dhclient for IPv6. Prior to this such statements in the
155 client configuration file would be parsed but have no affect. Thanks
156 to Jiri Popelka at Red Hat for reporting the issue.
157 [ISC-Bugs #39952]
158
3e3b5257
TM
159- A failover primary server will now accept a binding status update from the
160 secondary which transitions a lease from ACTIVE to ABANDONED. This accounts
161 for instances in which a client declines a lease and only the secondary
162 server receives it. Prior to this the primary server would reject such an
163 update as an "invalid state transition".
fd1ba363 164 [ISC_BUGS #25189]
3e3b5257 165
ba4c704d
SR
166- Properly allocate memory for a bpf filter.
167 Thanks to Bill Parker (wp02855 at gmail dot com) who identified this issue.
168 [ISC-Bugs #41485]
169
b1eea858
SR
170- Updated contrib/dhcp-lease-list.pl to handle garbage in the oui file better
171 and to print out the hostnames a bit better.
0958dea4 172 Thanks to Antoine Beaupré from Debian for the suggested patch.
b1eea858
SR
173 [ISC-Bugs #41288]
174
36c4a037
SR
175- The DHCPv6 server now handles long valid and preferred lease times better.
176 Values that would cause the internal end time of the lease to wrap are
177 modified to work as infinite.
178 [ISC-Bugs #40773]
179
41b5a1a6
FD
180- Updated support for cross compiling by allowing the library archiver
181 to be set at configure time via the environment variable 'AR'.
182 [ISC-Bugs #41536]
183
62a9eb91
TM
184- The server will now match DHCPv6 relayed clients to host declarations
185 which include the "hardware" statement, if the relay connected to the
186 client supplies the client's hardware address via client-linklayer-address
187 option as per RFC 6939.
188 [ISC-Bugs #40334]
189
b7311aae
FD
190- Allow a filename to be specified instead of /dev/random during
191 configuration. This is passed to the BIND configuration to allow
192 for cross compilation.
193 [ISC-Bugs #33835]
194
1bfdeaae
SR
195- Add more option definitions.
196 [ISC-Bugs #40562]
197
1d3fc4d0
SR
198- Correct outputting of long lines in the lease file when writing
199 a lease that includes long strings in an execute statement.
200 [ISC-Bugs #40994]
201
68b5d395
TM
202- The server will now correctly treat a lease as reserved when the client
203 requests an infinite lease time (i.e. OxFFFFFFFF) and "infinite-is-reserved"
204 is enabled. Prior to this the server would halt. In addition, corrections
205 were made to the server to allow a lease's flags field to be set via omapi.
206 Prior to this, the server, depending on the host architecture, would
207 incorrectly parse the new flags value from the omapi message.
208 [ISC-Bugs #31179]
209
f704712e
FD
210- ISC DHCP can now be configured and built from a directory other than
211 the top level source directory. Note that "make distcheck" uses this
212 feature.
213 [ISC-Bugs #39262]
214
6e7e6637 215- Add support for RFC 3527 to dhcrelay. A new, dhcrelay command line argument,
dce576b8 216 "-u <interface>" enables the addition of a RFC 3527 compliant link selection
6e7e6637
TM
217 suboption to the agent option added for clients directly connected to the
218 relay.
219 [ISC-Bugs #34875]
cbef159e 220 [ISC-Bugs #41708]
6e7e6637 221
dce576b8
TM
222- Add a new global DHCPv6 option, dhcpv6-set-tee-times, which when enabled
223 instructs the server to calculate T1 and T2 as recommended in RFC 3315,
224 Section 22.4.
225 [ISC-Bugs #25687]
226
45086eef
TM
227- Corrected minor Coverity issues.
228 [ISC-Bugs #35144]
229
785c1a51
FD
230- Add support for RFC 7341 DHCPv4 over DHCPv6 with a new configuration
231 option "--enable-dhcpv4o6". Note this feature requires DHCPv6 support
232 and is not compatible with delayed-ack. Both client and server use 2
233 processes which communicate over UDP on a pair of sockets. The new
234 "-4o6 <port>" command line argment enables DHCPv4 over DHCPv6 support
235 and specifies the consecutive ports to use for inter-process communication.
236 Please look at doc/DHCPv4-over-DHCPv6 for more details.
237 [ISC-Bugs #35711]
238
cc1bd34e 239- Correct interface name formation when using DLPI under Solaris 11. As of
0f1a34e9
TM
240 Solaris 11, ethernet device files are located in "/dev/net". The configure
241 script has been modified to detect this situation and adjust the directory
9b2e9347
TM
242 used accordingly. Thanks to Jarkko Torppa for reporting this issue and
243 submitting a patch
0f1a34e9 244 [ISC-Bugs #37954]
fca944db 245 [ISC-Bugs #40752]
0f1a34e9 246
84ee63a0
SR
247- Add a dereference call when handling an error condition while
248 decoding a packet.
249 [ISC-Bugs #41774]
250
cc1bd34e
TM
251- Add a new parameter, lease-id-format, to both dhcpd and dhclient. The
252 parameter controls the format in which certain values are written to lease
253 files. Formats supported are octal - quoted string containing octal
254 escapes, and hex - unquoted, colon separated hex digits.
255 [ISC-Busg #26378]
256
7da1ac2b 257 Changes since 4.3.3b1
ba4c704d 258
5fc79cfd
TM
259- None
260
b31fe1d5
TM
261 Changes since 4.3.2
262
bc549dd9
SR
263- The server now does a better check to see if it can allocate the memory
264 for large blocks of v4 leases and should provide a slightly better error
265 message. Note well: the server pre-allocates v4 addresses, if you use
266 a large range, such as a /8, the server will attempt to use a large
267 amount of memory and may not start if there either isn't enough memory
268 or the size exceeds what the code supports.
269 [ISC-Bugs #38637]
270
b31fe1d5
TM
271- The server will now reject unicast Request, Renew, Decline, and Release
272 messages from a client unless the server would have sent that client the
273 dhcp6.unicast option. This behavior is in compliance with paragraph 1 in
274 each of the sections 18.2,1, 18.2.3, 18.2.6, and 18.2.7 of RFC 3315. Prior
275 to this, the server would simply accept the messages. Now, in order for
276 the server to accept such a message, the server configuration must include
277 the dhcp6.unicast option either globally or within the shared network to
278 which the requested lease belongs. In other words, the server will map
279 the first IA_XX address found within the client message to a shared-network
280 and look for the presence of the unicast option there and then globally.
ba21bb1b
TM
281 Thanks to Jiri Popelka at Red Hat for this issue and his patch which
282 inspired the fix.
b31fe1d5 283 [ISC-Bugs #21235]
c2419dca 284
20c0fdc7
SR
285- The ATF (Automated Testing Framework) tools used for optional unit tests
286 can now be built from its embedded sources in bind, solving the
287 atf-run / atf-report issue with recent (>= 0.20) versions of ATF.
288 The new configuration option is "./configure --with-atf=bind".
1b245c91 289 [ISC-Bugs #38754, #39300]
20c0fdc7 290
1c0b7d66
SR
291- Corrected a compilation error introduced by the fix for ISC-Bugs #22806.
292 On older linuxes that do not include the tpacket_auxdata structure don't
293 bother allocating the cmsgbuf as it isn't necessary and we don't have
294 a proper length for it.
295 [ISC-Bugs #39209]
296
da88d34b
SR
297- Remove the dst directory. This was replaced in 4.2.0 with the dst
298 code from the Bind libraries but we continued to include it for
299 backwards compatibility. As we have now released 4.3.x it seems
300 reasonable to remove it.
301 [ISC-Buts #39019]
302
90a062fb 303- Write out the DUID server id on startup in all cases, previously if it
cacce092 304 was read in from server-duid option in the config or lease files for
90a062fb
SR
305 DHCPv4 it would not be written to the new lease file.
306 [ISC-Bugs #37791]
307
90fdd337
SR
308- When parsing dates for leases convert dates past 2038 to "never".
309 This avoids problems with integer overflows in the date and time
310 handling code for people that decide to use very large lease times
311 or add a lease entry with a date far in the future.
312 [ISC-Bugs #33056]
313
70689a73
SR
314- Leave the siaddr field clear when sending a NACK as per RFC 2131
315 table 3.
316 [ISC-Bugs #38769]
317
30dcfbf6
SR
318- In the client don't send expired addresses to the script as part of
319 the binding process. Thanks to Sven Trenkel at Google for reporting
320 the issue and suggesting the patch.
321 [ISC-Bugs #38631]
322
4136513e
SR
323- While parsing IPv6 addresses treat "add" as part of the address instead
324 of as a token.
325 [ISC-Bugs #39529]
326
3933e2aa
SR
327- Add support for accessing the v4 lease queues (active, free etc) in a
328 binary fashion instead of needing to walk through a linear list to
329 insert, find or remove an entry from the queues. In addition add a
330 compile time option "--enable-binary-leases" to enable the new code
331 or to continue using the old code. The old code is the default.
332 Thanks to Fernando Soto from BlueCat Networks for the patch.
333 [ISC-Bugs #39078]
334
cca6a648 335- Delayed-ack now works properly with Failover. Prior to this, bind updates
336 post startup were being queued but never delivered. Among other things, this
337 was causing leases to not transition from expired or released to free.
338 [ISC-Bugs #31474]
339
46d31b51
SR
340- Clean up parsing of v6 lease files a bit to avoid infinite loops if the
341 lease file is corrupt in certain ways.
342 [ISC-Bugs #39760]
343
cca6a648 344- Corrected a crash in dhclient that occurs during lease renewal if the
68b3e7f2
TM
345 client is performing its own DNS updates. Thanks to Jiri Popelka at Red Hat
346 for the bug report.
cca6a648 347 [ISC-Bugs #38639]
348
ff1b3d04
TM
349- Corrected an issue in v6 lease file parsing. Prior to this, when encountering
350 a lease with an address for which no configured pool exists, the server was
351 declaring the lease file corrupt and incorrectly skipping over the subsequent
352 entry in the file. The server will now emit a log message indicating that
353 no pool was found for the address (or prefix) and correctly resume parsing
cacce092 354 with the next entry in the lease file. Our thanks to Michal Žejdl for
673137b1 355 reporting the issue.
ff1b3d04
TM
356 [ISC-Bugs #39314]
357
34711bb7
SR
358- Be more liberal in finding a subnet group associated with a static
359 prefix. When we added the class matching code for v6 we also added
360 a requirement that the static prefix must be within a subnet the
361 client was in, in order to find the proper statements. We now
362 look for a subnet based on the prefix, failing that on the static
363 address for the client and failing that on the shared network
364 itself.
365 [ISC-Bugs #38329]
366
45c332f0
SR
367- Add a new action expression "parse_vendor_options", which can be used
368 to parse a vendor-encapsualted-option received by the server based on
369 the encoding specified by the vendor-option-space statement.
370 [ISC-Bugs #36449]
371
7a6c9368
SR
372- Enhance the PARANOIA patch to include fchown() the lease file to
373 allow it to be manipulated after the server does a chown().
374 Thanks to Jiri Popelka at Red Hat for the patch.
375 [ISC-Bugs #36978]
376
7ef55702
SR
377- Relax the requirement that prefix pools must be within the subnet.
378 This was added in as part of #32453 in order to avoid configuration
379 mistakes but is being removed as prefixes aren't required to be
380 within the same subnet and many people configure them in that fashion.
381 [ISC-Bugs #40077]
382
6a39bcf0
TM
383- Fixed a server crash that could occur when the server attempts to remove
384 the billing class from the last lease billed to a dynamic class after said
6c8eb544
TM
385 class has been deleted. Our thanks to Lasse Pesonen for reporting the
386 issue.
6a39bcf0
TM
387 [ISC-Bugs #39978]
388
743d6937
TM
389- LDAP Patches - Numerous small patches submitted by contributors have
390 been applied to the contributed code which supplies LDAP support.
af25ded3
SR
391 In addition, two larger submissions have also been included. The
392 first adds support for IPv6 configuration and the second provides
35b6560b
TM
393 GSSAPI authentication. We would like to thank the following for their
394 contributions (alphabetically):
395 Alex Novak at SUSE
db48f927 396 Bill Parker (wp02855 at gmail dot com)
35b6560b
TM
397 Jiri Popelka at Red Hat
398 Marius Tomaschewski at SUSE
405fccfc 399 (william at adelaide.edu.au), The University of Adelaide
743d6937
TM
400 [ISC-Bugs #39056]
401 [ISC-Bugs #22742]
402 [ISC-Bugs #24449]
403 [ISC-Bugs #28545]
404 [ISC-Bugs #29873]
405 [ISC-Bugs #30183]
406 [ISC-Bugs #30402]
407 [ISC-Bugs #32217]
408 [ISC-Bugs #32240]
409 [ISC-Bugs #33176]
410 [ISC-Bugs #33178]
411 [ISC-Bugs #36409]
412 [ISC-Bugs #36774]
413 [ISC-Bugs #37876]
414
af25ded3 415- Handle an out of memory condition in the client a bit better.
5bc0a4e1
SR
416 Thanks to Frédéric Perrin from Brocade for finding the issue
417 and suggesting a patch.
2932b357 418 [ISC-Bugs #39279]
af25ded3 419
b31fe1d5 420 Changes since 4.3.2rc2
c2419dca
SR
421- None
422
423 Changes since 4.3.2rc1
75d02fcf
TM
424
425- Corrected a compilation error introduced by the fix for ISC-Bugs #37415.
426 The error occurs on Linux variants that do not support VLAN tag information
427 in packet auxiliary data. The configure script now only enables inclusion
428 of the VLAN tag-based logic if it is supported by the underlying OS.
429 [ISC-Bugs #38677]
430
45adf35c 431 Changes since 4.3.2b1
4d9b81fc 432
45adf35c 433- Specifying the option, --disable-debug, on the configure script command line
4e1bf548 434 now disables debug features. Prior to this, specifying --disable-debug
112d76f6
TM
435 incorrectly enabled debug features. Thanks to Gustavo Zacarias for reporting
436 the issue.
4e1bf548 437 [ISC-Bugs #37780]
4d9b81fc 438
9a111ee8
TM
439- Unit test execution now uses a path augmented during configuration
440 processing of the --with-atf option to locate ATF runtime tools, atf-run
441 and atf-report. For most installations of ATF, this should alleviate the
442 need to manually include them in the PATH, as was formerly required.
443 If the configure script cannot locate the tools it will emit a warning,
444 informing the user that the tools must be in the PATH when running unit
445 tests.
446 Secondly, please note that "make check" will now exit with a failure status
447 code (non-zero) if one or more unit tests fail. This means that invoking
448 "make check" from an upper level directory will cause the make process to
449 STOP after the first test subdirectory with failed test(s). To force all
450 tests in all subdirectories to run, regardless of individual test outcome,
451 use the command "make -k check".
452 [ISC-Bugs #38619]
453
36e2c224 454 Changes since 4.3.1
906ec9a7 455
71d7e9aa
TM
456- Corrected parser's right brace matching when a statement contains an error.
457 [ISC-Bugs #36021]
458
3ffc07de 459- TSIG-authenticated dynamic DNS updates now support the use of these
267a248d
TM
460 additional algorithms: hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384,
461 and hmac-sha512
3ffc07de
TM
462 [ISC-Bugs #36947]
463
fa54ba10 464- Added check for invalid failover message type. Thanks to Tobias Stoeckmann
45adf35c 465 working with the OpenBSD project who spotted the issue and provided the
fa54ba10 466 patch.
e1b18c69
TM
467 [ISC-Bugs #36653]
468
fa54ba10 469- Corrected rate limiting checks for bad packet logging. Thanks to Tobias
45adf35c 470 Stoeckmann working with the OpenBSD project who spotted the issue and
fa54ba10 471 provided the patch.
0ce1aa94
TM
472 [ISC-Bugs #36897]
473
3956569b
TM
474- Log statements depicting what files will be used by the server now occur
475 after the configuration file has been processed.
476 [ISC-Bugs #36671]
477
36e2c224 478- Addressed Coverity issues reported as of 07-31-2014:
6444928c 479 [ISC-Bugs #36712] Corrects Coverity reported "high" impact issues.
c7c11ea1 480 [ISC-Bugs #36933] Corrects Coverity reported "medium" impact issues
6444928c
TM
481 [ISC-Bugs #37708] Fixes compilation error in dst_api.c seen in older
482 compilers that was introduced by #36712
906ec9a7 483
2a537542
TM
484- Server now supports a failover split value of 256.
485 [ISC-Bugs] #36664]
486
1dceab6c
SR
487- Remove unneeded error #defines. These defines were included in case
488 external programs required the older versions of the macro. They
489 have been #ifdeffed for now and will be removed at a future date.
490 See site.h for the #define to include them again, but you should
491 switch to using the DHCP_R_* versions instead of the ISC_R_* versions.
adb95d23 492 Also ISC_R_MULTIPLE has been removed as it is also defined in bind.
1dceab6c
SR
493 [ISC-Bugs #37128]
494
bd49432f 495- Added checks in range6 and prefix6 statement parsing to ensure addresses
b3b69c1c
TM
496 are within the declared subnet. Thanks to Jiri Popelka at Red Hat for the
497 bug report and patch.
bd49432f 498 [ISC-Bugs #32453]
7ff6ae5a
TM
499 [ISC-Bugs #17766]
500 [ISC-Bugs #18510]
501 [ISC-Bugs #23698]
502 [ISC-Bugs #28883]
503
504- Addressed checksum issues:
505 Added checksum readiness check to Linux packet filtering which eliminates
506 invalid packet drops due to checksum errors when checksum offloading is
507 in use. Based on dhcp-4.2.2-xen-checksum.patch made to the Fedora project.
508 [ISC-Bugs #22806]
509 [ISC-Bugs #15902]
510 [ISC-Bugs #17739]
511 [ISC-Bugs #18010]
512 [ISC-Bugs #22556]
513 [ISC-Bugs #29769]
45adf35c 514 Inbound packets with UDP checksums of 0xffff now validate correctly rather
7ff6ae5a 515 than being dropped.
e046c826
TM
516 [ISC-Bugs #24216]
517 [ISC-Bugs #25587]
518
519- Added the echo-client-id configuration parameter to the server configuration.
520 The server now supports RFC 6842 compliant behavior by setting a new
521 configuration parameter, echo-client-id. When enabled, the server will
522 include the client identifier option (Option code 61) if received, in its
523 responses. The server identifier returned in NAKs (if enabled) will now
524 be the globally defined value (if one) if the server cannot attribute the
525 inbound request to a known subnet.
f542e92b
SR
526 [ISC-Bugs #35958]
527 [ISC-Bugs #32545]
bd49432f 528
0a7e1a8a
TM
529- Added support of the configuration parameter, use-host-decl-names, to
530 BOOTP request handling.
531 [ISC-Bugs #36233]
532
6067cd48
TM
533- Added logic to ignore the signal, SIGPIPE, which ensures write failures
534 will be delivered as errors rather than as SIGPIPE signals on all OSs.
535 Thanks to Marius Tomaschewski from SUSE who reported the issue and provided
536 the patch upon which the fix is based.
537 [ISC-Bugs #32222]
538
21d30347
SR
539- In the failover code, handle the case of communications being interrupted
540 when the servers are dealing with POTENTIAL-CONFLICT. This patch allows
541 the primary to accept the secondary moving from POTENTIAL-CONFLICT to
542 RESOLUTION-INTERRUPTED as well as handling the bind update process better.
543 In addition the code to resend update or update all requests has been
544 modified to send requests more often.
545 [ISC-Bugs #36810]
546 [ISC-Bugs #20352]
547
d9b2a590
TM
548- By default, the server will now choose the value to use in the forward DNS
549 name from the following in order of preference:
550
551 1. FQDN option if provided by the client
552 2. Host name option if provided by the client
553 3. Configured option host-name if defined
554
555 As before, this may be overridden by defining ddns-hostname to the desired
556 value (or expression). In addition, the server logic has been extended to
557 use the value of the host name declaration if use-host-decl-names is enabled
558 and no other value is available.
559 [ISC-Bugs #21323]
560
f3a44c10
TM
561- DNS updates were being attempted when dhcp-cache-threshold enabled the use of
562 the existing lease and the forward DNS name had not changed. This has been
563 corrected.
564 [ISC-Bugs #37368]
59990751 565 [ISC-Bugs #38686]
f3a44c10 566
04daf4fe 567- Corrected an issue which caused dhclient to incorrectly form the result when
45adf35c 568 prepending or appending to the IPv4 domain-search option, received from the
04daf4fe
TM
569 server, when either of the values being combined contain compressed
570 components.
571 [ISC-Bugs #20558]
572
7116a34f
TM
573- Added the server-id-check parameter to the server configuration.
574 This parameter allows run-time control over whether or not a server,
575 participating in failover, verifies the dhcp-server-identifier option in
ebb1d91e 576 DHCP REQUESTs against the server's id before processing the request.
7116a34f
TM
577 Formerly, enabling this behavior was done at compilation time through
578 the use of the #define, SERVER_ID_CHECK, which has been removed from site.h
adb95d23 579 The functionality is now only available through the new runtime parameter.
7116a34f
TM
580 [ISC-Bugs #37551]
581
2775bd62
TM
582- During startup, when the server encounters a lease whose binding state is
583 FTS_BACKUP but whose pool has no configured failover peer, it will reset the
584 lease's binding state to FTS_FREE. This allows the leases to be reclaimed
585 by the server after a pool's configuration has changed from failover to
586 standalone. Prior to this such leases would remain stuck in the backup state
587 making them unavailable for assignment. Note this conversion will occur
588 whether or not the server is compiled for failover.
589 [ISC-Bugs #36960]
590
dd9738aa
SR
591- Fixed a small issue in the treatment of hosts in the inform processing
592 that could cause the response to an inform to include information from
593 the wrong scope. The two examples we've heard of are getting subnet
594 instead of group information associated with a host entry, or getting
595 global information instead of subnet if the host entry was built via
433927d3
SR
596 omapi. Thanks to Julien Soula at University of Lille for finding the
597 bug and supplying a patch.
dd9738aa
SR
598 [ISC-Bugs #35712]
599
491bf4a2
SR
600- Avoid calling pool_timer() recursively from supersede_lease(). This could
601 result in leases changing state incorrectly or delaying the running of the
602 leae expiration code.
603 [ISC-Bugs #38002]
604
992dc765
SR
605- Move the check for a PID file and process to be before we rewrite the
606 lease file. This avoids the possibility of starting a second instance
607 of a server which changes the current lease file confusing the first
608 instance. This check is only included if the admin hasn't disabled PID
609 files.
610 [ISC-Bugs #38078]
001b9d53 611 [ISC-Bugs #38143]
992dc765 612
cb8c997e
SR
613- In the client code change the way preferred_life and max_life are printed
614 for environment variables to be unsigned rather than signed.
615 Thanks to Jiri Popelka at Red Hat for the bug report and patch.
616 [ISC-Bugs #37084]
617
acbecb2e
TM
618- Modified linux packet handling such that packets received via VLAN are now
619 seen only by the VLAN interface. Prior to this, such packets were seen by
620 both the VLAN interface and its parent (physical) interface, causing the
621 server to respond to both. Note this remains an issue for non-Linux OSs.
622 Thanks to Jiri Popelka at Red Hat for the patch.
623 [ISC-Bugs #37415]
624 [ISC-Bugs #37133]
625 [ISC-Bugs #36668]
626 [ISC-Bugs #36652]
627
fb98e02e
TM
628- Log content has been changed to more directly suggest that admins should
629 check for multiple IPv6 clients attempting to use the same DUID when only
630 abandoned addresses are available. Debug level logging will now emit counts
631 of the total number of, in-use, and abandoned addresses in a shared subnet
632 when the server finds no addresses available for a given DUID. Lastly,
633 threshold logging is now automatically disabled for shared subnets whose
634 total number of possible addresses exceeds (2^64)-1.
635 [ISC-Bugs #26376]
636 [ISC-Bugs #38131]
637
1a006ff6
TM
638- Added a global parameter, prefix-length-mode, which may be used to determine
639 how the server uses a non-zero value for prefix-length supplied by clients
640 when soliciting DHCPv6 prefixes. The server supports selection modes of:
641 ignore, prefer, exact, minimum and maximum which are described in detail in
642 the server man pages. The prior behavior of the server was to only offer a
643 prefix whose length exactly matched the prefix-length value requested. If
644 no such prefixes were available, the server returned a status of none
645 available. Note the default mode, "exact", provides this same behavior.
646 [ISC-Bugs #36780]
f48dfdf1 647 [ISC-Bugs #32228]
1a006ff6 648
45adf35c
TM
649- Corrected inconsistencies in dhcrelay's setting the upper interface hop count
650 limit such that it now sets it to 32 when the upstream address is a multicast
651 address per RFC 3315 Section 20. Prior to this if the -u argument preceded
652 the -l argument on the command line or if the same interface was specified
653 for both; the logic to set the hop limit count for the upper interface was
654 skipped. This caused the hop count limit to be set to the default value
655 (typically 1) in the outbound upstream packets.
656 [ISC-Bugs #37426]
657
7d9dd306
TM
658 Changes since 4.3.1b1
659
660- Modify the linux and openwrt dhclient scripts to process information
661 from a stateless request. Thanks to Jiri Popelka at Red Hat for the
662 bug report and patch.
f542e92b 663 [ISC-Bugs #36102]
7d9dd306 664
29c6b4f1
SR
665- Remove more unused RCSID tags. These weren't noticed in 4.3 as
666 the code isn't used anymore but we remove them here to keep the
667 code consistent across versions.
668 [ISC-Bugs #36451]
669
57187138 670 Changes since 4.3.0
01a44a77 671
5ade3c84 672- Tidy up several small tickets.
38c4774a
SR
673 Correct parsing of DUID from config file, previously the LL type
674 was put in the wrong place in the DUID string.
9a111ee8 675 [ISC-Bugs #20962]
38c4774a
SR
676 Add code to parse "do-forward-updates" as well as "do-forward-update"
677 Thanks to Jiri Popelka at Red Hat.
678 [ISC-Bugs #31328]
679 Remove log_priority as it isn't currently used.
680 [ISC-Bugs #33397]
681 Increase the size of the buffer used for reading interface information.
682 [ISC-Bugs #34858]
01a44a77 683
fc48033a
SR
684- Remove an extra set of the msg_controllen variable.
685 [ISC-Bugs #21035]
686
db3f7799
SR
687- Add a more understandable error message if a configuration attempts
688 to add multiple keys for a single zone. Thanks to a patch from Jiri
689 Popelka at Red Hat.
690 [ISC-Bugs #31892]
691
0da37b4c
SR
692- Fix some minor issues in the dst code.
693 [ISC-Bugs #34172]
694
5ade3c84 695- Properly #ifdef functions so that the code can compile without NSUPDATE.
158a34fb
SR
696 [ISC-Bugs #35058]
697
dceef873
SR
698- Update the partner's stos (start time of state, basically when we last
699 heard from this partner) field when updating the state in failover.
700 [ISC-Bugs #35549]
701
5ade3c84 702- Modify the overload processing to allow space for the remote agent ID.
1be2ba15
SR
703 [ISC-Bugs #35569]
704 Handle the ordering of the SUBNET_MASK option even if it is the last
705 option in the list.
706 [ISC-Bugs #24580]
707
388cba45
SR
708- Remove the code that allows a server to follow RFC3315 instead of
709 the subsequent errata from August 2010 when determining which IAs
710 to include if no addresses will be assigned.
2c4be1d7 711 [ISC-Bugs #28938]
388cba45 712
2c4be1d7
SR
713- Remove unused RCSID tags.
714 [ISC-Bugs #35846]
388cba45 715
b6ab3f6c
SR
716- Correct the v6 client timing code. When doing the timing backoff
717 for MRT limit it to MRD.
5ade3c84 718 Thanks to Jiri Popelka at Red Hat for the bug report and fix.
b6ab3f6c
SR
719 [ISC-Bugs #21238
720
f950de77
SR
721- Add a log entry when killing a client and remove the PID files
722 when a server, relay or client are killed.
723 [ISC-Bugs #16970]
724 [ISC-Bugs #17258]
725
5ade3c84
SR
726- Some minor cleanups in the client code.
727 In addition to checking for dhcpc check for bootpc in the services list.
02b0bdc3
SR
728 [ISC-Bugs #18933]
729 Correct the client code to only try to get a lease once when the
730 given the "-1" argument.
5ade3c84 731 Thanks to Jiri Popelka at Red Hat for the bug report and fix.
02b0bdc3
SR
732 [ISC-Bugs #26735]
733 When asked for the version don't send the output to syslog.
734 [ISC-Bugs #29772]
735 Add the next server information to the environment variables for
736 use by the client script. In order to avoid changing the client
737 lease file the next server information isn't written to it.
738 Thanks to Tomas Hozza at Red Hat for the suggestion and a prototype fix.
739 [ISC-Bugs #33098]
740
5ade3c84 741- Several updates to the dhcp server code.
d8c7c34e
SR
742 When not in quiet mode print out the files being used.
743 [ISC-Bugs #17551]
744 As accessing some pid files may require privileges move the dropping
745 of permission bits due to the paranoia patch to be after the pid code.
5ade3c84 746 Thanks to Jiri Popelka at Red Hat for the bug report and fix.
d8c7c34e
SR
747 [ISC-Bugs #25806]
748 When processing a "--version" request don't output the version information
749 to syslog.
750
5ade3c84 751- Add the "enable-log-pid" build option to the configure script. When enabled
00e9af8e
SR
752 this causes the client, server and relay programs to include the PID
753 number in syslog messages.
754 Thanks to Marius Tomaschewski for the suggestion and proto-patch.
755 [ISC-Bugs #29713]
756
9279a3d7
SR
757- Add a #define to specify the prefix length used when a client attempts
758 to configure an address. This can be modified by editing includes/site.h.
759 By default it is set to 64. While 128 might be a better choice it would
760 also be a change for currently running systems, so we have left it at 64.
63c8800c 761 [ISC-Bugs #DHCP-2]
9279a3d7 762
79818c93
SR
763- Add a run time option to the client "-df" to allow the administrator to
764 point to a second lease file the client can search for a DUID. This can
765 be used to allow a v4 and a v6 instance of the client to share a DUID.
766 The second file will only be searched if there isn't a DUID in the main
767 lease file and the DUID will be written out to the main lease file.
768 [ISC-Bugs #34886]
769
8a2e40cf
SR
770- Have the client fsync the lease file to avoid lease corruption if the
771 client hibernates or otherwise shuts down.
772 [ISC-Bugs #35894]
773
59a351d6
SR
774- Add a check for L2VLAN in bpf.c to help support VLAN interfaces
775 Thanks to Steinar Haug for the suggestion.
776 [ISC-Bugs #36033]
777
0ab4a716
SR
778- Modify the handling of the resolv.conf file to allow the DHCP
779 process to start up even if the resolv.conf file has problems.
780 [ISC-Bugs #35989]
781
a89fd0cd 782- Add threshold logging functionality. Two new options,
250f7134
SR
783 log-threshold-low and log-threshold-high, indicate to the
784 server if and when it should log an error message as addresses
785 in a pool are used.
786 [ISC-Bugs #34487]
787
b05e05b7
SR
788- Add code to properly dereference a pointer in the dhclient code
789 on an error condition.
e9326fd0 790 [ISC-Bugs #36194]
b05e05b7 791
ad80055f
SR
792- Add code to help clean up soft leases.
793 [ISC-Bugs #36304]
794
e9326fd0
SR
795- Disable the gentle shutdown functionality until we can determine
796 the best way to present it to remove or reduce the side effects.
797 [ISC-Bugs #36066]
798
01a44a77
SR
799 Changes since 4.3.0rc1
800
801- None
802 Changes since 4.3.0b1
803
804- Tidy up receive packet processing.
805 Thanks to Brad Plank of GTA for reporting the issue and suggesting
806 a possible patch.
807 [ISC-Bugs #34447]
808
809 Changes since 4.3.0a1
810
811- Modify the message displayed when a process hits a fatal error.
812 The new message is much shorter and simply points to the README
813 and our website for directions on bug submissions.
814 [ISC-Bugs #24789]
815
816- Handle an absent resolv.conf file better.
817 [ISC-Bugs #35194]
818
6980ae03 819 Changes since 4.2.0 (new features)
51b8a8a0
SR
820
821- If a client renews before 'dhcp-cache-threshold' percent of its lease
822 has elapsed (default 25%), the server will reuse the allocated lease
823 (provide a lease within the currently allocated lease-time) rather
824 than extend or renew the lease. This absolves the server of needing
825 to perform an fsync() operation on the lease database before reply,
826 which improves performance. [ISC-Bugs #22228]
80778e94 827 Updated this patch to support asynchronous DDNS. If the server is
adb95d23 828 attempting to do DDNS on a lease it should be updated and written to
4809ef5c 829 disk even if that wouldn't be necessary due to the thresholding.
8cd88e20 830 [ISC-Bugs #26311]
51b8a8a0 831
6980ae03
SR
832- The 'no available billing' log line now also logs the name of the last
833 matching billing class tried before failing to provide a billing.
834 [ISC-Bugs #21759]
835
32e651c4
SR
836- A problem with missing get_hw_addr function when --enable-use-sockets
837 was used is now solved on GNU/Linux, BSD and GNU/Hurd systems. Note
838 that use-sockets feature was not tested on those systems. Client and
839 server code no longer use MAX_PATH constant that is not defined on
3cb6f9bb 840 GNU/Hurd systems. [ISC-Bugs #25979]
32e651c4 841
67418698
SR
842- Add a perl script in the contrib directory, dhcp-lease-list.pl, which
843 can parse v4 lease files and output the lease information in a more
844 human friendly manner. This was written by Christian Hammers with
845 some updates by vom and ISC. This is contributed code and is not
846 supported by ISC; however it may be useful to some users.
847 [ISC-Bugs #20680]
848
a7341359 849- Add support in v6 for on-commit, on-expire and on-release.
4809ef5c 850 [ISC-Bugs #27912]
a7341359 851
01fa619f
SR
852- Add support for using classes with v6.
853 [ISC-Bugs #26510]
854
d7d9c0c7
SR
855- Update the DDNS code to current standards and allow for sharing
856 of DDNS entries between v4 and v6 clients. The new code is used
857 if the ddns-update-style is set to "standard", the older code is
858 still available if ddns-update-style is set to "interim". The
859 oldest DDNS code "ad-hoc" has been removed. Thanks to Thomas Pegeot
860 who submitted a patch for this issue. This patch is based on
861 that work with some modifications.
64fb661c 862 [ISC-Bugs #21139]
1534fff7 863
cde11a4c
SR
864- Add a configuration option to the server to suppress using fsync().
865 Enabling this option will mean that fsync() is never called. This
866 may provide better performance but there is also a risk that a lease
867 will not be properly written to the disk after it has been issued
868 to a client and before the server stops. Using this option is
869 not recommended.
64fb661c 870 [ISC-Bugs #34810]
cde11a4c 871
f88446f1
SR
872- Add some logging statements to indicate when the server is ready
873 to serve. One statement is emitted after the server has finished
874 reading its files and is about to enter the dispatch loop.
875 This is "Server starting service.".
876 The second is emitted when a server determines that both it and
877 its failover peer are in the normal state.
878 This is "failover peer <name>: Both servers normal."
64fb661c 879 [ISC-Bugs #33208]
f88446f1 880
619304cd
SR
881- Add support for accessing options from v6 relays. The v6relay
882 statement allows the administrator to choose which relay to
883 use when searching for an option, see the dhcp-options man page
6b9c9f87
SR
884 for a description. The host-identifier option has also been
885 updated to support the use of relay options, see the dhcpd.conf
619304cd
SR
886 man page for a description.
887 [ISC-Bugs #19598]
888
e54ff84f 889- When doing DDNS if there isn't an appropriate zone statement attempt
80778e94 890 to find a reasonable nameserver via a DNS resolver. This restores
e54ff84f
SR
891 some functionality that was lost in the transition to asynchronous
892 DDNS. Due to the lack of security and increase in fragility of the
893 system when using this feature we strongly recommend the use of
894 appropriate zone statements rather than using this functionality.
895 [ISC-Bugs #30461]
896
61ef216b
SR
897- Add support for specifying the address from which to send
898 DDNS updates on the DHCP server. There are two new options
899 "ddns-local-address4" and "ddns-local-address6" that each take
900 one instance of their respective address types.
901 [ISC-Bugs #34779]
4d079f0e 902
38ee81bd
SR
903- Add ignore-client-uids option in the server. This option causes
904 the server to not record a client's uid in its lease. This
905 violates the specification but may also be useful when a client
906 can dual boot using different client ids but the same mac address.
6b9c9f87 907 Thank you to Brian De Wolf at Cal Poly Pomona for the patch.
38ee81bd
SR
908 [ISC-Bugs #32427]
909 [ISC-Bugs #35066]
4d079f0e
SR
910
911- Extend the DHCPINFORM processing to honor the subnet selection option
912 and take host declarations into account.
913 Thanks to Christof Chen for testing and submitting the patch.
914 [ISC-Bugs #35015]
915
fe2ac9e3
SR
916- Extend the hardware expression to look into the lease structure
917 for a hardware address if there is no packet. This allows the
918 server to find the hardware address during on-expiry processing.
919 [ISC-Bugs #24584]
61ef216b 920
bc30c84e
SR
921- Add definitions for some options that have been specified by the IETF.
922 [ISC-Bugs #29268]
ccc2a367 923 [ISC-Bugs #35198]
bc30c84e 924
01a44a77 925 Changes since 4.2.0 (bug fixes)
8ee352ee 926
01a44a77
SR
927- When using 'ignore client-updates;', the FQDN returned to the client
928 is no longer truncated to one octet.
8ee352ee 929
01a44a77 930- Cleaned up an unused hardware address variable in nak_lease().
4889a646 931
01a44a77
SR
932- Manpage entries for the ia-pd and ia-prefix options were updated to
933 reflect support for prefix delegation.
4889a646 934
01a44a77 935- Cleaned up some compiler warnings
7dc4e69c 936
01a44a77
SR
937- An optimization described in the failover protocol draft is now included,
938 which permits a DHCP server operating in communications-interrupted state
939 to 'rewind' a lease to the state most recently transmitted to its peer,
940 greatly increasing a server's endurance in communications-interrupted.
941 This is supported using a new 'rewind state' record on the dhcpd.leases
942 entry for each lease.
c5bc8b1a 943
01a44a77 944- Fix the trace code which was broken by the changes to the DDNS code.
d0a10f6a 945
01a44a77
SR
946- Update the fsync code to work with the changes to the DDNS code. It now
947 uses a timer instead of noticing if there are no more packets to process.
dc9d7b08 948
01a44a77
SR
949- When constructing the DNS name structure from a text string append
950 the root to relative names. This satisfies a requirement in the DNS
951 library that names be absolute instead of relative and prevents DHCP
952 from crashing. [ISC-Bugs #21054]
a24b9f23 953
01a44a77
SR
954- "The LDAP Patch" that has been circulating for some time, written by
955 Brian Masney and S.Kalyanasundraram and maintained for application to
956 the DHCP-4 sources by David Cantrell has been included. Please be
957 advised that these sources were contributed, and do not yet meet the
958 high standards we place on production sources we include by default.
959 As a result, the LDAP features are only included by using a compile-time
960 option which defaults off, and if you enable it you do so under your
961 own recognizance. We will be improving this software over time.
962 [ISC-Bugs #17741]
c5bc8b1a 963
01a44a77
SR
964- Prohibit including lease time information in a response to a DHCP INFORM.
965 [ISC-Bugs #21092]
cc17cbc3 966
01a44a77
SR
967! Accept a client id of length 0 while hashing. Previously the server would
968 exit if it attempted to hash a zero length client id, providing attackers
969 with a simple denial of service attack. [ISC-Bugs #21253]
970 CERT: VU#541921 - CVE: CVE-2010-2156
08b2d347 971
01a44a77 972- A memory leak in ddns processing was closed. [ISC-Bugs #21377]
08b2d347 973
01a44a77
SR
974- Modify the exception handling for initial context creation. Previously
975 we would try and clean up before exiting. This could present problems
976 when the cleanup required part of the context that wasn't available. It
977 also didn't do much as we exited afterwards anyway. Now we simply log
978 the error and exit. [ISC-Bugs #21093]
ad4001ce 979
01a44a77
SR
980- A bug was fixed that could cause the DHCPv6 server to advertise/assign a
981 previously allocated (active) lease to a client that has changed subnets,
982 despite being on different shared networks. Dynamic prefixes specifically
983 allocated in shared networks also now are not offered if the client has
984 moved. [ISC-Bugs #21152]
3cb6f9bb 985
01a44a77 986- Add some debugging output for use with the DDNS code. [ISC-Bugs #20916]
f6dc164f 987
01a44a77
SR
988- Fix the trace code to handle timing events better and to truncate a file
989 before using instead of overwriting it. [ISC-Bugs #20969]
4b8251a0 990
01a44a77
SR
991- Modify the determination of the default TTL to use for DDNS updates.
992 The user may still configure the ttl via ddns-ttl. The default for
993 both v4 and v6 is now 1/2 the (preferred) lease time with a limit. The
994 previous defaults (1/2 lease time without a limit for v4 and a default
995 value for v6) may be used by defining USE_OLD_DDNS_TTL in site.h
996 [ISC-Bugs #21126]
47e8308d 997
01a44a77
SR
998- libisc/libdns is now brought up to version 9.7.1rc1. This corrects
999 three reported flaws in ISC DHCP;
d9b5c150 1000
01a44a77
SR
1001 o DHCP processes (dhcpd, dhclient) fail to start if one of either the
1002 IPv4 or IPv6 address families is not present. [ISC-Bugs #21122]
08e6dad9 1003
01a44a77
SR
1004 o Assertion failure when attempting to cancel a previously running DDNS
1005 update. [ISC-Bugs #21133]
9f9265b6 1006
01a44a77
SR
1007 o Compilation failure of libisc/libdns due to the use of a flexible
1008 array member. [ISC-Bugs #21316]
9f9265b6 1009
01a44a77 1010- Add declaration for variable in debug code in alloc.c. [ISC-Bugs #21472]
35de6c8c 1011
01a44a77
SR
1012- Documentation cleanup covering multiple tickets
1013 [ISC-Bugs #20265] [ISC-Bugs #20259] minor cleanup
1014 [ISC-Bugs #20263] add text describing some default values
1015 [ISC-Bugs #20193] single quotes at the start of a line indicate a control
1016 line to nroff, escape them if we actually want a quote.
1017 [ISC-Bugs #18916] sync the pointer to web pages amongst the different docs
de87ffe3 1018
01a44a77
SR
1019- 'get-host-names true;' now also works even if 'use-host-decl-names true;'
1020 was also configured. The nature of this repair also fixes another
1021 error; the host-name supplied by a client is no longer overridden by a
1022 reverse lookup of the lease address. Thanks to a patch from Wilco Baan
1023 Hofman supplied to us by the Debian package maintenance team.
1024 [ISC-Bugs #21691] {Debian Bug#509445}
e563ec2e 1025
01a44a77
SR
1026- The .TH tag for the dhcp-options manpage was typo repaired
1027 thanks to a report from jidanni and the Debian package maintenance
1028 team. [ISC-Bugs #21676] {Debian Bug#563613}
3bedb117 1029
01a44a77
SR
1030- More documentation changes - primarily to put the options in the dhclient
1031 and dhcpd man pages into the standard form. Thanks in part to a patch
1032 from David Cantrell at Red Hat.
1033 [ISC-Bugs #20264] and parts of [ISC-Bugs #17744] dhclient.8 changes
18a28679 1034
01a44a77
SR
1035- Add code to clear the pointer to an object in an OMAPI handle when the
1036 object is freed due to a dereference. [ISC-Bugs #21306]
0b2ec8c9 1037
01a44a77
SR
1038- Fixed a bug that leaks host record references onto lease structures,
1039 causing the server to apply configuration intended for one host to any
1040 other innocent clients that come along later. [ISC-Bugs #22018]
67b2cb45 1041
01a44a77
SR
1042- Minor code fixes
1043 [ISC-Bugs #19566] When trying to find the zone for a name for ddns allow
1044 the name to be at the apex of the zone.
1045 [ISC-Bugs #19617] Restrict length of interface name read from command line
1046 in dhcpd - based on a patch from David Cantrell at Red Hat.
1047 [ISC-Bugs #20039] Correct some error messages in dhcpd.c
1048 [ISC-Bugs #20070] Better range check on values when creating a DHCID.
9a111ee8 1049 [ISC-Bugs #20198] Avoid writing past the end of the field when adding
01a44a77
SR
1050 overly long file or server names to a packet and add a log message
1051 if the configuration supplied overly long names for these fields.
1052 Thanks to Martin Pala.
1053 [ISC-Bugs #21497] Add a little more randomness to rng seed in client
1054 thanks to a patch from Jeremiah Jinno.
74977c94 1055
01a44a77 1056- Correct error handling in DLPI [ISC-Bugs #20378]
30e42327 1057
01a44a77
SR
1058- Remove __sun__ and __hpux__ typedefs in osdep.h as they are now being
1059 checked in configure. [ISC-Bugs #20443]
dbd65517 1060
01a44a77
SR
1061- Modify how the cmsg header is allocated the v6 send and received routines
1062 to compile on more compilers. [ISC-Bugs #20524]
0f750c4f 1063
01a44a77
SR
1064- When parsing a domain name free the memory for the name after we are
1065 done with it. [ISC-Bugs #20824]
b95f1ee0 1066
01a44a77
SR
1067- Add an elapsed time option to the release message and refactor the
1068 code to move most of the common code to a single routine.
1069 [ISC-Bugs #21171].
b95f1ee0 1070
01a44a77
SR
1071- Two identical log messages for commit_leases() have been disambiguated.
1072 [ISC-Bugs #18915]
0ef9a46e 1073
01a44a77
SR
1074- Parse date strings more properly - the code now handles semi-colons in
1075 date strings correctly. Thanks to a patch from Jiri Popelka at Red Hat.
1076 [ISC-Bugs #21501, #20598]
de6c9af6 1077
01a44a77
SR
1078- Fixes to lease input and output.
1079 [ISC-Bugs #20418] - Some systems don't support the "%s" argument to
1080 strftime, paste together the same string using mktime instead.
1081 [ISC-Bugs #19596] - When parsing iaid values accept printable
1082 characters.
1083 [ISC-Bugs #21585] - Always print time values in omshell as hex
1084 instead of ascii if the values happen to be printable characters.
87132514 1085
01a44a77
SR
1086- Minor changes for scripts, configure.ac and Makefiles
1087 [ISC-Bugs #19147] Use domain-search instead of domain-name in manual and
1088 example conf file. Thanks to a patch from David Cantrell
1089 at Red Hat.
1090 [ISC-Bugs #19761] Restore address when doing a rebind in DHCPv6
1091 [ISC-Bugs #19945] Properly close the quote on some arguments.
1092 [ISC-Bugs #20952] Add 64 bit types to configure.ac
adb95d23 1093 [ISC-Bugs #21308] Add "PATH=" to CLIENT_PATH environment variable
b047bd38 1094
01a44a77
SR
1095- Update the code to parse dhcpv6 lease files to accept a semi-colon at
1096 the end of the max-life and preferred-life clauses. In order to be
1097 backwards compatible with older lease files not finding a semi-colon
1098 is also accepted. [ISC-Bugs #22303].
e3c94800 1099
01a44a77
SR
1100! Handle a relay forward message with an unspecified address in the
1101 link address field. Previously such a message would cause the
1102 server to crash. Thanks to a report from John Gibbons. [ISC-Bugs #21992]
1103 CERT: VU#102047 CVE: CVE-2010-3611
dd9237c3 1104
01a44a77
SR
1105- ./configure on longer searches for -lcrypto to explicitly link against.
1106 This fixes a bug where 'dhclient' would have shared library dependencies
1107 on '/usr/lib'. [ISC-Bugs #21967]
d13db163 1108
01a44a77
SR
1109- Handle pipe failures more gracefully. Some OSes pass a SIGPIPE
1110 signal to a process and will kill the process if the signal isn't
1111 caught. This patch adds code to turn off the SIGPIPE signal via
1112 a setsockopt() call. The signal is already being ignored as part
1113 of the ISC library. [ISC-Bugs #22269]
b342f2e7 1114
01a44a77
SR
1115- Restore printing of values in omshell to the style pre 21585. For
1116 21585 we changed the print routines to always display time values
1117 as a hex list. This had a side effect of printing all data strings
1118 as a hex list. We shall investigate other ways of displaying time
1119 values more usefully. [ISC-Bugs #22626]
797aab67 1120
01a44a77
SR
1121! Fix the handling of connection requests on the failover port.
1122 Previously a connection request from a source that wasn't
1123 listed as a failover peer would cause the server to become
1124 non-responsive. Thanks to a report from Brad Bendily, brad@bendily.com.
1125 [ISC-Bugs #22679]
9a111ee8 1126 CERT: VU#159528 CVE: CVE-2010-3616
bc7f8b8e 1127
01a44a77
SR
1128- Don't pass the ISC_R_INPROGRESS status to the omapi signal handlers.
1129 Passing it through to the handlers caused the omshell program to fail
1130 to connect to the server. [ISC-Bugs #21839]
d289ee68 1131
adb95d23 1132- Fix the parenthesis in the code to process configuration statements
01a44a77
SR
1133 beginning with "auth". The previous arrangement caused
1134 "auto-partner-down" to be processed incorrectly. [ISC-Bugs #21854]
d19fa5a1 1135
01a44a77
SR
1136- Limit the timeout period allowed in the dispatch code to 2^^32-1 seconds.
1137 Thanks to a report from Jiri Popelka at Red Hat.
1138 [ISC-Bugs #22033], [Red Hat Bug #628258]
bb9189c3 1139
01a44a77
SR
1140- When processing the format flags for a given option consume the
1141 flag indicating an optional value correctly. A symptom of this
1142 bug was an infinite loop when trying to parse the slp-service-scope
1143 option. Thanks to a patch from Marius Tomaschewski.
1144 [ISC-Bugs #22055]
cbbd2714 1145
01a44a77
SR
1146- Disable the use of kqueue in the ISC library. This avoids a problem
1147 between the fork and socket code that caused the dhcpd process to
1148 use all available cpu if the program daemonized itself.
1149 [ISC-Bugs #21911]
d208bb04 1150
01a44a77
SR
1151! When processing a request in the DHCPv6 server code that specifies
1152 an address that is tagged as abandoned (meaning we received a
1153 decline request for it previously) don't attempt to move it from
1154 the inactive to active pool as doing so can result in the server
1155 crashing on an assert failure. Also retag the lease as active
1156 and reset its timeout value.
1157 [ISC-Bugs #21921]
9a111ee8 1158
01a44a77
SR
1159- Removed the restriction on using IPv6 addresses in IPv4 mode. This
1160 allows IPv4 options which contain IPv6 addresses to be specified. For
1161 example the 6rd option can be specified and used like this:
1162 [ISC-Bugs #23039]
d208bb04 1163
01a44a77
SR
1164 option 6rd code 212 = { integer 8, integer 8,
1165 ip6-address, array of ip-address };
1166 option 6rd 16 10 2001:: 1.2.3.4, 5.6.7.8;
25f664a6 1167
01a44a77
SR
1168- Handle some DDNS corner cases better. Maintain the DDNS transaction
1169 information when updating a lease and cancel any existing transactions
9a111ee8 1170 when removing the ddns information.
01a44a77 1171 [ISC-Bugs #23103]
d424157d 1172
01a44a77
SR
1173- Some fixes for LDAP
1174 [ISC-Bugs #21783] - Include lber library when building ldap
1175 [ISC-Bugs #22888] - Enable the ldap code when buidling common
1176 The above fixes are from Jiri Popelka at Red Hat.
3221151b 1177
01a44a77
SR
1178- Modify the dlpi code to accept getmsg() returning a positive value.
1179 [ISC-Bugs #22824]
bea17697
SR
1180
1181! In dhclient check the data for some string options for
1182 reasonableness before passing it along to the script that
1183 interfaces with the OS.
1184 [ISC-Bugs #23722]
1185 CVE: CVE-2011-0997
c7aa4dd4
TM
1186
1187- DHCPv6 server now responds properly if client asks for a prefix that
1188 is already assigned to a different client. [ISC-Bugs #23948]
4a5bfeac
SR
1189
1190- Add the option "--no-pid" to the client, relay and server code,
1191 to disable writing a pid file. Add the option "-pf pidfile"
1192 to the relay to allow the user to supply the pidfile name at
1193 runtime. Add the "with-relay6-pid-file" option to configure
1194 to allow the user to supply the pidfile name for the relay
1195 in v6 mode at configure time.
1196 [ISC-Bugs #23351] [ISC-Bugs #17541]
5d082abd
TM
1197
1198- 'dhclient' no longer waits a random interval after first starting up to
1199 begin in the INIT state. This conforms to RFC 2131, but elects not to
9a111ee8 1200 implement a 'SHOULD' direction in section 4.1. The goal of this change
73c83820 1201 is to start up faster. [ISC-Bugs #19660]
9a111ee8
TM
1202
1203- Added 'initial-delay' parameter that specifies maximum amount of time
1204 before client goes to the INIT state. The default value is 0. In previous
1205 versions of the code client could wait up to 5 seconds. The old behavior
5d082abd 1206 may be restored by using 'initial-delay 5;' in the client config file.
73c83820 1207 [ISC-Bugs #19660]
5d082abd
TM
1208
1209- ICMP ping-check should now sit closer to precisely the number of seconds
1210 configured (or default 1), due to making use of the new microsecond
1211 scale timer internally to dhcpd. This corrects a bug where the server
1212 may immediately timeout an ICMP ping-check if it was made late in the
73c83820 1213 current second. [ISC-Bugs #19660]
5d082abd
TM
1214
1215- The DHCP client will schedule renewal and rebinding events in
1216 microseconds if the DHCP server provided a lease-time that would result
1217 in sub-1-second timers. This corrects a bug where a 2-second or lower
1218 lease-time would cause the DHCP client to enter an infinite loop by
73c83820 1219 scheduling renewal at zero seconds. [ISC-Bugs #19660]
5d082abd
TM
1220
1221- Client lease records are recorded at most once every 15 seconds. This
1222 keeps the client from filling the lease database disk quickly on very small
73c83820 1223 lease times. [ISC-Bugs #19660]
5d082abd
TM
1224
1225- To defend against RFC 2131 non-compliant DHCP servers which fail to
1226 advertise a lease-time (either mangled, or zero in value) the DHCP
1227 client now adds the server to the reject list ACL and returns to INIT
1228 state to hopefully find an RFC 2131 compliant server (or retry in INIT
73c83820 1229 forever). [ISC-Bugs #19660]
023fbaa0
TM
1230
1231- Parameters configured to evaluate from user defined function calls can
1232 now be correctly written to dhcpd.leases (as on 'on events' or dynamic
1233 host records inserted via OMAPI). [ISC-Bugs #22266]
1234
1235- If a 'next-server' parameter is configured in a dynamic host record via
1236 OMAPI as a domain name, the syntax written to disk is now correctly parsed
1237 upon restart. [ISC-Bugs #22266]
656b1ece
TM
1238
1239- The DHCP server now responds to DHCPLEASEQUERY messages from agents using
1240 IP addresses not covered by a subnet in configuration. Whether or not to
1241 respond to such an agent is still governed by the 'allow leasequery;'
1242 configuration parameter, in the case of an agent not covered by a configured
1243 subnet the root configuration area is examined. Server now also returns
1244 vendor-class-id option, if client sent it. [ISC-Bugs #21094]
9a111ee8 1245
fc06ee4f
SR
1246- Documentation fixes
1247 [ISC-Bugs #17959] add text to AIX section describing how to have it send
1248 responses to the all-ones address.
1249 [ISC-Bugs #19615] update the includes in dhcpctl/dhcpctl.3 to be more correct
1250 [ISC-Bugs #20676] update dhcpd.conf.5 to include the RFC numbers for DDNS
1251
1185c766
TM
1252- Relay no longer crashes, when DHCP packet is received over interface without
1253 any IPv4 address assigned. Also extended logging message about discarding
1254 packets with invalid hlen with information about relevant interface name.
1255 [ISC-Bugs #22409]
1256
c6455252
TM
1257- Relay now properly logs that packet was received over interface without
1258 global IPv6 address [ISC-Bugs #24070]
1259
9a111ee8
TM
1260- Linux Packet Filter interface improvement. sockaddr_pkt structure is used,
1261 rather than sockaddr. Packet ethertype is now forced to ETH_P_IP.
9369bdc1
TM
1262 [ISC-Bugs #18975]
1263
fb30f3fc
SR
1264- Minor code cleanups - but note port change for #23196
1265 [ISC-Bugs #23470] - Modify when an ignore return macro is defined to
1266 handle unsed error return warnings for more versions of gcc.
1267 [ISC-Bugs #23196] - Modify the reply handling in the server code to
1268 send to a specified port rather than to the source port for the incoming
1269 message. Sending to the source port was test code that should have
1270 been removed. The previous functionality may be restored by defining
1271 REPLY_TO_SOURCE_PORT in the includes/site.h file. We suggest you don't
1272 enable this except for testing purposes.
1273 [ISC-Bugs #22695] - Close a file descriptor in an error path.
1274 [ISC-Bugs #19368] - Tidy up variable types in validate_port.
1275
c616de4f 1276- Code cleanup: remove obsolete PROTO, KandR, INLINE and ANSI_DECL macros
9a111ee8 1277 [ISC-Bugs #13151]
c616de4f
TM
1278
1279- Compilation problem with gcc4.5 and omshell.c resolved. [ISC-Bugs #23831]
a34feb7d 1280
4f55e11b
SR
1281- Client Script fixes
1282 [ISC-Bugs #23045] Typos in client/scripts/openbsd
1283 [ISC-Bugs #23565] In the client scripts add a zone id (interface id) if
1284 the domain search address is link local.
1285 [ISC-Bugs #1277] In some of the client scripts add code to handle the
1286 case of the default router information being changed without the address
1287 being changed.
1288
802fdea1
TM
1289- Documentation cleanup
1290 [ISC-Bugs #23326] Updated References document, several man page updates
1291
9a111ee8 1292- Server no longer complains about NULL pointer when configured
1b601efa
TM
1293 server-identifier expression fails to evaluate. [ISC-Bugs #24547]
1294
199f0b8a
SR
1295- Convert ISC_R_INPROGRESS status to ISC_R_SUCCESS when called from other
1296 than the dispatch handler. This fixes an issue where omshell, when
1297 run from the same platform as the server, would appear to fail to
1298 connect. This is a companion to #21839. [ISC-Bugs #23592]
1299
786f2e79
SR
1300- Enlarge the buffer size used by the Omshell code and some of the
1301 print routines to allow for greater than 60 characters or, when
1302 printing as hex strings, 20 characters. [ISC-Bugs #22743]
1303
7cfeb916
SR
1304- In Solaris 11 switch to using sockets instead of DLPI, thanks
1305 to a patch form Oracle. [ISC-Bugs #24634].
1306
9a111ee8
TM
1307- Strict checks for content of domain-name DHCPv4 option can now be
1308 configured during compilation time. Even though RFC2132 does not allow
1309 to store more than one domain in domain-name option, such behavior is
d15aa964
TM
1310 now enabled by default, but this may change some time in the future.
1311 See ACCEPT_LIST_IN_DOMAIN_NAME define in includes/site.h.
1312 [ISC-Bugs #24167]
1313
beaed73f
SR
1314- DNS Update fix. A misconfigured server could crash during DNS update
1315 processing if the configuration included overlapping pools or
1316 multiple fixed-address entries for a single address. This issue
1317 affected both IPv4 and IPv6. The fix allows a server to detect such
1318 conditions, provides the user with extra information and recommended
1319 steps to fix the problem. If the user enables the appropriate option
1320 in site.h then server will be terminated
1321 [ISC-Bugs #23595]
1322
8bd96ccb
SR
1323! Two packets were found that cause a server to halt. The code
1324 has been updated to properly process or reject the packets as
1325 appropriate. Thanks to David Zych at University of Illinois
1326 for reporting this issue. [ISC-Bugs #24960]
1327 One CVE number for each class of packet.
1328 CVE-2011-2748
1329 CVE-2011-2749
1330
01a44a77
SR
1331- Fix the code that checks for an existing DDNS transaction to cancel
1332 when removing DDNS information, so that we will continue with the
1333 processing if we have a lease even if it doesn't have an outstanding
1334 transaction. [ISC-Bugs #24682]
5a38e43f 1335
01a44a77
SR
1336- Add AM_MAINTAINER_MODE to configure.ac to avoid rebuilding
1337 configuration files. [ISC-Bugs #24107]
5a38e43f 1338
01a44a77
SR
1339- Add support for passing DDNS information to a DNS server over
1340 an IPv6 address. [ISC-Bugs #22647]
524705e5 1341
01a44a77
SR
1342- Enhanced patch for 23595 to handle IPv4 fixed addresses more
1343 cleanly. [ISC-Bugs #23595]
66be0ad1 1344
01a44a77
SR
1345! Add a check for a null pointer before calling the regexec function.
1346 Without this check we could, under some circumstances, pass
1347 a null pointer to the regexec function causing it to segfault.
1348 Thanks to a report from BlueCat Networks.
1349 [ISC-Bugs #26704].
1350 CVE: CVE-2011-4539
57fbc772 1351
01a44a77
SR
1352! Modify the DDNS handling code. In a previous patch we added logging
1353 code to the DDNS handling. This code included a bug that caused it
1354 to attempt to dereference a NULL pointer and eventually segfault.
1355 While reviewing the code as we addressed this problem, we determined
1356 that some of the updates to the lease structures would not work as
1357 planned since the structures being updated were in the process of
1358 being freed: these updates were removed. In addition we removed an
1359 incorrect call to the DDNS removal function that could cause a failure
1360 during the removal of DDNS information from the DNS server.
1361 Thanks to Jasper Jongmans for reporting this issue.
1362 [ISC-Bugs #27078]
1363 CVE: CVE-2011-4868
57fbc772 1364
01a44a77
SR
1365- Fixed the code that checks if an address the server is planning
1366 to hand out is in a reserved range. This would appear as
1367 the server being out of addresses in pools with particular ranges.
1368 [ISC-Bugs #26498]
57fbc772 1369
01a44a77
SR
1370- In the DDNS code handle error conditions more gracefully and add more
1371 logging code. The major change is to handle unexpected cancel events
1372 from the DNS client code.
1373 [ISC-Bugs #26287]
57fbc772 1374
01a44a77
SR
1375- Tidy up the receive calls and eliminate the need for found_pkt.
1376 [ISC-Bugs #25066]
9a111ee8 1377
01a44a77
SR
1378- Add support for Infiniband over sockets to the server and
1379 relay code. We've tested this on Solaris and hope to expand
1380 support for Infiniband in the future. This patch also corrects
1381 some issues we found in the socket code.
1382 [ISC-Bugs #24245]
197c917e 1383
01a44a77
SR
1384- Add a compile time check for the presence of the noreturn attribute
1385 and use it for log_fatal if it's available. This will help code
1386 checking programs to eliminate false positives.
1387 [ISC-Bugs #27539]
8bd445a1 1388
01a44a77
SR
1389- Fixed many compilation problems ("set, but not used" warnings) for
1390 gcc 4.6 that may affect Ubuntu 11.10 users. [ISC-Bugs #27588]
83d409ae 1391
01a44a77
SR
1392- Modify the code that determines if an outstanding DDNS request
1393 should be cancelled. This patch results in cancelling the
1394 outstanding request less often. It fixes the problem caused
1395 by a client doing a release where the TXT and PTR records
1396 weren't removed from the DNS.
1397 [ISC-BUGS #27858]
6aaaf6a4 1398
01a44a77
SR
1399- Use offsetof() instead of sizeof() to get the sizes for dhcpv6_relay_packet
1400 and dhcpv6_packet in several more places. Thanks to a report from
1401 Bruno Verstuyft and Vincent Demaertelaere of Excentis.
1402 [ISC-Bugs #27941]
4e0997c6 1403
01a44a77
SR
1404- Remove outdated note in the description of the bootp keyword about the
1405 option not satisfying the requirement of failover peers for denying
1406 dynamic bootp clients.
1407 [ISC-bugs #28574]
ad59838e 1408
01a44a77
SR
1409- Multiple items to clean up IPv6 address processing.
1410 When processing an IA that we've seen check to see if the
1411 addresses are usable (not in use by somebody else) before
1412 handing it out.
1413 When reading in leases from the file discard expired addresses.
1414 When picking an address for a client include the IA ID in
1415 addition to the client ID to generally pick different addresses
1416 for different IAs.
1417 [ISC-Bugs #23138] [ISC-Bugs #27945] [ISC-Bugs #25586]
1418 [ISC-Bugs #27684]
f33dc722 1419
01a44a77
SR
1420- Remove unnecessary checks in the lease query code and clean up
1421 several compiler issues (some dereferences of NULL and treating
1422 an int as a boolean).
1423 [ISC-Bugs #26203]
4dc5a6b1 1424
01a44a77
SR
1425- Fix the NA and PD allocation code to handle the case where a client
1426 provides a preference and the server doesn't have any addresses or
1427 prefixes available. Previously the server ignored the request with
1428 this patch it replies with a NoAddrsAvail or NoPrefixAvail response.
1429 By default the code performs according to the errata of August 2010
1430 for RFC 3315 section 17.2.2; to enable the previous style see the
1431 section on RFC3315_PRE_ERRATA_2010_08 in includes/site.h. This option
1432 may be removed in the future.
1433 Thanks to Jiri Popelka at Red Hat for the patch.
1434 [ISC-Bugs #22676]
3004baba 1435
01a44a77
SR
1436- Fix up some issues found by static analysis.
1437 A potential memory leak and NULL dereference in omapi.
1438 The use of a boolean test instead of a bitwise test in dst.
1439 [ISC-Bugs #28941]
3004baba 1440
01a44a77
SR
1441- Rotate the lease file when running in v6 mode.
1442 Thanks to Christoph Moench-Tegeder at Astaro for the
1443 report and the first version of the patch.
1444 [ISC-Bugs #24887]
9d97e644 1445
01a44a77
SR
1446- Correct code to calculate timing values in client to compare
1447 rebind value to infinity instead of renew value.
1448 Thanks to Chenda Huang from H3C Technologies Co., Limited
1449 for reporting this issue.
1450 [ISC-Bugs #29062]
23d39ae2 1451
01a44a77
SR
1452- Fix some issues in the code for parsing and printing options.
1453 [ISC-Bugs #22625] - properly print options that have several fields
1454 followed by an array of something for example "fIa"
1455 [ISC-Bugs #27289] - properly parse options in declarations that have
1456 several fields followed by an array of something for example "fIa"
1457 [ISC-Bugs #27296] - properly determine if we parsed a 16 or 32 bit
1458 value in evaluate_numeric_expression (extract-int).
1459 [ISC-Bugs #27314] - properly parse a zero length option from
1460 a lease file. Thanks to Marius Tomaschewski from SUSE for the report
1461 and prototype patch for this ticket as well as ticket 27289.
23d39ae2 1462
01a44a77
SR
1463! Previously the server code was relaxed to allow packets with zero
1464 length client ids to be processed. Under some situations use of
1465 zero length client ids can cause the server to go into an infinite
1466 loop. As such ids are not valid according to RFC 2132 section 9.14
1467 the server no longer accepts them. Client ids with a length of 1
1468 are also invalid but the server still accepts them in order to
1469 minimize disruption. The restriction will likely be tightened in
1470 the future to disallow ids with a length of 1.
1471 Thanks to Markus Hietava of Codenomicon CROSS project for the
9a111ee8 1472 finding this issue and CERT-FI for vulnerability coordination.
01a44a77
SR
1473 [ISC-Bugs #29851]
1474 CVE: CVE-2012-3571
0c9d3a81 1475
01a44a77
SR
1476! When attempting to convert a DUID from a client id option
1477 into a hardware address handle unexpected client ids properly.
1478 Thanks to Markus Hietava of Codenomicon CROSS project for the
9a111ee8 1479 finding this issue and CERT-FI for vulnerability coordination.
01a44a77
SR
1480 [ISC-Bugs #29852]
1481 CVE: CVE-2012-3570
e1a40211 1482
01a44a77
SR
1483! A pair of memory leaks were found and fixed. Thanks to
1484 Glen Eustace of Massey University, New Zealand for finding
1485 this issue.
1486 [ISC-Bugs #30024]
1487 CVE: CVE-2012-3954
e7e17397 1488
01a44a77
SR
1489- Existing legacy unit-tests have been migrated to Automated Test
1490 Framework (ATF). Several new tests have been developed. To enable
1491 unit-tests, please use --with-atf in configure script. A Developer's
1492 Guide has been added. To generate it, please use make devel in
1493 the doc directory. It is currently in early stages of development,
1494 but is expected to grow in the near future. [ISC-Bugs 25901]
ef86959b 1495
01a44a77
SR
1496! An issue with the use of lease times was found and fixed. Making
1497 certain changes to the end time of an IPv6 lease could cause the
1498 server to abort. Thanks to Glen Eustace of Massey University,
1499 New Zealand for finding this issue.
1500 [ISC-Bugs #30281]
1501 CVE: CVE-2012-3955
ef86959b 1502
01a44a77
SR
1503- Update the memory leakage debug code to work with v6.
1504 [ISC-Bugs #30297]
919f1407 1505
01a44a77
SR
1506- Relax the requirements for deleting an A or AAAA record.
1507 Previously the DDNS removal code required both the A or AAAA
1508 record and the TXT record to exist. This requirement could
1509 cause problems if something interrupted the removal leaving
1510 the TXT record alone. This relaxation was codified in RFC 4703.
1511 [ISC-Bugs #30734]
8a0d9ca4 1512
01a44a77
SR
1513- Modify the failover code to handle incorrect peer names
1514 better. Previously the structure holding the name might
1515 have been freed inappropriately in some cases and not
1516 freed in other cases.
1517 [ISC-Bugs #30320]
17a8f0e2 1518
01a44a77
SR
1519- Add a configure option, enable-secs-byteorder, to deal with
1520 clients that do the byte ordering on the secs field incorrectly.
1521 This field should be in network byte order but some clients
1522 get it wrong. When this option is enabled the server will examine
1523 the secs field and if it looks wrong (high byte non zero and low
1524 byte zero) swap the bytes. The default is disabled. This option
1525 is only useful when doing load balancing within failover.
1526 [ISC-Bugs #26108]
badc999d 1527
01a44a77
SR
1528- Fix a set of issues that were discovered via a code inspection
1529 tool. Thanks to Jiri Popelka and Tomas Hozza Red Hat for the logs
1530 and patches.
1531 [ISC-Bugs #23833]
0d8c3d6e 1532
9a111ee8 1533- Parsing unquoted base64 strings improved. Parser now properly handles
01a44a77 1534 strings that contain reserved names. [ISC-Bugs #23048]
1e05d095 1535
01a44a77
SR
1536- Modify the nak_lease function to make some attempts to find a
1537 server-identifier option to use for the NAK.
1538 [ISC-Bugs #25689]
1e05d095 1539
01a44a77
SR
1540- The client now passes information about the options it requested
1541 from the server to the script code via environment variables.
1542 These variables are of the form requested_<option_name>=1 with
1543 the option name being the same as used in the new_* and old_*
1544 variables.
1545 [ISC-Bugs #29068]
1943bbf8 1546
01a44a77
SR
1547- Add support for a simple check that the server id in a request message
1548 to a failover peer matches the server id of the server. This support
1549 is enabled by editing the file includes/site.h and uncommenting the
1550 definition for SERVER_ID_CHECK. The option has several restrictions
1551 and issues - please read the comment in the site.h file before
1552 enabling it.
1553 [ISC-Bugs #31463]
8a513c43 1554
01a44a77
SR
1555- Tidy up some compiler issues in the debug code.
1556 [ISC-Bugs #26460]
d122accf 1557
adb95d23 1558- Move the dhcpd.conf example file to dhcpd.conf.example to avoid
01a44a77
SR
1559 overwriting the dhcpd.conf file when installing a new version of
1560 ISC DHCP. The user will now need to manual copy and edit the
1561 dhcpd.conf file as desired.
1562 [ISC-Bugs #19337]
0d8c3d6e 1563
01a44a77
SR
1564- Check the status value when trying to read from a connection to
1565 see if it may have been closed. If it appears closed don't try
1566 to read from it again. This avoids a potential busy-wait like
1567 loop when the peer names are mismatched.
1568 [ISC-Bugs #31231]
590298e7 1569
01a44a77
SR
1570- Remove an unused variable to keep compilers happy.
1571 [ISC-Bugs #31983]
2b58b865 1572
01a44a77
SR
1573- Modify test makefiles to be more similar to standard makefiles
1574 and comment out a currently unused test.
1575 [ISC-Bugs #32089]
600ee619 1576
01a44a77
SR
1577- Address static analysis warnings.
1578 [ISC-Bugs #33510] [ISC-Bugs #33511]
a5c7bf77 1579
01a44a77
SR
1580- Silence benign static analysis warnings.
1581 [ISC-Bugs #33428]
a5c7bf77 1582
01a44a77
SR
1583- Add check for 64-bit package for atf.
1584 [ISC-Bugs #32206]
a5c7bf77 1585
01a44a77
SR
1586- Use newer auto* tool packages and turn on RFC_3542 support on Mac OS.
1587 [ISC-Bugs #26303]
a5c7bf77 1588
01a44a77
SR
1589- Remove a variable when it isn't being used due to #ifdefs to avoid
1590 a compiler warning on Solaris using GCC.
1591 [ISC-Bugs #33032]
0585235c 1592
01a44a77
SR
1593- Add a check for too much whitespace in a config or lease file.
1594 Thanks to Paolo Pellegrino for finding the issue and a suggestion
1595 for the patch.
1596 [ISC-Bugs #33351]
0585235c 1597
01a44a77
SR
1598- Fix several problems with using OMAPI to manipulate class and subclass
1599 objects.
1600 [ISC-Bugs #27452]
f4bc8261 1601
01a44a77
SR
1602- Added a sleep call after killing the old client to allow time
1603 for the sockets to be cleaned. This should allow the -r option
1604 to work more consistently.
1605 [ISC-Bugs #18175]
33692791 1606
01a44a77
SR
1607- Missing files for ISC DHCP Developer's Guide are now included in
1608 the release tarballs. To generate this documentation, please use
1609 make devel command in doc directory. [ISC-Bugs #32767]
928618dd 1610
01a44a77
SR
1611- Update client script for use with openwrt.
1612 [ISC-Bugs #29843]
928618dd 1613
01a44a77
SR
1614- Fix the socket handling for DHCPv6 clients to allow multiple instances
1615 of a client on a single machine to work properly. Previously only
1616 one client would receive the packets. Thanks to Jiri Popelka at Red Hat
1617 for the bug report and a potential patch.
1618 [ISC-Bugs #34784]
3c941d42 1619
01a44a77
SR
1620- Added support for gentle shutdown after signal is received.
1621 [ISC-Bugs #32692] [ISC-Bugs 34945]
bdd8e747 1622
01a44a77
SR
1623- Enhance the DHCPv6 server logging to include the addresses that are assigned
1624 to the clients.
1625 [ISC-Bugs #26377]
3da71461 1626
01a44a77
SR
1627- Fix an operation in the DDNS code to be a bitwise instead of logical or.
1628 [ISC-Bugs #35138]
fdfebedf 1629
7aa153b8 1630
adbef119
DH
1631 Changes since 4.1.0 (new features)
1632
d340bc24
DH
1633- Failover port configuration can now be left to defaults (port 647) as
1634 described in the -12 revision of the Failover draft (and assigned by
4b97eaff 1635 IANA). Thanks in part to a patch from David Cantrell at Red Hat.
adbef119 1636
0829d595
DH
1637- If configured, dhclient may now transmit to an anycast MAC address,
1638 rather than using a broadcast address. Thanks to a patch from David
1639 Cantrell at Red Hat.
1640
8a3c1e33
PS
1641- Added client support for setting interface MTU and metric, thanks to
1642 Roy "UberLord" Marples <roy@marples.name>.
1643
a41d7a25
PS
1644- Added client -D option to specify DUID type to send.
1645
9e3eb22a
DH
1646- A new failover configuration parameter has been introduced for those
1647 environments where DHCP servers can be reasonably guaranteed to be
1648 "down" when the failover TCP socket is severed, "auto-partner-down".
1649 This parameter is not generally safe, and by default is disabled, so
1650 please carefully review the documentation of this parameter in the
1651 dhcpd.conf(5) manpage before determining to use it yourself.
1652
33ea4622
DH
1653- Added a configuration function, 'gethostname()', which calls the system
1654 function of the same name and presents the results as a data expression.
1655 This function can be used to incorporate the system level hostname of
1656 the system the DHCP software is operating on in responses or queries (such
1657 as including a failover partner's hostname in a dhcp message or binding
1658 scope, or having a DHCP client send any system hostname in the host-name or
1659 FQDN options by default).
1660
5a671e87
DH
1661- The dhcp-renewal-time and dhcp-rebinding-time options may now be configured
1662 for DHCPv4 operation and used independently of the dhcp-lease-time
1663 calculations. Invalid renew and rebinding times (e.g., greater than the
1664 determined lease time) are omitted.
1665
adb95d23 1666- Processing the DHCP to DNS server transactions in an asynchronous fashion,
45adf35c 1667 the DHCP server or client can now continue with its processing while
98bf1607 1668 awaiting replies from the DNS server.
c900c5b2
DH
1669
1670- The 'hardware [ethernet|etc] ...;' parameter in host records has been
1671 extended to attempt to match DHCPv6 clients by the last octets of a
1672 DUID-LL or DUID-LLT provided by the client.
1673
59112e84
SR
1674 Changes since 4.1.0 (bug fixes)
1675
62f6843d
MA
1676- Remove infinite loop in token_print_indent_concat().
1677
59112e84
SR
1678- Validate the argument to the -p option.
1679
47e6eb82
DH
1680- The notorious 'option <unknown> ... larger than buffer' log line,
1681 which is seen in some malformed DHCP client packets, was modified.
1682 It now logs the universe name, and does not log the length values
1683 (which are bogus corruption read from the packet anyway). It also
1684 carries a hopefully more useful explanation.
1685
159c89d7
EH
1686- Suppress spurious warnings from configure about --datarootdir
1687
1aa0fe5e
DH
1688- A bug was fixed that caused the server not to answer some valid Solicit
1689 and Request packets, if the dynamic range covering any requested addresses
1690 had been deleted from configuration.
1691
cd51403d
SR
1692- Update the code to deal with GCC 4.3. This included two sets of changes.
1693 The first is to the configuration files to include the use of
571c38b0 1694 AC_USE_SYSTEM_EXTENSIONS. The second is to deal with return values that
cd51403d
SR
1695 were being ignored.
1696
64e1823d
DH
1697- The db-time-format option was documented in manpages.
1698
26e59ee9
DH
1699- Using reserved leases no longer results in 'lease with binding state
1700 free not on its queue' error messages, thanks to a patch from Frode
1701 Nordahl.
1702
70ea9345
PS
1703- Fix a build error in dhcrelay, using older versions of gcc with
1704 dhcpv6 disabled.
1705
8d7dca58 1706- Two uninitialized stack structures are now memset to zero, thanks to a
4b97eaff 1707 patch from David Cantrell at Red Hat.
819186b7 1708
f4534b17
DH
1709- Fixed a cosmetic bug where pretty-printing valid domain-search options would
1710 result in an erroneous error log message ('garbage in format string').
1711
f9453d21
DH
1712- A bug in DLPI packet transmission (Solaris, HP/UX) that caused the server
1713 to stop receiving packets is fixed. The same fix also means that the MAC
1714 address will no longer appear 'bogus' on DLPI-based systems.
1715
1716- A bug in select handling was discovered where the results of one select()
1717 call were discarded, causing the server to process the next select() call
1718 and use more system calls than required. This has been repaired - the
1719 sockets will be handled after the first return from select(), resulting in
1720 fewer system calls.
1721
a3dcc0b1
DH
1722- The update-conflict-detection feature would leave an FQDN updated without
1723 a DHCID (still currently implemented as a TXT RR). This would cause later
1724 expiration or release events to fail to remove the domain name. The feature
1725 now also inserts the client's up to date DHCID record, so records may safely
1726 be removed at expiration or release time. Thanks to a patch submitted by
1727 Christof Chen.
1728
95fd7038
DH
1729- Memory leak in the load_balance_mine() function is fixed. This would
1730 leak ~20-30 octets per DHCPDISCOVER packet while failover was in use
1731 and in normal state.
1732
1733- Various compilation fixes have been included for the memory related
1734 DEBUG #defines in includes/site.h.
1735
8a3c1e33
PS
1736- Fixed Linux client script 'unary operator expected' errors with DHCPv6.
1737
1738- Fixed setting hostname in Linux hosts that require hostname argument
1739 to be double-quoted. Also allow server-provided hostname to
1740 override hostnames 'localhost' and '(none)'.
1741
dedde1ba
DH
1742- Fixed failover reconnection retry code to continue to retry to reconnect
1743 rather than restarting the listener.
1744
a57df74a
DH
1745- Compilation on Solaris with USE_SOCKETS defined in includes/site.h has
1746 been repaired. Other USE_ overrides should work better.
1747
1748- A check for the local flavor of IFNAMSIZ had a broken 'else' condition,
1749 that probably still resulted in the correct behaviour (but wouldn't use
1750 a larger defined value provided by the host OS).
1751
350576c5
DH
1752- Fixed a bug where an OMAPI socket disconnection message would not result
1753 in scheduling a failover reconnection, if the link had not negotiated a
1754 failover connect yet (e.g.: connection refused, asynch socket connect()
1755 timeouts).
1756
792156a9
DH
1757- A bug was fixed that caused the 'conflict-done' state to fail to be parsed
1758 in failover state records.
1759
8a4e543b
DH
1760! A stack overflow vulnerability was fixed in dhclient that could allow
1761 remote attackers to execute arbitrary commands as root on the system,
1762 or simply terminate the client, by providing an over-long subnet-mask
1b12d999 1763 option. CERT VU#410676 - CVE-2009-0692
8a4e543b 1764
a1308b64
DH
1765- Fixed a bug where relay agent options would never be returned when
1766 processing a DHCPINFORM.
1767
1b12d999
DH
1768- Versions 3.0.x syntax with multiple name->code option definitions is now
1769 supported. Note that, similarly to 3.0.x, for by-code lookups only the
1770 last option definition is used.
1771
d453265f
PS
1772- Fixed a bug where a time difference of greater than 60 seconds between a
1773 failover pair could cause the primary to crash on contact with the
1774 secondary. Thanks to a patch from Steinar Haug.
1775
3e29af1e
PS
1776- Don't look for IPv6 interfaces on Linux when running in DHCPv4 mode.
1777 Thanks to patches from Matthew Newton and David Cantrell.
1778
b8d45c67
DH
1779- Secondary servers in a failover pair will now perform ddns removals if
1780 they had performed ddns updates on a lease that is expiring, or was
1781 released through the primary. As part of the same fix, stale binding scopes
1782 will now be removed if a change in identity of a lease's active client is
1783 detected, rather than simply if a lease is noticed to have expired (which it
1784 may have expired without a failover server noticing in some situations).
1785
583c1c16
DH
1786- A patch supplied by David Cantrell at RedHat was applied that detects
1787 invalid calling parameters given to the ns_name_ntop() function.
1788 Specifically, it detects if the caller passed a pointer and size pair
1789 that causes the pointer to integer-wrap past zero.
1790
e4e3a2ab
DH
1791! Fixed a fenceposting bug when a client had two host records configured,
1792 one using 'uid' and the other using 'hardware ethernet'. CVE-2009-1892
95f5d38c 1793
875e99dc
SR
1794- Fixed the check in the dhcp_interface_signal_handler routine to verify
1795 the existence of the linked signal handler before calling it.
1796
2267da84
DH
1797- Both host and subnet6 configuration groups are now included whether a
1798 fixed-address6 (DHCPv6) is in use or not. Host scoped configuration takes
1799 precedence. This fixes two bugs, one where host scoped configuration
1800 would not be included from a non-fixed-address6 host record, and the equal
1801 and opposite bug where subnet6 scoped configuration would not be used when
571c38b0 1802 over-riding values were not present in a matching fixed-address6 host
2267da84
DH
1803 configuration.
1804
cd3f0b9b
DH
1805- ./configure now checks to ensure the intX_t and u_intX_t types are defined,
1806 correcting a compilation failure when using Sun's compiler.
1807
0493fdca
SR
1808- Modified the handling of a connection to avoid releasing the omapi io
1809 object for the connection while it is still in use. One symptom from
1810 this error was a segfault when a failover secondary attempted to connect
1811 to the failover primary if their clocks were not synchronized.
1812
95bba8b6
SR
1813- Clean up to allow compilation with gcc 2.95.4 on FreeBSD. Remove an
1814 extra semi-colon from common/dns.c and moved setting a variable to NULL
1815 in server/dhcpv6.c to allow the compiler to decide that the variable
9a111ee8 1816 was always properly set.
95bba8b6 1817
adbef119 1818 Changes since 4.1.0b1
ebf076fe
EH
1819
1820- A missing "else" in dhcrelay.c could have caused an interface not to
1821 be recognized.
61d75ea2 1822
a4ffedd1
DH
1823 Changes since 4.1.0a2
1824
1825- A cosmetic bug in DHCPDECLINE processing was fixed which caused all
1826 successful DHCPDECLINEs to be logged as "not found" rather than
1827 "abandoned".
1828
6ff3b26d
FD
1829- Added configuration file examples for DHCPv6.
1830
1387545f
DH
1831- Some failover debugging #defines have been better defined and some
1832 high frequency messages moved to a deeper debugging symbol.
1833
1834- The CLTT parameter in failover is now only updated by client activity,
1835 and not by failover binding updates (taking on the peer's CLTT).
1836
1837- Failover BNDUPD messages are now discarded if they conflict with an
d7ac7a27 1838 update that has been transmitted, but not acknowledged.
1387545f 1839
399d3dbe
DH
1840- A bug cleaning up unknown-xxx temporary option definitions was fixed.
1841
fbcee149
DH
1842- Delayed-ack is now a compile-time option, compiled out by default.
1843 This feature is simply too experimental for right now, and causes
1844 some problems to some failover installations. We will revisit this
1845 in future releases.
1846
f1672d89
DH
1847- The !inet_pton() call in res_mkupdrec was adjusted to '<= 0' as
1848 inet_pton returns either 1, 0, or -1.
1849
236d3a99
DH
1850- A dhclient-script for MacOS X has been included, which enables
1851 'dhclient -6' support.
1852
efa5e6b9
DH
1853- DDNS removal routines were updated so that the DHCID is not removed until
1854 the client has been deprived of all A and AAAA records (not only the last
1855 one of either of those). This resolves a bug where dual stack clients
1856 would not be able to regain their names after either expiration event.
1857
7d6180be 1858 Changes since 4.1.0a1
edcb5c46
EH
1859
1860- Corrected list of failover state values in dhcpd man page.
1861
51e7687f
EH
1862- Fixed a bug that caused some request types to be logged incorrectly.
1863
20210a7b
EH
1864- Clients that sent a parameter request list containing the
1865 routers option before the subnet mask option were receiving
1866 only the latter. Fixed.
1867
535485df
EH
1868- The server wasn't always sending the FQDN option when it should.
1869
8fbb55ff
DH
1870- A partner-down failover server no longer emits 'peer holds all free leases'
1871 if it is able to newly-allocate one of the peer's leases.
1872
61220a00
EH
1873- Fixed a coredump when adding a class via OMAPI.
1874
c40e954c
EH
1875- Check whether files are zero length before trying to parse them.
1876
63971a83
DH
1877- Ari Edelkind's PARANOIA patch has been included and may be compiled in
1878 via two ./configure parameters, --enable-paranoia and
1879 --enable-early-chroot.
1880
66cebfcb
DH
1881- ./configure was extended to cover many optional build features, such
1882 as failover, server tracing, debugging, and the execute() command.
1883
f8cbf390
DH
1884- There is now a default 1/4 of a second scheduled delay between delayed
1885 fsync()'s, it can be configured by the max-ack-delay configuration
1886 parameter.
1887
8269561d
DH
1888- A bug was fixed where the length of a hostname was miscalculated, so that
1889 hosts were given odd-looking domain names ("foo.bar.ba.example.com").
1890
b445a411
DH
1891- Shared network selection should be done from the innermost relay
1892 valid link-address field, rather than the outermost.
1893
bd72740e
FD
1894- Prefix pools are attached to shared network scopes.
1895
9322442f
FD
1896- Merged IA_XX related structures.
1897
8dea7ba7
FD
1898- Add DHCPv6 files in configure.
1899
4619c0a2
DH
1900- A memory leak when using omapi has been fixed.
1901
9ac4206a
DH
1902- DHCPv6 vendor-class options (VSIO) are now only sent when they appear
1903 on the DHCPv6 ORO. This resolves a bug where VSIO options were placed
1904 in IA_NA encapsulated options fields.
1905
420d8b3f
FD
1906- Integrated client with stateless, temporary address and prefix delegation
1907 support.
1908
40ec5f38
DH
1909- A double-dereference in dhclient transmission of DHCPDECLINEs was
1910 repaired.
1911
80097764
FD
1912- Fix handling of format code 'Z'.
1913
ffbaa880
FD
1914- Support "-1" argument in DHCPv6.
1915
7de20a95
EH
1916- Merge DHCPv6-only "dhcrelay6" into general-purpose "dhcrelay" (use
1917 "-6" option to select DHCPv6 mode).
1918
d352732e
EH
1919- Fix handling of -A and -a flags in dhcrelay; it was failing to expand
1920 packet size as needed to add relay agent options.
1921
7d6180be
DH
1922- A bug in subnet6 parsing where options contained in subnet6 clauses would
1923 not be applied to clients addressed within that network was repaired.
1924
1925- When configuring a "subnet {}" or "subnet6 {}" without an explicit
1926 shared-network enclosing it, the DHCP software would synthesize a
1927 shared-network to contain the subnet. However, all configuration
1928 parameters within the subnet more intuitively belong "to any client
1929 on that interface", or rather the synthesized shared-network. So,
1930 when a shared-network is synthesized, it is used to contain the
1931 configuration present inside the subnet {} clause. This means that
1932 the configuration will be valid for all clients on that network, not
1933 just those addressed out of the stated subnet. If you intended the
1934 opposite, the workaround is to explicitly configure an empty
1935 shared-network.
1936
1937- A bug was fixed where Information-Request processing was not sourcing
1938 configured option values.
1939
1940- A warning was added since the DHCPv6 processing software does not yet
1941 support class statements.
1942
adb95d23 1943- Compilation warnings on GCC 4.3 relating to bootp source address
dd484ced
DH
1944 selection were repaired.
1945
ecddae64
DH
1946- The v6 BSD socket method was updated to use a single UDP BSD socket
1947 no matter how many interfaces are involved, differentiating the
1948 interfaces the packets were received on by the interface index supplied
1949 by the OS.
1950
1951- The relay agent no longer listens to the All DHCP Servers Multicast
1952 address.
1953
1954- A bug was fixed in data_string_sprintfa() where va_start was only called
1955 once for two invocations of vsprintf() variants.
1956
d104d45b
DH
1957- ERO (RFC 4994) server support.
1958
1959- Basic and partial DHCPv6 leasequery support.
1960
1961- Reliable DHCPv6 release (previous behavior, send release and exit, is
1962 still available with dhclient -6 -1 -r).
1963
01a54c17 1964 Changes since 4.0.0 (new features)
3c12f746 1965
6d7f9584
FD
1966- Added DHCPv6 rapid commit support.
1967
4cafb815 1968- Added explicit parser support for zero-length DHCP options, such as
6d7f9584 1969 rapid-commit, via format code 'Z'.
4cafb815 1970
022fe95e
EH
1971- It's now possible to update the "ends" field of a lease with OMAPI.
1972 This is useful if you want not only to release a lease, but also make
1973 it available for reuse right away. Hat tip to Christof Chen.
1974
9a111ee8 1975- Fixed definition of the iaaddr hash functions to use the correct
1dcc3612
SK
1976 functions when referencing and dereferencing memory.
1977
aabfa4de
FD
1978- Some definitions not in phase with the IANA registry were updated.
1979
0674055a
FD
1980- Allocated interface IDs are better controlled ('u' bit set to zero,
1981 reserved IDs avoided).
1982
b51c785f
FD
1983- Unicast options are taken into account only for RENEWs.
1984
900405e9
FD
1985- NoAddrsAvail answers to SOLICITs are always ADVERTISEs even when a SOLICIT
1986 carries a rapid-commit option.
1987
96b620e5
FD
1988- Return in place of raise an impossible condition when one tries to release
1989 an empty active lease.
1990
be62cf06
FD
1991- Timer granularity is now 1/100s in the DHCPv6 client.
1992
01a54c17
EH
1993- The dhclient-script was updated to create a host route for the default
1994 gateway if the supplied subnet mask for an IPv4 address was a /32. This
1995 allows the client to work in 'captive' network environments, where the
1996 operator does not want clients to crosstalk directly.
1997
adb95d23 1998- MINUS tokens should be parsable again.
01a54c17
EH
1999
2000- Multiple (up to "delayed-ack x;" maximum) DHCPv4 packets are now queued and
2001 released in bursts after single fsync() events when the upper limit is
2002 reached or if the receiving sockets go dry. The practical upshot is
2003 that fsync-coupled server performance is now multiplicitively increased.
2004 The default delayed ack limit is 28. Thanks entirely to a patch from
2005 Christof Chen.
2006
2007 Changes since 4.0.0 (bug fixes)
2008
2009- DHCP now builds on AIX.
2010
2011- Exit with warning when DHCPv6-specific statements are used in the
2012 config file but -6 is not specified.
2013
2014- Fixed "--version" flag in dhcrelay
2015
2016- The 'min-secs' configuration parameter's log message has been updated to
2017 be more helpful.
2018
2019- The warning logged when an address range doesn't fit in the subnets
2020 they were declared has been updated to be more helpful and identify the
2021 typo in configuration that created the spanning addresses.
2022
2023- A bug in failover pool rebalancing that caused POOLREQ message ping-pongs
2024 was repaired.
2025
2026- A flaw in failover pool rebalancing that could cause POOLREQ messages to
2027 be sent outside of the min-balance/max-balance scheduled intervals has
2028 been repaired.
2029
2030- A cosmetic bug during potential-conflict recovery that caused the peer's
2031 'conflict-done' state message to be logged as 'unknown-state' has been
2032 repaired. It is now logged correctly.
2033
49f61135
DH
2034- A bug was fixed where the 'giaddr' may be used to find the client's subnet
2035 rather than its own 'ciaddr'.
2036
41d4652f
DH
2037- A log message was introduced to clarify the situation where a failover
2038 'address' parameter (the server's local address) did not resolve to an
2039 IPv4 address.
2040
2c9bf1f4
DH
2041- The minimum site code value was set to 224 in 3.1.0 to track RFC3942. This
2042 broke a lot of legacy site local configurations. The new code in place will
2043 track site local space minimum option codes and logs a warning to encourage
2044 updates and exploration of site local code migration problems. Option
2045 codes less than 128 in site local spaces remain inaccessible.
2046
2047- A possible relay agent option bug was repaired where random server
2048 initialization state may have been used to signal the relay agent
2049 information options sub-option code for the 'END' of the option space.
2050
cff9b78f
SK
2051- Fixes to allow code to compile and run on Solaris 9.
2052
c4d29896
SK
2053- Fixes to allow code to compile on Mac OS X Leopard (10.5).
2054
57fcb8d9
SK
2055- When server is configured with options that it overrides, a warning is
2056 issued when the configuration file is read, rather than at the time the
2057 option is overridden. This was important, because the warning was given
9a111ee8 2058 every time the option was overridden, which could create a lot of
57fcb8d9
SK
2059 unnecessary logging.
2060
219a65eb
DH
2061- Fixed a compilation problems on platforms that define a value for FDDI,
2062 which conflicts with a dhcp configuration syntax token by the same name.
2063
ffdf3c8c
DH
2064- When a failover server suspects it has encountered a peer running a
2065 version 3.0.x failover server, a warning that the failover wire protocol
2066 is incompatible is printed.
2067
2068- The failover server no longer issues a floating point error if it encounters
2069 a previously undefined option code.
2070
00a002fc
MA
2071- Fix startup error messages to report a missing "subnet6 declaration", rather
2072 than a missing "subnet declaration", when running as a DHCPv6 server.
2073
9a111ee8 2074- DHCPv6 client timestamp in DUID was based on the year 1970 rather
7e9f7a1b
FD
2075 than the year 2000.
2076
e2cfde76
FD
2077- Warn when attempting to use a hardware parameter in DHCPv6.
2078
cabdb9b1
FD
2079- DHCPv6 released resources are now marked as released by the client.
2080
5d89d60f
FD
2081- 'Soft' bindings have no more side-effects.
2082
61d75ea2
DH
2083 Changes since 4.0.0b3
2084
2085- The reverse dns name for PTR updates on IPv6 addresses has been fixed to
2086 use ip6.arpa. rather than default to in-addr.arpa and require user
2087 configuration.
76db44f9 2088
e32529a5
EH
2089- dhc6_lease_destroy() and dhc6_ia_destroy() now set lease and IA pointers
2090 to NULL after freeing, to prevent subsequent accesses to freed memory.
2091
9a111ee8 2092- The DHCPv6 server would not send the preference option unless the
76db44f9
SK
2093 client requested it, via the ORO. This has been fixed, so the DHCPv6
2094 server will always send the preference value if it is configured.
e4a6be15 2095
9a111ee8
TM
2096- When addresses were passed as hints to the server in an IA, they were
2097 incorrectly handled, sometimes being treated as an error. Now the
6f76de58
SK
2098 server will treat these as hints and ignore them if it cannot supply
2099 a requested address.
2100
703873ab
DH
2101- If the client had multiple addresses, and one expired (was not renewed
2102 by the server), the client would continue to attempt to renew the same
2103 old address over and over. Now, the client will omit any expired
2104 addresses from future Confirm, Renew, or Rebind messages.
2105
2106- dhclient -6 will now select renew/rebind timers based upon the longest
2107 address expiration time rather than the shortest expiration time, in
2108 order to avoid cascading renewals in the event a server elects not to
2109 extend one of multiple IAADDR leases.
2110
b024480e
DH
2111- The server now limits clients that request multiple addresses to one
2112 address per IA by default, which can be adjusted through the
2113 "limit-addrs-per-ia" configuration option.
2114
c0216cb7
DH
2115- The DHCPv6 client now issues fresh transaction IDs on Renew and Rebind
2116 message exchanges, rather than using the most recent ID.
2117
1ac57173
FD
2118- The DHCPv6 server now replies to Information-Request messages.
2119
83835822
DH
2120- A bug was fixed in the dhclient-script for BSDs to correctly carry error
2121 codes through some conditions.
2122
c54db708
FD
2123- The parsing of some options in the dhclient lease file, in particular
2124 the success DHCPv6 status-code, was fixed.
2125
e5d83524
DH
2126- A bug was fixed that caused the DHCPv6 ORO option to be corrupted with
2127 seemingly random values.
2128
821f2dda
DH
2129- A reference overleak in DHCPv6 shared network processing was repaired.
2130
f8b3c6f4
DH
2131- ./configure now autodetects local database locations rather than trying
2132 to put dhcpd.leases and dhclient.leases in /usr/local/var/db, which no
2133 one ever has.
2134
9a111ee8
TM
2135- Regression fix for bug where server advertised a IPv6 address in
2136 response to a SOLICIT but would not return the address in response
b9137d42
SK
2137 to a REQUEST.
2138
9f1d5a2f
DH
2139- A bug was fixed where the DHCPv6 server puts the NoAddrsAvail status
2140 code in the IA_NA was fixed. The status code now appears in the root
2141 level.
2142
e4a6be15
DH
2143 Changes since 4.0.0b2
2144
65cf86d7
EH
2145- Clarified error message when lease limit exceeded
2146
b1d3778c
DH
2147- Relative time may now be used as a qualifier for 'allow' and 'deny' access
2148 control lists. These directives may be used to assist in re-addressing
2149 address pools without having to constantly reconfigure the server. Please
2150 see 'man dhcpd.conf' for more information on allow/deny 'after time' syntax.
2151 Thanks to a patch from Christof Chen.
2152
bead14ea
DH
2153- The server will now include multiple IA_NA's and multiple IAADDRs within
2154 them, if advertised by the client. It still only seeks to allocate one
2155 new address.
2156
f765ec36
SK
2157 Changes since 4.0.0b1
2158
75135a3f 2159- Use different paths for PID and lease files when running in DHCPv4
adb95d23 2160 or DHCPv6 mode, so that servers for both protocols can be run
75135a3f
EH
2161 simultaneously on a single interface.
2162
5c2d55c7
EH
2163- Fixed a buffer overflow error which could have allowed a denial
2164 of service under unusual server configurations
2165
2166- Eliminated a spurious error message from the client
2167
9a111ee8 2168- A number of bugs with the internal handling of lease state on the
f765ec36 2169 server have been fixed. Some of these could cause server crashes.
fa9b593d 2170
edb1283e
DH
2171- The peer_wants_leases() changes pulled up from 3.1.0 were corrected,
2172 'never used' leases will no longer consistently shift between servers
2173 on every pool rebalance run.
2174
c71c6399
DH
2175- sendmsg()/recvmsg() control buffers are now declared in such a way to
2176 ensure they are correctly aligned on all (esp. 64-bit) architectures.
2177
5279b8f3
DH
2178- The client leasing subsystem was streamlined and corrected to account
2179 more closely for changes in client link attachment selection.
2180
ab3a540f 2181 Changes since 4.0.0a3
763cba6b 2182
9a111ee8 2183- The DHCP server no longer requires a "ddns-update-style" statement,
884a458f
SK
2184 and now defaults to "none", which means DNS updates are disabled.
2185
fa9b593d
DH
2186- Log messages when failover peer names mismatch have been improved to
2187 point out the problem.
2188
9a111ee8 2189- Bug where server advertised a IPv6 address in response to a SOLICIT
1b5053b5
SK
2190 but would not return the address in response to a REQUEST. Thanks to
2191 Dennis Kou for finding the bug.
2192
c886c298
SK
2193- Fixed an error causing the server to lock up on lease expiration,
2194 reported independently by Jothilingam Vasu and Dennis Kou.
2195
eaf7eb17
DH
2196- Fixed a ./configure bug where compile tests were failing due to
2197 "-Werror" (unused variable) rather than the actual test failure. Lead
2198 to inconsistent and unworkable auto-configurations.
2199
109e00db
DH
2200- Compilation with DLPI and -Werror has been repaired.
2201
9a111ee8 2202- Error in decoding IA_NA option if multiple interfaces are present
3ad9d48f
SK
2203 fixed by Marcus Goller.
2204
8eab95f2
DH
2205- DHCPv6 server Confirm message processing has been enhanced - it no
2206 longer replies only to clients with host {} records, it now replies
2207 as directed in RFC3315 section 18.2.2 - that is, to all clients
2208 regardless of the existence of bindings.
2209
07b9a351
DH
2210- A core dump during expired lease cleanup has been repaired.
2211
7285af30
DH
2212- DDNS updates state information are now stored in 'binding scopes' that
2213 follow the leases through their lifecycles. This enables DDNS teardowns
2214 on leases that are assigned and expired inbetween a server restart (the
2215 state is recovered from dhcpd.leases). Arbitrary user-specified binding
2216 scopes ('set var = "value";') are not yet supported.
2217
2394b26b
DH
2218- Additional compilation problems on HP/UX have been repaired.
2219
ab3a540f
SK
2220 Changes since 4.0.0a2
2221
97050349
SK
2222- Fix for startup where there are no IPv4 addresses on an interface.
2223 Thanks to Marcus Goller for reporting the bug.
2224
763cba6b 2225- Fixed file descriptor leak on listen failure. Thanks to Tom Clark.
e889ded1 2226
237f8d3a 2227- Bug in server configuration parser caused server to get stuck on
9a111ee8 2228 startup for certain bad pool declarations. Thanks to Guillaume
237f8d3a
SK
2229 Knispel for the bug report and fix.
2230
28868515
SK
2231- Code cleaned to remove warnings reported by "gcc -Wall".
2232
d00d373a
SK
2233- DHCPv6 is now the default. You can disable DHCPv6 support using the
2234 "--disable-dhcpv6" flag when you run the configure script.
2235
8dfd5744
DH
2236- An internal database inconsistency bug was repaired where the server
2237 would segfault if a client attempted to renew a lease that had been
2238 loaded from persistent storage.
2239
45d545f0 2240- 'request' and 'also request' syntaxes have been added to accommodate
0c20eab3
DH
2241 the DHCPv6 client configuration. 'send dhcp6.oro' is no longer
2242 necessary.
2243
9a111ee8
TM
2244- Bug fixed where configuration file parsing did not work with
2245 zero-length options; this made it impossible to set the
f800f4f6
SK
2246 rapid-commit option.
2247
845e9677
DH
2248- Bogus messages about host records with IPv4 fixed-addresses being of
2249 non-128-bits in length were removed.
2250
76c944da
SK
2251 Changes since 4.0.0a1
2252
71765b58
SK
2253- Bug in octal parsing fixed. Thanks to Bernd Fuhrmann for the report
2254 and fix.
2255
847e7000
SK
2256- Autoconf now supplies proper flags for Solaris DHCPv6 builds.
2257
bda33169
SK
2258- Fix for parsing error on some IPv6 addresses.
2259
9b21e73e
SK
2260- Invalid CIDR representation for IPv6 subnets or ranges now checked
2261 for when loading configuration.
2262
8da06bb1
DH
2263- Compilation on HP/UX has been repaired. The changes should generally
2264 apply to any architecture that supplies SIOCGLIFCONF but does not
2265 use 'struct lifconf' structures to pass values.
2266
dd328225
DH
2267- Two new operators, ~= and ~~, have been integrated to implement
2268 boolean matches by regular expression (such as may be used in
2269 class matching statements). Thanks to a patch by Alexandr S.
2270 Agranovsky, which underwent slight modification.
2271
76c944da
SK
2272- Fix for icmp packets on 64-bit systems (bug introduced in 4.0).
2273
f796f70a
DH
2274- A bug was fixed in interface discovery wherein an error identifying
2275 a server-configured interface with no IPv4 addresses would SEGV.
76c944da 2276
c11f349d
EH
2277- Fixed a bug in which write_lease() might report a failure incorrectly
2278
af5fa176
EH
2279- Added support for DHCPv6 Release messages
2280
2281- Added -x option to dhclient, which triggers dhclient processes
2282 to exit gracefully without releasing leases first
2283
a546f2a7
EH
2284- All binaries (client, server, relay) now change directories
2285 to / before going into daemon mode, so as not to hold $CWD open
2286
b55d0d5f
EH
2287- Fixed a bug parsing DHCPv6 client-id's in host-identifier statements
2288
26be82af
DH
2289- Fixed a bug with the 'ddns-updates' boolean server configuration
2290 parameter, which caused the server to fail.
2291
98bd7ca0
DH
2292 Changes since 4.0.0-20070413
2293
d9b43370
SK
2294- Old (expired) leases are now cleaned.
2295
8c1752d2
DH
2296- IPv6 subnets now have support for arbitrary allocation ranges via
2297 a new 'range6' configuration directive.
2298
98bd7ca0
DH
2299- An obviated option code hash lookup to find D6O_CLIENTID was removed.
2300
a512d11b
DH
2301- Corrected some situations where variables might be used without being
2302 initialized.
2303
2304- Silenced several other compiler warnings.
2305
2306- Include the more standard sys/uio.h rather than rely upon other
f66f02cc
DH
2307 header files to include it (fixes a BSD 4.2 compile failure).
2308
2309- Duplicate dhclient-script updates for DHCPv6 to all provided scripts.
a512d11b 2310
4ba58919
DH
2311- DHCPv4 I/O methods that failed to sense hardware address were corrected.
2312
2313- DHCPv4 is now the default (as documented) rather than DHCPv6. The default
2314 was set to DHCPv6 to facilitate ease early development, and forgotten.
2315
2316- Corrected a segmentation violation in DHCPv4 socket processing.
2317
8ea19a71 2318- dhclient will now fork() into the background once it binds to an
45d545f0 2319 IPv6 address, or immediately if the -n flag is supplied.
8ea19a71
DH
2320
2321- -q is now the default behaviour on dhclient, with -d or -v enabling
2322 non-quiet (stderr logging) mode.
2323
2cf8d0bd
DH
2324- Fix documentation of the domain-search atom (quoted, with commas).
2325
2326- Document DHCPv6 options presently in the default table.
2327
fe5b0fdd
DH
2328- Replaced ./configure shellscripting with GNU Autoconf.
2329
98bd7ca0
DH
2330 Changes since 3.1.0 (NEW FEATURES)
2331
2332- DHCPv6 Client and Server protocol support. Use '-6' to run the daemons
2333 as v6-only. Use '-4' to run the daemons as v4-only (default. There is
2334 no support currently for both.
2335
2336- Server support for multiple IA_NA options, containing at most one
2337 IAADDR option.
2338
2339- Client support for one IA_NA option, containing any number of IAADDR
2340 options.
2341
2342- Server support for the DHCPv6 Information-request message.
2343
2344- Inappropriate unicast DHCPv6 messages sent to the server are now
2345 discarded, and this has rearchitected the IO system slightly.
2346
2347- The DHCPv6 server DUID defaults to type 1, is persistently stored in
2348 the leases database, and can be over-ridden (either completely, or by
2349 specifying type 1 or type 2).
2350
2351- The server only uses Rapid-Commit if it has been configured with the
2352 Rapid-Commit option and the client requests it.
2353
2354- DDNS support. We now update AAAA records in the same place we would
2355 update A records, if we have an IPv6 address. We also generate IP6.ARPA
2356 style names for PTR records if we're dealing with an IPv6 address. Both
2357 A and AAAA updates are done using the same 'fqdn.' virtual option space
2358 (although the DHCPv4 FQDN and DHCPv6 FQDN options are formatted
2359 differently, they both use the same code here).
2360
2361- The Linux dhclient-script attempts to set and remove assigned addresses,
2362 and to configure /etc/resolv.conf from nameserver and domain name
2363 configurations. It can be extended to configure other parameters.
2364
2365- Initial DHCPv6 lease support.
2366
2367- The IO system now tracks all local IP addresses, so that the DHCP
2368 applications (particularly the dhcrelay) can discern between what frames
2369 were transmitted to it, and what frames are being carried through it which
2370 it should not intercept.
2371
1418fd11
DH
2372 Changes since 3.1.0 (Maintenance)
2373
2374- A bug was repaired where MAC Address Affinity for virgin leases always
2375 mapped to the primary. Virgin leases now have an interleaved preference
2376 between primary and secondary.
2377
2378- A bug was repaired where MAC Address Affinity for clients with no client
2379 identifier was sometimes mishashed to the peer. Load balancing during
2380 runtime and pool rebalancing were opposing.
2381
aa3e348e
DH
2382- An assertion in lease counting relating to reserved leases was repaired.
2383
e9c59645
DH
2384- The subnet-mask option inclusion now conforms with RFC2132 section 3.3;
2385 it will only appear prior to the routers option if it is present on the
2386 Parameter-Request-List. The subnet-mask option will also only be
2387 included by default (if it is not on the PRL) in response to DISCOVER
2388 or REQUEST messages.
2389
2390- The FQDN option is only supplied if the client supplied an FQDN option or
2391 if the FQDN option was explicitly requested on the PRL.
2392
c104546d
DH
2393- Dynamic BOOTP leases are now load balanced in failover.
2394
b9d0cc05
DH
2395 Changes since 3.1.0rc1
2396
adb95d23 2397- The parse warning that 'deny dynamic bootp;' must be configured for
b9d0cc05
DH
2398 failover protected subnets was removed.
2399
a512cc3a
DH
2400 Changes since 3.1.0b2
2401
2402- Failover rebalance events no longer play ping pong with round errors
2403 (moving leases between free and back to backup where there are an
2404 odd number of leases).
2405
2406- The 'pool' log line has been split into two messages, one before the
2407 rebalance run, and one after.
2408
2409- Any queued BNDACKs are transmitted before transmitting new BNDUPDs.
2410 This enforces the correct sequence of events for the remote server
2411 processing these messages.
2412
fe5b0fdd 2413 Changes since 3.1.0b1
27837f95 2414
74dc3e0b
EH
2415- Fixed a bug that caused OMAPI clients to freeze when opening lease
2416 objects.
2417
1ba87b37
EH
2418- A new server config option "fqdn-reply" specifies whether the server
2419 should send out option 81 (FQDN). Defaults to "on". If set to "off",
2420 the FQDN option is not sent, even if the client requested it. This is
2421 needed because some clients misbehave otherwise. Thanks to Christof Chen
2422 at Allianz.
2423
a58da042
EH
2424- Allow trace output files (-tf option) to be overwritten, rather than
2425 crashing dhcpd if the file already exists
2426
61252edf
EH
2427- A bug was fixed that caused dhcpd to segfault if a pool was declared
2428 outside the scope of a subnet in dhcpd.conf.
2429
27837f95
DH
2430- Some uninitialized values were repaired in dhcpleasequery.c that
2431 caused the server to abort.
2432
4d2eaafb
DH
2433- A new server config option, 'do-reverse-updates', has been added
2434 which causes the server to abstain from performing updates on PTR
2435 records. Thanks to a patch from Christof Chen at Allianz.
2436
06211b40
DH
2437- A bug was repaired in subencapsulation support, where spaces separated
2438 by empty spaces would not get included.
2439
d6614ea2
DH
2440- A bug in dhclient was repaired which caused it to send parameter request
2441 lists of 55 bytes in length no matter how long the declared PRL was.
2442
132d38f2
DH
2443- 'dhcp.c(3953): non-null pointer' has been repaired. This fixes a flaw
2444 wherein the DHCPv4 server may ignore a configured server-identifier.
2445
fc3b9c90
DH
2446- A flaw in failover startup sequences was repaired that sometimes left
2447 the primary DHCP server's pool rebalance schedules unscheduled.
2448
c9feb859
DH
2449- Corrected a flaw that broke encapsulated spaces included due to presence
2450 on the parameter request list.
2451
c57db45c
SK
2452 Changes since 3.1.0a3
2453
2454- Some spelling fixes.
98311e4b 2455
bd2bc2fa
DH
2456 Changes since 3.1.0a2
2457
2458- A bug was fixed where attempting to permit leasequeries results in a
2459 fatal internal error, "Unable to find server option 49".
2460
85edef5c
DH
2461- A bug was fixed in dhclient rendering the textual output form of the
2462 domain-search option syntax.
2463
bdddcb7d
DH
2464 Changes since 3.1.0a1
2465
2466- A bug in the FQDN universe that added FQDN codes to the NWIP universe's
2467 hash table was repaired.
2468
616d67cb
DH
2469- The servers now try harder to transmit pending binding updates when
2470 entering normal state.
2471
2472- UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and
2473 requeues all pending updates. This should reduce the number of spurious
66c8f734
DH
2474 'xid mismatch' log messages.
2475
2476- An option definition referencing leak was fixed, which resulted in early
2477 termination of dhclient upon the renewal event.
616d67cb 2478
6708d944
DH
2479- Some default hash table sizes were tweaked, some upwards, some downwards.
2480 3.1.0a1's tables resulted in a reduction in default server memory use.
2481 The new selected values provide more of a zero sum (increasing the size
2482 of tables likely to be populated, decreasing the size of tables unlikely).
2483
45d545f0 2484- Lease structures appear in three separate hashes: by IP address, by UID,
6708d944
DH
2485 and by hardware address. One type of table was used for all three, and
2486 improvements to IP address hashing were applied to all three (so UID and
2487 hardware addresses were treated like 4-byte integers). There are now two
2488 types of tables, and the uid/hw hashes use functions more appropriate
2489 to their needs.
2490
2491- The max-lease-misbalance percentage no longer causes scheduled rebalance
2492 runs to be skipped: it still governs the schedule, but every scheduled
2493 run will attempt balance.
2494
a7ee93fe
DH
2495- A segfault bug in recursive encapsulation support has been corrected.
2496
98311e4b
DH
2497 Changes since 3.0 (New Features)
2498
2499- A workaround for certain STSN servers that send a mangled domain-name
2500 option was introduced for dhclient. The client will now accept corrupted
2501 server responses, if they contain a valid DHCP_MESSAGE_TYPE (OFFER, ACK,
2502 or NAK). The server will continue to not accept corrupt client packets.
2503
98bd7ca0 2504- Support for 'reserved' (pseudo-static) and BOOTP leases via failover
a55ccdd0 2505 was introduced.
98311e4b
DH
2506
2507- Support for adding, removing, and managing class and subclass statements
2508 via OMAPI.
2509
a55ccdd0
DH
2510- The failover implementation was updated to comply with revision 12 of
2511 the protocol draft.
2512
98311e4b
DH
2513- 'make install' now creates the initial zero-length dhcpd.leases file if
2514 one does not already exist on the system.
2515
b43c87ad 2516- RFC3942 compliance, site-local option spaces start at 224 now, not 128.
b43c87ad 2517
0b17f049
DH
2518- The Load Balance Algorithm was misimplemented. The current implementation
2519 matches RFC 3074.
2520
2727c1cf
DH
2521- lcase() and ucase() configuration expressions have been added which adjust
2522 their arguments from upper to lower and lower to upper cases respectively.
2714a8ef 2523 Thanks to a patch from Albert Herranz.
2727c1cf 2524
febbd402
DH
2525- The dhclient 'reject ...;' statement, which rejects leases given by named
2526 server-identifiers, now permits address ranges to be specified in CIDR
7d7073e7 2527 notation. Thanks to a patch from David Boyce.
febbd402 2528
ee912528
DH
2529- The subnet-mask option is now supplied by default, but at lowest
2530 priority. This helps a small minority of clients that provide parameter
2531 request lists, but do not list the subnet-mask option because they were
2532 designed to interoperate with a server that behaves in this manner.
2533
2534- The FQDN option is similarly supplied even if it does not appear on the
2535 parameter request list, but not to the exclusion of options that do
2536 appear at the parameter request list. Up until now it had ultimate
2537 priority over the client's parameter request list.
2538
f7fdb216 2539- Varying option space code and length bit widths (8/16/32) are now
51202707 2540 supported. This is a milestone in achieving RFC 3925 "VIVSO" and
f7fdb216
DH
2541 DHCPv6 support.
2542
5e864416
DH
2543- A new common (server or client) option, 'db-time-format local;', has
2544 been added which prints the local time in /var/db/dhcpd.leases rather
2545 than UTC. Thanks to a patch from Ken Lalonde.
2546
b500bd4c
DH
2547- Some patches to improve DHCP Server startup speed from Andrew Matheson
2548 have been incorporated.
2549
2426234f
DH
2550- Failover pairs now implement 'MAC Affinity' on leases moving from the
2551 active to free states. Leases that belonged to the failover secondary
2552 are moved to BACKUP state rather than FREE upon exiting EXPIRED state.
2553 If lease rebalancing must move leases, it tries first to move leases
2554 that belong to the peer in need.
2555
2556- The server no longer sends POOLREQ messages unless the pool is severely
2557 misbalanced in the peer's favor (see 'man dhcpd.conf' for more details).
2558
2559- Pool rebalance events no longer happen upon successfully allocating a
2560 lease. Instead, they happen on a schedule. See 'man dhcpd.conf' for the
2561 min-balance and max-balance statements for more information.
2562
334bf491
DH
2563- The DHCP Relay Agent Information Option / Link Selection Sub-Option
2564 is now supported. (See RFC3527 for details).
2565
3004bebf
DH
2566- A new DDNS related server option, update-conflict-detection, has been
2567 added. If this option is enabled, dhcpd will perform normal DHCID
2568 conflict resolution (the default). If this option is disabled, it will
2569 instead trust the assigned name implicitly (removing any other bindings
2570 on that name). This option has not been made available in dhclient.
2571
567e8561
DH
2572- In those cases where the DHCP software manufactures an IP header (to
2573 transmit via bpf, lpf, etc), the IP TTL the software selects has been
2574 increased from 16 to 128. This is intended to match Microsoft Windows
2575 DHCP Client behaviour, to increase compatibility.
2576
a396d25f
DH
2577- 'ignore client-updates;' now has behaviour that is different from
2578 'deny client-updates;'. The client's request is not truly ignored,
2579 rather it is encouraged. Should this value be configured, the server
2580 updates DNS as though client-updates were set to 'deny'. That is, it
2581 enters into DNS whatever it is configured to do already, provided it is
2582 configured to. Then it sends a response to the client that lets the
2583 client believe it is performing client updates (which it will), probably
2584 for a different name. In essence, this lets the client do as it will,
2585 ignoring this aspect of their request.
2586
dba5803b
DH
2587- Support for compressed 'domain name list' style DHCP option contents, and
2588 in particular the domain search option (#119) was added.
2589
41e45067 2590- The DHCP LEASEQUERY protocol as defined in RFC4388 is now implemented.
6d103865
SK
2591 LEASEQUERY lets you query the DHCP server for information about a lease,
2592 using either an IP address, MAC address, or client identifier. Thanks
2593 to a patch from Justin Haddad.
2594
41e45067
DH
2595- DHCPD is now RFC2131 section 4.1 compliant (broadcast to all-ones ip and
2596 ethernet mac address) on the SCO platform specifically without any strange
2597 ifconfig hacks. Many thanks go to the Kroger Co. for donating the
2598 hardware and funding the development.
6d103865 2599
b543fea9
DH
2600- A new common configuration executable statement, execute(), has been
2601 added. This permits dhcpd or dhclient to execute a named external
2602 program with command line arguments specified from other configuration
2603 language. Thanks to a patch written by Mattias Ronnblom, gotten to us
2604 via Robin Breathe.
2605
b22de500
DH
2606- A new dhcp server option 'adaptive-lease-time-threshold' has been added
2607 which causes the server to substantially reduce lease-times if there are
2608 few (configured percentage) remaining leases. Thanks to a patch submitted
2609 from Christof Chen.
2610
96bbe8c5
SK
2611- Encapsulated option spaces within encapsulated option spaces is now
2612 formally supported.
2613
b8221d95
DH
2614 Changes since 3.0.6rc1
2615
2616- supersede_lease() now requeues leases in their respective hardware
2617 address hash bucket. This mirrors client identifier behaviour.
2618
c1e6c832
DH
2619 Changes since 3.0.5
2620
f546c28b
DH
2621- Assorted fixes for broken network devices: Packet length is now
2622 determined from the IP header length field to finally calculate the
2623 UDP payload length, because some NIC drivers return more data than
5a22eb63 2624 they actually received.
f546c28b
DH
2625
2626- UDP packets are now stored in aligned data structures.
2627
c1e6c832
DH
2628- A logic error in omapi interface code was repaired that might result in
2629 incorrectly indicating 'up' state when any flags were set, rather than
23e10d37
DH
2630 specifically the INTERFACE_REQUESTED flag. Thanks to a patch from
2631 Jochen Voss which got to us via Andrew Pollock at Debian.
c1e6c832 2632
75ab3070
DH
2633- A reference leak on binding scopes set by ddns updates was repaired.
2634
d69fb6a8 2635- A memory leak in the minires_nsendsigned() function call was repaired.
23e10d37 2636 Effectively, this leaked ~176 bytes per DDNS update.
d69fb6a8 2637
02428754
DH
2638- In the case where an "L2" DHCP Relay Agent (one that does not set giaddr)
2639 was directly attached to the same broadcast domain as the DHCP server,
2640 the RFC3046 relay agent information option was not being returned to the
2641 relay in the server's replies. This was fixed; the dhcp server no longer
2642 requires the giaddr to reply with relay agent information. Note that
2643 this also improves compatibility with L2 devices that "intercept" DHCP
2644 packets and expect relay agent information even in unicast (renewal)
23e10d37
DH
2645 replies. Thanks to a patch from Pekka Silvonen.
2646
2647- A bug was fixed where the BOOTP header 'sname' field had a value, the
2648 copy written to persistent storage was actually the contents of the
2649 'file' field.
02428754 2650
ecde99a3
DH
2651- A bug was fixed where the nwip virtual option space was referencing
2652 the fqdn option's virtual option space's option cache.
2653
67674ffb
DH
2654- Timestamp parsing errors that indicated missing "minutes" fields rather
2655 than the actually missing "seconds" fields have been repaired thanks to
2656 a patch from Kevin Steves.
2657
830ebc4c
DH
2658- A grammar error in the dhclient.8 manpage was repaired thanks to a patch
2659 from Chris Wagner.
2660
c759db75
DH
2661- Several spelling typos were repaired, and some cross-references to other
2662 relevant documents were included in the manpages, thanks to a patch
2663 by Andrew Pollock which got to us via Tomas Pospisek.
2664
9aa3f3a5
DH
2665- Some bugs were fixed in the 'emergency relay agent options hologram'
2666 which is used to retain relay agent option contents from when the
2667 client was in INIT or REBIND states. This should solve problems where
2668 relay agent options were not echoed from the server, even when giaddr
2669 was set.
2670
3d0c598a
DH
2671- dhclient now closes its descriptor to dhclient.leases prior to executing
2672 dhclient-script. Thanks to a patch from Tomas Pospisek.
2673
d5b6835f
DH
2674- The server's "by client-id" and "by hardware address" hash table lists
2675 are now sorted according to the preference to re-allocate that lease to
2676 returning clients. This should eliminate pool starvation problems
2677 arising when "INIT" clients were given new leases rather than presently
2678 active ones.
2679
02428754 2680 Changes since 3.0.5rc1
0a73b7b6 2681
901306d5 2682- A bug was repaired in fixes to the dhclient, which sought to run the
0a73b7b6
SK
2683 dhclient-script with the 'EXPIRE' state should it receive a NAK in
2684 response to a REQUEST. The client now iterates the PREINIT state
2685 after the EXPIRE state, so that interfaces that might be configured
2686 'down' can be brought back 'up' and initialized.
2687
87a08ccc
DH
2688- DHCPINFORM handling for clients that properly set ciaddr and come to the
2689 server via a relay aget has been repaired.
2690
6da113fb
DH
2691 Changes since 3.0.4
2692
2693- A warning that host statements declared within subnet or shared-network
2694 scopes are actually global has been added.
2695
2696- The default minimum lease time (if min-lease-time was not specified)
2697 was raised from 0 to 300. 0 is not thought to be sensible, and is
2698 known to be damaging.
2699
2700- Added additional fatal error sanity checks surrounding lease binding
2701 state count calculations (free/active counts used for failover pool
2702 balancing).
2703
dcc557db
DH
2704- Some time value size fixes in 3.0.4 brought on from FreeBSD /usr/ports were
2705 misapplied to server values rather than client values. The server no longer
2706 advertises 8-byte lease-time options when on 64-bit platforms.
2707
1b2ab55f
DH
2708- A bug where leases not in ACTIVE state would get billed to billed classes
2709 (classes with lease limitations) was fixed. Non-active leases OFFERed
2710 to clients are no longer billed (but billing is checked before offering).
2711
e48891e8
DH
2712- The dhcpd.conf.5 manpage was updated in regard to the ddns-domainname
2713 configuration option - the default configuration and results should be
2714 more clear now.
2715
6cbc6629
DH
2716- If the dhclient were to receive a DHCPNAK while it was in the RENEW
2717 state (and consequently, had an active, 'bound' address and related
2718 configuration options), it would fail to 'tear down' this information
2719 before proceeding into INIT state. dhclient now iterates the dhclient-
2720 script with the 'EXPIRE' action to cause these teardowns prior to entering
1d3bfb17 2721 INIT state. Thanks to a patch from Chris Zimmerman.
6cbc6629 2722
c5fec5fa
DH
2723- The omapi.1 manpage had some formatting errors repaired thanks to a patch
2724 from Yoshihiko Sarumaru.
2725
33e1cb2b
DH
2726- A few lines of code that were failover-specific were moved within
2727 #if defined() clauses so that compilation without failover could be
2728 made possible.
2729
2bddf829
DH
2730- The log message emitted when the 'leased-address' value was not available
2731 in dhcpd.conf "executable statements" has been updated to be more helpful.
2732 Manpage information for this value has also been updated.
2733
87578987
DH
2734- Abandoned or dissociated (err condition) leases now remove any related
2735 dynamic dns bindings. Thanks to a patch from Patrick Schoo.
2736
e77c575f
DH
2737- Attempting to write a new lease file to replace a corrupt (due to
2738 encountering non-retryable errors during writing) lease file should
2739 no longer result in an infinite recursion.
2740
2178df03
DH
2741- Host declaration hardware addresses and client identifiers may only be
2742 configured once. dhcpd will now fail to load config files that specify
2743 multiple identifiers (previous versions would silently over-ride the
2744 value with the later configured value).
2745
d5341d9b
SK
2746- Several option codes that have been allocated since our last release
2747 have been named and documented.
2748
2749- Option names of the form "unknown-123" have been removed from the in-
2750 memory hash tables. In order to support options of these names that
2751 may appear in dhclient.leases or similar in previous versions, the
2752 parser will now find the new option code definition, or mock up a
2753 generic option code definition. This should result in a smooth
2754 transition from one name to the other, as the new name is used to
2755 write new output.
2756
6da113fb
DH
2757 Changes since 3.0.4rc1
2758
2759- The dhcp-options.5 manpage was updated to correct indentation errors
2760 thanks to a patch from Jean Delvare.
2761
2762 Changes since 3.0.4b3
2763
2764- Some manual pages were clarified pursuant to discussion on the dhcp-server
2765 mailing list.
2766
88cd8aca
DH
2767 Changes since 3.0.4b2
2768
45d545f0 2769- Null-termination sensing for certain clients that unfortunately require
88cd8aca
DH
2770 it in DHCPINFORM processing was repaired.
2771
2772- The host-name option and a few others were moved from "X" format to "t"
2773 format to be compatible with new NULL handling functions.
2774
2775- DHCPINFORM processing is a little more careful about return addressing
2776 its responses, or if responding via a relay. The INFORM related
2777 messages also log the 'effective client ip address' rather than the
2778 client's supplied ciaddr (since some clients produce null ciaddrs).
2779
2780- The server was inappropriately sending leases to the RESET state in the
2781 event that multiple active leases were found to match a singly-identified
2782 client. This was changed to RELEASED (by accepting a different, ACTIVE
2783 binding, the client is implicitly releasing its lease). This repairs a
2784 bug wherein secondary servers in failover pairs detecting this condition
2785 move leases to RESET, and primaries refuse to accept that state
2786 transition (properly).
2787
2788- The memset-after-dmalloc() changes made in 3.0.4b1 have been backed out.
2789
2790 Changes since 3.0.4b1
2791
2792- Command line parsing in omshell was repaired - it no longer closes
2793 STDIN after reading one line.
2794
2795- The resolver library no longer closes the /etc/resolv.conf file
2796 descriptor it opened twice.
2797
2798- Changes to trailing NULL removal in 't' option-atoms has been rethought,
2799 it now includes 'd' (domain name) types, and tries hard not to rewind an
2800 option beyond the start of the text field it is un-terminating.
2801
2802 Changes since 3.0.3
2803
2804- A DDNS update handling function was misusing the DNS error codes, rather
2805 than the internal generic result enumeration. The result is a confusing
2806 syslog line, logging the wrong condition.
2807
2808- The DHCP Server was not checking pool balance in the case where it brought
2809 a non-ACTIVE lease out of storage for a client that was returning to use
2810 a lease it once had long ago, and had since expired.
2811
2812- Failover peers no longer bother to look for free leases to allocate when
2813 they already found the client's ACTIVE lease. DISCOVERs are load balanced
98bd7ca0 2814 whether freely-allocated or not, unless the server doubts the peer has
88cd8aca
DH
2815 leases to allocate.
2816
2817- Fixed a bug in dhcrelay agent addition code that suppressed trailing
45d545f0 2818 PAD options - it was suppressing only one trailing PAD option, rather
88cd8aca
DH
2819 than the entire block of them.
2820
3a16098f
DH
2821! Fixed some unlikely overlapping-region memcpy() bugs in dhcrelay agent
2822 option addition and stripping code. Added a few sanity checks. Although
2823 highly improbable, due to requiring the reception of a DHCP datagram well
2824 in excess of all known to be used physical MTU limitations, it is possible
2825 this may have been used in a stack overflow security vulnerability. Thanks
2826 to a patch from infamous42md.
2827
2828! Added some sanity checks to OMAPI connection/authentication code.
2829 Although highly improbable, due to having to deliver in excess of 2^32
2830 bytes of data via the OMAPI channel, not to mention requiring dhcpd to
2831 be able to malloc() a memory region 2^32 bytes in size, it was possible
2832 this might have resulted in a heap overflow security vulnerability.
2833 Thanks to a patch from infamous42md.
88cd8aca
DH
2834
2835- dmalloc() memset()'s the non-debug (data) portion of the allocated
2836 memory to zero. Code that memset()'s the result returned by dmalloc() to
2837 zero is redundant. These redundancies were removed.
2838
2839- Some type declaration corrections to u_int16_t were made in common/tr.c
4b97eaff 2840 (Token Ring support) thanks to a patch from Jason Vas Dias at Red Hat.
88cd8aca
DH
2841
2842- A failover bug that was allowing leases that EXPIRED or were RELEASED
2843 where tsfp and tstp are identical timestamps to languish in these
2844 transitional states has been repaired. As a side effect, lease
2845 databases should be kept more consistent overall, not just for these
2846 transitional states.
2847
2848- If the lease db is deleted out from under the daemon, and it moves to rewrite
2849 the db, it will go ahead with the operation and move the new db into place
2850 once it detects the old db does not exist.
2851
2852- dhclient now ignores IRDA, SIT, and IEEE1394 network interfaces, as it
2853 is either nonsensical or (in the case of IEEE1394) is not known to support
2854 these interfaces. Thanks to Marius Gedminas and Andrew Pollock of Debian.
2855
2856- Some previously undocumented reasons for dhclient-script invoking has
45d545f0 2857 been documented in the dhclient-script.8 manpage.
88cd8aca
DH
2858
2859- Failover potential expiry calculations (TSTP) have been corrected. Results
2860 should be substantially more consistent, and proper given the constraints.
2861
2862- Adjusted lease state validation checks in potential-conflict, to
2863 account for possible clock skew similarly to normal state, and several
2864 previously illegal transitions were made legal (ex: active->released).
2865
2866- An impossible sanity check was removed from omapi/buffer.c, thanks to a
2867 patch from 'infamous42md'.
2868
2869- An OMAPI host/network byte order problem in lease time values has been
2870 repaired.
2871
2872- Several minor bugs, largely relating to treating 8-byte time values as
2873 4-byte entities, have been repaired after careful review of the FreeBSD
2874 ports collection's patch set. Thanks to the nameless entities who have
2875 contributed to the FreeBSD ports.
2876
2877- When writing a trace file, the file is now created with permissions 0600,
2878 to help administrators avoid accidentally publicising sensitive config
2879 data.
2880
2881- The calculation of the maximum size of DHCP packets no longer includes
2882 Ethernet framing overhead. The result is that the 'Maximum Message
2883 Size' option advertised by clients, or the default value 576, is no
2884 longer reduced by 14 bytes, and instead directly reflects the IP level
2885 MTU (and the default, minimum allowed IP MTU of 576).
2886
2887- The special status of RELEASED/EXPIRED/RESET leases when a server
2888 is operating in partner-down was fixed. It no longer requires a
2889 lease be twice the MCLT beyond STOS to 'reallocate', and the expiry
2890 event to turn these into FREE leases without peer acknowledgement
2891 (after STOS+MCLT) has been repaired.
2892
2893- Compilation on older Solaris systems (lacking /usr/include/sys/int_types.h)
2894 has been repaired.
2895
2896- "append"ing a string onto the end of a "t" type option (such as the
2897 domain-name field) that had been improperly NULL-terminated by the
2898 DHCP server will no longer result in a truncated string containing
2899 only the option from the server, and not the expected appended value.
4b97eaff 2900 Thanks to a patch from Jason Vas Dias at Red Hat.
88cd8aca
DH
2901
2902- File handlers on configuration state (config files and lease dbs) should
98bd7ca0 2903 be treated consistently, regardless of whether TRACING is defined or not.
88cd8aca 2904
45d545f0 2905- The Linux build environment has had some minor improvements - better
88cd8aca
DH
2906 sensing of 64-bit pointer sizes (only used for establishing an icmp_id),
2907 and corrections to #if operators regarding LINUX_MAJOR should it ever
2908 move to 3.[01].x.
2909
2910- The server now tries harder to survive the condition where it is unable
2911 to open a new lease file to rewrite the lease state database.
2912
c75473d8
DH
2913 Changes since 3.0.3b3
2914
2915- dhclient.conf documentation for interface {} was updated to reflect recent
2916 discussion on the dhcp-hackers mailing list.
2917
2918- In response to reports that the software does not compile on GCC 4.0.0,
2919 -Werror was removed from Makefile.conf for all platforms that used it.
2920 We will address the true problem in a future release; this is a temporary
2921 workaround.
2922
2923 Changes since 3.0.3b2
2924
2925- An error in code changes introduced in 3.0.3b2 was corrected, which caused
2926 static BOOTP clients to receive random addresses.
2927
2928 Changes since 3.0.3b1
2929
2930- A bug was fixed in BOOTPREQUEST handling code wherein stale references to
2931 host records would be left behind on leases that were not allocated to the
2932 client currently booting (eg in the case where the host was denied booting).
2933
2934- The dhcpd.conf.5 manpage was updated to be more clear in regards to
2935 multiple host declarations (thanks to Vincent McIntyre). 'Interim' style
2936 dynamic updates were also retouched.
2937
98311e4b
DH
2938 Changes since 3.0.2
2939
2940- A bug was fixed where a server might load balance a DHCP REQUEST to its
45d545f0 2941 peer after already choosing not to load balance the preceding DISCOVER.
98311e4b
DH
2942 The peer cannot allocate the originating server's lease.
2943
2944- In the case where a secondary server lost its stable storage while the
2945 primary was still in communications-interrupted, and came back online,
2946 the lease databases would not be fully transferred to the secondary.
2947 This was due to the secondary errantly sending an extra UPDREQ message
2948 when the primary made its state transition to PARTNER-DOWN known.
2949
2950- The package will now compile cleanly in gcc 3.3 and 3.4. As a side effect,
2951 lease structures will be 9 bytes smaller on all platforms. Thanks to
4b97eaff 2952 Jason Vas Dias at Red Hat.
98311e4b
DH
2953
2954- Interface discovery code in DISCOVER_UNCONFIGURED mode is now
2955 properly restricted to only detecting broadcast interfaces. Thanks
4b97eaff 2956 to a patch from Jason Vas Dias at Red Hat.
98311e4b
DH
2957
2958- decode_udp_ip_header was changed so that the IP address was copied out
2959 to a variable, rather than referenced by a pointer. This enforces 4-byte
2960 alignment of the 32-bit IP address value. Thanks to a patch from Dr.
2961 Peter Poeml.
2962
2963- An incorrect log message was corrected thanks to a patch from
2964 Dr. Peter Poeml.
2965
2966- A bug in DDNS was repaired, where if the server's first DDNS action was
2967 a DDNS removal rather than a DDNS update, the resolver library's
2968 retransmit timer and retry timer was set to the default, implying a
2969 15 second timeout interval. Which is a little excessive in a synchronous,
2970 single-threaded system. In all cases, ISC DHCP should now hold fast to
2971 a 1-second timeout, trying only once.
2972
2973- The siaddr field was being improperly set to the server-identifier when
2974 responding to DHCP messages. RFC2131 clarified the siaddr field as
2975 meaning the 'next server in the bootstrap process', eg a tftp server.
2976 The siaddr field is now left zeroed unless next-server is configured.
2977
2978- mockup_lease() could have returned in an error condition (or in the
2979 condition where no fixed-address was found matching the shared
2980 network) with stale references to a host record. This is probably not
2981 a memory leak since host records generally never die anyway.
2982
2983- A bug was repaired where failover servers would let stale client identifiers
2984 persist on leases that were reallocated to new clients not sending an id.
2985
2986- Binding scopes ("set var = value;") are now removed from leases allocated
2987 by failover peers if the lease had expired. This should help reduce the
2988 number of stale binding scopes on leases.
2989
2990- A small memory leak was closed involving client identifiers larger than
2991 7 bytes, and failover.
2992
2993- Configuring a subnet in dhcpd.conf with a subnet mask of 32 bits might
2994 cause an internal function to overflow heap. Thanks to Jason Vas Dias
4b97eaff 2995 at Red Hat.
98311e4b
DH
2996
2997- Some inconsistencies in treating numbers that the lexer parsed as 'NUMBER'
2998 or 'NUMBER_OR_NAME' was repaired. Hexadecimal parsing is affected, and
2999 should work better.
3000
3001- In several cases, parse warnings were being issued before the lexical
3002 token had been advanced to the token whose value was causing an error...
3003 causing parse warnings to claim the problem is on the wrong token.
3004
3005- Host declarations matching on client identifier for dynamic leases will
3006 no longer match fixed-address host declarations (this is now identical
3007 to behaviour for host records matching on hardware address).
3008
3009 Changes since 3.0.2rc3
3010
3011- A previously undocumented configuration directive, 'local-address',
3012 was documented in the dhcpd.conf manpage.
3013
3014 Changes since 3.0.2rc2
3015
45d545f0 3016- Two variables introduced in 3.0.2b1 were used without being initialized
98311e4b
DH
3017 in the case where neither the FILE nor SNAME fields were available for
3018 overloading. This was repaired.
3019
3020- A heretofore believed to be impossible corner case of the option
3021 overloading implementation turned out to be possible ("Unable to sort
3022 overloaded options after 10 tries."). The implementation was reworked
3023 to consider the case of an option so large it would require more than
3024 three chunks to fit.
3025
3026- Many other instances of variables being used without being initialized
3027 were repaired.
3028
3029- An uninitialized variable in omapi_io_destroy() led to the discovery
3030 that this function may result in orphaned pointers (and hence, a memory
3031 leak).
3032
3033 Changes since 3.0.2rc1
3034
3035- allocate_lease() was rewritten to repair a bug in which the server would
3036 try to allocate an ABANDONED lease when FREE leases were available.
3037
3038 Changes since 3.0.2b1
3039
3040- Some dhcp-eval.5 manpage formatting was repaired.
3041
3042 Changes since 3.0.1
3043
3044- A bug was fixed in the server's 'option overloading' implementation,
3045 where options loaded into the 'file' and 'sname' packet fields were
3046 not aligned precisely as rfc2131 dictates.
3047
3048- The FreeBSD client script was changed to support the case where a domain
3049 name was not provided by the server.
3050
3051- A memory leak in 'omshell' per each command line parsed was
3052 repaired, thanks to a patch from Jarkko Torppa.
3053
3054- Log functions writing to stderr were adjusted to use the STDERR_FILENO
3055 system definition rather than '2'. This is a no-op for 90% of platforms.
3056
3057- One call to trace_write_packet_iov() counted the number of io vectors
3058 incorrectly, causing inconsistent tracefiles. This was fixed.
3059
3060- Some expression parse failure memory leaks were closed.
3061
3062- A host byte order problem in tracefiles was repaired.
3063
3064- Pools configured in DHCPD for failover possessing permission lists that
adb95d23 3065 previously were assumed to not include dynamic bootp clients are now
98311e4b
DH
3066 a little more pessimistic. The result is, dhcpd will nag you about just
3067 about most pools that possess a 'allow' statement with no 'deny' that
3068 would definitely match a dynamic bootp client.
3069
3070- The 'ddns-update-style' configuration warning bit now insists that
3071 the configuration be globally scoped.
3072
3073- Two memory leaks in dhclient were closed thanks to a patch from Felix
3074 Farkas.
3075
3076- Some minor but excellently pedantic documentation errors were fixed
3077 thanks to a patch from Thomas Klausner.
3078
3079- Bugs in operator precedence in executable statements have been repaired
3080 once again. More legal syntaxes should be parsed legally.
3081
3082- Failing to initialize a tracefile for any reason if a tracefile was
3083 specified is now a fatal error. Thanks to a patch from Albert Herranz.
3084
3085- Corrected a bug in which the number of leases transferred as calculated
3086 by the failover primary and sent to peers in POOLRESP responses may be
3087 incorrect. This value is not believed to be used by other failover
3088 implementations, excepting perhaps as logged information.
3089
3090- Corrected a bug in which 'dhcp_failover_send_poolresp()' was in fact
3091 sending POOLREQ messages instead of POOLRESP mesasges. This message
3092 was essentially ignored since failover secondaries effectively do not
3093 respond to POOLREQ messages.
3094
3095- Type definitions for various bitwidths of integers in the sunos5-5
3096 build of ISC DHCP have been fixed. It should compile and run more
3097 easily when built in 64-bit for this platform.
3098
3099- "allow known-clients;" is now a legal syntax, to avoid confusion.
3100
3101- If one dhcp server chooses to 'load balance' a request to its failover
3102 peer, it first checks to see if it believes said peer has a free
3103 lease to allocate before ignoring the DISCOVER.
3104
3105- log() was logging a work buffer, rather than the value returned by
3106 executing the statements configured by the user. In some cases,
3107 the work buffer and the intended results were the same. In some other
3108 cases, they were not. This was fixed thanks to a patch from Gunnar
3109 Fjone and directconnect.no.
3110
3111- Compiler warnings for some string type conversions was fixed, thanks
3112 to Andreas Gustafsson.
3113
3114- The netbsd build environments were simplified to one, in which
3115 -Wconversion is not used, thanks to Andreas Gustafsson.
3116
3117- How randomness in the backoff-cutoff dhclient configuration variable
3118 is implemented was better documented in the manpage, and the behaviour
3119 of dhclient in REQUEST timeout handling was changed to match that of
3120 DISCOVER timeout handling.
3121
3122- Omapi was hardened against clients that pass in null values, thanks
3123 to a patch from Mark Jason Dominus.
3124
3125- A bug was fixed in dhclient that kept it from doing client-side
3126 ddns updates. Thanks to a patch from Andreas Gustafsson, which
3127 underwent some modification after review by Jason Vas Dias.
3128
3129- Failover implementations disconnected due to the network between
3130 them (rather than one of the two shutting down) will now try to
3131 re-establish the failover connection every 5 seconds, rather than
3132 to simply try once and give up until one of them is restarted.
3133 Thanks to a patch from Ulf Ekberg from Infoblox, and field testing
3134 by Greger V. Teigre which led to an enhancement to it.
3135
3136- A problem that kept DHCP Failover secondaries from tearing down
3137 ddns records was repaired. Thanks to a patch from Ulf Ekberg from
3138 Infoblox.
3139
3140- 64bit pointer sizes are detected properly on FreeBSD now.
3141
3142- A bug was repaired where the DHCP server would leave stale references
3143 to host records on leases it once thought about offering to certain
3144 clients. The result would be to apply host and 'known' scopes to the
3145 wrong clients (possibly denying booting). NOTE: The 'mis-host' patch
3146 that was being circulated as a workaround is not the way this bug was
3147 fixed. If you were a victim of this bug in 3.0.1, you are cautioned
3148 to proceed carefully and see if it fixes your problem.
3149
3150- A bug was repaired in the server's DHCPINFORM handling, where it
3151 tried to divine the client's address from the source packet and
3152 would get it wrong. Thanks to Anshuman Singh Rawat.
3153
3154- A log message was introduced to help illuminate the case where the
3155 server was unable to find a lease to assign to any BOOTP client.
3156 Thanks to Daniel Baker.
3157
3158- A minor dhcpd.conf.5 manpage error was fixed.
3159
3160 Changes since 3.0.1rc14
3161
3162- The global variable 'cur_time' was centralized and is now uniformly of a
3163 type #defined in system-dependent headers. It had previously been defined
3164 in one of many places as a 32-bit value, and this causes mayhem on 64-bit
3165 big endian systems. It probably wasn't too healthy on little endian
3166 systems either.
3167
3168- A printf format string error introduced in rc14 was repaired.
3169
3170- AIX system-dependent header file was altered to only define NO_SNPRINTF
3171 if the condition used to #ifdef in vsnprintf in AIX' header files
3172 is false.
3173
3174- The Alpha/OSF system-dependent header file was altered to define
3175 NO_SNPRINTF on OS revisions older than 4.0G.
3176
3177- omapip/test.c had string.h added to its includes.
3178
3179 Changes since 3.0.1rc13
3180
3181! CAN-2004-0460 - CERT VU#317350: Five stack overflow exploits were closed
3182 in logging messages with excessively long hostnames provided by the
3183 clients. It is highly probable that these could have been used by
3184 attackers to gain arbitrary root access on systems using ISC DHCP 3.0.1
3185 release candidates 12 or 13. Special thanks to Gregory Duchemin for
3186 both finding and solving the problem.
3187
3188! CAN-2004-0461 - CERT VU#654390: Once the above was closed, an opening
45d545f0 3189 in log_*() functions was evidenced, on some specific platforms where
98311e4b
DH
3190 vsnprintf() was not believed to be available and calls were wrapped to
3191 sprintf() instead. Again, credit goes to Gregory Duchemin for finding
3192 the problem. Calls to snprintf() are now linked to a distribution-local
3193 snprintf implementation, only in those cases where the architecture is
3194 not known to provide one (see includes/cf/[arch].h). If you experience
3195 linking problems with snprintf/vsnprintf or 'isc_print_' functions, this
3196 is where to look. This vulnerability did not exist in any previously
3197 published version of ISC DHCP.
3198
3199- Compilation on hpux 11.11 was repaired.
3200
3201- 'The cross-compile bug fix' was backed out.
3202
3203 Changes since 3.0.1rc12
3204
3205- Fixed a bug in omapi lease lookup function, to form the hardware
3206 address for the hash lookup correctly, thanks to a patch from
3207 Richard Hirst.
3208
3209- Fixed a bug where dhcrelay was sending relayed responses back to the
3210 broadcast address, but with the source's unicast mac address. Should
3211 now conform to rfc2131 section 4.1.
3212
3213- Cross-compile bug fix; use $(AR) instead of ar. Thanks to Morten Brorup.
3214
3215- Fixed a crash bug in dhclient where dhcpd servers that do not provide
3216 renewal times results in an FPE. As a side effect, dhclient can now
3217 properly handle 0xFFFFFFFF (-1) expiry times supplied by servers. Thanks
3218 to a patch from Burt Silverman.
3219
3220- The 'ping timeout' debugs from rc12 were removed to -DDEBUG only,
45d545f0 3221 and reformatted to correct a compilation error on Solaris platforms.
98311e4b
DH
3222
3223- A patch was applied which fixes a case where leases read from the
3224 leases database do not properly over-ride previously read leases.
3225
3226- dhcpctl.3 manpage was tweaked.
3227
3228 Changes since 3.0.1rc11
3229
3230- A patch from Steve Campbell was applied with minor modifications to
3231 permit reverse dns PTR record updates with values containing spaces.
3232
3233- A patch from Florian Lohoff was applied with some modifications to
3234 dhcrelay. It now discards packets whose hop count exceeds 10 by default,
3235 and a command-line option (-c) can be used to set this threshold.
3236
3237- A failover bug relating to identifying peers by name length instead of
3238 by name was fixed.
3239
45d545f0 3240- Declaring failover configs within shared-network statements should no
98311e4b
DH
3241 longer result in error.
3242
3243- The -nw command line option to dhclient now works.
3244
3245- Thanks to a patch from Michael Richardson:
3246 - Some problems with long option processing have been fixed.
3247 - Some fixes to minires so that updates of KEY records will work.
3248
3249- contrib/ms2isc was updated by Shu-Min Chang of the Intel Corporation.
3250 see contrib/ms2isc/readme.txt for revision notes.
3251
3252- Dhclient no longer uses shell commands to kill another instance of
3253 itself, it sends the signal directly. Thanks to a patch from Martin
3254 Blapp.
3255
3256- The FreeBSD dhclient-script was changed so that a failure to write to
3257 /etc/resolv.conf does not prematurely end the script. This keeps dhclient
3258 from looping infinitely when this is the case. Thanks to a patch from
3259 Martin Blapp.
3260
3261- A patch from Bill Stephens was applied which resolves a problem with lease
3262 expiry times in failover configurations.
3263
3264- A memory leak in configuration parsing was closed thanks to a patch from
3265 Steve G.
3266
3267- The function which discovers interfaces will now skip non-broadcast or
3268 point-to-point interfaces, thanks to a patch from David Brownlee.
3269
3270- Options not yet known by the dhcpd or dhclient have had their names
3271 changed such that they do not contain # symbols, in case they should ever
3272 appear in a lease file. An option that might have been named "#144" is
3273 now "unknown-144".
3274
3275- Another patch from Bill Stephens which allows the ping-check timeout to
3276 be configured as 'ping-timeout'. Defaults to 1.
3277
3278 Changes since 3.0.1rc10
3279
3280- Potential buffer overflows in minires repaired.
3281
3282- A change to the linux client script to use /bin/bash, since /bin/sh may
3283 not be bash.
3284
3285- Some missing va_end cleanups thanks to a patch from Thomas Klausner.
3286
3287- A correction of boolean parsing syntax validation - some illegal syntaxes
3288 that worked before are now detected and produce errs, some legal syntaxes
3289 that errored before will now work properly.
3290
3291- Some search-and-replace errors that caused some options to change their
3292 names was repaired.
3293
3294- Shu-min Chang of the Intel corporation has contributed a perl script and
3295 module that converts the MS NT4 DHCP configuration to a ISC DHCP3
3296 configuration file.
3297
3298- Applied the remainder of the dhcpctl memory leak patch provided by Bill
3299 Squier at ReefEdge, Inc. (groo@reefedge.com).
3300
3301- Missing non-optional failover peer configurations will now result in a soft
3302 error rather than a null dereference.
3303
3304 Changes since 3.0.1rc9
3305
3306- A format string was corrected to fix compiler warnings.
3307
3308- A number of spelling corrections were made in the man pages.
3309
3310- The dhclient.conf.5 man page was changed to refer to do-forward-updates
3311 rather than a configuration option that doesn't exist.
3312
3313- A FreeBSD-specific bug in the interface removal handling was fixed.
3314
3315- A Linux-specific Token Ring detection problem was fixed.
3316
3317- Hashes removed from as-yet-unknown agent options, having those options
3318 appear in reality before we know about them will no longer produce
3319 self-corrupting lease databases.
3320
3321- dhclient will use the proper port numbers now when using the -g option.
3322
3323- A order-of-operations bug with 2 match clauses in 1 class statement is
3324 fixed thanks to a patch from Andrew Matheson.
3325
3326- Compilation problems on Solaris were fixed.
3327
3328- Compilation problems when built with DEBUG or DEBUG_PACKET were repaired.
3329
3330- A fix to the dhcp ack process which makes certain group options will be
3331 included in the first DHCPOFFER message was made thanks to a patch from
3332 Ling Gou.
3333
3334- A few memory leaks were repaired thanks to patches from Bill Squier at
3335 ReefEdge, Inc. (groo@reefedge.com).
3336
3337- A fix for shared-networks that sometimes give clients options for the
3338 wrong subnets (in particular, 'option routers') was applied, thanks to
3339 Ted Lemon for the patch.
3340
3341- Omshell's handling of dotted octets as values was changed such that dots
3342 one after the other produce zero values in the integer string.
3343
3344 Changes since 3.0.1rc8
3345
3346- Fix a format string vulnerability in the server that could lead to a
3347 remote root compromise (discovered by NGSEC Research Team, www.ngsec.com).
3348
3349- Add additional support for NetBSD/sparc64.
3350
3351- Fix a bug in the command-line parsing of the client. Also, resolve
3352 a memory leak.
3353
3354- Add better support for shells other than bash in the Linux client
3355 script.
3356
3357- Various build fixes for modern versions of FreeBSD and Linux.
3358
3359- Fix a bad bounds check when printing binding state names.
3360
3361- Clarify documentation about fixed-address and multiple addresses.
3362
3363- Fix a typo in the authoritative error message.
3364
3365- Make a log entry when we can't write a billing class.
3366
3367- Use conversion targets that are the right size on all architectures.
3368
3369- Increment the hop count when relaying.
3370
3371- Log a message when lease state is changed through OMAPI.
3372
3373- Don't rerun the shared_network when evaluating the pool.
3374
3375- Fix a reversed test in the parser.
3376
3377- Change the type of rbuf_max.
3378
3379- Make FTS_LAST a manifest constant to quiet warnings.
3380
3381 Changes since 3.0.1rc7
3382
3383- Fix two compiler warnings that are generated when compiling on Solaris
3384 with gcc. These stop the build, even though they weren't actually
3385 errors, because we prefer that our builds generate no warnings.
3386
3387 Changes since 3.0.1rc6
3388
3389- Don't allow a lease that's in the EXPIRED, RELEASED or RESET state
3390 to be renewed.
3391
3392- Implement lease stealing for cases where the primary has fewer leases
3393 than the secondary, as called for by the standard.
3394
3395- Add a fudge factor to the lease expiry acceptance code, (suggested
3396 by Kevin Miller of CMU).
3397
3398- Fix a bug in permit_list_match that made it much too willing to say
3399 that two permit lists matched.
3400
3401- Unless DEBUG_DNS_UPDATES is defined, print more user-friendly (and
3402 also more compact) messages about DNS updates.
3403
3404- Fix a bug in generating wire-format domain names for the FQDN option.
3405
3406- Fix a bug where the FQDN option would not be returned if the client
3407 requested it, contrary to the standard.
3408
3409- On Darwin, use the FreeBSD DHCP client script.
3410
3411- On NetBSD/sparc, don't check for casting warnings.
3412
3413- Add a flag in the DHCP client to disable updating the client's A
3414 record when sending an FQDN option indicating that the client is
3415 going to update its A record.
3416
3417- In the client, don't attempt a DNS update until one second after
3418 configuring the new IP address, and if the update times out, keep
3419 trying until a response, positive or negative, is received from the
3420 DNS server.
3421
3422- Fix an uninitialized memory bug in the DHCP client.
3423
3424- Apply some FreeBSD-specific bug fixes suggested by Murray Stokely.
3425
3426- Fix a bug in ns_parserr(), where it was returning the wrong sort
3427 of result code in some cases (suggested by Ben Harris of the
3428 NetBSD project).
3429
3430- Fix a bug in is_identifier(), where it was checking against EOF
3431 instead of the END_OF_FILE token (also suggested by Ben Harris).
3432
3433- Fix a bug where if an option universe contained no options, the
3434 DHCP server could dump core (Walter Steiner).
3435
3436- Fix a bug in the handling of encapsulated options.
3437
3438- Fix a bug that prevented NWIP suboptions from being processed.
3439
3440- Delete the FTS_BOOTP and FTS_RESERVED states and implement them
3441 as modifier flags to the FTS_ACTIVE state, as called for in the
3442 failover protocol standard.
3443
3444- Fix bugs in the pool merging code that resulted in references and
3445 dereferences of null pointers. This bug had no impact unless the
3446 POINTER_DEBUG flag was defined.
3447
3448- In the server, added a do-forward-updates flag that can be used to
3449 disable forward updates in all cases, so that sites that want the
3450 clients to take sole responsibility for updating their A record can
3451 do so.
3452
3453- Make it possible to disable optimization of PTR record updates.
3454
3455 Changes since 3.0.1rc5
3456
3457- Include some new documentation and changes provided by Karl Auer.
3458
3459- Add a workaround for some Lexmark printers that send a double-NUL-
3460 terminated host-name option, which would break DNS updates.
3461
3462- Fix an off-by-one error in the MAC-address checking code for
3463 DHCPRELEASE that was added in 3.0.1rc5.
3464
3465- Fix a bug where client-specific information was not being discarded
3466 from the lease when it expired or was released, resulting in
3467 problems if the lease was reallocated to a different client.
3468
3469- If more than one allocation pool is specified that has the same set
3470 of constraints as another allocation pool on the same shared
3471 network, merge the two pools.
3472
3473- Don't print an error in fallback_discard, since this just causes
3474 confusion and does not appear to be helping to encourage anyone to
3475 fix this bug.
3476
3477 Changes since 3.0.1rc4
3478
3479- Fix a bug that would cause the DHCP server to spin if asked to parse
3480 a certain kind of incorrect statement.
3481
3482- Fix a related bug that would prevent an error from being reported in
3483 the same case.
3484
3485- Additional documentation.
3486
3487- Make sure that the hardware address matches the lease when
3488 processing a DHCPRELEASE message.
3489
3490 Changes since 3.0.1rc3
3491
3492- A minor bug fix in the arguments to a logging function call.
3493- Documentation update for dhcpd.conf.
3494
adbef119 3495 Changes since 3.0.1rc2
98311e4b
DH
3496
3497- Allow the primary to send a POOLREQ message. This isn't what the current
3498 failover draft says to do, so we may have to back it out if I can't get the
3499 authors to relent, but the scheme for balancing that's specified in the
3500 current draft seems needlessly hairy, so I'm floating a trial balloon.
3501 The rc1 code did not implement the method described in the draft either.
3502
adbef119 3503 Changes since 3.0.1rc1
98311e4b
DH
3504
3505- Treat NXDOMAIN and NXRRSET as success when we are trying to delete a
3506 domain or RRSET. This allows the DHCP server to forget about a name
3507 it added to the DNS once it's been removed, even if the DHCP server
3508 wasn't the one that removed it.
3509
3510- Install defaults for failover maximum outstanding updates and maximum
3511 silent time. This prevents problems that might occur if these values
3512 were not configured.
3513
3514- Don't do DDNS deletes if ddns-update-style is none.
3515
3516- Return relay agent information options in DHCPNAK. This prevents DHCPNAK
3517 messages from being dropped when the relay agent information option contains
3518 routing information.
3519
3520- Fix a problem where coming up in recover wouldn't result in an update
3521 request being sent.
3522
3523- Add some more chatty messages when we start a recovery update and when it's
3524 done.
3525
3526- Fix a possible problem where some state might have been left around
3527 after the peer lost contact and regained contact about how many updates
3528 were pending.
3529
3530- Don't nix a lease update because of a lease conflict. This test has
3531 never (as far as I know) prevented a mistake, and it appears to cause
3532 problems with failover.
3533
3534- Add support in rc history code for keeping a selective history, rather
3535 than a history of all references and dereferences. This code is only used
3536 when extensive additional debugging is enabled.
3537
adbef119 3538 Changes since 3.0
98311e4b
DH
3539
3540- Make allocators for hash tables. As a side effect, this fixes a memory
3541 smash in the subclass allocation code.
3542
3543- Fix a small bug in omshell where if you try to close an object when
3544 no object is open, it dumps core.
3545
3546- Fix an obscure coredump that could occur on shutdown.
3547
3548- Fix a bug in the recording of host declaration rubouts in the lease file.
3549
3550- Fix two potential spins in the host deletion code.
3551
3552- Fix a core dump that would happen if an application tried to update
3553 a host object attribute with a null value.
3554
3555 Changes since 3.0 Release Candidate 12
3556
3557- Fix a memory leak in the evaluation code.
3558
3559- Fix an obscure core dump.
3560
3561- Print a couple of new warnings when parsing the configuration file
3562 when crucial information is left out.
3563
3564- Log "no free leases" as an error.
3565
3566- Documentation updates.
3567
3568 Changes since 3.0 Release Candidate 11
3569
3570- Always return a subnet selection option if one is sent.
3571
3572- Fix a warning that was being printed because an automatic data
3573 structure wasn't zeroed.
3574
3575- Fix some failover state transitions that were being handled
3576 incorrectly.
3577
3578- When supersede_lease is called on a lease whose end time has already
3579 expired, but for which a state transition has not yet been done, do
3580 a state transition. This fixes the case where if the secondary
3581 allocated a lease to a client and the lease "expired" while the
3582 secondary was in partner-down, no expiry event would actually
3583 happen, so the lease would remain active until the primary was
3584 restarted.
3585
3586 Changes since 3.0 Release Candidate 10
3587
3588- Fix a bug that was preventing released leases from changing state
3589 in failover-enabled pools.
3590
3591- Fix a core dump in the client identifier finder code (for host
3592 declarations).
3593
3594- Finish fixing a bug where bogus data would sometimes get logged to
3595 the dhclient.leases file because it was opened as descriptor 2.
3596
3597- Fix the Linux dhclient-script according to suggestions made by
3598 several people on the dhcp-client mailing list.
3599
3600- Log successful DNS updates at LOG_INFO, not LOG_ERROR.
3601
3602- Print an error message and refuse to run if a failover peer is
3603 defined but not referenced by any pools.
3604
3605- Correct a confusing error message in failover.
3606
eaf0b302
TL
3607 Changes since 3.0 Release Candidate 9
3608
3609- Fix a bug in lease allocation for Dynamic BOOTP clients.
3610
0db87765
TL
3611 Changes since 3.0 Release Candidate 8 Patchlevel 2
3612
3613- Fix a bug that prevented update-static-leases from working.
3614
3615- Document failover-state OMAPI object.
3616
3617- Fix a compilation error on SunOS 4.
3618
d758ad8c
TL
3619 Changes since 3.0 Release Candidate 8 Patchlevel 1
3620
3621- Fix a parsing bug that broke dns updates (both interim and ad-hoc).
3622 This was introduced in rc8pl1 as an unintended result of the memory
3623 leakage fixes that were in pl1.
3624
3625- Fix a long-standing bug where the server would record that an update
3626 had been done for a client with no name, even though no update had
3627 been done, and then when the client's lease expired the deletion of
3628 that nonexistant record would time out because the name was the null
9a111ee8 3629 string.
d758ad8c
TL
3630
3631- Clean up the omshell, dhcpctl and omapi man pages a bit.
3632
d758ad8c
TL
3633 Changes since 3.0 Release Candidate 8
3634
3635- Fix a bug that could cause the DHCP server to spin if
3636 one-lease-per-client was enabled.
3637
3638- Fix a bug that was causing core dumps on BSD/os in the presence of
3639 malformed packets.
3640
3641- In partner-down state, don't restrict lease lengths to MCLT.
3642
3643- On the failover secondary, record the MCLT received from the primary
3644 so that if we come up without a connection to the primary we don't
3645 wind up giving out zero-length leases.
3646
3647- Fix some compilation problems on BSD/os.
3648
3649- Fix a bunch of memory leaks.
3650
3651- Fix a couple of bugs in the option printer.
3652
3653- Fix an obscure error reporting bug in the dns update code, and also
3654 make the message clearer when a key algorithm isn't supported.
3655
3656- Fix a bug in the tracing code that prevented trace runs that used
3657 tcp connections from being played back.
3658
3659- Add some additional debugging capability for catching memory leaks
3660 on exit.
3661
3662- Make the client release the lease correctly on shutdown.
3663
3664- Add some configurability to the build system.
3665
3666- Install omshell manual page in man1, not man8.
3667
3668- Craig Gwydir sent in a patch that fixes a long-standing bug in the
3669 DHCP client that could cause core dumps, but that for some reason
3670 hadn't been noticed until now.
3671
3672 Changes since 3.0 Release Candidate 7
3673
3674- Fix a bug in failover where we weren't sending updates after a
3675 transition from communications-interrupted to normal.
3676
3677- Handle expired/released/reset -> free transition according to the
3678 protocol specification (this works - the other way not only wasn't
3679 conformant, but also didn't work).
3680
3681- Add a control object in both client and server that allows either
3682 daemon to be shut down cleanly.
3683
3684- When writing a lease, if we run out of disk space, shut down the
3685 output file and insist on writing a new one before proceeding.
3686
3687- In the server, if the OMAPI listener port is occupied, keep trying
3688 to get it, rather than simply giving up and exiting.
3689
3690- Support fetching variables from leases and also updating and adding
3691 variables to leases via OMAPI.
3692
3693- If two failover peers have wildly different clocks, refuse to start
3694 doing failover.
3695
3696- Fix a bug in the DNS update code that could cause core dumps when
3697 running on alpha processors.
3698
3699- Fixed a bug in ddns updates for static lease entries, thanks to a
3700 patch from Andrey M Linkevitch.
3701
3702- Add support for Darwin/MacOS X
3703
3704- Install omshell (including new documentation).
3705
3706- Support DNS updates in the client (this is a very obscure feature
3707 that most DHCP client users probably will not be able to use).
3708
3709- Somewhat cleaner status logging in the client.
3710
3711- Make OMAPI key naming syntax compatible with the way keys are
3712 actually named (key names are domain names).
3713
3714- Fix a bug in the lease file writer.
3715
3716- Install DHCP ISC headers in a different place than BIND 9 ISC
3717 headers, to avoid causing trouble in BIND 9 builds.
3718
3719- Don't send updates for attributes on an object when the attributes
3720 haven't changed. Support deleting attributes on remote objects.
3721
3722- Fix a number of bugs in omshell, and add the unset and refresh
3723 statements.
3724
3725- Handle disconnects in OMAPI a little bit more intelligently (so that
3726 the caller gets ECONNRESET instead of EINVAL).
3727
3728- Fix a bunch of bugs in the handling of clients that have existing
3729 leases when the try to renew their leases while failover is
3730 operating.
3731
eaf0b302
TL
3732 Changes since 3.0 Release Candidate 6
3733
3734- Fix a core dump that could happen when processing a DHCPREQUEST from
3735 a client that had a host declaration that contained both a
3736 fixed-address declaration and a dhcp-client-identifier option
3737 declaration, if the client identifier was longer than nine bytes.
3738
3739- Fix a memory leak that could happen in certain obscure cases when
3740 using omapi to manipulate leases.
3741
3742- Fix some bugs and omissions in omshell.
3743
eaf0b302
TL
3744 Changes since 3.0 Release Candidate 5
3745
3746- Fix a bug in omapi_object_dereference that prevented objects in
3747 chains from having their reference counts decreased on dereference.
3748
3749- Fix a bug in omapi_object_dereference that would prevent object
3750 chains from being freed upon removal of the last reference external
3751 to the chain.
3752
3753- Fix a number of other memory leaks in the OMAPI protocol subsystem.
3754
3755- Add code in the OMAPI protocol handler to trace memory leakage.
3756
3757- Clean up the memory allocation/reference history printer.
3758
98311e4b 3759- Support input of dotted quads and colon-separated hex lists as
eaf0b302
TL
3760 attribute values in omshell.
3761
98311e4b 3762- Fix a typo in the Linux interface discovery code.
eaf0b302
TL
3763
3764- Conditionalize a piece of trace code that wasn't conditional.
3765
3766 Changes since 3.0 Release Candidate 4
3767
3768- Fix a bug that would prevent leases from being abandoned properly on
3769 DHCPDECLINE.
3770
3771- Fix failover peer OMAPI support.
3772
3773- In failover, correctly handle expiration of leases. Previously,
3774 leases would never be reclaimed because they couldn't make the
3775 transition from EXPIRED to FREE.
3776
3777- Fix some broken failover state transitions.
3778
3779- Documentation fixes.
3780
3781- Take out an unnecessary check in DHCP relay agent information option
3782 stashing code that was preventing REBINDING clients from rebinding.
3783
3784- Prevent failover peers from allocating leases in DHCPREQUEST
3785 processing if the lease belongs to the other server.
3786
3787- Record server version in lease file introductory comment.
3788
3789- Correctly report connection errors in OMAPI and failover.
3790
3791- Make authentication signature algorithm name comparisons in OMAPI
3792 case-insensitive.
3793
3794- Fix compile problem on SunOS 4.x
3795
98311e4b 3796- If a signature algorithm is not terminated with '.', terminate it so
eaf0b302
TL
3797 that comparisons between fully-qualified names will work
3798 consistently.
3799
3800- Different SIOCGIFCONF probe code, may "fix" problem on some Linux
3801 systems with the probe not working correctly.
3802
3803- Don't allow user to type omapi key on command line of omshell.
3804
0596b051
TL
3805 Changes since 3.0 Release Candidate 3
3806
3807- Do lease billing on startup in a way that I *think* will finally do
3808 the billing correctly - the previous method could overbill as a
3809 result of duplicate leases.
3810
3811- Document OMAPI server objects.
3812
892fe689
TL
3813 Changes since 3.0 Release Candidate 2 Patchlevel 1
3814
3815- Fix some problems in the DDNS update code. Thanks to Albert
3816 Herranz for figuring out the main problem.
3817
3818- Fix some reference counting errors on host entries that were causing
3819 core dumps.
3820
3821- Fix a byte-swap bug in the token ring code, thanks to Jochen
3822 Friedrich.
3823
3824- Fix a bug in lease billing, thanks to Jonas Bulow.
3825
3826 Changes since 3.0 Release Candidate 2
3827
3828- Change the conditions under which a DHCPRELEASE is actually
3829 committed to be consistent with lease binding states rather than
98311e4b 3830 using the lease end time. This may fix some problems with the
892fe689
TL
3831 billing class code.
3832
3833- Fix a bug where lease updates would fail on Digital Unix (and maybe
3834 others) because malloc was called with a size of zero.
3835
3836- Fix a core dump that happens when the DHCP server can't create its
3837 trace file.
3838
79ea3de8 3839 Changes since 3.0 Release Candidate 1 Patchlevel 1
87784777 3840
79ea3de8
TL
3841- Fix the dhcp_failover_put_message to not attempt to allocate a
3842 zero-length buffer. Some versions of malloc() fail if you try to
3843 allocate a zero-length buffer, and this was causing problems on,
3844 e.g., Digital Unix.
3845
3846- Fix a case where the failover code was printing an error message
3847 when no error had occurred.
3848
3849- Fix a problem where when a server went down and back up again, the
3850 peer would not see a state transition and so would stay in the
3851 non-communicating state.
3852
3853- Be smart about going into recover_wait.
3854
3855- Fix a problem in the failover implementation where peers would fail
3856 to come into sync if interrupted in the RECOVER state. This could
3857 have been the cause of some problems people have reported recently.
3858
3859- Fix a problem with billing classes where they would not be unbilled
3860 when the client lease expired.
3861
3862- If select fails, figure out which descriptor is bad, and cut it out
3863 of the I/O loop. This prevents a potentially nasty spin. I
3864 haven't heard any report it in a while, but it came up consistently
3865 in testing.
3866
3867- Fix a bug in the relay agent where if you specified interfaces on
3868 the command line, it would fail.
3869
3870- Fix a couple of small bugs in the omapi connection object (no known
3871 user impact).
3872
3873- Add the missing 3.0 Beta 1 lease conversion script.
3874
3875- Read dhcp client script hooks if they exist, rather than only if
3876 they're executable.
3877
3878 Changes since 3.0 Release Candidate 1
87784777
TL
3879
3880- Fix a memory smash that happens when fixed-address leases are used.
3881 ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
3882 UPGRADE IMMEDIATELY. This has been a long-standing bug - thanks to
3883 Alvise Nobile for discovering it and helping me to find it!
3884
79ea3de8
TL
3885- Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
3886 Transmeta.
3887
87784777
TL
3888- There is a known problem with the DHCP server doing failover on
3889 Compaq Alpha systems. This patchlevel is not a release candidate
3890 because of this bug. The bug should be straightforward to fix, so
3891 a new release candidate is expected shortly.
3892
3893- There is a known problem in the DDNS update code that is probably a
3894 bug, and is not, as far as we know, fixed in this patchlevel.
3895
6d779c72
TL
3896 Changes since 3.0 Beta 2 Patchlevel 24
3897
3898- Went over problematic failover state transitions and made them all
3899 work, so that failover should now much less fragile.
3900
3901- Add some dhcpctl and omapi documentation
3902
3903- Fix compile errors when compiling with unusual predefines.
3904
3905- Make Token Ring work on Linux 2.4
3906
3907- Fix the Digital Unix BPF_WORDALIGN bug.
3908
3909- Fix some dhcp client documentation errors.
3910
3911- Update some parts of the README file.
3912
3913- Support GCC on SCO.
3914
adbef119 3915 Changes since 3.0 Beta 2 Patchlevel 23
de57e64b
TL
3916
3917- Fix a bug in the DNS update code where a status code was not being
3918 checked. This may have been causing core dumps.
3919
3920- When parsing the lease file, if a lease declaration includes a
3921 billing class statement, and the lease already has a billing class,
3922 unbill the old class.
3923
3924- When processing failover transactions, where acks will be deferred,
3925 process the state transition immediately.
3926
3927- Don't try to use the new SIOCGIFCONF buffer size detection code on
3928 Linux 2.0, which doesn't provide this functionality.
3929
3930- Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
3931
3932- Fix a problem in using the which command in the configure script.
3933
3934- Fix a parse error in the client when setting up an omapi listener.
3935
3936- Document the -n and -g flags to the client.
3937
3938- Make sure there is always a stdin and stdout on startup. This
3939 prevents shell scripts from accidentally writing error messages into
3940 configuration files that happen to be opened as stderr.
3941
3942- If an interface is removed, the client will now notice that it is
3943 gone rather than spinning. This has only been tested on NetBSD.
3944
3945- The client will attempt to get an address even if it can't create a
3946 lease file.
3947
3948- Don't overwrite tracefiles.
3949
3950- Fix some memory allocation bugs in failover.
2aa36519 3951
adbef119 3952 Changes since 3.0 Beta 2 Patchlevel 22
140158d3
TL
3953
3954- Apply some patches suggested by Cyrille Lefevre, who is maintaining
3955 the FreeBSD ISC DHCP Distribution port.
3956
3957- Fix a core dump in DHCPRELEASE.
3958
adbef119 3959 Changes since 3.0 Beta 2 Patchlevel 21
3a395e60
TL
3960
3961- This time for sure: fix the spin described in the changes for pl20.
3962
adbef119 3963 Changes since 3.0 Beta 2 Patchlevel 20
fc74dd0c
TL
3964
3965- Fix a problem with Linux detecting large numbers of interfaces (Ben)
3966
3967- Fix a memory smash in the quotify code, which was introduced in
3968 pl19.
3969
3970- Actually fix the spin described in the changes for pl20. The
3971 previous fix only partially fixed the problem - enough to get it
3972 past the regression test.
3973
adbef119 3974 Changes since 3.0 Beta 2 Patchlevel 19
ed5ee591
TL
3975
3976- Fix a bug that could cause the server to abort if compiled with
3977 POINTER_DEBUG enabled.
3978
3979- Fix a bug that could cause the server to spin when responding to a
3980 DHCPREQUEST.
3981
3982- Apply Joost Mulders' suggested patches for DLPI on x86.
3983
3984- Support NUL characters in quoted strings.
3985
3986- Install unformatted man pages on SunOS.
3987
adbef119 3988 Changes since 3.0 Beta 2 Patchlevel 18
b3fad8ac 3989
3350f5b7
TL
3990- Allow the server to be placed in partner-down state using OMAPI.
3991 (Damien Neil)
3992
3993- Implement omshell, which can be used to do arbitrary things to the
3994 server (in theory). (Damien Neil)
3995
3996- Fix a case where if a client had two different leases the server could
3997 actually dereference the second one when it hadn't been referenced,
3998 leading to memory corruption and a core dump. (James Brister)
3999
4000- Fix a case where a client could request the address of another client's
4001 lease, but find_lease wouldn't detect that the other client had it, and
4002 would attempt to allocate it to the client, resulting in a lease conflict
4003 message.
4004
4005- Fix a case where a client with more than one client identifier could be
4006 given a lease where the hardware address was correct but the client
4007 identifier was not, resulting in a lease conflict message.
4008
98311e4b 4009- Fix a problem where the server could write out a colon-separated
3350f5b7
TL
4010 hex list as a value for a variable, which would then not parse.
4011 The fix is to always write strings as quoted strings, with any
4012 non-printable characters quoted as octal escape sequences. So
4013 a file written the old way still won't work, but new files written
4014 this way will work.
4015
b3fad8ac
TL
4016- Fix documentation for sending non-standard options.
4017
4018- Use unparsable names for unknown options. WARNING: this will
4019 break any configuration files that use the option-nnn convention.
4020 If you want to continue to use this convention for some options,
4021 please be sure to write a definition, like this:
4022
4023 option option-nnn code nnn = string;
4024
4025 You can use a descriptive name instead of option-nnn if you like.
4026
4027- Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
4028 DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence. This was the
4029 result of a deceptively silly bug in supersede_lease.
4030
4031- Fix client script exit status check, according to a fix supplied by
4032 Hermann Lauer.
4033
4034- Fix an endianness bug in the tracefile support, regarding ICMP
4035 messages.
4036
3350f5b7
TL
4037- Fix a bug in the client where the medium would not work correctly if
4038 it contained quoted strings.
4039
b3fad8ac
TL
4040 ** there was no pl17 **
4041
adbef119 4042 Changes since 3.0 Beta 2 Patchlevel 16
e6d30fd6 4043
6da9db9d
TL
4044- Add support for transaction tracing. This allows the state of the
4045 DHCP server on startup, and all the subsequent transactions, to be
4046 recorded in a file which can then be played back to reproduce the
4047 behaviour of the DHCP server. This can be used to quickly
4048 reproduce bugs that cause core dumps or corruption, and also for
4049 tracking down memory leaks.
4050
4051- Incorporate some bug fixes provided by Joost Mulders for the DLPI
4052 package which should clear up problems people have been seeing on
4053 Solaris.
4054
4055- Fix bugs in the handling of options stored as linked lists (agent
4056 options, fqdn options and nwip options) that could cause memory
4057 corruption and core dumps.
4058
4059- Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
4060 not being send in some cases when they were needed.
4061
4062- Make the lease structure somewhat more compact.
4063
4064- Make initial failover startup *much* faster. This was researched
4065 and implemented by Damien Neil.
4066
4067- Add a --version flag to all executables, which prints the program
4068 name and version to standard output.
4069
4070- Don't rewrite the lease file every thousand leases.
4071
e6d30fd6
TL
4072- A bug in nit.c for older SunOS machines was fixed by a patch sent in
4073 by Takeshi Hagiwara.
4074
6da9db9d
TL
4075- Fix a memory corruption bug in the DHCP client.
4076
4077- Lots of documentation updates.
4078
4079- Add a feature allowing environment variables to be passed to the
4080 DHCP client script on the DHCP client command line.
4081
4082- Fix client medium support, which had been broken for some time.
4083
4084- Fix a bug in the DHCP client initial startup backoff interval, which
4085 would cause two DHCPDISCOVERS to be sent back-to-back on startup.
4086
adbef119 4087 Changes since 3.0 Beta 2 Patchlevel 15
af49fdff
TL
4088
4089- Some documentation tweaks.
4090
4091- Maybe fix a problem in the DLPI code.
4092
4093- Fix some error code space inconsistencies in ddns update code.
4094
4095- Support relay agents that intercept unicast DHCP messages to stuff
4096 agent options into them.
4097
4098- Fix a small memory leak in the relay agent option support code.
4099
c5b569f8
TL
4100- Fix a core dump that would occur if a packet was sent with no
4101 options.
4102
adbef119 4103 Changes since 3.0 Beta 2 Patchlevel 14
754ae3e9
TL
4104
4105- Finish fixing a long-standing bug in the agent options code. This
4106 was causing core dumps and failing to operate correctly - in
4107 particular, agent option stashing wasn't working. Agent option
4108 stashing should now be working, meaning that agent options can be
4109 used in class statements to control address allocation.
4110
4111- Fix up documentation.
4112
4113- Fix a couple of small memory leaks that would have added up
4114 significantly in a high-demand situation.
4115
4116- Add a log-facility configuration parameter.
4117
4118- Fix a compile error on some older operating systems.
4119
4120- Add the ability in the client to execute certain statements before
4121 transmitting packets to the server. Handy for debugging; not much
4122 practical use otherwise.
4123
4124- Don't send faked-out giaddr when renewing or bound - again, useful
4125 for debugging.
4126
adbef119 4127 Changes since 3.0 Beta 2 Patchlevel 13
2f2e7960
TL
4128
4129- Fixed a problem where the fqdn decoder would sometimes try to store
4130 an option with an (unsigned) negative length, resulting in a core
4131 dump on some systems.
4132
4133- Work around the Win98 DHCP client, which NUL-terminates the FQDN
4134 option.
4135
4136- Work around Win98 and Win2k clients that will claim they want to do
4137 the update even when they don't have any way to do it.
4138
4139- Fix some log messages that can be printed when failover is operating
4140 that were not printing enough information.
4141
4142- It was possible for a DHCPDISCOVER to get an allocation even when
4143 the state machine said the server shouldn't be responding.
4144
4145- Don't load balance DHCPREQUESTs from clients in RENEWING and
4146 REBINDING, since in RENEWING, if we heard it, it's for us, and in
4147 REBINDING, the client wouldn't have got to REBINDING if its primary
4148 were answering.
4149
4150- When we get a bogus state lease binding state transition, don't do
4151 the transition.
9a111ee8 4152
2f2e7960 4153
adbef119 4154 Changes since 3.0 Beta 2 Patchlevel 12
66e98927
TL
4155
4156- Fixed a couple of silly compile errors.
4157
a1e2e3d6
TL
4158 Changes since 3.0 Beta 2 Patchlevel 11
4159
4160- Albert Herranz tracked down and fixed a subtle bug in the base64
4161 decoder that would prevent any key with an 'x' in its base64
4162 representation from working correctly.
4163
4164- Thanks to Chris Cheney and Michael Sanders, we have a fix for the
4165 hang that they both spotted in the DHCP server - when
4166 one-lease-per-client was set, the code to release the "other" lease
4167 could spin.
4168
4169- Fix a problem with alignment of the input buffer in bpf in cases
4170 where two packets arrive in the same bpf read.
4171
4172- Fix a problem where the relay agent would crash if you specified an
4173 interface name on the command line.
4174
4175- Add the ability to conditionalize client behaviour based on the
4176 client state.
4177
4178- Add support for the FQDN option, and added support for a new way of
4179 doing ddns updates (ddns update style interim) that allows more than
4180 one DHCP server to update the DNS for the same network(s). This
4181 was implemented by Damien Neil with some additional functionality
4182 added by Ted Lemon.
4183
4184- Damien added a "log" statement, so that the configuration file can
4185 be made to log debugging information and other information.
4186
4187- Fixed a bug that caused option buffers not to be terminated with an
4188 end option.
4189
4190- Fixed a long-standing bug in the support for option spaces where the
4191 options are stored as an ordered list rather than in a hash table,
4192 which could theoretically result in memory pool corruption.
4193
4194- Prevent hardware declarations with no actual hardware address from
4195 being written as something unparsable, and behave correctly in the
4196 face of a null hardware address on input.
4197
4198- Allow key names to be FQDNs, and qualify the algorithm name if it is
4199 specified unqualified.
4200
4201- Modify the DDNS update code so that it never prints the "resolver
4202 failed" message, but instead says *why* the resolver failed.
4203
4204- Officially support the subnet selection option, which now has an
4205 RFC.
4206
4207- Fix a build bug on MacOS X.
4208
4209- Allow administrator to disable ping checking.
4210
4211- Clean up dhcpd.conf documentation and add more information about how
4212 it works.
4213
6c68ec36
TL
4214 Changes since 3.0 Beta 2 Patchlevel 10
4215
4216- Fix a bug introduced during debugging (!) and accidentally committed
4217 to CVS.
4218
9fd337e7
TL
4219 Changes since 3.0 Beta 2 Patchlevel 9
4220
4221- Fix DHCP client handling of vendor encapsulated options.
4222
4223- Fix a bug in the handling of relay agent information options introduced
4224 in patchlevel 9.
4225
4226- Stash agent options on client leases by default, and use the stashed
4227 options at renewal time.
4228
4229- Add the ability to test the client's binding state in the client
4230 configuration language.
4231
4232- Fix a core dump in the DNS update code.
4233
4234- Fix some expression evaluation bugs that were causing updates to be
4235 done when no client hostname was received.
4236
4237- Fix expression evaluation debugging printfs.
4238
4239- Teach pretty_print_option to print options in option spaces other than
4240 the DHCP option space.
4241
4242- Add a warning message if the RHS of a not is not boolean.
4243
4244- Never select for more than a day, because some implementations of
4245 select will just fail if the timeout is too long (!).
4246
4247- Fix a case where a DHCPDISCOVER from an unknown network would be
4248 silently dropped.
4249
4250- Fix a bug where if a client requested an IP address for which a different
4251 client had the lease, the DHCP server would reallocate it anyway.
4252
4253- Fix the DNS update code so that if the client changes its name, the DNS
4254 will be correctly updated.
4255
3922772a
TL
4256 Changes since 3.0 Beta 2 Patchlevel 8
4257
4258- Oops, there was another subtle math error in the header-length
4259 bounds-checking.
4260
4261 Changes since 3.0 Beta 2 Patchlevel 7
848c2547
TL
4262
4263- Oops, forgot to byte-swap udp header length before bounds-checking it.
4264
3922772a 4265 Changes since 3.0 Beta 2 Patchlevel 6
0f6045f8 4266
f8572308
TL
4267- Fix a possible DoS attack where a client could cause the checksummer
4268 to dump core. This was a read, not a write, so it shouldn't be
4269 possible to exploit it any further than that.
4270
4271- Implement client- and server-side support for using the Client FQDN
4272 option.
4273
4274- Support for other option spaces in the client has been added. This
4275 means that it is now possible to define a vendor option space on the
4276 client, request options in that space from the server (which must
4277 define the same option space), and then use those options in the
4278 client. This also allows NWIP and Client FQDN options to be used
4279 meaningfully.
4280
4281- Add object initializer support. This means that objects can now be
4282 initialized to something other than all-zeros when allocated, which
4283 makes, e.g., the interface object support code a little more robust.
4284
4285- Fix an off-by-one bug in the host stuffer. This was causing host
4286 deletes not the work, and may also have been causing OMAPI
4287 connections to get dropped. Thanks to James Brister for tracking
4288 this one down!
4289
4290- Fixed a core dump in the interface discovery code that is triggered
4291 when there is no subnet declaration for an interface, but the server
4292 decides to continue running. Thanks to Shane Kerr for tracking
4293 down and fixing this problem.
4294
4295 Changes since 3.0 Beta 2 Patchlevel 5
4296
0f6045f8
TL
4297- Fix a bug in the recent enhancement to the interface discovery code
4298 to support arbitrary-length interface lists.
4299
4300- Support NUL-terminated DHCP options when initializing client-script
4301 environment.
4302
4303- Fix suffix operator.
4304
4305- Fix NetWare/IP option parsing.
4306
4307- Better error/status checking in dhcpctl initialization and omapi
4308 connection code.
4309
4310- Fix a potential memory smash in dhcpctl code.
4311
4312- Fix SunOS4 and (maybe) Ultrix builds.
4313
4314- Fix a bug where a certain sort of incoming packet could cause a core
4315 dump on Solaris (and probably elsewhere).
4316
4317- Add some more safety checks in error logging code.
4318
4319- Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
4320
4321- Fix relay agent so that if an interface is specified on the command
4322 line, the relay agent does not dump core.
4323
4324- Fix class matching so that match if can be combined with match or
4325 spawn with.
4326
4327- Do not allow spurious leases in the lease database to introduce
4328 potentially bogus leases into the in-memory database.
4329
4330- Fix a byte-order problem in the client hardware address type code
4331 for OMAPI.
4332
4333- Be slightly less picky about what sort of hardware addresses OMAPI
4334 can install in host declarations.
4335
801de092
TL
4336 Changes since 3.0 Beta 2 Patchlevel 4
4337
4338- Incorporated Peter Marschall's proposed change to array/record
4339 parsing, which allows things like the slp-agent option to be encoded
4340 correctly. Thanks very much to Peter for taking the initiative to
4341 do this, and for doing such a careful job of it (e.g., updating the
4342 comments)!
4343
4344- Added an encoding for the slp-agent option. :')
4345
6ed7a93d
TL
4346- Fixed SunOS 4 build. Thanks to Robert Elz for responding to my
4347 request for help on this with patches!
4348
4349- Incorporated a change that should fix a problem reported by Philippe
4350 Jumelle where when the network connection between two servers is
4351 lost, they never reconnect.
4352
4353- Fix client script files other than that for NetBSD to actually use
4354 make_resolv_conf as documented in the manual page.
4355
4356- Fix a bug in the packet handling code that could result in a core
4357 dump.
4358
4359- Fix a bug in the bootp code where responses on the local net would
4360 be sent to the wrong MAC address. Thanks to Jerry Schave for
4361 catching this one.
4362
490eb5e7
TL
4363 Changes since 3.0 Beta 2 Patchlevel 3
4364
4365- In the DHCP client, execute client statements prior to using the values
45d545f0 4366 of options, so that the client configuration can overridden, e.g., the
490eb5e7
TL
4367 lease renewal time.
4368
4369- Fix a reference counting error that would result in very reproducible
4370 failures in updates, as well as occasional core dumps, if a zone was
4371 declared without a key.
4372
4373- Fix some Linux 2.0 compilation problems.
4374
4375- Fix a bug in scope evaluation during execution of "on" statements that
4376 caused values not to be recorded on leases.
4377
4378- If the dhcp-max-message-size option is specified in scope, and the
4379 client didn't send this option, use the one specified in scope to
4380 determine the maximum size of the response.
4381
592d8153
TL
4382 Changes since 3.0 Beta 2 Patchlevel 2
4383
359b023e
TL
4384- Fix a case where spawning subclasses were being allocated
4385 incorrectly, resulting in a core dump.
4386
592d8153
TL
4387- Fix a case where the DHCP server might inappropriately NAK a
4388 RENEWING client.
4389
4390- Fix a place dhcprequest() where static leases could leak.
4391
4392- Include memory.h in omapip_p.h so that we don't get warnings about
4393 using memcmp().
4394
2aa36519
TL
4395 Changes since 3.0 Beta 2 Patchlevel 1
4396
4397- Notice when SIOCFIGCONF returns more data than fit in the buffer -
4398 allocate a larger buffer, and retry. Thanks to Greg Fausak for
4399 pointing this out.
4400
4401- In the server, if no interfaces were configured, report an error and
4402 exit.
4403
4404- Don't ever record a state of 'startup'.
4405
4406- Don't try to evaluate the local failover binding address if none was
4407 specified. Thanks to Joseph Breu for finding this.