]> git.ipfire.org Git - thirdparty/dhcp.git/blame - RELNOTES
When a release expires or is released, unbill it.
[thirdparty/dhcp.git] / RELNOTES
CommitLineData
da411127 1 Internet Software Consortium DHCP Distribution
87784777
TL
2 Version 3, Release Candidate 1 Patchlevel 1
3 April 18, 2001
72c7bd79
TL
4
5 Release Notes
6
74f45f96
TL
7This is a development snapshot of Version 3 of the Internet Software
8Consortium DHCP Distribution.
72c7bd79 9
da411127 10 NEW FEATURES
16449d9c 11
6d779c72
TL
12Version 3 of the ISC DHCP Distribution includes the following features
13that are new since version 2.0:
29d5553a 14
da411127
TL
15 - DHCP Failover Protocol support
16 - OMAPI, an API for accessing and modifying the DHCP server and
17 client state.
18 - Conditional behaviour
19 - Storing arbitrary information on leases
20 - Address pools with access control
21 - Client classing
22 - Address allocation restriction by class
23 - Relay agent information option support
24 - Dynamic DNS updates
25 - Many bug fixes, performance enhancements, and minor new DHCP
26 protocol features.
72c7bd79 27
6d779c72
TL
28This release has been beta tested quite thorougly, and we think it is
29substantially more robust at this time than 2.0pl5. The release
30candidate is expected to be free of serious bugs, but it's called a
31release candidate because we want people to try it and find any last
32real problems before we call it done. We do not expect to add
33anything other than documentation and any remaining bug fixes to the
343.0 release.
35
36The 3.0 Release Candidate 1 lease file is not backwards compatible
f67f6c4a
TL
37with the 3.0 Beta 1 lease file, so if you have to go back, you will
38have to convert your lease files back to the 3.0 Beta 1 format - if
87784777 39you try to run a 3.0 Beta 1 server on a 3.0 lease file, it will
6d779c72
TL
40cheerfully delete all your leases.
41
42If you are running 3.0 beta 1 and are doing dynamic DNS updates, the
43lease file is no longer forward-compatible to 3.0 final. A script
44has been provided to convert 3.0b1 lease files. This is in
45contrib/3.0b1-lease-convert.
4ff4053b 46
ca4606b5
TL
47For information on how to install, configure and run this software,
48as well as how to find documentation and report bugs, please consult
49the README file.
50
da411127
TL
51The Dynamic DNS Update support is a descendent of an implementation
52done by Lans Carstensen and Brian Dols at Rose-Hulman Institute of
de57e64b
TL
53Technology, Jim Watt at Applied Biosystems, Irina Goble at Integrated
54Measurement Systems, Igor Sharfmesser at Kazakh Telecom, and Brian
55Murrell at BC Tel Advanced Communications. I'd like to express my
56thanks to all of these good people here, both for working on the code
57and for prodding me into improving it.
58
87784777
TL
59 Changes since 3.0 Release Candidate 1
60
61- Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
62 Transmeta.
63
64- Fix a memory smash that happens when fixed-address leases are used.
65 ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
66 UPGRADE IMMEDIATELY. This has been a long-standing bug - thanks to
67 Alvise Nobile for discovering it and helping me to find it!
68
69- There is a known problem with the DHCP server doing failover on
70 Compaq Alpha systems. This patchlevel is not a release candidate
71 because of this bug. The bug should be straightforward to fix, so
72 a new release candidate is expected shortly.
73
74- There is a known problem in the DDNS update code that is probably a
75 bug, and is not, as far as we know, fixed in this patchlevel.
76
77
6d779c72
TL
78 Changes since 3.0 Beta 2 Patchlevel 24
79
80- Went over problematic failover state transitions and made them all
81 work, so that failover should now much less fragile.
82
83- Add some dhcpctl and omapi documentation
84
85- Fix compile errors when compiling with unusual predefines.
86
87- Make Token Ring work on Linux 2.4
88
89- Fix the Digital Unix BPF_WORDALIGN bug.
90
91- Fix some dhcp client documentation errors.
92
93- Update some parts of the README file.
94
95- Support GCC on SCO.
96
de57e64b
TL
97 Changes since 3.0 Beta 2 Patchlevel 23
98
99- Fix a bug in the DNS update code where a status code was not being
100 checked. This may have been causing core dumps.
101
102- When parsing the lease file, if a lease declaration includes a
103 billing class statement, and the lease already has a billing class,
104 unbill the old class.
105
106- When processing failover transactions, where acks will be deferred,
107 process the state transition immediately.
108
109- Don't try to use the new SIOCGIFCONF buffer size detection code on
110 Linux 2.0, which doesn't provide this functionality.
111
112- Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
113
114- Fix a problem in using the which command in the configure script.
115
116- Fix a parse error in the client when setting up an omapi listener.
117
118- Document the -n and -g flags to the client.
119
120- Make sure there is always a stdin and stdout on startup. This
121 prevents shell scripts from accidentally writing error messages into
122 configuration files that happen to be opened as stderr.
123
124- If an interface is removed, the client will now notice that it is
125 gone rather than spinning. This has only been tested on NetBSD.
126
127- The client will attempt to get an address even if it can't create a
128 lease file.
129
130- Don't overwrite tracefiles.
131
132- Fix some memory allocation bugs in failover.
2aa36519 133
140158d3
TL
134 Changes since 3.0 Beta 2 Patchlevel 22
135
136- Apply some patches suggested by Cyrille Lefevre, who is maintaining
137 the FreeBSD ISC DHCP Distribution port.
138
139- Fix a core dump in DHCPRELEASE.
140
3a395e60
TL
141 Changes since 3.0 Beta 2 Patchlevel 21
142
143- This time for sure: fix the spin described in the changes for pl20.
144
fc74dd0c
TL
145 Changes since 3.0 Beta 2 Patchlevel 20
146
147- Fix a problem with Linux detecting large numbers of interfaces (Ben)
148
149- Fix a memory smash in the quotify code, which was introduced in
150 pl19.
151
152- Actually fix the spin described in the changes for pl20. The
153 previous fix only partially fixed the problem - enough to get it
154 past the regression test.
155
ed5ee591
TL
156 Changes since 3.0 Beta 2 Patchlevel 19
157
158- Fix a bug that could cause the server to abort if compiled with
159 POINTER_DEBUG enabled.
160
161- Fix a bug that could cause the server to spin when responding to a
162 DHCPREQUEST.
163
164- Apply Joost Mulders' suggested patches for DLPI on x86.
165
166- Support NUL characters in quoted strings.
167
168- Install unformatted man pages on SunOS.
169
b3fad8ac
TL
170 Changes since 3.0 Beta 2 Patchlevel 18
171
3350f5b7
TL
172- Allow the server to be placed in partner-down state using OMAPI.
173 (Damien Neil)
174
175- Implement omshell, which can be used to do arbitrary things to the
176 server (in theory). (Damien Neil)
177
178- Fix a case where if a client had two different leases the server could
179 actually dereference the second one when it hadn't been referenced,
180 leading to memory corruption and a core dump. (James Brister)
181
182- Fix a case where a client could request the address of another client's
183 lease, but find_lease wouldn't detect that the other client had it, and
184 would attempt to allocate it to the client, resulting in a lease conflict
185 message.
186
187- Fix a case where a client with more than one client identifier could be
188 given a lease where the hardware address was correct but the client
189 identifier was not, resulting in a lease conflict message.
190
191- Fix a problem where the server could write out a colon-seperated
192 hex list as a value for a variable, which would then not parse.
193 The fix is to always write strings as quoted strings, with any
194 non-printable characters quoted as octal escape sequences. So
195 a file written the old way still won't work, but new files written
196 this way will work.
197
b3fad8ac
TL
198- Fix documentation for sending non-standard options.
199
200- Use unparsable names for unknown options. WARNING: this will
201 break any configuration files that use the option-nnn convention.
202 If you want to continue to use this convention for some options,
203 please be sure to write a definition, like this:
204
205 option option-nnn code nnn = string;
206
207 You can use a descriptive name instead of option-nnn if you like.
208
209- Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
210 DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence. This was the
211 result of a deceptively silly bug in supersede_lease.
212
213- Fix client script exit status check, according to a fix supplied by
214 Hermann Lauer.
215
216- Fix an endianness bug in the tracefile support, regarding ICMP
217 messages.
218
3350f5b7
TL
219- Fix a bug in the client where the medium would not work correctly if
220 it contained quoted strings.
221
b3fad8ac
TL
222 ** there was no pl17 **
223
e6d30fd6
TL
224 Changes since 3.0 Beta 2 Patchlevel 16
225
6da9db9d
TL
226- Add support for transaction tracing. This allows the state of the
227 DHCP server on startup, and all the subsequent transactions, to be
228 recorded in a file which can then be played back to reproduce the
229 behaviour of the DHCP server. This can be used to quickly
230 reproduce bugs that cause core dumps or corruption, and also for
231 tracking down memory leaks.
232
233- Incorporate some bug fixes provided by Joost Mulders for the DLPI
234 package which should clear up problems people have been seeing on
235 Solaris.
236
237- Fix bugs in the handling of options stored as linked lists (agent
238 options, fqdn options and nwip options) that could cause memory
239 corruption and core dumps.
240
241- Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
242 not being send in some cases when they were needed.
243
244- Make the lease structure somewhat more compact.
245
246- Make initial failover startup *much* faster. This was researched
247 and implemented by Damien Neil.
248
249- Add a --version flag to all executables, which prints the program
250 name and version to standard output.
251
252- Don't rewrite the lease file every thousand leases.
253
e6d30fd6
TL
254- A bug in nit.c for older SunOS machines was fixed by a patch sent in
255 by Takeshi Hagiwara.
256
6da9db9d
TL
257- Fix a memory corruption bug in the DHCP client.
258
259- Lots of documentation updates.
260
261- Add a feature allowing environment variables to be passed to the
262 DHCP client script on the DHCP client command line.
263
264- Fix client medium support, which had been broken for some time.
265
266- Fix a bug in the DHCP client initial startup backoff interval, which
267 would cause two DHCPDISCOVERS to be sent back-to-back on startup.
268
269
af49fdff
TL
270 Changes since 3.0 Beta 2 Patchlevel 15
271
272- Some documentation tweaks.
273
274- Maybe fix a problem in the DLPI code.
275
276- Fix some error code space inconsistencies in ddns update code.
277
278- Support relay agents that intercept unicast DHCP messages to stuff
279 agent options into them.
280
281- Fix a small memory leak in the relay agent option support code.
282
c5b569f8
TL
283- Fix a core dump that would occur if a packet was sent with no
284 options.
285
754ae3e9
TL
286 Changes since 3.0 Beta 2 Patchlevel 14
287
288- Finish fixing a long-standing bug in the agent options code. This
289 was causing core dumps and failing to operate correctly - in
290 particular, agent option stashing wasn't working. Agent option
291 stashing should now be working, meaning that agent options can be
292 used in class statements to control address allocation.
293
294- Fix up documentation.
295
296- Fix a couple of small memory leaks that would have added up
297 significantly in a high-demand situation.
298
299- Add a log-facility configuration parameter.
300
301- Fix a compile error on some older operating systems.
302
303- Add the ability in the client to execute certain statements before
304 transmitting packets to the server. Handy for debugging; not much
305 practical use otherwise.
306
307- Don't send faked-out giaddr when renewing or bound - again, useful
308 for debugging.
309
2f2e7960
TL
310 Changes since 3.0 Beta 2 Patchlevel 13
311
312- Fixed a problem where the fqdn decoder would sometimes try to store
313 an option with an (unsigned) negative length, resulting in a core
314 dump on some systems.
315
316- Work around the Win98 DHCP client, which NUL-terminates the FQDN
317 option.
318
319- Work around Win98 and Win2k clients that will claim they want to do
320 the update even when they don't have any way to do it.
321
322- Fix some log messages that can be printed when failover is operating
323 that were not printing enough information.
324
325- It was possible for a DHCPDISCOVER to get an allocation even when
326 the state machine said the server shouldn't be responding.
327
328- Don't load balance DHCPREQUESTs from clients in RENEWING and
329 REBINDING, since in RENEWING, if we heard it, it's for us, and in
330 REBINDING, the client wouldn't have got to REBINDING if its primary
331 were answering.
332
333- When we get a bogus state lease binding state transition, don't do
334 the transition.
335
336
66e98927
TL
337 Changes since 3.0 Beta 2 Patchlevel 12
338
339- Fixed a couple of silly compile errors.
340
a1e2e3d6
TL
341 Changes since 3.0 Beta 2 Patchlevel 11
342
343- Albert Herranz tracked down and fixed a subtle bug in the base64
344 decoder that would prevent any key with an 'x' in its base64
345 representation from working correctly.
346
347- Thanks to Chris Cheney and Michael Sanders, we have a fix for the
348 hang that they both spotted in the DHCP server - when
349 one-lease-per-client was set, the code to release the "other" lease
350 could spin.
351
352- Fix a problem with alignment of the input buffer in bpf in cases
353 where two packets arrive in the same bpf read.
354
355- Fix a problem where the relay agent would crash if you specified an
356 interface name on the command line.
357
358- Add the ability to conditionalize client behaviour based on the
359 client state.
360
361- Add support for the FQDN option, and added support for a new way of
362 doing ddns updates (ddns update style interim) that allows more than
363 one DHCP server to update the DNS for the same network(s). This
364 was implemented by Damien Neil with some additional functionality
365 added by Ted Lemon.
366
367- Damien added a "log" statement, so that the configuration file can
368 be made to log debugging information and other information.
369
370- Fixed a bug that caused option buffers not to be terminated with an
371 end option.
372
373- Fixed a long-standing bug in the support for option spaces where the
374 options are stored as an ordered list rather than in a hash table,
375 which could theoretically result in memory pool corruption.
376
377- Prevent hardware declarations with no actual hardware address from
378 being written as something unparsable, and behave correctly in the
379 face of a null hardware address on input.
380
381- Allow key names to be FQDNs, and qualify the algorithm name if it is
382 specified unqualified.
383
384- Modify the DDNS update code so that it never prints the "resolver
385 failed" message, but instead says *why* the resolver failed.
386
387- Officially support the subnet selection option, which now has an
388 RFC.
389
390- Fix a build bug on MacOS X.
391
392- Allow administrator to disable ping checking.
393
394- Clean up dhcpd.conf documentation and add more information about how
395 it works.
396
6c68ec36
TL
397 Changes since 3.0 Beta 2 Patchlevel 10
398
399- Fix a bug introduced during debugging (!) and accidentally committed
400 to CVS.
401
9fd337e7
TL
402 Changes since 3.0 Beta 2 Patchlevel 9
403
404- Fix DHCP client handling of vendor encapsulated options.
405
406- Fix a bug in the handling of relay agent information options introduced
407 in patchlevel 9.
408
409- Stash agent options on client leases by default, and use the stashed
410 options at renewal time.
411
412- Add the ability to test the client's binding state in the client
413 configuration language.
414
415- Fix a core dump in the DNS update code.
416
417- Fix some expression evaluation bugs that were causing updates to be
418 done when no client hostname was received.
419
420- Fix expression evaluation debugging printfs.
421
422- Teach pretty_print_option to print options in option spaces other than
423 the DHCP option space.
424
425- Add a warning message if the RHS of a not is not boolean.
426
427- Never select for more than a day, because some implementations of
428 select will just fail if the timeout is too long (!).
429
430- Fix a case where a DHCPDISCOVER from an unknown network would be
431 silently dropped.
432
433- Fix a bug where if a client requested an IP address for which a different
434 client had the lease, the DHCP server would reallocate it anyway.
435
436- Fix the DNS update code so that if the client changes its name, the DNS
437 will be correctly updated.
438
3922772a
TL
439 Changes since 3.0 Beta 2 Patchlevel 8
440
441- Oops, there was another subtle math error in the header-length
442 bounds-checking.
443
444 Changes since 3.0 Beta 2 Patchlevel 7
848c2547
TL
445
446- Oops, forgot to byte-swap udp header length before bounds-checking it.
447
3922772a 448 Changes since 3.0 Beta 2 Patchlevel 6
0f6045f8 449
f8572308
TL
450- Fix a possible DoS attack where a client could cause the checksummer
451 to dump core. This was a read, not a write, so it shouldn't be
452 possible to exploit it any further than that.
453
454- Implement client- and server-side support for using the Client FQDN
455 option.
456
457- Support for other option spaces in the client has been added. This
458 means that it is now possible to define a vendor option space on the
459 client, request options in that space from the server (which must
460 define the same option space), and then use those options in the
461 client. This also allows NWIP and Client FQDN options to be used
462 meaningfully.
463
464- Add object initializer support. This means that objects can now be
465 initialized to something other than all-zeros when allocated, which
466 makes, e.g., the interface object support code a little more robust.
467
468- Fix an off-by-one bug in the host stuffer. This was causing host
469 deletes not the work, and may also have been causing OMAPI
470 connections to get dropped. Thanks to James Brister for tracking
471 this one down!
472
473- Fixed a core dump in the interface discovery code that is triggered
474 when there is no subnet declaration for an interface, but the server
475 decides to continue running. Thanks to Shane Kerr for tracking
476 down and fixing this problem.
477
478 Changes since 3.0 Beta 2 Patchlevel 5
479
0f6045f8
TL
480- Fix a bug in the recent enhancement to the interface discovery code
481 to support arbitrary-length interface lists.
482
483- Support NUL-terminated DHCP options when initializing client-script
484 environment.
485
486- Fix suffix operator.
487
488- Fix NetWare/IP option parsing.
489
490- Better error/status checking in dhcpctl initialization and omapi
491 connection code.
492
493- Fix a potential memory smash in dhcpctl code.
494
495- Fix SunOS4 and (maybe) Ultrix builds.
496
497- Fix a bug where a certain sort of incoming packet could cause a core
498 dump on Solaris (and probably elsewhere).
499
500- Add some more safety checks in error logging code.
501
502- Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
503
504- Fix relay agent so that if an interface is specified on the command
505 line, the relay agent does not dump core.
506
507- Fix class matching so that match if can be combined with match or
508 spawn with.
509
510- Do not allow spurious leases in the lease database to introduce
511 potentially bogus leases into the in-memory database.
512
513- Fix a byte-order problem in the client hardware address type code
514 for OMAPI.
515
516- Be slightly less picky about what sort of hardware addresses OMAPI
517 can install in host declarations.
518
801de092
TL
519 Changes since 3.0 Beta 2 Patchlevel 4
520
521- Incorporated Peter Marschall's proposed change to array/record
522 parsing, which allows things like the slp-agent option to be encoded
523 correctly. Thanks very much to Peter for taking the initiative to
524 do this, and for doing such a careful job of it (e.g., updating the
525 comments)!
526
527- Added an encoding for the slp-agent option. :')
528
6ed7a93d
TL
529- Fixed SunOS 4 build. Thanks to Robert Elz for responding to my
530 request for help on this with patches!
531
532- Incorporated a change that should fix a problem reported by Philippe
533 Jumelle where when the network connection between two servers is
534 lost, they never reconnect.
535
536- Fix client script files other than that for NetBSD to actually use
537 make_resolv_conf as documented in the manual page.
538
539- Fix a bug in the packet handling code that could result in a core
540 dump.
541
542- Fix a bug in the bootp code where responses on the local net would
543 be sent to the wrong MAC address. Thanks to Jerry Schave for
544 catching this one.
545
490eb5e7
TL
546 Changes since 3.0 Beta 2 Patchlevel 3
547
548- In the DHCP client, execute client statements prior to using the values
549 of options, so that the client configuration can overried, e.g., the
550 lease renewal time.
551
552- Fix a reference counting error that would result in very reproducible
553 failures in updates, as well as occasional core dumps, if a zone was
554 declared without a key.
555
556- Fix some Linux 2.0 compilation problems.
557
558- Fix a bug in scope evaluation during execution of "on" statements that
559 caused values not to be recorded on leases.
560
561- If the dhcp-max-message-size option is specified in scope, and the
562 client didn't send this option, use the one specified in scope to
563 determine the maximum size of the response.
564
592d8153
TL
565 Changes since 3.0 Beta 2 Patchlevel 2
566
359b023e
TL
567- Fix a case where spawning subclasses were being allocated
568 incorrectly, resulting in a core dump.
569
592d8153
TL
570- Fix a case where the DHCP server might inappropriately NAK a
571 RENEWING client.
572
573- Fix a place dhcprequest() where static leases could leak.
574
575- Include memory.h in omapip_p.h so that we don't get warnings about
576 using memcmp().
577
2aa36519
TL
578 Changes since 3.0 Beta 2 Patchlevel 1
579
580- Notice when SIOCFIGCONF returns more data than fit in the buffer -
581 allocate a larger buffer, and retry. Thanks to Greg Fausak for
582 pointing this out.
583
584- In the server, if no interfaces were configured, report an error and
585 exit.
586
587- Don't ever record a state of 'startup'.
588
589- Don't try to evaluate the local failover binding address if none was
590 specified. Thanks to Joseph Breu for finding this.