-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRELNOTES
2805 lines (1916 loc) · 106 KB
/
RELNOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Internet Systems Consortium DHCP Distribution
Version 4.1.1-P1
17 May 2010
Release Notes
NEW FEATURES
ISC DHCP 4.1.x includes several new DHCPv6 features that were not included
in DHCP 4.0.x. These include:
- Support for the rapid-commit option on the client side
- Prefix Delegation support
- IA_TA address support
- A basic DHCPv6 relay agent
- Basic and partial DHCPv6 leasequery support
There are a number of DHCPv6 limitations and features missing in this
release, which will be addressed in the future:
- Only Solaris, Linux, FreeBSD, NetBSD, and OpenBSD are supported.
- Only a single address is supported per IA.
- DHCPv6 includes human-readable text in status code messages. These
should be configurable, and probably localized via gettext() or the
like.
- The "host-identifier" option is limited to a simple token.
- The client and server can only operate DHCPv4 or DHCPv6 at a time,
not both. To use both protocols simultaneously, two instances of the
relevant daemon are required, one with the '-6' command line option.
For information on how to install, configure and run this software, as
well as how to find documentation and report bugs, please consult the
README file.
ISC DHCP uses standard GNU configure for installation. Please review the
output of "./configure --help" to see what options are available.
The system has only been tested on Linux, FreeBSD, and Solaris, and may not
work on other platforms. Please report any problems and suggested fixes to
<dhcp-users@isc.org>.
Changes since 4.1.1
- A bug was fixed that could cause the DHCPv6 server to advertise/assign a
previously allocated (active) lease to a client that has changed subnets,
despite being on different shared networks. Dynamic prefixes specifically
allocated in shared networks also now are not offered if the client has
moved. [ISC-Bugs #21152]
! Accept a client id of length 0 while hashing. Previously the server would
exit if it attempted to hash a zero length client id, providing attackers
with a simple denial of service attack. [ISC-Bugs #21253]
Changes since 4.1.1rc1
- When using 'ignore client-updates;', the FQDN returned to the client
is no longer truncated to one octet.
Changes since 4.1.1b3
- None.
Changes since 4.1.1b2
- Fix test in dhcp_interface_signal_handler to check that the inner handler
has a signal_handler before calling it.
- Both host and subnet6 configuration groups are now included whether a
fixed-address6 (DHCPv6) is in use or not. Host scoped configuration takes
precedence. This fixes two bugs, one where host scoped configuration
would not be included from a non-fixed-address6 host record, and the equal
and opposite bug where subnet6 scoped configuration would not be used when
over-riding values were not present in a matching fixed-address6 host
configuration.
- ./configure now checks to ensure the intX_t and u_intX_t types are defined,
correcting a compilation failure when using Sun's compiler.
- Modified the handling of a connection to avoid releasing the omapi io
object for the connection while it is still in use. One symptom from
this error was a segfault when a failover secondary attempted to connect
to the failover primary if their clocks were not synchronized.
Changes since 4.1.1b1
- Remove infinite loop in token_print_indent_concat().
- Memory leak in the load_balance_mine() function is fixed. This would
leak ~20-30 octets per DHCPDISCOVER packet while failover was in use
and in normal state.
- Various compilation fixes have been included for the memory related
DEBUG #defines in includes/site.h.
- Fixed Linux client script 'unary operator expected' errors with DHCPv6.
- Fixed setting hostname in Linux hosts that require hostname argument
to be double-quoted. Also allow server-provided hostname to
override hostnames 'localhost' and '(none)'.
- Added client support for setting interface MTU and metric, thanks to
Roy "UberLord" Marples <roy@marples.name>.
- Fixed failover reconnection retry code to continue to retry to reconnect
rather than restarting the listener.
- Compilation on Solaris with USE_SOCKETS defined in includes/site.h has
been repaired. Other USE_ overrides should work better.
- A check for the local flavor of IFNAMSIZ had a broken 'else' condition,
that probably still resulted in the correct behaviour (but wouldn't use
a larger defined value provided by the host OS).
- Fixed a bug where an OMAPI socket disconnection message would not result
in scheduling a failover reconnection, if the link had not negotiated a
failover connect yet (e.g.: connection refused, asynch socket connect()
timeouts).
- A bug was fixed that caused the 'conflict-done' state to fail to be parsed
in failover state records.
! A stack overflow vulnerability was fixed in dhclient that could allow
remote attackers to execute arbitrary commands as root on the system,
or simply terminate the client, by providing an over-long subnet-mask
option. CERT VU#410676 - CVE-2009-0692
- Versions 3.0.x syntax with multiple name->code option definitions is now
supported. Note that, similarly to 3.0.x, for by-code lookups only the
last option definition is used.
- Fixed a bug where a time difference of greater than 60 seconds between a
failover pair could cause the primary to crash on contact with the
secondary. Thanks to a patch from Steinar Haug.
- Don't look for IPv6 interfaces on Linux when running in DHCPv4 mode.
Thanks to patches from Matthew Newton and David Cantrell.
- Secondary servers in a failover pair will now perform ddns removals if
they had performed ddns updates on a lease that is expiring, or was
released through the primary. As part of the same fix, stale binding scopes
will now be removed if a change in identity of a lease's active client is
detected, rather than simply if a lease is noticed to have expired (which it
may have expired without a failover server noticing in some situations).
- A patch supplied by David Cantrell at RedHat was applied that detects
invalid calling parameters given to the ns_name_ntop() function.
Specifically, it detects if the caller passed a pointer and size pair
that causes the pointer to integer-wrap past zero.
! Fixed a fenceposting bug when a client had two host records configured,
one using 'uid' and the other using 'hardware ethernet'. CVE-2009-1892
Changes since 4.1.0
- Validate the argument to the -p option.
- The notorious 'option <unknown> ... larger than buffer' log line,
which is seen in some malformed DHCP client packets, was modified.
It now logs the universe name, and does not log the length values
(which are bogus corruption read from the packet anyway). It also
carries a hopefully more useful explanation.
- A bug was fixed that caused the server not to answer some valid Solicit
and Request packets, if the dynamic range covering any requested addresses
had been deleted from configuration.
- Suppress spurious warnings from configure about --datarootdir
- Update the code to deal with GCC 4.3. This included two sets of changes.
The first is to the configuration files to include the use of
AC_USE_SYSTEM_EXTENSIONS. The second is to deal with return values that
were being ignored.
- The db-time-format option was documented in manpages.
- Using reserved leases no longer results in 'lease with binding state
free not on its queue' error messages, thanks to a patch from Frode
Nordahl.
- DDNS removal routines were updated so that the DHCID is not removed until
the client has been deprived of all A and AAAA records (not only the last
one of either of those). This resolves a bug where dual stack clients
would not be able to regain their names after either expiration event.
- Fix a build error in dhcrelay, using older versions of gcc with
dhcpv6 disabled.
- Two uninitialized stack structures are now memset to zero, thanks to
patch from David Cantrell at Red Hat.
- Fixed a cosmetic bug where pretty-printing valid domain-search options would
result in an erroneous error log message ('garbage in format string').
- A bug in DLPI packet transmission (Solaris, HP/UX) that caused the server
to stop receiving packets is fixed. The same fix also means that the MAC
address will no longer appear 'bogus' on DLPI-based systems.
- A bug in select handling was discovered where the results of one select()
call were discarded, causing the server to process the next select() call
and use more system calls than required. This has been repaired - the
sockets will be handled after the first return from select(), resulting in
fewer system calls.
- The update-conflict-detection feature would leave an FQDN updated without
a DHCID (still currently implemented as a TXT RR). This would cause later
expiration or release events to fail to remove the domain name. The feature
now also inserts the client's up to date DHCID record, so records may safely
be removed at expiration or release time. Thanks to a patch submitted by
Christof Chen.
Changes since 4.1.0b1
- A missing "else" in dhcrelay.c could have caused an interface not to
be recognized.
Changes since 4.1.0a2
- A cosmetic bug in DHCPDECLINE processing was fixed which caused all
successful DHCPDECLINEs to be logged as "not found" rather than
"abandoned".
- Added configuration file examples for DHCPv6.
- Some failover debugging #defines have been better defined and some
high frequency messages moved to a deeper debugging symbol.
- The CLTT parameter in failover is now only updated by client activity,
and not by failover binding updates (taking on the peer's CLTT).
- Failover BNDUPD messages are now discarded if they conflict with an
update that has been transmitted, but not acknowledged.
- A bug cleaning up unknown-xxx temporary option definitions was fixed.
- Delayed-ack is now a compile-time option, compiled out by default.
This feature is simply too experimental for right now, and causes
some problems to some failover installations. We will revisit this
in future releases.
- The !inet_pton() call in res_mkupdrec was adjusted to '<= 0' as
inet_pton returns either 1, 0, or -1.
- A dhclient-script for MacOS X has been included, which enables
'dhclient -6' support.
Changes since 4.1.0a1
- Corrected list of failover state values in dhcpd man page.
- Fixed a bug that caused some request types to be logged incorrectly.
- Clients that sent a parameter request list containing the
routers option before the subnet mask option were receiving
only the latter. Fixed.
- The server wasn't always sending the FQDN option when it should.
- A partner-down failover server no longer emits 'peer holds all free leases'
if it is able to newly-allocate one of the peer's leases.
- Fixed a coredump when adding a class via OMAPI.
- Check whether files are zero length before trying to parse them.
- Ari Edelkind's PARANOIA patch has been included and may be compiled in
via two ./configure parameters, --enable-paranoia and
--enable-early-chroot.
- ./configure was extended to cover many optional build features, such
as failover, server tracing, debugging, and the execute() command.
- There is now a default 1/4 of a second scheduled delay between delayed
fsync()'s, it can be configured by the max-ack-delay configuration
parameter.
- A bug was fixed where the length of a hostname was miscalculated, so that
hosts were given odd-looking domain names ("foo.bar.ba.example.com").
- Shared network selection should be done from the innermost relay
valid link-address field, rather than the outermost.
- Prefix pools are attached to shared network scopes.
- Merged IA_XX related structures.
- Add DHCPv6 files in configure.
- A memory leak when using omapi has been fixed.
- DHCPv6 vendor-class options (VSIO) are now only sent when they appear
on the DHCPv6 ORO. This resolves a bug where VSIO options were placed
in IA_NA encapsulated options fields.
- Integrated client with stateless, temporary address and prefix delegation
support.
- A double-dereference in dhclient transmission of DHCPDECLINEs was
repaired.
- Fix handling of format code 'Z'.
- Support "-1" argument in DHCPv6.
- Merge DHCPv6-only "dhcrelay6" into general-purpose "dhcrelay" (use
"-6" option to select DHCPv6 mode).
- Fix handling of -A and -a flags in dhcrelay; it was failing to expand
packet size as needed to add relay agent options.
- A bug in subnet6 parsing where options contained in subnet6 clauses would
not be applied to clients addressed within that network was repaired.
- When configuring a "subnet {}" or "subnet6 {}" without an explicit
shared-network enclosing it, the DHCP software would synthesize a
shared-network to contain the subnet. However, all configuration
parameters within the subnet more intuitively belong "to any client
on that interface", or rather the synthesized shared-network. So,
when a shared-network is synthesized, it is used to contain the
configuration present inside the subnet {} clause. This means that
the configuration will be valid for all clients on that network, not
just those addressed out of the stated subnet. If you intended the
opposite, the workaround is to explicitly configure an empty
shared-network.
- A bug was fixed where Information-Request processing was not sourcing
configured option values.
- A warning was added since the DHCPv6 processing software does not yet
support class statements.
- Compliation warnings on GCC 4.3 relating to bootp source address
selection were repaired.
- The v6 BSD socket method was updated to use a single UDP BSD socket
no matter how many interfaces are involved, differentiating the
interfaces the packets were received on by the interface index supplied
by the OS.
- The relay agent no longer listens to the All DHCP Servers Multicast
address.
- A bug was fixed in data_string_sprintfa() where va_start was only called
once for two invocations of vsprintf() variants.
- ERO (RFC 4994) server support.
- Basic and partial DHCPv6 leasequery support.
- Reliable DHCPv6 release (previous behavior, send release and exit, is
still available with dhclient -6 -1 -r).
Changes since 4.0.0 (new features)
- Added DHCPv6 rapid commit support.
- Added explicit parser support for zero-length DHCP options, such as
rapid-commit, via format code 'Z'.
- It's now possible to update the "ends" field of a lease with OMAPI.
This is useful if you want not only to release a lease, but also make
it available for reuse right away. Hat tip to Christof Chen.
- Fixed definition of the iaaddr hash functions to use the correct
functions when referencing and dereferencing memory.
- Some definitions not in phase with the IANA registry were updated.
- Allocated interface IDs are better controlled ('u' bit set to zero,
reserved IDs avoided).
- Unicast options are taken into account only for RENEWs.
- NoAddrsAvail answers to SOLICITs are always ADVERTISEs even when a SOLICIT
carries a rapid-commit option.
- Return in place of raise an impossible condition when one tries to release
an empty active lease.
- Timer granularity is now 1/100s in the DHCPv6 client.
- The dhclient-script was updated to create a host route for the default
gateway if the supplied subnet mask for an IPv4 address was a /32. This
allows the client to work in 'captive' network environments, where the
operator does not want clients to crosstalk directly.
- MINUS tokens should be parseable again.
- Multiple (up to "delayed-ack x;" maximum) DHCPv4 packets are now queued and
released in bursts after single fsync() events when the upper limit is
reached or if the receiving sockets go dry. The practical upshot is
that fsync-coupled server performance is now multiplicitively increased.
The default delayed ack limit is 28. Thanks entirely to a patch from
Christof Chen.
Changes since 4.0.0 (bug fixes)
- DHCP now builds on AIX.
- Exit with warning when DHCPv6-specific statements are used in the
config file but -6 is not specified.
- Fixed "--version" flag in dhcrelay
- The 'min-secs' configuration parameter's log message has been updated to
be more helpful.
- The warning logged when an address range doesn't fit in the subnets
they were declared has been updated to be more helpful and identify the
typo in configuration that created the spanning addresses.
- A bug in failover pool rebalancing that caused POOLREQ message ping-pongs
was repaired.
- A flaw in failover pool rebalancing that could cause POOLREQ messages to
be sent outside of the min-balance/max-balance scheduled intervals has
been repaired.
- A cosmetic bug during potential-conflict recovery that caused the peer's
'conflict-done' state message to be logged as 'unknown-state' has been
repaired. It is now logged correctly.
- A bug was fixed where the 'giaddr' may be used to find the client's subnet
rather than its own 'ciaddr'.
- A log message was introduced to clarify the situation where a failover
'address' parameter (the server's local address) did not resolve to an
IPv4 address.
- The minimum site code value was set to 224 in 3.1.0 to track RFC3942. This
broke a lot of legacy site local configurations. The new code in place will
track site local space minimum option codes and logs a warning to encourage
updates and exploration of site local code migration problems. Option
codes less than 128 in site local spaces remain inaccessible.
- A possible relay agent option bug was repaired where random server
initialization state may have been used to signal the relay agent
information options sub-option code for the 'END' of the option space.
- Fixes to allow code to compile and run on Solaris 9.
- Fixes to allow code to compile on Mac OS X Leopard (10.5).
- When server is configured with options that it overrides, a warning is
issued when the configuration file is read, rather than at the time the
option is overridden. This was important, because the warning was given
every time the option was overridden, which could create a lot of
unnecessary logging.
- Fixed a compilation problems on platforms that define a value for FDDI,
which conflicts with a dhcp configuration syntax token by the same name.
- When a failover server suspects it has encountered a peer running a
version 3.0.x failover server, a warning that the failover wire protocol
is incompatible is printed.
- The failover server no longer issues a floating point error if it encounters
a previously undefined option code.
- Fix startup error messages to report a missing "subnet6 declaration", rather
than a missing "subnet declaration", when running as a DHCPv6 server.
- DHCPv6 client timestamp in DUID was based on the year 1970 rather
than the year 2000.
- Warn when attempting to use a hardware parameter in DHCPv6.
- DHCPv6 released resources are now marked as released by the client.
- 'Soft' bindings have no more side-effects.
Changes since 4.0.0b3
- The reverse dns name for PTR updates on IPv6 addresses has been fixed to
use ip6.arpa. rather than default to in-addr.arpa and require user
configuration.
- dhc6_lease_destroy() and dhc6_ia_destroy() now set lease and IA pointers
to NULL after freeing, to prevent subsequent accesses to freed memory.
- The DHCPv6 server would not send the preference option unless the
client requested it, via the ORO. This has been fixed, so the DHCPv6
server will always send the preference value if it is configured.
- When addresses were passed as hints to the server in an IA, they were
incorrectly handled, sometimes being treated as an error. Now the
server will treat these as hints and ignore them if it cannot supply
a requested address.
- If the client had multiple addresses, and one expired (was not renewed
by the server), the client would continue to attempt to renew the same
old address over and over. Now, the client will omit any expired
addresses from future Confirm, Renew, or Rebind messages.
- dhclient -6 will now select renew/rebind timers based upon the longest
address expiration time rather than the shortest expiration time, in
order to avoid cascading renewals in the event a server elects not to
extend one of multiple IAADDR leases.
- The server now limits clients that request multiple addresses to one
address per IA by default, which can be adjusted through the
"limit-addrs-per-ia" configuration option.
- The DHCPv6 client now issues fresh transaction IDs on Renew and Rebind
message exchanges, rather than using the most recent ID.
- The DHCPv6 server now replies to Information-Request messages.
- A bug was fixed in the dhclient-script for BSDs to correctly carry error
codes through some conditions.
- The parsing of some options in the dhclient lease file, in particular
the success DHCPv6 status-code, was fixed.
- A bug was fixed that caused the DHCPv6 ORO option to be corrupted with
seemingly random values.
- A reference overleak in DHCPv6 shared network processing was repaired.
- ./configure now autodetects local database locations rather than trying
to put dhcpd.leases and dhclient.leases in /usr/local/var/db, which no
one ever has.
- Regression fix for bug where server advertised a IPv6 address in
response to a SOLICIT but would not return the address in response
to a REQUEST.
- A bug was fixed where the DHCPv6 server puts the NoAddrsAvail status
code in the IA_NA was fixed. The status code now appears in the root
level.
Changes since 4.0.0b2
- Clarified error message when lease limit exceeded
- Relative time may now be used as a qualifier for 'allow' and 'deny' access
control lists. These directives may be used to assist in re-addressing
address pools without having to constantly reconfigure the server. Please
see 'man dhcpd.conf' for more information on allow/deny 'after time' syntax.
Thanks to a patch from Christof Chen.
- The server will now include multiple IA_NA's and multiple IAADDRs within
them, if advertised by the client. It still only seeks to allocate one
new address.
Changes since 4.0.0b1
- Use different paths for PID and lease files when running in DHCPv4
or DHCPv6 mode, so that servers for both protcols can be run
simultaneously on a single interface.
- Fixed a buffer overflow error which could have allowed a denial
of service under unusual server configurations
- Eliminated a spurious error message from the client
- A number of bugs with the internal handling of lease state on the
server have been fixed. Some of these could cause server crashes.
- The peer_wants_leases() changes pulled up from 3.1.0 were corrected,
'never used' leases will no longer consistently shift between servers
on every pool rebalance run.
- sendmsg()/recvmsg() control buffers are now declared in such a way to
ensure they are correctly aligned on all (esp. 64-bit) architectures.
- The client leasing subsystem was streamlined and corrected to account
more closely for changes in client link attachment selection.
Changes since 4.0.0a3
- The DHCP server no longer requires a "ddns-update-style" statement,
and now defaults to "none", which means DNS updates are disabled.
- Log messages when failover peer names mismatch have been improved to
point out the problem.
- Bug where server advertised a IPv6 address in response to a SOLICIT
but would not return the address in response to a REQUEST. Thanks to
Dennis Kou for finding the bug.
- Fixed an error causing the server to lock up on lease expiration,
reported independently by Jothilingam Vasu and Dennis Kou.
- Fixed a ./configure bug where compile tests were failing due to
"-Werror" (unused variable) rather than the actual test failure. Lead
to inconsistent and unworkable auto-configurations.
- Compilation with DLPI and -Werror has been repaired.
- Error in decoding IA_NA option if multiple interfaces are present
fixed by Marcus Goller.
- DHCPv6 server Confirm message processing has been enhanced - it no
longer replies only to clients with host {} records, it now replies
as directed in RFC3315 section 18.2.2 - that is, to all clients
regardless of the existence of bindings.
- A core dump during expired lease cleanup has been repaired.
- DDNS updates state information are now stored in 'binding scopes' that
follow the leases through their lifecycles. This enables DDNS teardowns
on leases that are assigned and expired inbetween a server restart (the
state is recovered from dhcpd.leases). Arbitrary user-specified binding
scopes ('set var = "value";') are not yet supported.
- Additional compilation problems on HP/UX have been repaired.
Changes since 4.0.0a2
- Fix for startup where there are no IPv4 addresses on an interface.
Thanks to Marcus Goller for reporting the bug.
- Fixed file descriptor leak on listen failure. Thanks to Tom Clark.
- Bug in server configuration parser caused server to get stuck on
startup for certain bad pool declarations. Thanks to Guillaume
Knispel for the bug report and fix.
- Code cleaned to remove warnings reported by "gcc -Wall".
- DHCPv6 is now the default. You can disable DHCPv6 support using the
"--disable-dhcpv6" flag when you run the configure script.
- An internal database inconsistency bug was repaired where the server
would segfault if a client attempted to renew a lease that had been
loaded from persistent storage.
- 'request' and 'also request' syntaxes have been added to accommodate
the DHCPv6 client configuration. 'send dhcp6.oro' is no longer
necessary.
- Bug fixed where configuration file parsing did not work with
zero-length options; this made it impossible to set the
rapid-commit option.
- Bogus messages about host records with IPv4 fixed-addresses being of
non-128-bits in length were removed.
Changes since 4.0.0a1
- Bug in octal parsing fixed. Thanks to Bernd Fuhrmann for the report
and fix.
- Autoconf now supplies proper flags for Solaris DHCPv6 builds.
- Fix for parsing error on some IPv6 addresses.
- Invalid CIDR representation for IPv6 subnets or ranges now checked
for when loading configuration.
- Compilation on HP/UX has been repaired. The changes should generally
apply to any architecture that supplies SIOCGLIFCONF but does not
use 'struct lifconf' structures to pass values.
- Two new operators, ~= and ~~, have been integrated to implement
boolean matches by regular expression (such as may be used in
class matching statements). Thanks to a patch by Alexandr S.
Agranovsky, which underwent slight modification.
- Fix for icmp packets on 64-bit systems (bug introduced in 4.0).
- A bug was fixed in interface discovery wherein an error identifying
a server-configured interface with no IPv4 addresses would SEGV.
- Fixed a bug in which write_lease() might report a failure incorrectly
- Added support for DHCPv6 Release messages
- Added -x option to dhclient, which triggers dhclient processes
to exit gracefully without releasing leases first
- All binaries (client, server, relay) now change directories
to / before going into daemon mode, so as not to hold $CWD open
- Fixed a bug parsing DHCPv6 client-id's in host-identifier statements
- Fixed a bug with the 'ddns-updates' boolean server configuration
parameter, which caused the server to fail.
Changes since 4.0.0-20070413
- Old (expired) leases are now cleaned.
- IPv6 subnets now have support for arbitrary allocation ranges via
a new 'range6' configuration directive.
- An obviated option code hash lookup to find D6O_CLIENTID was removed.
- Corrected some situations where variables might be used without being
initialized.
- Silenced several other compiler warnings.
- Include the more standard sys/uio.h rather than rely upon other
header files to include it (fixes a BSD 4.2 compile failure).
- Duplicate dhclient-script updates for DHCPv6 to all provided scripts.
- DHCPv4 I/O methods that failed to sense hardware address were corrected.
- DHCPv4 is now the default (as documented) rather than DHCPv6. The default
was set to DHCPv6 to facilitate ease early development, and forgotten.
- Corrected a segmentation violation in DHCPv4 socket processing.
- dhclient will now fork() into the background once it binds to an
IPv6 address, or immediately if the -n flag is supplied.
- -q is now the default behaviour on dhclient, with -d or -v enabling
non-quiet (stderr logging) mode.
- Fix documentation of the domain-search atom (quoted, with commas).
- Document DHCPv6 options presently in the default table.
- Replaced ./configure shellscripting with GNU Autoconf.
Changes since 3.1.0 (NEW FEATURES)
- DHCPv6 Client and Server protocol support. Use '-6' to run the daemons
as v6-only. Use '-4' to run the daemons as v4-only (default. There is
no support currently for both.
- Server support for multiple IA_NA options, containing at most one
IAADDR option.
- Client support for one IA_NA option, containing any number of IAADDR
options.
- Server support for the DHCPv6 Information-request message.
- Inappropriate unicast DHCPv6 messages sent to the server are now
discarded, and this has rearchitected the IO system slightly.
- The DHCPv6 server DUID defaults to type 1, is persistently stored in
the leases database, and can be over-ridden (either completely, or by
specifying type 1 or type 2).
- The server only uses Rapid-Commit if it has been configured with the
Rapid-Commit option and the client requests it.
- DDNS support. We now update AAAA records in the same place we would
update A records, if we have an IPv6 address. We also generate IP6.ARPA
style names for PTR records if we're dealing with an IPv6 address. Both
A and AAAA updates are done using the same 'fqdn.' virtual option space
(although the DHCPv4 FQDN and DHCPv6 FQDN options are formatted
differently, they both use the same code here).
- The Linux dhclient-script attempts to set and remove assigned addresses,
and to configure /etc/resolv.conf from nameserver and domain name
configurations. It can be extended to configure other parameters.
- Initial DHCPv6 lease support.
- The IO system now tracks all local IP addresses, so that the DHCP
applications (particularly the dhcrelay) can discern between what frames
were transmitted to it, and what frames are being carried through it which
it should not intercept.
Changes since 3.1.0 (Maintenance)
- A bug was repaired where MAC Address Affinity for virgin leases always
mapped to the primary. Virgin leases now have an interleaved preference
between primary and secondary.
- A bug was repaired where MAC Address Affinity for clients with no client
identifier was sometimes mishashed to the peer. Load balancing during
runtime and pool rebalancing were opposing.
- An assertion in lease counting relating to reserved leases was repaired.
- The subnet-mask option inclusion now conforms with RFC2132 section 3.3;
it will only appear prior to the routers option if it is present on the
Parameter-Request-List. The subnet-mask option will also only be
included by default (if it is not on the PRL) in response to DISCOVER
or REQUEST messages.
- The FQDN option is only supplied if the client supplied an FQDN option or
if the FQDN option was explicitly requested on the PRL.
- Dynamic BOOTP leases are now load balanced in failover.
Changes since 3.1.0rc1
- The parse warning that 'deny dyanmic bootp;' must be configured for
failover protected subnets was removed.
Changes since 3.1.0b2
- Failover rebalance events no longer play ping pong with round errors
(moving leases between free and back to backup where there are an
odd number of leases).
- The 'pool' log line has been split into two messages, one before the
rebalance run, and one after.
- Any queued BNDACKs are transmitted before transmitting new BNDUPDs.
This enforces the correct sequence of events for the remote server
processing these messages.
Changes since 3.1.0b1
- Fixed a bug that caused OMAPI clients to freeze when opening lease
objects.
- A new server config option "fqdn-reply" specifies whether the server
should send out option 81 (FQDN). Defaults to "on". If set to "off",
the FQDN option is not sent, even if the client requested it. This is
needed because some clients misbehave otherwise. Thanks to Christof Chen
at Allianz.
- Allow trace output files (-tf option) to be overwritten, rather than
crashing dhcpd if the file already exists
- A bug was fixed that caused dhcpd to segfault if a pool was declared
outside the scope of a subnet in dhcpd.conf.
- Some uninitialized values were repaired in dhcpleasequery.c that
caused the server to abort.
- A new server config option, 'do-reverse-updates', has been added
which causes the server to abstain from performing updates on PTR
records. Thanks to a patch from Christof Chen at Allianz.
- A bug was repaired in subencapsulation support, where spaces separated
by empty spaces would not get included.
- A bug in dhclient was repaired which caused it to send parameter request
lists of 55 bytes in length no matter how long the declared PRL was.
- 'dhcp.c(3953): non-null pointer' has been repaired. This fixes a flaw
wherein the DHCPv4 server may ignore a configured server-identifier.
- A flaw in failover startup sequences was repaired that sometimes left
the primary DHCP server's pool rebalance schedules unscheduled.
- Corrected a flaw that broke encapsulated spaces included due to presence
on the parameter request list.
Changes since 3.1.0a3
- Some spelling fixes.
Changes since 3.1.0a2
- A bug was fixed where attempting to permit leasequeries results in a
fatal internal error, "Unable to find server option 49".
- A bug was fixed in dhclient rendering the textual output form of the
domain-search option syntax.
Changes since 3.1.0a1
- A bug in the FQDN universe that added FQDN codes to the NWIP universe's
hash table was repaired.
- The servers now try harder to transmit pending binding updates when
entering normal state.
- UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and
requeues all pending updates. This should reduce the number of spurious
'xid mismatch' log messages.
- An option definition referencing leak was fixed, which resulted in early
termination of dhclient upon the renewal event.
- Some default hash table sizes were tweaked, some upwards, some downwards.
3.1.0a1's tables resulted in a reduction in default server memory use.
The new selected values provide more of a zero sum (increasing the size
of tables likely to be populated, decreasing the size of tables unlikely).
- Lease structures appear in three separate hashes: by IP address, by UID,
and by hardware address. One type of table was used for all three, and
improvements to IP address hashing were applied to all three (so UID and
hardware addresses were treated like 4-byte integers). There are now two
types of tables, and the uid/hw hashes use functions more appropriate
to their needs.
- The max-lease-misbalance percentage no longer causes scheduled rebalance
runs to be skipped: it still governs the schedule, but every scheduled
run will attempt balance.
- A segfault bug in recursive encapsulation support has been corrected.
Changes since 3.0 (New Features)
- A workaround for certain STSN servers that send a mangled domain-name
option was introduced for dhclient. The client will now accept corrupted
server responses, if they contain a valid DHCP_MESSAGE_TYPE (OFFER, ACK,
or NAK). The server will continue to not accept corrupt client packets.
- Support for 'reserved' (pseudo-static) and BOOTP leases via failover
was introduced.
- Support for adding, removing, and managing class and subclass statements
via OMAPI.
- The failover implementation was updated to comply with revision 12 of
the protocol draft.
- 'make install' now creates the initial zero-length dhcpd.leases file if
one does not already exist on the system.
- RFC3942 compliance, site-local option spaces start at 224 now, not 128.
- The Load Balance Algorithm was misimplemented. The current implementation
matches RFC 3074.
- lcase() and ucase() configuration expressions have been added which adjust
their arguments from upper to lower and lower to upper cases respectively.
Thanks to a patch from Albert Herranz.
- The dhclient 'reject ...;' statement, which rejects leases given by named
server-identifiers, now permits address ranges to be specified in CIDR
notation. Thanks to a patch from David Boyce.
- The subnet-mask option is now supplied by default, but at lowest
priority. This helps a small minority of clients that provide parameter
request lists, but do not list the subnet-mask option because they were
designed to interoperate with a server that behaves in this manner.
- The FQDN option is similarly supplied even if it does not appear on the
parameter request list, but not to the exclusion of options that do
appear at the parameter request list. Up until now it had ultimate
priority over the client's parameter request list.
- Varying option space code and length bit widths (8/16/32) are now
supported. This is a milestone in achieving RFC 3925 "VIVSO" and
DHCPv6 support.
- A new common (server or client) option, 'db-time-format local;', has
been added which prints the local time in /var/db/dhcpd.leases rather
than UTC. Thanks to a patch from Ken Lalonde.
- Some patches to improve DHCP Server startup speed from Andrew Matheson
have been incorporated.
- Failover pairs now implement 'MAC Affinity' on leases moving from the
active to free states. Leases that belonged to the failover secondary
are moved to BACKUP state rather than FREE upon exiting EXPIRED state.
If lease rebalancing must move leases, it tries first to move leases
that belong to the peer in need.
- The server no longer sends POOLREQ messages unless the pool is severely
misbalanced in the peer's favor (see 'man dhcpd.conf' for more details).
- Pool rebalance events no longer happen upon successfully allocating a
lease. Instead, they happen on a schedule. See 'man dhcpd.conf' for the
min-balance and max-balance statements for more information.
- The DHCP Relay Agent Information Option / Link Selection Sub-Option
is now supported. (See RFC3527 for details).
- A new DDNS related server option, update-conflict-detection, has been
added. If this option is enabled, dhcpd will perform normal DHCID
conflict resolution (the default). If this option is disabled, it will
instead trust the assigned name implicitly (removing any other bindings
on that name). This option has not been made available in dhclient.
- In those cases where the DHCP software manufactures an IP header (to
transmit via bpf, lpf, etc), the IP TTL the software selects has been
increased from 16 to 128. This is intended to match Microsoft Windows
DHCP Client behaviour, to increase compatibility.
- 'ignore client-updates;' now has behaviour that is different from
'deny client-updates;'. The client's request is not truly ignored,
rather it is encouraged. Should this value be configured, the server
updates DNS as though client-updates were set to 'deny'. That is, it
enters into DNS whatever it is configured to do already, provided it is
configured to. Then it sends a response to the client that lets the
client believe it is performing client updates (which it will), probably
for a different name. In essence, this lets the client do as it will,
ignoring this aspect of their request.
- Support for compressed 'domain name list' style DHCP option contents, and
in particular the domain search option (#119) was added.
- The DHCP LEASEQUERY protocol as defined in RFC4388 is now implemented.
LEASEQUERY lets you query the DHCP server for information about a lease,
using either an IP address, MAC address, or client identifier. Thanks
to a patch from Justin Haddad.
- DHCPD is now RFC2131 section 4.1 compliant (broadcast to all-ones ip and
ethernet mac address) on the SCO platform specifically without any strange
ifconfig hacks. Many thanks go to the Kroger Co. for donating the
hardware and funding the development.
- A new common configuration executable statement, execute(), has been
added. This permits dhcpd or dhclient to execute a named external
program with command line arguments specified from other configuration
language. Thanks to a patch written by Mattias Ronnblom, gotten to us
via Robin Breathe.