xref: /minix3/external/bsd/dhcp/dist/RELNOTES (revision 83ee113ee0d94f3844d44065af2311604e9a30ad)
1*83ee113eSDavid van Moolenbroek	      Internet Systems Consortium DHCP Distribution
2*83ee113eSDavid van Moolenbroek			      Version 4.3.0
3*83ee113eSDavid van Moolenbroek			     3 February 2014
4*83ee113eSDavid van Moolenbroek
5*83ee113eSDavid van Moolenbroek			      Release Notes
6*83ee113eSDavid van Moolenbroek
7*83ee113eSDavid van Moolenbroek			      NEW FEATURES
8*83ee113eSDavid van Moolenbroek
9*83ee113eSDavid van MoolenbroekThe major "theme" for ISC DHCP 4.3.x was to update the suport for
10*83ee113eSDavid van MoolenbroekDHCPv6 to include several of the features that have been available
11*83ee113eSDavid van Moolenbroekfor DHCPv4.  These include:
12*83ee113eSDavid van Moolenbroek
13*83ee113eSDavid van Moolenbroek- Support the use of classes
14*83ee113eSDavid van Moolenbroek
15*83ee113eSDavid van Moolenbroek- Support for on_commit, on_expiry and on_release statements
16*83ee113eSDavid van Moolenbroek
17*83ee113eSDavid van Moolenbroek- Better logging of address assignments
18*83ee113eSDavid van Moolenbroek
19*83ee113eSDavid van Moolenbroek- Support for using DHCPv6 relay options in expressions
20*83ee113eSDavid van Moolenbroek
21*83ee113eSDavid van MoolenbroekThis release also adds suppport for the standard DDNS as described in the
22*83ee113eSDavid van Moolenbroekcurrent RFCs as well as enhancing support for dynamically adding and removing
23*83ee113eSDavid van Moolenbroeksubclasses via OMAPI.
24*83ee113eSDavid van Moolenbroek
25*83ee113eSDavid van MoolenbroekThere are a number of DHCPv6 limitations and features missing in this
26*83ee113eSDavid van Moolenbroekrelease, which will be addressed in the future:
27*83ee113eSDavid van Moolenbroek
28*83ee113eSDavid van Moolenbroek- Only Solaris, Linux, FreeBSD, NetBSD, and OpenBSD are supported.
29*83ee113eSDavid van Moolenbroek
30*83ee113eSDavid van Moolenbroek- DHCPv6 includes human-readable text in status code messages, in
31*83ee113eSDavid van Moolenbroek  English.  A method to reconfigure or support other languages would
32*83ee113eSDavid van Moolenbroek  be preferable.
33*83ee113eSDavid van Moolenbroek
34*83ee113eSDavid van Moolenbroek- The "host-identifier" option is limited to a simple token.
35*83ee113eSDavid van Moolenbroek
36*83ee113eSDavid van Moolenbroek- The client and server can only operate DHCPv4 or DHCPv6 at a time,
37*83ee113eSDavid van Moolenbroek  not both.  To use both protocols simultaneously, two instances of the
38*83ee113eSDavid van Moolenbroek  relevant daemon are required, one with the '-6' command line option.
39*83ee113eSDavid van Moolenbroek
40*83ee113eSDavid van MoolenbroekFor information on how to install, configure and run this software, as
41*83ee113eSDavid van Moolenbroekwell as how to find documentation and report bugs, please consult the
42*83ee113eSDavid van MoolenbroekREADME file.
43*83ee113eSDavid van Moolenbroek
44*83ee113eSDavid van MoolenbroekISC DHCP uses standard GNU configure for installation. Please review the
45*83ee113eSDavid van Moolenbroekoutput of "./configure --help" to see what options are available.
46*83ee113eSDavid van Moolenbroek
47*83ee113eSDavid van MoolenbroekThe system has only been tested on Linux, FreeBSD, and Solaris, and may not
48*83ee113eSDavid van Moolenbroekwork on other platforms. Please report any problems and suggested fixes to
49*83ee113eSDavid van Moolenbroek<dhcp-users@isc.org>.
50*83ee113eSDavid van Moolenbroek
51*83ee113eSDavid van MoolenbroekISC DHCP is open source software maintained by Internet Systems
52*83ee113eSDavid van MoolenbroekConsortium.  This product includes cryptographic software written
53*83ee113eSDavid van Moolenbroekby Eric Young (eay@cryptsoft.com).
54*83ee113eSDavid van Moolenbroek
55*83ee113eSDavid van Moolenbroek			Changes since 4.2.0 (new features)
56*83ee113eSDavid van Moolenbroek
57*83ee113eSDavid van Moolenbroek- If a client renews before 'dhcp-cache-threshold' percent of its lease
58*83ee113eSDavid van Moolenbroek  has elapsed (default 25%), the server will reuse the allocated lease
59*83ee113eSDavid van Moolenbroek  (provide a lease within the currently allocated lease-time) rather
60*83ee113eSDavid van Moolenbroek  than extend or renew the lease.  This absolves the server of needing
61*83ee113eSDavid van Moolenbroek  to perform an fsync() operation on the lease database before reply,
62*83ee113eSDavid van Moolenbroek  which improves performance. [ISC-Bugs #22228]
63*83ee113eSDavid van Moolenbroek  Updated this patch to support asynchronous DDNS.  If the server is
64*83ee113eSDavid van Moolenbroek  attempting to do DDNS on a lease it should be udpated and written to
65*83ee113eSDavid van Moolenbroek  disk even if that wouldn't be necessary due to the thresholding.
66*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26311]
67*83ee113eSDavid van Moolenbroek
68*83ee113eSDavid van Moolenbroek- The 'no available billing' log line now also logs the name of the last
69*83ee113eSDavid van Moolenbroek  matching billing class tried before failing to provide a billing.
70*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21759]
71*83ee113eSDavid van Moolenbroek
72*83ee113eSDavid van Moolenbroek- A problem with missing get_hw_addr function when --enable-use-sockets
73*83ee113eSDavid van Moolenbroek  was used is now solved on GNU/Linux, BSD and GNU/Hurd systems. Note
74*83ee113eSDavid van Moolenbroek  that use-sockets feature was not tested on those systems. Client and
75*83ee113eSDavid van Moolenbroek  server code no longer use MAX_PATH constant that is not defined on
76*83ee113eSDavid van Moolenbroek  GNU/Hurd systems. [ISC-Bugs #25979]
77*83ee113eSDavid van Moolenbroek
78*83ee113eSDavid van Moolenbroek- Add a perl script in the contrib directory, dhcp-lease-list.pl, which
79*83ee113eSDavid van Moolenbroek  can parse v4 lease files and output the lease information in a more
80*83ee113eSDavid van Moolenbroek  human friendly manner.  This was written by Christian Hammers with
81*83ee113eSDavid van Moolenbroek  some updates by vom and ISC.  This is contributed code and is not
82*83ee113eSDavid van Moolenbroek  supported by ISC; however it may be useful to some users.
83*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20680]
84*83ee113eSDavid van Moolenbroek
85*83ee113eSDavid van Moolenbroek- Add support in v6 for on-commit, on-expire and on-release.
86*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27912]
87*83ee113eSDavid van Moolenbroek
88*83ee113eSDavid van Moolenbroek- Add support for using classes with v6.
89*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26510]
90*83ee113eSDavid van Moolenbroek
91*83ee113eSDavid van Moolenbroek- Update the DDNS code to current standards and allow for sharing
92*83ee113eSDavid van Moolenbroek  of DDNS entries between v4 and v6 clients.  The new code is used
93*83ee113eSDavid van Moolenbroek  if the ddns-update-style is set to "standard", the older code is
94*83ee113eSDavid van Moolenbroek  still available if ddns-update-style is set to "interim".  The
95*83ee113eSDavid van Moolenbroek  oldest DDNS code "ad-hoc" has been removed.  Thanks to Thomas Pegeot
96*83ee113eSDavid van Moolenbroek  who submitted a patch for this issue.  This patch is based on
97*83ee113eSDavid van Moolenbroek  that work with some modifications.
98*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21139]
99*83ee113eSDavid van Moolenbroek
100*83ee113eSDavid van Moolenbroek- Add a configuration option to the server to suppress using fsync().
101*83ee113eSDavid van Moolenbroek  Enabling this option will mean that fsync() is never called.  This
102*83ee113eSDavid van Moolenbroek  may provide better performance but there is also a risk that a lease
103*83ee113eSDavid van Moolenbroek  will not be properly written to the disk after it has been issued
104*83ee113eSDavid van Moolenbroek  to a client and before the server stops.  Using this option is
105*83ee113eSDavid van Moolenbroek  not recommended.
106*83ee113eSDavid van Moolenbroek  [ISC-Bugs #34810]
107*83ee113eSDavid van Moolenbroek
108*83ee113eSDavid van Moolenbroek- Add some logging statements to indicate when the server is ready
109*83ee113eSDavid van Moolenbroek  to serve.  One statement is emitted after the server has finished
110*83ee113eSDavid van Moolenbroek  reading its files and is about to enter the dispatch loop.
111*83ee113eSDavid van Moolenbroek  This is "Server starting service.".
112*83ee113eSDavid van Moolenbroek  The second is emitted when a server determines that both it and
113*83ee113eSDavid van Moolenbroek  its failover peer are in the normal state.
114*83ee113eSDavid van Moolenbroek  This is "failover peer <name>: Both servers normal."
115*83ee113eSDavid van Moolenbroek  [ISC-Bugs #33208]
116*83ee113eSDavid van Moolenbroek
117*83ee113eSDavid van Moolenbroek- Add support for accessing options from v6 relays.  The v6relay
118*83ee113eSDavid van Moolenbroek  statement allows the administrator to choose which relay to
119*83ee113eSDavid van Moolenbroek  use when searching for an option, see the dhcp-options man page
120*83ee113eSDavid van Moolenbroek  for a description.  The host-identifier option has also been
121*83ee113eSDavid van Moolenbroek  updated to support the use of relay options, see the dhcpd.conf
122*83ee113eSDavid van Moolenbroek  man page for a description.
123*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19598]
124*83ee113eSDavid van Moolenbroek
125*83ee113eSDavid van Moolenbroek- When doing DDNS if there isn't an appropriate zone statement attempt
126*83ee113eSDavid van Moolenbroek  to find a reasonable nameserver via a DNS resolver.  This restores
127*83ee113eSDavid van Moolenbroek  some functionality that was lost in the transition to asynchronous
128*83ee113eSDavid van Moolenbroek  DDNS.  Due to the lack of security and increase in fragility of the
129*83ee113eSDavid van Moolenbroek  system when using this feature we strongly recommend the use of
130*83ee113eSDavid van Moolenbroek  appropriate zone statements rather than using this functionality.
131*83ee113eSDavid van Moolenbroek  [ISC-Bugs #30461]
132*83ee113eSDavid van Moolenbroek
133*83ee113eSDavid van Moolenbroek- Add support for specifying the address from which to send
134*83ee113eSDavid van Moolenbroek  DDNS updates on the DHCP server.  There are two new options
135*83ee113eSDavid van Moolenbroek  "ddns-local-address4" and "ddns-local-address6" that each take
136*83ee113eSDavid van Moolenbroek  one instance of their respective address types.
137*83ee113eSDavid van Moolenbroek  [ISC-Bugs #34779]
138*83ee113eSDavid van Moolenbroek
139*83ee113eSDavid van Moolenbroek- Add ignore-client-uids option in the server.  This option causes
140*83ee113eSDavid van Moolenbroek  the server to not record a client's uid in its lease.  This
141*83ee113eSDavid van Moolenbroek  violates the specification but may also be useful when a client
142*83ee113eSDavid van Moolenbroek  can dual boot using different client ids but the same mac address.
143*83ee113eSDavid van Moolenbroek  Thank you to Brian De Wolf at Cal Poly Pomona for the patch.
144*83ee113eSDavid van Moolenbroek  [ISC-Bugs #32427]
145*83ee113eSDavid van Moolenbroek  [ISC-Bugs #35066]
146*83ee113eSDavid van Moolenbroek
147*83ee113eSDavid van Moolenbroek- Extend the DHCPINFORM processing to honor the subnet selection option
148*83ee113eSDavid van Moolenbroek  and take host declarations into account.
149*83ee113eSDavid van Moolenbroek  Thanks to Christof Chen for testing and submitting the patch.
150*83ee113eSDavid van Moolenbroek  [ISC-Bugs #35015]
151*83ee113eSDavid van Moolenbroek
152*83ee113eSDavid van Moolenbroek- Extend the hardware expression to look into the lease structure
153*83ee113eSDavid van Moolenbroek  for a hardware address if there is no packet.  This allows the
154*83ee113eSDavid van Moolenbroek  server to find the hardware address during on-expiry processing.
155*83ee113eSDavid van Moolenbroek  [ISC-Bugs #24584]
156*83ee113eSDavid van Moolenbroek
157*83ee113eSDavid van Moolenbroek- Add definitions for some options that have been specified by the IETF.
158*83ee113eSDavid van Moolenbroek  [ISC-Bugs #29268]
159*83ee113eSDavid van Moolenbroek  [ISC-Bugs #35198]
160*83ee113eSDavid van Moolenbroek
161*83ee113eSDavid van Moolenbroek			Changes since 4.3.0rc1
162*83ee113eSDavid van Moolenbroek
163*83ee113eSDavid van Moolenbroek- None
164*83ee113eSDavid van Moolenbroek			Changes since 4.3.0b1
165*83ee113eSDavid van Moolenbroek
166*83ee113eSDavid van Moolenbroek- Tidy up receive packet processing.
167*83ee113eSDavid van Moolenbroek  Thanks to Brad Plank of GTA for reporting the issue and suggesting
168*83ee113eSDavid van Moolenbroek  a possible patch.
169*83ee113eSDavid van Moolenbroek  [ISC-Bugs #34447]
170*83ee113eSDavid van Moolenbroek
171*83ee113eSDavid van Moolenbroek			Changes since 4.3.0a1
172*83ee113eSDavid van Moolenbroek
173*83ee113eSDavid van Moolenbroek- Modify the message displayed when a process hits a fatal error.
174*83ee113eSDavid van Moolenbroek  The new message is much shorter and simply points to the README
175*83ee113eSDavid van Moolenbroek  and our website for directions on bug submissions.
176*83ee113eSDavid van Moolenbroek  [ISC-Bugs #24789]
177*83ee113eSDavid van Moolenbroek
178*83ee113eSDavid van Moolenbroek- Handle an absent resolv.conf file better.
179*83ee113eSDavid van Moolenbroek  [ISC-Bugs #35194]
180*83ee113eSDavid van Moolenbroek
181*83ee113eSDavid van Moolenbroek			Changes since 4.2.5
182*83ee113eSDavid van Moolenbroek
183*83ee113eSDavid van Moolenbroek- Address static analysis warnings.
184*83ee113eSDavid van Moolenbroek  [ISC-Bugs #33510] [ISC-Bugs #33511]
185*83ee113eSDavid van Moolenbroek
186*83ee113eSDavid van Moolenbroek- Silence benign static analysis warnings.
187*83ee113eSDavid van Moolenbroek  [ISC-Bugs #33428]
188*83ee113eSDavid van Moolenbroek
189*83ee113eSDavid van Moolenbroek- Add check for 64-bit package for atf.
190*83ee113eSDavid van Moolenbroek  [ISC-Bugs #32206]
191*83ee113eSDavid van Moolenbroek
192*83ee113eSDavid van Moolenbroek- Use newer auto* tool packages and turn on RFC_3542 support on Mac OS.
193*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26303]
194*83ee113eSDavid van Moolenbroek
195*83ee113eSDavid van Moolenbroek- Remove a variable when it isn't being used due to #ifdefs to avoid
196*83ee113eSDavid van Moolenbroek  a compiler warning on Solaris using GCC.
197*83ee113eSDavid van Moolenbroek  [ISC-Bugs #33032]
198*83ee113eSDavid van Moolenbroek
199*83ee113eSDavid van Moolenbroek- Add a check for too much whitespace in a config or lease file.
200*83ee113eSDavid van Moolenbroek  Thanks to Paolo Pellegrino for finding the issue and a suggestion
201*83ee113eSDavid van Moolenbroek  for the patch.
202*83ee113eSDavid van Moolenbroek  [ISC-Bugs #33351]
203*83ee113eSDavid van Moolenbroek
204*83ee113eSDavid van Moolenbroek- Fix several problems with using OMAPI to manipulate class and subclass
205*83ee113eSDavid van Moolenbroek  objects.
206*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27452]
207*83ee113eSDavid van Moolenbroek
208*83ee113eSDavid van Moolenbroek- Added a sleep call after killing the old client to allow time
209*83ee113eSDavid van Moolenbroek  for the sockets to be cleaned.  This should allow the -r option
210*83ee113eSDavid van Moolenbroek  to work more consistently.
211*83ee113eSDavid van Moolenbroek  [ISC-Bugs #18175]
212*83ee113eSDavid van Moolenbroek
213*83ee113eSDavid van Moolenbroek- Missing files for ISC DHCP Developer's Guide are now included in
214*83ee113eSDavid van Moolenbroek  the release tarballs. To generate this documentation, please use
215*83ee113eSDavid van Moolenbroek  make devel command in doc directory. [ISC-Bugs #32767]
216*83ee113eSDavid van Moolenbroek
217*83ee113eSDavid van Moolenbroek- Update client script for use with openwrt.
218*83ee113eSDavid van Moolenbroek  [ISC-Bugs #29843]
219*83ee113eSDavid van Moolenbroek
220*83ee113eSDavid van Moolenbroek- Fix the socket handling for DHCPv6 clients to allow multiple instances
221*83ee113eSDavid van Moolenbroek  of a client on a single machine to work properly.  Previously only
222*83ee113eSDavid van Moolenbroek  one client would receive the packets.  Thanks to Jiri Popelka at Red Hat
223*83ee113eSDavid van Moolenbroek  for the bug report and a potential patch.
224*83ee113eSDavid van Moolenbroek  [ISC-Bugs #34784]
225*83ee113eSDavid van Moolenbroek
226*83ee113eSDavid van Moolenbroek- Added support for gentle shutdown after signal is received.
227*83ee113eSDavid van Moolenbroek  [ISC-Bugs #32692] [ISC-Bugs 34945]
228*83ee113eSDavid van Moolenbroek
229*83ee113eSDavid van Moolenbroek- Enhance the DHCPv6 server logging to include the addresses that are assigned
230*83ee113eSDavid van Moolenbroek  to the clients.
231*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26377]
232*83ee113eSDavid van Moolenbroek
233*83ee113eSDavid van Moolenbroek- Fix an operation in the DDNS code to be a bitwise instead of logical or.
234*83ee113eSDavid van Moolenbroek  [ISC-Bugs #35138]
235*83ee113eSDavid van Moolenbroek
236*83ee113eSDavid van Moolenbroek			Changes since 4.2.4
237*83ee113eSDavid van Moolenbroek
238*83ee113eSDavid van Moolenbroek- Correct code to calculate timing values in client to compare
239*83ee113eSDavid van Moolenbroek  rebind value to infinity instead of renew value.
240*83ee113eSDavid van Moolenbroek  Thanks to Chenda Huang from H3C Technologies Co., Limited
241*83ee113eSDavid van Moolenbroek  for reporting this issue.
242*83ee113eSDavid van Moolenbroek  [ISC-Bugs #29062]
243*83ee113eSDavid van Moolenbroek
244*83ee113eSDavid van Moolenbroek- Fix some issues in the code for parsing and printing options.
245*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22625] - properly print options that have several fields
246*83ee113eSDavid van Moolenbroek  followed by an array of something for example "fIa"
247*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27289] - properly parse options in declarations that have
248*83ee113eSDavid van Moolenbroek  several fields followed by an array of something for example "fIa"
249*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27296] - properly determine if we parsed a 16 or 32 bit
250*83ee113eSDavid van Moolenbroek  value in evaluate_numeric_expression (extract-int).
251*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27314] - properly parse a zero length option from
252*83ee113eSDavid van Moolenbroek  a lease file.  Thanks to Marius Tomaschewski from SUSE for the report
253*83ee113eSDavid van Moolenbroek  and prototype patch for this ticket as well as ticket 27289.
254*83ee113eSDavid van Moolenbroek
255*83ee113eSDavid van Moolenbroek! Previously the server code was relaxed to allow packets with zero
256*83ee113eSDavid van Moolenbroek  length client ids to be processed.  Under some situations use of
257*83ee113eSDavid van Moolenbroek  zero length client ids can cause the server to go into an infinite
258*83ee113eSDavid van Moolenbroek  loop.  As such ids are not valid according to RFC 2132 section 9.14
259*83ee113eSDavid van Moolenbroek  the server no longer accepts them.  Client ids with a length of 1
260*83ee113eSDavid van Moolenbroek  are also invalid but the server still accepts them in order to
261*83ee113eSDavid van Moolenbroek  minimize disruption.  The restriction will likely be tightened in
262*83ee113eSDavid van Moolenbroek  the future to disallow ids with a length of 1.
263*83ee113eSDavid van Moolenbroek  Thanks to Markus Hietava of Codenomicon CROSS project for the
264*83ee113eSDavid van Moolenbroek  finding this issue and CERT-FI for vulnerability coordination.
265*83ee113eSDavid van Moolenbroek  [ISC-Bugs #29851]
266*83ee113eSDavid van Moolenbroek  CVE: CVE-2012-3571
267*83ee113eSDavid van Moolenbroek
268*83ee113eSDavid van Moolenbroek! When attempting to convert a DUID from a client id option
269*83ee113eSDavid van Moolenbroek  into a hardware address handle unexpected client ids properly.
270*83ee113eSDavid van Moolenbroek  Thanks to Markus Hietava of Codenomicon CROSS project for the
271*83ee113eSDavid van Moolenbroek  finding this issue and CERT-FI for vulnerability coordination.
272*83ee113eSDavid van Moolenbroek  [ISC-Bugs #29852]
273*83ee113eSDavid van Moolenbroek  CVE: CVE-2012-3570
274*83ee113eSDavid van Moolenbroek
275*83ee113eSDavid van Moolenbroek! A pair of memory leaks were found and fixed.  Thanks to
276*83ee113eSDavid van Moolenbroek  Glen Eustace of Massey University, New Zealand for finding
277*83ee113eSDavid van Moolenbroek  this issue.
278*83ee113eSDavid van Moolenbroek  [ISC-Bugs #30024]
279*83ee113eSDavid van Moolenbroek  CVE: CVE-2012-3954
280*83ee113eSDavid van Moolenbroek
281*83ee113eSDavid van Moolenbroek- Existing legacy unit-tests have been migrated to Automated Test
282*83ee113eSDavid van Moolenbroek  Framework (ATF). Several new tests have been developed. To enable
283*83ee113eSDavid van Moolenbroek  unit-tests, please use --with-atf in configure script. A Developer's
284*83ee113eSDavid van Moolenbroek  Guide has been added. To generate it, please use make devel in
285*83ee113eSDavid van Moolenbroek  the doc directory. It is currently in early stages of development,
286*83ee113eSDavid van Moolenbroek  but is expected to grow in the near future. [ISC-Bugs 25901]
287*83ee113eSDavid van Moolenbroek
288*83ee113eSDavid van Moolenbroek! An issue with the use of lease times was found and fixed.  Making
289*83ee113eSDavid van Moolenbroek  certain changes to the end time of an IPv6 lease could cause the
290*83ee113eSDavid van Moolenbroek  server to abort.  Thanks to Glen Eustace of Massey University,
291*83ee113eSDavid van Moolenbroek  New Zealand for finding this issue.
292*83ee113eSDavid van Moolenbroek  [ISC-Bugs #30281]
293*83ee113eSDavid van Moolenbroek  CVE: CVE-2012-3955
294*83ee113eSDavid van Moolenbroek
295*83ee113eSDavid van Moolenbroek- Update the memory leakage debug code to work with v6.
296*83ee113eSDavid van Moolenbroek  [ISC-Bugs #30297]
297*83ee113eSDavid van Moolenbroek
298*83ee113eSDavid van Moolenbroek- Relax the requirements for deleting an A or AAAA record.
299*83ee113eSDavid van Moolenbroek  Previously the DDNS removal code required both the A or AAAA
300*83ee113eSDavid van Moolenbroek  record and the TXT record to exist.  This requirement could
301*83ee113eSDavid van Moolenbroek  cause problems if something interrupted the removal leaving
302*83ee113eSDavid van Moolenbroek  the TXT record alone.  This relaxation was codified in RFC 4703.
303*83ee113eSDavid van Moolenbroek  [ISC-Bugs #30734]
304*83ee113eSDavid van Moolenbroek
305*83ee113eSDavid van Moolenbroek- Modify the failover code to handle incorrect peer names
306*83ee113eSDavid van Moolenbroek  better.  Previously the structure holding the name might
307*83ee113eSDavid van Moolenbroek  have been freed inappropriately in some cases and not
308*83ee113eSDavid van Moolenbroek  freed in other cases.
309*83ee113eSDavid van Moolenbroek  [ISC-Bugs #30320]
310*83ee113eSDavid van Moolenbroek
311*83ee113eSDavid van Moolenbroek- Add a configure option, enable-secs-byteorder, to deal with
312*83ee113eSDavid van Moolenbroek  clients that do the byte ordering on the secs field incorrectly.
313*83ee113eSDavid van Moolenbroek  This field should be in network byte order but some clients
314*83ee113eSDavid van Moolenbroek  get it wrong.  When this option is enabled the server will examine
315*83ee113eSDavid van Moolenbroek  the secs field and if it looks wrong (high byte non zero and low
316*83ee113eSDavid van Moolenbroek  byte zero) swap the bytes.  The default is disabled.  This option
317*83ee113eSDavid van Moolenbroek  is only useful when doing load balancing within failover.
318*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26108]
319*83ee113eSDavid van Moolenbroek
320*83ee113eSDavid van Moolenbroek- Fix a set of issues that were discovered via a code inspection
321*83ee113eSDavid van Moolenbroek  tool.  Thanks to Jiri Popelka and Tomas Hozza Red Hat for the logs
322*83ee113eSDavid van Moolenbroek  and patches.
323*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23833]
324*83ee113eSDavid van Moolenbroek
325*83ee113eSDavid van Moolenbroek- Parsing unquoted base64 strings improved. Parser now properly handles
326*83ee113eSDavid van Moolenbroek  strings that contain reserved names. [ISC-Bugs #23048]
327*83ee113eSDavid van Moolenbroek
328*83ee113eSDavid van Moolenbroek- Modify the nak_lease function to make some attempts to find a
329*83ee113eSDavid van Moolenbroek  server-identifier option to use for the NAK.
330*83ee113eSDavid van Moolenbroek  [ISC-Bugs #25689]
331*83ee113eSDavid van Moolenbroek
332*83ee113eSDavid van Moolenbroek- The client now passes information about the options it requested
333*83ee113eSDavid van Moolenbroek  from the server to the script code via environment variables.
334*83ee113eSDavid van Moolenbroek  These variables are of the form requested_<option_name>=1 with
335*83ee113eSDavid van Moolenbroek  the option name being the same as used in the new_* and old_*
336*83ee113eSDavid van Moolenbroek  variables.
337*83ee113eSDavid van Moolenbroek  [ISC-Bugs #29068]
338*83ee113eSDavid van Moolenbroek
339*83ee113eSDavid van Moolenbroek- Add support for a simple check that the server id in a request message
340*83ee113eSDavid van Moolenbroek  to a failover peer matches the server id of the server.  This support
341*83ee113eSDavid van Moolenbroek  is enabled by editing the file includes/site.h and uncommenting the
342*83ee113eSDavid van Moolenbroek  definition for SERVER_ID_CHECK.  The option has several restrictions
343*83ee113eSDavid van Moolenbroek  and issues - please read the comment in the site.h file before
344*83ee113eSDavid van Moolenbroek  enabling it.
345*83ee113eSDavid van Moolenbroek  [ISC-Bugs #31463]
346*83ee113eSDavid van Moolenbroek
347*83ee113eSDavid van Moolenbroek- Tidy up some compiler issues in the debug code.
348*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26460]
349*83ee113eSDavid van Moolenbroek
350*83ee113eSDavid van Moolenbroek- Move the dhcpd.conf exmample file to dhcpd.conf.example to avoid
351*83ee113eSDavid van Moolenbroek  overwriting the dhcpd.conf file when installing a new version of
352*83ee113eSDavid van Moolenbroek  ISC DHCP.  The user will now need to manual copy and edit the
353*83ee113eSDavid van Moolenbroek  dhcpd.conf file as desired.
354*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19337]
355*83ee113eSDavid van Moolenbroek
356*83ee113eSDavid van Moolenbroek- Check the status value when trying to read from a connection to
357*83ee113eSDavid van Moolenbroek  see if it may have been closed.  If it appears closed don't try
358*83ee113eSDavid van Moolenbroek  to read from it again.  This avoids a potential busy-wait like
359*83ee113eSDavid van Moolenbroek  loop when the peer names are mismatched.
360*83ee113eSDavid van Moolenbroek  [ISC-Bugs #31231]
361*83ee113eSDavid van Moolenbroek
362*83ee113eSDavid van Moolenbroek- Remove an unused variable to keep compilers happy.
363*83ee113eSDavid van Moolenbroek  [ISC-Bugs #31983]
364*83ee113eSDavid van Moolenbroek
365*83ee113eSDavid van Moolenbroek- Modify test makefiles to be more similar to standard makefiles
366*83ee113eSDavid van Moolenbroek  and comment out a currently unused test.
367*83ee113eSDavid van Moolenbroek  [ISC-Bugs #32089]
368*83ee113eSDavid van Moolenbroek
369*83ee113eSDavid van Moolenbroek			Changes since 4.2.3
370*83ee113eSDavid van Moolenbroek
371*83ee113eSDavid van Moolenbroek! Add a check for a null pointer before calling the regexec function.
372*83ee113eSDavid van Moolenbroek  Without this check we could, under some circumstances, pass
373*83ee113eSDavid van Moolenbroek  a null pointer to the regexec function causing it to segfault.
374*83ee113eSDavid van Moolenbroek  Thanks to a report from BlueCat Networks.
375*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26704].
376*83ee113eSDavid van Moolenbroek  CVE: CVE-2011-4539
377*83ee113eSDavid van Moolenbroek
378*83ee113eSDavid van Moolenbroek! Modify the DDNS handling code.  In a previous patch we added logging
379*83ee113eSDavid van Moolenbroek  code to the DDNS handling.  This code included a bug that caused it
380*83ee113eSDavid van Moolenbroek  to attempt to dereference a NULL pointer and eventually segfault.
381*83ee113eSDavid van Moolenbroek  While reviewing the code as we addressed this problem, we determined
382*83ee113eSDavid van Moolenbroek  that some of the updates to the lease structures would not work as
383*83ee113eSDavid van Moolenbroek  planned since the structures being updated were in the process of
384*83ee113eSDavid van Moolenbroek  being freed: these updates were removed.  In addition we removed an
385*83ee113eSDavid van Moolenbroek  incorrect call to the DDNS removal function that could cause a failure
386*83ee113eSDavid van Moolenbroek  during the removal of DDNS information from the DNS server.
387*83ee113eSDavid van Moolenbroek  Thanks to Jasper Jongmans for reporting this issue.
388*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27078]
389*83ee113eSDavid van Moolenbroek  CVE: CVE-2011-4868
390*83ee113eSDavid van Moolenbroek
391*83ee113eSDavid van Moolenbroek- Fixed the code that checks if an address the server is planning
392*83ee113eSDavid van Moolenbroek  to hand out is in a reserved range.  This would appear as
393*83ee113eSDavid van Moolenbroek  the server being out of addresses in pools with particular ranges.
394*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26498]
395*83ee113eSDavid van Moolenbroek
396*83ee113eSDavid van Moolenbroek- In the DDNS code handle error conditions more gracefully and add more
397*83ee113eSDavid van Moolenbroek  logging code.  The major change is to handle unexpected cancel events
398*83ee113eSDavid van Moolenbroek  from the DNS client code.
399*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26287]
400*83ee113eSDavid van Moolenbroek
401*83ee113eSDavid van Moolenbroek- Tidy up the receive calls and eliminate the need for found_pkt.
402*83ee113eSDavid van Moolenbroek  [ISC-Bugs #25066]
403*83ee113eSDavid van Moolenbroek
404*83ee113eSDavid van Moolenbroek- Add support for Infiniband over sockets to the server and
405*83ee113eSDavid van Moolenbroek  relay code.  We've tested this on Solaris and hope to expand
406*83ee113eSDavid van Moolenbroek  support for Infiniband in the future.  This patch also corrects
407*83ee113eSDavid van Moolenbroek  some issues we found in the socket code.
408*83ee113eSDavid van Moolenbroek  [ISC-Bugs #24245]
409*83ee113eSDavid van Moolenbroek
410*83ee113eSDavid van Moolenbroek- Add a compile time check for the presence of the noreturn attribute
411*83ee113eSDavid van Moolenbroek  and use it for log_fatal if it's available.  This will help code
412*83ee113eSDavid van Moolenbroek  checking programs to eliminate false positives.
413*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27539]
414*83ee113eSDavid van Moolenbroek
415*83ee113eSDavid van Moolenbroek- Fixed many compilation problems ("set, but not used" warnings) for
416*83ee113eSDavid van Moolenbroek  gcc 4.6 that may affect Ubuntu 11.10 users. [ISC-Bugs #27588]
417*83ee113eSDavid van Moolenbroek
418*83ee113eSDavid van Moolenbroek- Modify the code that determines if an outstanding DDNS request
419*83ee113eSDavid van Moolenbroek  should be cancelled.  This patch results in cancelling the
420*83ee113eSDavid van Moolenbroek  outstanding request less often.  It fixes the problem caused
421*83ee113eSDavid van Moolenbroek  by a client doing a release where  the TXT and PTR records
422*83ee113eSDavid van Moolenbroek  weren't removed from the DNS.
423*83ee113eSDavid van Moolenbroek  [ISC-BUGS #27858]
424*83ee113eSDavid van Moolenbroek
425*83ee113eSDavid van Moolenbroek- Use offsetof() instead of sizeof() to get the sizes for dhcpv6_relay_packet
426*83ee113eSDavid van Moolenbroek  and dhcpv6_packet in several more places.  Thanks to a report from
427*83ee113eSDavid van Moolenbroek  Bruno Verstuyft and Vincent Demaertelaere of Excentis.
428*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27941]
429*83ee113eSDavid van Moolenbroek
430*83ee113eSDavid van Moolenbroek- Remove outdated note in the description of the bootp keyword about the
431*83ee113eSDavid van Moolenbroek  option not satisfying the requirement of failover peers for denying
432*83ee113eSDavid van Moolenbroek  dynamic bootp clients.
433*83ee113eSDavid van Moolenbroek  [ISC-bugs #28574]
434*83ee113eSDavid van Moolenbroek
435*83ee113eSDavid van Moolenbroek- Multiple items to clean up IPv6 address processing.
436*83ee113eSDavid van Moolenbroek  When processing an IA that we've seen check to see if the
437*83ee113eSDavid van Moolenbroek  addresses are usable (not in use by somebody else) before
438*83ee113eSDavid van Moolenbroek  handing it out.
439*83ee113eSDavid van Moolenbroek  When reading in leases from the file discard expired addresses.
440*83ee113eSDavid van Moolenbroek  When picking an address for a client include the IA ID in
441*83ee113eSDavid van Moolenbroek  addition to the client ID to generally pick different addresses
442*83ee113eSDavid van Moolenbroek  for different IAs.
443*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23138] [ISC-Bugs #27945] [ISC-Bugs #25586]
444*83ee113eSDavid van Moolenbroek  [ISC-Bugs #27684]
445*83ee113eSDavid van Moolenbroek
446*83ee113eSDavid van Moolenbroek- Remove unnecessary checks in the lease query code and clean up
447*83ee113eSDavid van Moolenbroek  several compiler issues (some dereferences of NULL and treating
448*83ee113eSDavid van Moolenbroek  an int as a boolean).
449*83ee113eSDavid van Moolenbroek  [ISC-Bugs #26203]
450*83ee113eSDavid van Moolenbroek
451*83ee113eSDavid van Moolenbroek- Fix the NA and PD allocation code to handle the case where a client
452*83ee113eSDavid van Moolenbroek  provides a preference and the server doesn't have any addresses or
453*83ee113eSDavid van Moolenbroek  prefixes available.  Previously the server ignored the request with
454*83ee113eSDavid van Moolenbroek  this patch it replies with a NoAddrsAvail or NoPrefixAvail response.
455*83ee113eSDavid van Moolenbroek  By default the code performs according to the errata of August 2010
456*83ee113eSDavid van Moolenbroek  for RFC 3315 section 17.2.2; to enable the previous style see the
457*83ee113eSDavid van Moolenbroek  section on RFC3315_PRE_ERRATA_2010_08 in includes/site.h.  This option
458*83ee113eSDavid van Moolenbroek  may be removed in the future.
459*83ee113eSDavid van Moolenbroek  Thanks to Jiri Popelka at Red Hat for the patch.
460*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22676]
461*83ee113eSDavid van Moolenbroek
462*83ee113eSDavid van Moolenbroek- Fix up some issues found by static analysis.
463*83ee113eSDavid van Moolenbroek  A potential memory leak and NULL dereference in omapi.
464*83ee113eSDavid van Moolenbroek  The use of a boolean test instead of a bitwise test in dst.
465*83ee113eSDavid van Moolenbroek  [ISC-Bugs #28941]
466*83ee113eSDavid van Moolenbroek
467*83ee113eSDavid van Moolenbroek- Rotate the lease file when running in v6 mode.
468*83ee113eSDavid van Moolenbroek  Thanks to Christoph Moench-Tegeder at Astaro for the
469*83ee113eSDavid van Moolenbroek  report and the first version of the patch.
470*83ee113eSDavid van Moolenbroek  [ISC-Bugs #24887]
471*83ee113eSDavid van Moolenbroek
472*83ee113eSDavid van Moolenbroek			Changes since 4.2.2
473*83ee113eSDavid van Moolenbroek
474*83ee113eSDavid van Moolenbroek- Fix the code that checks for an existing DDNS transaction to cancel
475*83ee113eSDavid van Moolenbroek  when removing DDNS information, so that we will continue with the
476*83ee113eSDavid van Moolenbroek  processing if we have a lease even if it doesn't have an outstanding
477*83ee113eSDavid van Moolenbroek  transaction.  [ISC-Bugs #24682]
478*83ee113eSDavid van Moolenbroek
479*83ee113eSDavid van Moolenbroek- Add AM_MAINTAINER_MODE to configure.ac to avoid rebuilding
480*83ee113eSDavid van Moolenbroek  configuration files.  [ISC-Bugs #24107]
481*83ee113eSDavid van Moolenbroek
482*83ee113eSDavid van Moolenbroek- Add support for passing DDNS information to a DNS server over
483*83ee113eSDavid van Moolenbroek  an IPv6 address.  [ISC-Bugs #22647]
484*83ee113eSDavid van Moolenbroek
485*83ee113eSDavid van Moolenbroek- Enhanced patch for 23595 to handle IPv4 fixed addresses more
486*83ee113eSDavid van Moolenbroek  cleanly.  [ISC-Bugs #23595]
487*83ee113eSDavid van Moolenbroek
488*83ee113eSDavid van Moolenbroek			Changes since 4.2.1
489*83ee113eSDavid van Moolenbroek
490*83ee113eSDavid van Moolenbroek! In dhclient check the data for some string options for
491*83ee113eSDavid van Moolenbroek  reasonableness before passing it along to the script that
492*83ee113eSDavid van Moolenbroek  interfaces with the OS.
493*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23722]
494*83ee113eSDavid van Moolenbroek  CVE: CVE-2011-0997
495*83ee113eSDavid van Moolenbroek
496*83ee113eSDavid van Moolenbroek- DHCPv6 server now responds properly if client asks for a prefix that
497*83ee113eSDavid van Moolenbroek  is already assigned to a different client. [ISC-Bugs #23948]
498*83ee113eSDavid van Moolenbroek
499*83ee113eSDavid van Moolenbroek- Add the option "--no-pid" to the client, relay and server code,
500*83ee113eSDavid van Moolenbroek  to disable writing a pid file.  Add the option "-pf pidfile"
501*83ee113eSDavid van Moolenbroek  to the relay to allow the user to supply the pidfile name at
502*83ee113eSDavid van Moolenbroek  runtime.  Add the "with-relay6-pid-file" option to configure
503*83ee113eSDavid van Moolenbroek  to allow the user to supply the pidfile name for the relay
504*83ee113eSDavid van Moolenbroek  in v6 mode at configure time.
505*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23351] [ISC-Bugs #17541]
506*83ee113eSDavid van Moolenbroek
507*83ee113eSDavid van Moolenbroek- 'dhclient' no longer waits a random interval after first starting up to
508*83ee113eSDavid van Moolenbroek  begin in the INIT state.  This conforms to RFC 2131, but elects not to
509*83ee113eSDavid van Moolenbroek  implement a 'SHOULD' direction in section 4.1. The goal of this change
510*83ee113eSDavid van Moolenbroek  is to start up faster. [ISC-Bugs #19660]
511*83ee113eSDavid van Moolenbroek
512*83ee113eSDavid van Moolenbroek- Added 'initial-delay' parameter that specifies maximum amount of time
513*83ee113eSDavid van Moolenbroek  before client goes to the INIT state. The default value is 0. In previous
514*83ee113eSDavid van Moolenbroek  versions of the code client could wait up to 5 seconds. The old behavior
515*83ee113eSDavid van Moolenbroek  may be restored by using 'initial-delay 5;' in the client config file.
516*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19660]
517*83ee113eSDavid van Moolenbroek
518*83ee113eSDavid van Moolenbroek- ICMP ping-check should now sit closer to precisely the number of seconds
519*83ee113eSDavid van Moolenbroek  configured (or default 1), due to making use of the new microsecond
520*83ee113eSDavid van Moolenbroek  scale timer internally to dhcpd.  This corrects a bug where the server
521*83ee113eSDavid van Moolenbroek  may immediately timeout an ICMP ping-check if it was made late in the
522*83ee113eSDavid van Moolenbroek  current second. [ISC-Bugs #19660]
523*83ee113eSDavid van Moolenbroek
524*83ee113eSDavid van Moolenbroek- The DHCP client will schedule renewal and rebinding events in
525*83ee113eSDavid van Moolenbroek  microseconds if the DHCP server provided a lease-time that would result
526*83ee113eSDavid van Moolenbroek  in sub-1-second timers.  This corrects a bug where a 2-second or lower
527*83ee113eSDavid van Moolenbroek  lease-time would cause the DHCP client to enter an infinite loop by
528*83ee113eSDavid van Moolenbroek  scheduling renewal at zero seconds. [ISC-Bugs #19660]
529*83ee113eSDavid van Moolenbroek
530*83ee113eSDavid van Moolenbroek- Client lease records are recorded at most once every 15 seconds.  This
531*83ee113eSDavid van Moolenbroek  keeps the client from filling the lease database disk quickly on very small
532*83ee113eSDavid van Moolenbroek  lease times. [ISC-Bugs #19660]
533*83ee113eSDavid van Moolenbroek
534*83ee113eSDavid van Moolenbroek- To defend against RFC 2131 non-compliant DHCP servers which fail to
535*83ee113eSDavid van Moolenbroek  advertise a lease-time (either mangled, or zero in value) the DHCP
536*83ee113eSDavid van Moolenbroek  client now adds the server to the reject list ACL and returns to INIT
537*83ee113eSDavid van Moolenbroek  state to hopefully find an RFC 2131 compliant server (or retry in INIT
538*83ee113eSDavid van Moolenbroek  forever). [ISC-Bugs #19660]
539*83ee113eSDavid van Moolenbroek
540*83ee113eSDavid van Moolenbroek- Parameters configured to evaluate from user defined function calls can
541*83ee113eSDavid van Moolenbroek  now be correctly written to dhcpd.leases (as on 'on events' or dynamic
542*83ee113eSDavid van Moolenbroek  host records inserted via OMAPI).  [ISC-Bugs #22266]
543*83ee113eSDavid van Moolenbroek
544*83ee113eSDavid van Moolenbroek- If a 'next-server' parameter is configured in a dynamic host record via
545*83ee113eSDavid van Moolenbroek  OMAPI as a domain name, the syntax written to disk is now correctly parsed
546*83ee113eSDavid van Moolenbroek  upon restart.  [ISC-Bugs #22266]
547*83ee113eSDavid van Moolenbroek
548*83ee113eSDavid van Moolenbroek- The DHCP server now responds to DHCPLEASEQUERY messages from agents using
549*83ee113eSDavid van Moolenbroek  IP addresses not covered by a subnet in configuration.  Whether or not to
550*83ee113eSDavid van Moolenbroek  respond to such an agent is still governed by the 'allow leasequery;'
551*83ee113eSDavid van Moolenbroek  configuration parameter, in the case of an agent not covered by a configured
552*83ee113eSDavid van Moolenbroek  subnet the root configuration area is examined. Server now also returns
553*83ee113eSDavid van Moolenbroek  vendor-class-id option, if client sent it. [ISC-Bugs #21094]
554*83ee113eSDavid van Moolenbroek
555*83ee113eSDavid van Moolenbroek- Documentation fixes
556*83ee113eSDavid van Moolenbroek  [ISC-Bugs #17959] add text to AIX section describing how to have it send
557*83ee113eSDavid van Moolenbroek  responses to the all-ones address.
558*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19615] update the includes in dhcpctl/dhcpctl.3 to be more correct
559*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20676] update dhcpd.conf.5 to include the RFC numbers for DDNS
560*83ee113eSDavid van Moolenbroek
561*83ee113eSDavid van Moolenbroek- Relay no longer crashes, when DHCP packet is received over interface without
562*83ee113eSDavid van Moolenbroek  any IPv4 address assigned. Also extended logging message about discarding
563*83ee113eSDavid van Moolenbroek  packets with invalid hlen with information about relevant interface name.
564*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22409]
565*83ee113eSDavid van Moolenbroek
566*83ee113eSDavid van Moolenbroek- Relay now properly logs that packet was received over interface without
567*83ee113eSDavid van Moolenbroek  global IPv6 address [ISC-Bugs #24070]
568*83ee113eSDavid van Moolenbroek
569*83ee113eSDavid van Moolenbroek- Linux Packet Filter interface improvement. sockaddr_pkt structure is used,
570*83ee113eSDavid van Moolenbroek  rather than sockaddr. Packet ethertype is now forced to ETH_P_IP.
571*83ee113eSDavid van Moolenbroek  [ISC-Bugs #18975]
572*83ee113eSDavid van Moolenbroek
573*83ee113eSDavid van Moolenbroek- Minor code cleanups - but note port change for #23196
574*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23470] - Modify when an ignore return macro is defined to
575*83ee113eSDavid van Moolenbroek  handle unsed error return warnings for more versions of gcc.
576*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23196] - Modify the reply handling in the server code to
577*83ee113eSDavid van Moolenbroek  send to a specified port rather than to the source port for the incoming
578*83ee113eSDavid van Moolenbroek  message.  Sending to the source port was test code that should have
579*83ee113eSDavid van Moolenbroek  been removed.  The previous functionality may be restored by defining
580*83ee113eSDavid van Moolenbroek  REPLY_TO_SOURCE_PORT in the includes/site.h file.  We suggest you don't
581*83ee113eSDavid van Moolenbroek  enable this except for testing purposes.
582*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22695] - Close a file descriptor in an error path.
583*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19368] - Tidy up variable types in validate_port.
584*83ee113eSDavid van Moolenbroek
585*83ee113eSDavid van Moolenbroek- Code cleanup: remove obsolete PROTO, KandR, INLINE and ANSI_DECL macros
586*83ee113eSDavid van Moolenbroek  [ISC-Bugs #13151]
587*83ee113eSDavid van Moolenbroek
588*83ee113eSDavid van Moolenbroek- Compilation problem with gcc4.5 and omshell.c resolved. [ISC-Bugs #23831]
589*83ee113eSDavid van Moolenbroek
590*83ee113eSDavid van Moolenbroek- Client Script fixes
591*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23045] Typos in client/scripts/openbsd
592*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23565] In the client scripts add a zone id (interface id) if
593*83ee113eSDavid van Moolenbroek  the domain search address is link local.
594*83ee113eSDavid van Moolenbroek  [ISC-Bugs #1277] In some of the client scripts add code to handle the
595*83ee113eSDavid van Moolenbroek  case of the default router information being changed without the address
596*83ee113eSDavid van Moolenbroek  being changed.
597*83ee113eSDavid van Moolenbroek
598*83ee113eSDavid van Moolenbroek- Documentation cleanup
599*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23326] Updated References document, several man page updates
600*83ee113eSDavid van Moolenbroek
601*83ee113eSDavid van Moolenbroek- Server no longer complains about NULL pointer when configured
602*83ee113eSDavid van Moolenbroek  server-identifier expression fails to evaluate. [ISC-Bugs #24547]
603*83ee113eSDavid van Moolenbroek
604*83ee113eSDavid van Moolenbroek- Convert ISC_R_INPROGRESS status to ISC_R_SUCCESS when called from other
605*83ee113eSDavid van Moolenbroek  than the dispatch handler.  This fixes an issue where omshell, when
606*83ee113eSDavid van Moolenbroek  run from the same platform as the server, would appear to fail to
607*83ee113eSDavid van Moolenbroek  connect.  This is a companion to #21839.  [ISC-Bugs #23592]
608*83ee113eSDavid van Moolenbroek
609*83ee113eSDavid van Moolenbroek- Enlarge the buffer size used by the Omshell code and some of the
610*83ee113eSDavid van Moolenbroek  print routines to allow for greater than 60 characters or, when
611*83ee113eSDavid van Moolenbroek  printing as hex strings, 20 characters.  [ISC-Bugs #22743]
612*83ee113eSDavid van Moolenbroek
613*83ee113eSDavid van Moolenbroek- In Solaris 11 switch to using sockets instead of DLPI, thanks
614*83ee113eSDavid van Moolenbroek  to a patch form Oracle.  [ISC-Bugs #24634].
615*83ee113eSDavid van Moolenbroek
616*83ee113eSDavid van Moolenbroek- Strict checks for content of domain-name DHCPv4 option can now be
617*83ee113eSDavid van Moolenbroek  configured during compilation time. Even though RFC2132 does not allow
618*83ee113eSDavid van Moolenbroek  to store more than one domain in domain-name option, such behavior is
619*83ee113eSDavid van Moolenbroek  now enabled by default, but this may change some time in the future.
620*83ee113eSDavid van Moolenbroek  See ACCEPT_LIST_IN_DOMAIN_NAME define in includes/site.h.
621*83ee113eSDavid van Moolenbroek  [ISC-Bugs #24167]
622*83ee113eSDavid van Moolenbroek
623*83ee113eSDavid van Moolenbroek- DNS Update fix. A misconfigured server could crash during DNS update
624*83ee113eSDavid van Moolenbroek  processing if the configuration included overlapping pools or
625*83ee113eSDavid van Moolenbroek  multiple fixed-address entries for a single address.  This issue
626*83ee113eSDavid van Moolenbroek  affected both IPv4 and IPv6. The fix allows a server to detect such
627*83ee113eSDavid van Moolenbroek  conditions, provides the user with extra information and recommended
628*83ee113eSDavid van Moolenbroek  steps to fix the problem.  If the user enables the appropriate option
629*83ee113eSDavid van Moolenbroek  in site.h then server will be terminated
630*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23595]
631*83ee113eSDavid van Moolenbroek
632*83ee113eSDavid van Moolenbroek! Two packets were found that cause a server to halt.  The code
633*83ee113eSDavid van Moolenbroek  has been updated to properly process or reject the packets as
634*83ee113eSDavid van Moolenbroek  appropriate.  Thanks to David Zych at University of Illinois
635*83ee113eSDavid van Moolenbroek  for reporting this issue.  [ISC-Bugs #24960]
636*83ee113eSDavid van Moolenbroek  One CVE number for each class of packet.
637*83ee113eSDavid van Moolenbroek  CVE-2011-2748
638*83ee113eSDavid van Moolenbroek  CVE-2011-2749
639*83ee113eSDavid van Moolenbroek
640*83ee113eSDavid van Moolenbroek			Changes since 4.2.0
641*83ee113eSDavid van Moolenbroek
642*83ee113eSDavid van Moolenbroek- Documentation cleanup covering multiple tickets
643*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20265] [ISC-Bugs #20259] minor cleanup
644*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20263] add text describing some default values
645*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20193] single quotes at the start of a line indicate a control
646*83ee113eSDavid van Moolenbroek  line to nroff, escape them if we actually want a quote.
647*83ee113eSDavid van Moolenbroek  [ISC-Bugs #18916] sync the pointer to web pages amongst the different docs
648*83ee113eSDavid van Moolenbroek
649*83ee113eSDavid van Moolenbroek- 'get-host-names true;' now also works even if 'use-host-decl-names true;'
650*83ee113eSDavid van Moolenbroek  was also configured.  The nature of this repair also fixes another
651*83ee113eSDavid van Moolenbroek  error; the host-name supplied by a client is no longer overridden by a
652*83ee113eSDavid van Moolenbroek  reverse lookup of the lease address.  Thanks to a patch from Wilco Baan
653*83ee113eSDavid van Moolenbroek  Hofman supplied to us by the Debian package maintenance team.
654*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21691] {Debian Bug#509445}
655*83ee113eSDavid van Moolenbroek
656*83ee113eSDavid van Moolenbroek- The .TH tag for the dhcp-options manpage was typo repaired
657*83ee113eSDavid van Moolenbroek  thanks to a report from jidanni and the Debian package maintenance
658*83ee113eSDavid van Moolenbroek  team.  [ISC-Bugs #21676] {Debian Bug#563613}
659*83ee113eSDavid van Moolenbroek
660*83ee113eSDavid van Moolenbroek- More documentation changes - primarily to put the options in the dhclient
661*83ee113eSDavid van Moolenbroek  and dhcpd man pages into the standard form.  Thanks in part to a patch
662*83ee113eSDavid van Moolenbroek  from David Cantrell at Red Hat.
663*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20264] and parts of [ISC-Bugs #17744] dhclient.8 changes
664*83ee113eSDavid van Moolenbroek
665*83ee113eSDavid van Moolenbroek- Add code to clear the pointer to an object in an OMAPI handle when the
666*83ee113eSDavid van Moolenbroek  object is freed due to a dereference.  [ISC-Bugs #21306]
667*83ee113eSDavid van Moolenbroek
668*83ee113eSDavid van Moolenbroek- Fixed a bug that leaks host record references onto lease structures,
669*83ee113eSDavid van Moolenbroek  causing the server to apply configuration intended for one host to any
670*83ee113eSDavid van Moolenbroek  other innocent clients that come along later.  [ISC-Bugs #22018]
671*83ee113eSDavid van Moolenbroek
672*83ee113eSDavid van Moolenbroek- Minor code fixes
673*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19566] When trying to find the zone for a name for ddns allow
674*83ee113eSDavid van Moolenbroek  the name to be at the apex of the zone.
675*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19617] Restrict length of interface name read from command line
676*83ee113eSDavid van Moolenbroek  in dhcpd - based on a patch from David Cantrell at Red Hat.
677*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20039] Correct some error messages in dhcpd.c
678*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20070] Better range check on values when creating a DHCID.
679*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20198] Avoid writing past the end of the field when adding
680*83ee113eSDavid van Moolenbroek  overly long file or server names to a packet and add a log message
681*83ee113eSDavid van Moolenbroek  if the configuration supplied overly long names for these fields.
682*83ee113eSDavid van Moolenbroek  Thanks to Martin Pala.
683*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21497] Add a little more randomness to rng seed in client
684*83ee113eSDavid van Moolenbroek  thanks to a patch from Jeremiah Jinno.
685*83ee113eSDavid van Moolenbroek
686*83ee113eSDavid van Moolenbroek- Correct error handling in DLPI [ISC-Bugs #20378]
687*83ee113eSDavid van Moolenbroek
688*83ee113eSDavid van Moolenbroek- Remove __sun__ and __hpux__ typedefs in osdep.h as they are now being
689*83ee113eSDavid van Moolenbroek  checked in configure.  [ISC-Bugs #20443]
690*83ee113eSDavid van Moolenbroek
691*83ee113eSDavid van Moolenbroek- Modify how the cmsg header is allocated the v6 send and received routines
692*83ee113eSDavid van Moolenbroek  to compile on more compilers.  [ISC-Bugs #20524]
693*83ee113eSDavid van Moolenbroek
694*83ee113eSDavid van Moolenbroek- When parsing a domain name free the memory for the name after we are
695*83ee113eSDavid van Moolenbroek  done with it.  [ISC-Bugs #20824]
696*83ee113eSDavid van Moolenbroek
697*83ee113eSDavid van Moolenbroek- Add an elapsed time option to the release message and refactor the
698*83ee113eSDavid van Moolenbroek  code to move most of the common code to a single routine.
699*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21171].
700*83ee113eSDavid van Moolenbroek
701*83ee113eSDavid van Moolenbroek- Two identical log messages for commit_leases() have been disambiguated.
702*83ee113eSDavid van Moolenbroek  [ISC-Bugs #18915]
703*83ee113eSDavid van Moolenbroek
704*83ee113eSDavid van Moolenbroek- Parse date strings more properly - the code now handles semi-colons in
705*83ee113eSDavid van Moolenbroek  date strings correctly.  Thanks to a patch from Jiri Popelka at Red Hat.
706*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21501, #20598]
707*83ee113eSDavid van Moolenbroek
708*83ee113eSDavid van Moolenbroek- Fixes to lease input and output.
709*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20418] - Some systems don't support the "%s" argument to
710*83ee113eSDavid van Moolenbroek  strftime, paste together the same string using mktime instead.
711*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19596] - When parsing iaid values accept printable
712*83ee113eSDavid van Moolenbroek  characters.
713*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21585] - Always print time values in omshell as hex
714*83ee113eSDavid van Moolenbroek  instead of ascii if the values happen to be printable characters.
715*83ee113eSDavid van Moolenbroek
716*83ee113eSDavid van Moolenbroek- Minor changes for scripts, configure.ac and Makefiles
717*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19147] Use domain-search instead of domain-name in manual and
718*83ee113eSDavid van Moolenbroek                    example conf file.  Thanks to a patch from David Cantrell
719*83ee113eSDavid van Moolenbroek                    at Red Hat.
720*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19761] Restore address when doing a rebind in DHCPv6
721*83ee113eSDavid van Moolenbroek  [ISC-Bugs #19945] Properly close the quote on some arguments.
722*83ee113eSDavid van Moolenbroek  [ISC-Bugs #20952] Add 64 bit types to configure.ac
723*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21308] Add "PATH=" to CLIENT_PATH envrionment variable
724*83ee113eSDavid van Moolenbroek
725*83ee113eSDavid van Moolenbroek- Update the code to parse dhcpv6 lease files to accept a semi-colon at
726*83ee113eSDavid van Moolenbroek  the end of the max-life and preferred-life clauses.  In order to be
727*83ee113eSDavid van Moolenbroek  backwards compatible with older lease files not finding a semi-colon
728*83ee113eSDavid van Moolenbroek  is also accepted.  [ISC-Bugs #22303].
729*83ee113eSDavid van Moolenbroek
730*83ee113eSDavid van Moolenbroek! Handle a relay forward message with an unspecified address in the
731*83ee113eSDavid van Moolenbroek  link address field.  Previously such a message would cause the
732*83ee113eSDavid van Moolenbroek  server to crash.  Thanks to a report from John Gibbons.  [ISC-Bugs #21992]
733*83ee113eSDavid van Moolenbroek  CERT: VU#102047 CVE: CVE-2010-3611
734*83ee113eSDavid van Moolenbroek
735*83ee113eSDavid van Moolenbroek- ./configure on longer searches for -lcrypto to explicitly link against.
736*83ee113eSDavid van Moolenbroek  This fixes a bug where 'dhclient' would have shared library dependencies
737*83ee113eSDavid van Moolenbroek  on '/usr/lib'.  [ISC-Bugs #21967]
738*83ee113eSDavid van Moolenbroek
739*83ee113eSDavid van Moolenbroek- Handle pipe failures more gracefully.  Some OSes pass a SIGPIPE
740*83ee113eSDavid van Moolenbroek  signal to a process and will kill the process if the signal isn't
741*83ee113eSDavid van Moolenbroek  caught.  This patch adds code to turn off the SIGPIPE signal via
742*83ee113eSDavid van Moolenbroek  a setsockopt() call.  The signal is already being ignored as part
743*83ee113eSDavid van Moolenbroek  of the ISC library.  [ISC-Bugs #22269]
744*83ee113eSDavid van Moolenbroek
745*83ee113eSDavid van Moolenbroek- Restore printing of values in omshell to the style pre 21585.  For
746*83ee113eSDavid van Moolenbroek  21585 we changed the print routines to always display time values
747*83ee113eSDavid van Moolenbroek  as a hex list.  This had a side effect of printing all data strings
748*83ee113eSDavid van Moolenbroek  as a hex list.  We shall investigate other ways of displaying time
749*83ee113eSDavid van Moolenbroek  values more usefully.  [ISC-Bugs #22626]
750*83ee113eSDavid van Moolenbroek
751*83ee113eSDavid van Moolenbroek! Fix the handling of connection requests on the failover port.
752*83ee113eSDavid van Moolenbroek  Previously a connection request from a source that wasn't
753*83ee113eSDavid van Moolenbroek  listed as a failover peer would cause the server to become
754*83ee113eSDavid van Moolenbroek  non-responsive.  Thanks to a report from Brad Bendily, brad@bendily.com.
755*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22679]
756*83ee113eSDavid van Moolenbroek  CERT: VU#159528 CVE: CVE-2010-3616
757*83ee113eSDavid van Moolenbroek
758*83ee113eSDavid van Moolenbroek- Don't pass the ISC_R_INPROGRESS status to the omapi signal handlers.
759*83ee113eSDavid van Moolenbroek  Passing it through to the handlers caused the omshell program to fail
760*83ee113eSDavid van Moolenbroek  to connect to the server.  [ISC-Bugs #21839]
761*83ee113eSDavid van Moolenbroek
762*83ee113eSDavid van Moolenbroek- Fix the paranthesis in the code to process configuration statements
763*83ee113eSDavid van Moolenbroek  beginning with "auth".  The previous arrangement caused
764*83ee113eSDavid van Moolenbroek  "auto-partner-down" to be processed incorrectly.  [ISC-Bugs #21854]
765*83ee113eSDavid van Moolenbroek
766*83ee113eSDavid van Moolenbroek- Limit the timeout period allowed in the dispatch code to 2^^32-1 seconds.
767*83ee113eSDavid van Moolenbroek  Thanks to a report from Jiri Popelka at Red Hat.
768*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22033], [Red Hat Bug #628258]
769*83ee113eSDavid van Moolenbroek
770*83ee113eSDavid van Moolenbroek- When processing the format flags for a given option consume the
771*83ee113eSDavid van Moolenbroek  flag indicating an optional value correctly.  A symptom of this
772*83ee113eSDavid van Moolenbroek  bug was an infinite loop when trying to parse the slp-service-scope
773*83ee113eSDavid van Moolenbroek  option.  Thanks to a patch from Marius Tomaschewski.
774*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22055]
775*83ee113eSDavid van Moolenbroek
776*83ee113eSDavid van Moolenbroek- Disable the use of kqueue in the ISC library.  This avoids a problem
777*83ee113eSDavid van Moolenbroek  between the fork and socket code that caused the dhcpd process to
778*83ee113eSDavid van Moolenbroek  use all available cpu if the program daemonized itself.
779*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21911]
780*83ee113eSDavid van Moolenbroek
781*83ee113eSDavid van Moolenbroek! When processing a request in the DHCPv6 server code that specifies
782*83ee113eSDavid van Moolenbroek  an address that is tagged as abandoned (meaning we received a
783*83ee113eSDavid van Moolenbroek  decline request for it previously) don't attempt to move it from
784*83ee113eSDavid van Moolenbroek  the inactive to active pool as doing so can result in the server
785*83ee113eSDavid van Moolenbroek  crashing on an assert failure.  Also retag the lease as active
786*83ee113eSDavid van Moolenbroek  and reset its timeout value.
787*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21921]
788*83ee113eSDavid van Moolenbroek
789*83ee113eSDavid van Moolenbroek- Removed the restriction on using IPv6 addresses in IPv4 mode.  This
790*83ee113eSDavid van Moolenbroek  allows IPv4 options which contain IPv6 addresses to be specified.  For
791*83ee113eSDavid van Moolenbroek  example the 6rd option can be specified and used like this:
792*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23039]
793*83ee113eSDavid van Moolenbroek
794*83ee113eSDavid van Moolenbroek	option 6rd code 212 = { integer 8, integer 8,
795*83ee113eSDavid van Moolenbroek				ip6-address, array of ip-address };
796*83ee113eSDavid van Moolenbroek	option 6rd 16 10 2001:: 1.2.3.4, 5.6.7.8;
797*83ee113eSDavid van Moolenbroek
798*83ee113eSDavid van Moolenbroek- Handle some DDNS corner cases better.  Maintain the DDNS transaction
799*83ee113eSDavid van Moolenbroek  information when updating a lease and cancel any existing transactions
800*83ee113eSDavid van Moolenbroek  when removing the ddns information.
801*83ee113eSDavid van Moolenbroek  [ISC-Bugs #23103]
802*83ee113eSDavid van Moolenbroek
803*83ee113eSDavid van Moolenbroek- Some fixes for LDAP
804*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21783] - Include lber library when building ldap
805*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22888] - Enable the ldap code when buidling common
806*83ee113eSDavid van Moolenbroek  The above fixes are from Jiri Popelka at Red Hat.
807*83ee113eSDavid van Moolenbroek
808*83ee113eSDavid van Moolenbroek- Modify the dlpi code to accept getmsg() returning a positive value.
809*83ee113eSDavid van Moolenbroek  [ISC-Bugs #22824]
810*83ee113eSDavid van Moolenbroek
811*83ee113eSDavid van Moolenbroek			Changes since 4.2.0b2
812*83ee113eSDavid van Moolenbroek
813*83ee113eSDavid van Moolenbroek- Add declaration for variable in debug code in alloc.c.  [ISC-Bugs #21472]
814*83ee113eSDavid van Moolenbroek
815*83ee113eSDavid van Moolenbroek			Changes since 4.2.0b1
816*83ee113eSDavid van Moolenbroek
817*83ee113eSDavid van Moolenbroek- Prohibit including lease time information in a response to a DHCP INFORM.
818*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21092]
819*83ee113eSDavid van Moolenbroek
820*83ee113eSDavid van Moolenbroek! Accept a client id of length 0 while hashing.  Previously the server would
821*83ee113eSDavid van Moolenbroek  exit if it attempted to hash a zero length client id, providing attackers
822*83ee113eSDavid van Moolenbroek  with a simple denial of service attack.  [ISC-Bugs #21253]
823*83ee113eSDavid van Moolenbroek  CERT: VU#541921 - CVE: CVE-2010-2156
824*83ee113eSDavid van Moolenbroek
825*83ee113eSDavid van Moolenbroek- A memory leak in ddns processing was closed.  [ISC-Bugs #21377]
826*83ee113eSDavid van Moolenbroek
827*83ee113eSDavid van Moolenbroek- Modify the exception handling for initial context creation.  Previously
828*83ee113eSDavid van Moolenbroek  we would try and clean up before exiting.  This could present problems
829*83ee113eSDavid van Moolenbroek  when the cleanup required part of the context that wasn't available.  It
830*83ee113eSDavid van Moolenbroek  also didn't do much as we exited afterwards anyway.   Now we simply log
831*83ee113eSDavid van Moolenbroek  the error and exit. [ISC-Bugs #21093]
832*83ee113eSDavid van Moolenbroek
833*83ee113eSDavid van Moolenbroek- A bug was fixed that could cause the DHCPv6 server to advertise/assign a
834*83ee113eSDavid van Moolenbroek  previously allocated (active) lease to a client that has changed subnets,
835*83ee113eSDavid van Moolenbroek  despite being on different shared networks.  Dynamic prefixes specifically
836*83ee113eSDavid van Moolenbroek  allocated in shared networks also now are not offered if the client has
837*83ee113eSDavid van Moolenbroek  moved.  [ISC-Bugs #21152]
838*83ee113eSDavid van Moolenbroek
839*83ee113eSDavid van Moolenbroek- Add some debugging output for use with the DDNS code. [ISC-Bugs #20916]
840*83ee113eSDavid van Moolenbroek
841*83ee113eSDavid van Moolenbroek- Fix the trace code to handle timing events better and to truncate a file
842*83ee113eSDavid van Moolenbroek  before using instead of overwriting it.  [ISC-Bugs #20969]
843*83ee113eSDavid van Moolenbroek
844*83ee113eSDavid van Moolenbroek- Modify the determination of the default TTL to use for DDNS updates.
845*83ee113eSDavid van Moolenbroek  The user may still configure the ttl via ddns-ttl.  The default for
846*83ee113eSDavid van Moolenbroek  both v4 and v6 is now 1/2 the (preferred) lease time with a limit.  The
847*83ee113eSDavid van Moolenbroek  previous defaults (1/2 lease time without a limit for v4 and a default
848*83ee113eSDavid van Moolenbroek  value for v6) may be used by defining USE_OLD_DDNS_TTL in site.h
849*83ee113eSDavid van Moolenbroek  [ISC-Bugs #21126]
850*83ee113eSDavid van Moolenbroek
851*83ee113eSDavid van Moolenbroek- libisc/libdns is now brought up to version 9.7.1rc1.  This corrects
852*83ee113eSDavid van Moolenbroek  three reported flaws in ISC DHCP;
853*83ee113eSDavid van Moolenbroek
854*83ee113eSDavid van Moolenbroek  o DHCP processes (dhcpd, dhclient) fail to start if one of either the
855*83ee113eSDavid van Moolenbroek    IPv4 or IPv6 address families is not present.  [ISC-Bugs #21122]
856*83ee113eSDavid van Moolenbroek
857*83ee113eSDavid van Moolenbroek  o Assertion failure when attempting to cancel a previously running DDNS
858*83ee113eSDavid van Moolenbroek    update.  [ISC-Bugs #21133]
859*83ee113eSDavid van Moolenbroek
860*83ee113eSDavid van Moolenbroek  o Compilation failure of libisc/libdns due to the use of a flexible
861*83ee113eSDavid van Moolenbroek    array member.  [ISC-Bugs #21316]
862*83ee113eSDavid van Moolenbroek
863*83ee113eSDavid van Moolenbroek			Changes since 4.2.0a2
864*83ee113eSDavid van Moolenbroek
865*83ee113eSDavid van Moolenbroek- Update the fsync code to work with the changes to the DDNS code.  It now
866*83ee113eSDavid van Moolenbroek  uses a timer instead of noticing if there are no more packets to process.
867*83ee113eSDavid van Moolenbroek
868*83ee113eSDavid van Moolenbroek- When constructing the DNS name structure from a text string append
869*83ee113eSDavid van Moolenbroek  the root to relative names.  This satisfies a requirement in the DNS
870*83ee113eSDavid van Moolenbroek  library that names be absolute instead of relative and prevents DHCP
871*83ee113eSDavid van Moolenbroek  from crashing.  [ISC-Bugs #21054]
872*83ee113eSDavid van Moolenbroek
873*83ee113eSDavid van Moolenbroek- "The LDAP Patch" that has been circulating for some time, written by
874*83ee113eSDavid van Moolenbroek  Brian Masney and S.Kalyanasundraram and maintained for application to
875*83ee113eSDavid van Moolenbroek  the DHCP-4 sources by David Cantrell has been included.  Please be
876*83ee113eSDavid van Moolenbroek  advised that these sources were contributed, and do not yet meet the
877*83ee113eSDavid van Moolenbroek  high standards we place on production sources we include by default.
878*83ee113eSDavid van Moolenbroek  As a result, the LDAP features are only included by using a compile-time
879*83ee113eSDavid van Moolenbroek  option which defaults off, and if you enable it you do so under your
880*83ee113eSDavid van Moolenbroek  own recognizance.  We will be improving this software over time.
881*83ee113eSDavid van Moolenbroek  [ISC-Bugs #17741]
882*83ee113eSDavid van Moolenbroek
883*83ee113eSDavid van Moolenbroek			Changes since 4.2.0a1
884*83ee113eSDavid van Moolenbroek
885*83ee113eSDavid van Moolenbroek- When using 'ignore client-updates;', the FQDN returned to the client
886*83ee113eSDavid van Moolenbroek  is no longer truncated to one octet.
887*83ee113eSDavid van Moolenbroek
888*83ee113eSDavid van Moolenbroek- Cleaned up an unused hardware address variable in nak_lease().
889*83ee113eSDavid van Moolenbroek
890*83ee113eSDavid van Moolenbroek- Manpage entries for the ia-pd and ia-prefix options were updated to
891*83ee113eSDavid van Moolenbroek  reflect support for prefix delegation.
892*83ee113eSDavid van Moolenbroek
893*83ee113eSDavid van Moolenbroek- Cleaned up some compiler warnings
894*83ee113eSDavid van Moolenbroek
895*83ee113eSDavid van Moolenbroek- An optimization described in the failover protocol draft is now included,
896*83ee113eSDavid van Moolenbroek  which permits a DHCP server operating in communications-interrupted state
897*83ee113eSDavid van Moolenbroek  to 'rewind' a lease to the state most recently transmitted to its peer,
898*83ee113eSDavid van Moolenbroek  greatly increasing a server's endurance in communications-interrupted.
899*83ee113eSDavid van Moolenbroek  This is supported using a new 'rewind state' record on the dhcpd.leases
900*83ee113eSDavid van Moolenbroek  entry for each lease.
901*83ee113eSDavid van Moolenbroek
902*83ee113eSDavid van Moolenbroek- Fix the trace code which was broken by the changes to the DDNS code.
903*83ee113eSDavid van Moolenbroek
904*83ee113eSDavid van Moolenbroek			Changes since 4.1.0 (new features)
905*83ee113eSDavid van Moolenbroek
906*83ee113eSDavid van Moolenbroek- Failover port configuration can now be left to defaults (port 647) as
907*83ee113eSDavid van Moolenbroek  described in the -12 revision of the Failover draft (and assigned by
908*83ee113eSDavid van Moolenbroek  IANA).  Thanks in part to a patch from David Cantrell at Red Hat.
909*83ee113eSDavid van Moolenbroek
910*83ee113eSDavid van Moolenbroek- If configured, dhclient may now transmit to an anycast MAC address,
911*83ee113eSDavid van Moolenbroek  rather than using a broadcast address.  Thanks to a patch from David
912*83ee113eSDavid van Moolenbroek  Cantrell at Red Hat.
913*83ee113eSDavid van Moolenbroek
914*83ee113eSDavid van Moolenbroek- Added client support for setting interface MTU and metric, thanks to
915*83ee113eSDavid van Moolenbroek  Roy "UberLord" Marples <roy@marples.name>.
916*83ee113eSDavid van Moolenbroek
917*83ee113eSDavid van Moolenbroek- Added client -D option to specify DUID type to send.
918*83ee113eSDavid van Moolenbroek
919*83ee113eSDavid van Moolenbroek- A new failover configuration parameter has been introduced for those
920*83ee113eSDavid van Moolenbroek  environments where DHCP servers can be reasonably guaranteed to be
921*83ee113eSDavid van Moolenbroek  "down" when the failover TCP socket is severed, "auto-partner-down".
922*83ee113eSDavid van Moolenbroek  This parameter is not generally safe, and by default is disabled, so
923*83ee113eSDavid van Moolenbroek  please carefully review the documentation of this parameter in the
924*83ee113eSDavid van Moolenbroek  dhcpd.conf(5) manpage before determining to use it yourself.
925*83ee113eSDavid van Moolenbroek
926*83ee113eSDavid van Moolenbroek- Added a configuration function, 'gethostname()', which calls the system
927*83ee113eSDavid van Moolenbroek  function of the same name and presents the results as a data expression.
928*83ee113eSDavid van Moolenbroek  This function can be used to incorporate the system level hostname of
929*83ee113eSDavid van Moolenbroek  the system the DHCP software is operating on in responses or queries (such
930*83ee113eSDavid van Moolenbroek  as including a failover partner's hostname in a dhcp message or binding
931*83ee113eSDavid van Moolenbroek  scope, or having a DHCP client send any system hostname in the host-name or
932*83ee113eSDavid van Moolenbroek  FQDN options by default).
933*83ee113eSDavid van Moolenbroek
934*83ee113eSDavid van Moolenbroek- The dhcp-renewal-time and dhcp-rebinding-time options may now be configured
935*83ee113eSDavid van Moolenbroek  for DHCPv4 operation and used independently of the dhcp-lease-time
936*83ee113eSDavid van Moolenbroek  calculations.  Invalid renew and rebinding times (e.g., greater than the
937*83ee113eSDavid van Moolenbroek  determined lease time) are omitted.
938*83ee113eSDavid van Moolenbroek
939*83ee113eSDavid van Moolenbroek- Processing the DHCP to DNS server transactions in an asyncrhonous fashion.
940*83ee113eSDavid van Moolenbroek  The DHCP server or client can now continue with its processing while
941*83ee113eSDavid van Moolenbroek  awaiting replies from the DNS server.
942*83ee113eSDavid van Moolenbroek
943*83ee113eSDavid van Moolenbroek- The 'hardware [ethernet|etc] ...;' parameter in host records has been
944*83ee113eSDavid van Moolenbroek  extended to attempt to match DHCPv6 clients by the last octets of a
945*83ee113eSDavid van Moolenbroek  DUID-LL or DUID-LLT provided by the client.
946*83ee113eSDavid van Moolenbroek
947*83ee113eSDavid van Moolenbroek			Changes since 4.1.0 (bug fixes)
948*83ee113eSDavid van Moolenbroek
949*83ee113eSDavid van Moolenbroek- Remove infinite loop in token_print_indent_concat().
950*83ee113eSDavid van Moolenbroek
951*83ee113eSDavid van Moolenbroek- Validate the argument to the -p option.
952*83ee113eSDavid van Moolenbroek
953*83ee113eSDavid van Moolenbroek- The notorious 'option <unknown> ... larger than buffer' log line,
954*83ee113eSDavid van Moolenbroek  which is seen in some malformed DHCP client packets, was modified.
955*83ee113eSDavid van Moolenbroek  It now logs the universe name, and does not log the length values
956*83ee113eSDavid van Moolenbroek  (which are bogus corruption read from the packet anyway).  It also
957*83ee113eSDavid van Moolenbroek  carries a hopefully more useful explanation.
958*83ee113eSDavid van Moolenbroek
959*83ee113eSDavid van Moolenbroek- Suppress spurious warnings from configure about --datarootdir
960*83ee113eSDavid van Moolenbroek
961*83ee113eSDavid van Moolenbroek- A bug was fixed that caused the server not to answer some valid Solicit
962*83ee113eSDavid van Moolenbroek  and Request packets, if the dynamic range covering any requested addresses
963*83ee113eSDavid van Moolenbroek  had been deleted from configuration.
964*83ee113eSDavid van Moolenbroek
965*83ee113eSDavid van Moolenbroek- Update the code to deal with GCC 4.3.  This included two sets of changes.
966*83ee113eSDavid van Moolenbroek  The first is to the configuration files to include the use of
967*83ee113eSDavid van Moolenbroek  AC_USE_SYSTEM_EXTENSIONS.  The second is to deal with return values that
968*83ee113eSDavid van Moolenbroek  were being ignored.
969*83ee113eSDavid van Moolenbroek
970*83ee113eSDavid van Moolenbroek- The db-time-format option was documented in manpages.
971*83ee113eSDavid van Moolenbroek
972*83ee113eSDavid van Moolenbroek- Using reserved leases no longer results in 'lease with binding state
973*83ee113eSDavid van Moolenbroek  free not on its queue' error messages, thanks to a patch from Frode
974*83ee113eSDavid van Moolenbroek  Nordahl.
975*83ee113eSDavid van Moolenbroek
976*83ee113eSDavid van Moolenbroek- Fix a build error in dhcrelay, using older versions of gcc with
977*83ee113eSDavid van Moolenbroek  dhcpv6 disabled.
978*83ee113eSDavid van Moolenbroek
979*83ee113eSDavid van Moolenbroek- Two uninitialized stack structures are now memset to zero, thanks to a
980*83ee113eSDavid van Moolenbroek  patch from David Cantrell at Red Hat.
981*83ee113eSDavid van Moolenbroek
982*83ee113eSDavid van Moolenbroek- Fixed a cosmetic bug where pretty-printing valid domain-search options would
983*83ee113eSDavid van Moolenbroek  result in an erroneous error log message ('garbage in format string').
984*83ee113eSDavid van Moolenbroek
985*83ee113eSDavid van Moolenbroek- A bug in DLPI packet transmission (Solaris, HP/UX) that caused the server
986*83ee113eSDavid van Moolenbroek  to stop receiving packets is fixed.  The same fix also means that the MAC
987*83ee113eSDavid van Moolenbroek  address will no longer appear 'bogus' on DLPI-based systems.
988*83ee113eSDavid van Moolenbroek
989*83ee113eSDavid van Moolenbroek- A bug in select handling was discovered where the results of one select()
990*83ee113eSDavid van Moolenbroek  call were discarded, causing the server to process the next select() call
991*83ee113eSDavid van Moolenbroek  and use more system calls than required.  This has been repaired - the
992*83ee113eSDavid van Moolenbroek  sockets will be handled after the first return from select(), resulting in
993*83ee113eSDavid van Moolenbroek  fewer system calls.
994*83ee113eSDavid van Moolenbroek
995*83ee113eSDavid van Moolenbroek- The update-conflict-detection feature would leave an FQDN updated without
996*83ee113eSDavid van Moolenbroek  a DHCID (still currently implemented as a TXT RR).  This would cause later
997*83ee113eSDavid van Moolenbroek  expiration or release events to fail to remove the domain name.  The feature
998*83ee113eSDavid van Moolenbroek  now also inserts the client's up to date DHCID record, so records may safely
999*83ee113eSDavid van Moolenbroek  be removed at expiration or release time.  Thanks to a patch submitted by
1000*83ee113eSDavid van Moolenbroek  Christof Chen.
1001*83ee113eSDavid van Moolenbroek
1002*83ee113eSDavid van Moolenbroek- Memory leak in the load_balance_mine() function is fixed.  This would
1003*83ee113eSDavid van Moolenbroek  leak ~20-30 octets per DHCPDISCOVER packet while failover was in use
1004*83ee113eSDavid van Moolenbroek  and in normal state.
1005*83ee113eSDavid van Moolenbroek
1006*83ee113eSDavid van Moolenbroek- Various compilation fixes have been included for the memory related
1007*83ee113eSDavid van Moolenbroek  DEBUG #defines in includes/site.h.
1008*83ee113eSDavid van Moolenbroek
1009*83ee113eSDavid van Moolenbroek- Fixed Linux client script 'unary operator expected' errors with DHCPv6.
1010*83ee113eSDavid van Moolenbroek
1011*83ee113eSDavid van Moolenbroek- Fixed setting hostname in Linux hosts that require hostname argument
1012*83ee113eSDavid van Moolenbroek  to be double-quoted.  Also allow server-provided hostname to
1013*83ee113eSDavid van Moolenbroek  override hostnames 'localhost' and '(none)'.
1014*83ee113eSDavid van Moolenbroek
1015*83ee113eSDavid van Moolenbroek- Fixed failover reconnection retry code to continue to retry to reconnect
1016*83ee113eSDavid van Moolenbroek  rather than restarting the listener.
1017*83ee113eSDavid van Moolenbroek
1018*83ee113eSDavid van Moolenbroek- Compilation on Solaris with USE_SOCKETS defined in includes/site.h has
1019*83ee113eSDavid van Moolenbroek  been repaired.  Other USE_ overrides should work better.
1020*83ee113eSDavid van Moolenbroek
1021*83ee113eSDavid van Moolenbroek- A check for the local flavor of IFNAMSIZ had a broken 'else' condition,
1022*83ee113eSDavid van Moolenbroek  that probably still resulted in the correct behaviour (but wouldn't use
1023*83ee113eSDavid van Moolenbroek  a larger defined value provided by the host OS).
1024*83ee113eSDavid van Moolenbroek
1025*83ee113eSDavid van Moolenbroek- Fixed a bug where an OMAPI socket disconnection message would not result
1026*83ee113eSDavid van Moolenbroek  in scheduling a failover reconnection, if the link had not negotiated a
1027*83ee113eSDavid van Moolenbroek  failover connect yet (e.g.: connection refused, asynch socket connect()
1028*83ee113eSDavid van Moolenbroek  timeouts).
1029*83ee113eSDavid van Moolenbroek
1030*83ee113eSDavid van Moolenbroek- A bug was fixed that caused the 'conflict-done' state to fail to be parsed
1031*83ee113eSDavid van Moolenbroek  in failover state records.
1032*83ee113eSDavid van Moolenbroek
1033*83ee113eSDavid van Moolenbroek! A stack overflow vulnerability was fixed in dhclient that could allow
1034*83ee113eSDavid van Moolenbroek  remote attackers to execute arbitrary commands as root on the system,
1035*83ee113eSDavid van Moolenbroek  or simply terminate the client, by providing an over-long subnet-mask
1036*83ee113eSDavid van Moolenbroek  option.  CERT VU#410676 - CVE-2009-0692
1037*83ee113eSDavid van Moolenbroek
1038*83ee113eSDavid van Moolenbroek- Fixed a bug where relay agent options would never be returned when
1039*83ee113eSDavid van Moolenbroek  processing a DHCPINFORM.
1040*83ee113eSDavid van Moolenbroek
1041*83ee113eSDavid van Moolenbroek- Versions 3.0.x syntax with multiple name->code option definitions is now
1042*83ee113eSDavid van Moolenbroek  supported.  Note that, similarly to 3.0.x, for by-code lookups only the
1043*83ee113eSDavid van Moolenbroek  last option definition is used.
1044*83ee113eSDavid van Moolenbroek
1045*83ee113eSDavid van Moolenbroek- Fixed a bug where a time difference of greater than 60 seconds between a
1046*83ee113eSDavid van Moolenbroek  failover pair could cause the primary to crash on contact with the
1047*83ee113eSDavid van Moolenbroek  secondary.  Thanks to a patch from Steinar Haug.
1048*83ee113eSDavid van Moolenbroek
1049*83ee113eSDavid van Moolenbroek- Don't look for IPv6 interfaces on Linux when running in DHCPv4 mode.
1050*83ee113eSDavid van Moolenbroek  Thanks to patches from Matthew Newton and David Cantrell.
1051*83ee113eSDavid van Moolenbroek
1052*83ee113eSDavid van Moolenbroek- Secondary servers in a failover pair will now perform ddns removals if
1053*83ee113eSDavid van Moolenbroek  they had performed ddns updates on a lease that is expiring, or was
1054*83ee113eSDavid van Moolenbroek  released through the primary.  As part of the same fix, stale binding scopes
1055*83ee113eSDavid van Moolenbroek  will now be removed if a change in identity of a lease's active client is
1056*83ee113eSDavid van Moolenbroek  detected, rather than simply if a lease is noticed to have expired (which it
1057*83ee113eSDavid van Moolenbroek  may have expired without a failover server noticing in some situations).
1058*83ee113eSDavid van Moolenbroek
1059*83ee113eSDavid van Moolenbroek- A patch supplied by David Cantrell at RedHat was applied that detects
1060*83ee113eSDavid van Moolenbroek  invalid calling parameters given to the ns_name_ntop() function.
1061*83ee113eSDavid van Moolenbroek  Specifically, it detects if the caller passed a pointer and size pair
1062*83ee113eSDavid van Moolenbroek  that causes the pointer to integer-wrap past zero.
1063*83ee113eSDavid van Moolenbroek
1064*83ee113eSDavid van Moolenbroek! Fixed a fenceposting bug when a client had two host records configured,
1065*83ee113eSDavid van Moolenbroek  one using 'uid' and the other using 'hardware ethernet'.  CVE-2009-1892
1066*83ee113eSDavid van Moolenbroek
1067*83ee113eSDavid van Moolenbroek- Fixed the check in the dhcp_interface_signal_handler routine to verify
1068*83ee113eSDavid van Moolenbroek  the existence of the linked signal handler before calling it.
1069*83ee113eSDavid van Moolenbroek
1070*83ee113eSDavid van Moolenbroek- Both host and subnet6 configuration groups are now included whether a
1071*83ee113eSDavid van Moolenbroek  fixed-address6 (DHCPv6) is in use or not.  Host scoped configuration takes
1072*83ee113eSDavid van Moolenbroek  precedence.  This fixes two bugs, one where host scoped configuration
1073*83ee113eSDavid van Moolenbroek  would not be included from a non-fixed-address6 host record, and the equal
1074*83ee113eSDavid van Moolenbroek  and opposite bug where subnet6 scoped configuration would not be used when
1075*83ee113eSDavid van Moolenbroek  over-riding values were not present in a matching fixed-address6 host
1076*83ee113eSDavid van Moolenbroek  configuration.
1077*83ee113eSDavid van Moolenbroek
1078*83ee113eSDavid van Moolenbroek- ./configure now checks to ensure the intX_t and u_intX_t types are defined,
1079*83ee113eSDavid van Moolenbroek  correcting a compilation failure when using Sun's compiler.
1080*83ee113eSDavid van Moolenbroek
1081*83ee113eSDavid van Moolenbroek- Modified the handling of a connection to avoid releasing the omapi io
1082*83ee113eSDavid van Moolenbroek  object for the connection while it is still in use.  One symptom from
1083*83ee113eSDavid van Moolenbroek  this error was a segfault when a failover secondary attempted to connect
1084*83ee113eSDavid van Moolenbroek  to the failover primary if their clocks were not synchronized.
1085*83ee113eSDavid van Moolenbroek
1086*83ee113eSDavid van Moolenbroek- Clean up to allow compilation with gcc 2.95.4 on FreeBSD.  Remove an
1087*83ee113eSDavid van Moolenbroek  extra semi-colon from common/dns.c and moved setting a variable to NULL
1088*83ee113eSDavid van Moolenbroek  in server/dhcpv6.c to allow the compiler to decide that the variable
1089*83ee113eSDavid van Moolenbroek  was always properly set.
1090*83ee113eSDavid van Moolenbroek
1091*83ee113eSDavid van Moolenbroek			Changes since 4.1.0b1
1092*83ee113eSDavid van Moolenbroek
1093*83ee113eSDavid van Moolenbroek- A missing "else" in dhcrelay.c could have caused an interface not to
1094*83ee113eSDavid van Moolenbroek  be recognized.
1095*83ee113eSDavid van Moolenbroek
1096*83ee113eSDavid van Moolenbroek			Changes since 4.1.0a2
1097*83ee113eSDavid van Moolenbroek
1098*83ee113eSDavid van Moolenbroek- A cosmetic bug in DHCPDECLINE processing was fixed which caused all
1099*83ee113eSDavid van Moolenbroek  successful DHCPDECLINEs to be logged as "not found" rather than
1100*83ee113eSDavid van Moolenbroek  "abandoned".
1101*83ee113eSDavid van Moolenbroek
1102*83ee113eSDavid van Moolenbroek- Added configuration file examples for DHCPv6.
1103*83ee113eSDavid van Moolenbroek
1104*83ee113eSDavid van Moolenbroek- Some failover debugging #defines have been better defined and some
1105*83ee113eSDavid van Moolenbroek  high frequency messages moved to a deeper debugging symbol.
1106*83ee113eSDavid van Moolenbroek
1107*83ee113eSDavid van Moolenbroek- The CLTT parameter in failover is now only updated by client activity,
1108*83ee113eSDavid van Moolenbroek  and not by failover binding updates (taking on the peer's CLTT).
1109*83ee113eSDavid van Moolenbroek
1110*83ee113eSDavid van Moolenbroek- Failover BNDUPD messages are now discarded if they conflict with an
1111*83ee113eSDavid van Moolenbroek  update that has been transmitted, but not acknowledged.
1112*83ee113eSDavid van Moolenbroek
1113*83ee113eSDavid van Moolenbroek- A bug cleaning up unknown-xxx temporary option definitions was fixed.
1114*83ee113eSDavid van Moolenbroek
1115*83ee113eSDavid van Moolenbroek- Delayed-ack is now a compile-time option, compiled out by default.
1116*83ee113eSDavid van Moolenbroek  This feature is simply too experimental for right now, and causes
1117*83ee113eSDavid van Moolenbroek  some problems to some failover installations.  We will revisit this
1118*83ee113eSDavid van Moolenbroek  in future releases.
1119*83ee113eSDavid van Moolenbroek
1120*83ee113eSDavid van Moolenbroek- The !inet_pton() call in res_mkupdrec was adjusted to '<= 0' as
1121*83ee113eSDavid van Moolenbroek  inet_pton returns either 1, 0, or -1.
1122*83ee113eSDavid van Moolenbroek
1123*83ee113eSDavid van Moolenbroek- A dhclient-script for MacOS X has been included, which enables
1124*83ee113eSDavid van Moolenbroek  'dhclient -6' support.
1125*83ee113eSDavid van Moolenbroek
1126*83ee113eSDavid van Moolenbroek- DDNS removal routines were updated so that the DHCID is not removed until
1127*83ee113eSDavid van Moolenbroek  the client has been deprived of all A and AAAA records (not only the last
1128*83ee113eSDavid van Moolenbroek  one of either of those).  This resolves a bug where dual stack clients
1129*83ee113eSDavid van Moolenbroek  would not be able to regain their names after either expiration event.
1130*83ee113eSDavid van Moolenbroek
1131*83ee113eSDavid van Moolenbroek			Changes since 4.1.0a1
1132*83ee113eSDavid van Moolenbroek
1133*83ee113eSDavid van Moolenbroek- Corrected list of failover state values in dhcpd man page.
1134*83ee113eSDavid van Moolenbroek
1135*83ee113eSDavid van Moolenbroek- Fixed a bug that caused some request types to be logged incorrectly.
1136*83ee113eSDavid van Moolenbroek
1137*83ee113eSDavid van Moolenbroek- Clients that sent a parameter request list containing the
1138*83ee113eSDavid van Moolenbroek  routers option before the subnet mask option were receiving
1139*83ee113eSDavid van Moolenbroek  only the latter.  Fixed.
1140*83ee113eSDavid van Moolenbroek
1141*83ee113eSDavid van Moolenbroek- The server wasn't always sending the FQDN option when it should.
1142*83ee113eSDavid van Moolenbroek
1143*83ee113eSDavid van Moolenbroek- A partner-down failover server no longer emits 'peer holds all free leases'
1144*83ee113eSDavid van Moolenbroek  if it is able to newly-allocate one of the peer's leases.
1145*83ee113eSDavid van Moolenbroek
1146*83ee113eSDavid van Moolenbroek- Fixed a coredump when adding a class via OMAPI.
1147*83ee113eSDavid van Moolenbroek
1148*83ee113eSDavid van Moolenbroek- Check whether files are zero length before trying to parse them.
1149*83ee113eSDavid van Moolenbroek
1150*83ee113eSDavid van Moolenbroek- Ari Edelkind's PARANOIA patch has been included and may be compiled in
1151*83ee113eSDavid van Moolenbroek  via two ./configure parameters, --enable-paranoia and
1152*83ee113eSDavid van Moolenbroek  --enable-early-chroot.
1153*83ee113eSDavid van Moolenbroek
1154*83ee113eSDavid van Moolenbroek- ./configure was extended to cover many optional build features, such
1155*83ee113eSDavid van Moolenbroek  as failover, server tracing, debugging, and the execute() command.
1156*83ee113eSDavid van Moolenbroek
1157*83ee113eSDavid van Moolenbroek- There is now a default 1/4 of a second scheduled delay between delayed
1158*83ee113eSDavid van Moolenbroek  fsync()'s, it can be configured by the max-ack-delay configuration
1159*83ee113eSDavid van Moolenbroek  parameter.
1160*83ee113eSDavid van Moolenbroek
1161*83ee113eSDavid van Moolenbroek- A bug was fixed where the length of a hostname was miscalculated, so that
1162*83ee113eSDavid van Moolenbroek  hosts were given odd-looking domain names ("foo.bar.ba.example.com").
1163*83ee113eSDavid van Moolenbroek
1164*83ee113eSDavid van Moolenbroek- Shared network selection should be done from the innermost relay
1165*83ee113eSDavid van Moolenbroek  valid link-address field, rather than the outermost.
1166*83ee113eSDavid van Moolenbroek
1167*83ee113eSDavid van Moolenbroek- Prefix pools are attached to shared network scopes.
1168*83ee113eSDavid van Moolenbroek
1169*83ee113eSDavid van Moolenbroek- Merged IA_XX related structures.
1170*83ee113eSDavid van Moolenbroek
1171*83ee113eSDavid van Moolenbroek- Add DHCPv6 files in configure.
1172*83ee113eSDavid van Moolenbroek
1173*83ee113eSDavid van Moolenbroek- A memory leak when using omapi has been fixed.
1174*83ee113eSDavid van Moolenbroek
1175*83ee113eSDavid van Moolenbroek- DHCPv6 vendor-class options (VSIO) are now only sent when they appear
1176*83ee113eSDavid van Moolenbroek  on the DHCPv6 ORO.  This resolves a bug where VSIO options were placed
1177*83ee113eSDavid van Moolenbroek  in IA_NA encapsulated options fields.
1178*83ee113eSDavid van Moolenbroek
1179*83ee113eSDavid van Moolenbroek- Integrated client with stateless, temporary address and prefix delegation
1180*83ee113eSDavid van Moolenbroek  support.
1181*83ee113eSDavid van Moolenbroek
1182*83ee113eSDavid van Moolenbroek- A double-dereference in dhclient transmission of DHCPDECLINEs was
1183*83ee113eSDavid van Moolenbroek  repaired.
1184*83ee113eSDavid van Moolenbroek
1185*83ee113eSDavid van Moolenbroek- Fix handling of format code 'Z'.
1186*83ee113eSDavid van Moolenbroek
1187*83ee113eSDavid van Moolenbroek- Support "-1" argument in DHCPv6.
1188*83ee113eSDavid van Moolenbroek
1189*83ee113eSDavid van Moolenbroek- Merge DHCPv6-only "dhcrelay6" into general-purpose "dhcrelay" (use
1190*83ee113eSDavid van Moolenbroek  "-6" option to select DHCPv6 mode).
1191*83ee113eSDavid van Moolenbroek
1192*83ee113eSDavid van Moolenbroek- Fix handling of -A and -a flags in dhcrelay; it was failing to expand
1193*83ee113eSDavid van Moolenbroek  packet size as needed to add relay agent options.
1194*83ee113eSDavid van Moolenbroek
1195*83ee113eSDavid van Moolenbroek- A bug in subnet6 parsing where options contained in subnet6 clauses would
1196*83ee113eSDavid van Moolenbroek  not be applied to clients addressed within that network was repaired.
1197*83ee113eSDavid van Moolenbroek
1198*83ee113eSDavid van Moolenbroek- When configuring a "subnet {}" or "subnet6 {}" without an explicit
1199*83ee113eSDavid van Moolenbroek  shared-network enclosing it, the DHCP software would synthesize a
1200*83ee113eSDavid van Moolenbroek  shared-network to contain the subnet.  However, all configuration
1201*83ee113eSDavid van Moolenbroek  parameters within the subnet more intuitively belong "to any client
1202*83ee113eSDavid van Moolenbroek  on that interface", or rather the synthesized shared-network.  So,
1203*83ee113eSDavid van Moolenbroek  when a shared-network is synthesized, it is used to contain the
1204*83ee113eSDavid van Moolenbroek  configuration present inside the subnet {} clause.  This means that
1205*83ee113eSDavid van Moolenbroek  the configuration will be valid for all clients on that network, not
1206*83ee113eSDavid van Moolenbroek  just those addressed out of the stated subnet.  If you intended the
1207*83ee113eSDavid van Moolenbroek  opposite, the workaround is to explicitly configure an empty
1208*83ee113eSDavid van Moolenbroek  shared-network.
1209*83ee113eSDavid van Moolenbroek
1210*83ee113eSDavid van Moolenbroek- A bug was fixed where Information-Request processing was not sourcing
1211*83ee113eSDavid van Moolenbroek  configured option values.
1212*83ee113eSDavid van Moolenbroek
1213*83ee113eSDavid van Moolenbroek- A warning was added since the DHCPv6 processing software does not yet
1214*83ee113eSDavid van Moolenbroek  support class statements.
1215*83ee113eSDavid van Moolenbroek
1216*83ee113eSDavid van Moolenbroek- Compliation warnings on GCC 4.3 relating to bootp source address
1217*83ee113eSDavid van Moolenbroek  selection were repaired.
1218*83ee113eSDavid van Moolenbroek
1219*83ee113eSDavid van Moolenbroek- The v6 BSD socket method was updated to use a single UDP BSD socket
1220*83ee113eSDavid van Moolenbroek  no matter how many interfaces are involved, differentiating the
1221*83ee113eSDavid van Moolenbroek  interfaces the packets were received on by the interface index supplied
1222*83ee113eSDavid van Moolenbroek  by the OS.
1223*83ee113eSDavid van Moolenbroek
1224*83ee113eSDavid van Moolenbroek- The relay agent no longer listens to the All DHCP Servers Multicast
1225*83ee113eSDavid van Moolenbroek  address.
1226*83ee113eSDavid van Moolenbroek
1227*83ee113eSDavid van Moolenbroek- A bug was fixed in data_string_sprintfa() where va_start was only called
1228*83ee113eSDavid van Moolenbroek  once for two invocations of vsprintf() variants.
1229*83ee113eSDavid van Moolenbroek
1230*83ee113eSDavid van Moolenbroek- ERO (RFC 4994) server support.
1231*83ee113eSDavid van Moolenbroek
1232*83ee113eSDavid van Moolenbroek- Basic and partial DHCPv6 leasequery support.
1233*83ee113eSDavid van Moolenbroek
1234*83ee113eSDavid van Moolenbroek- Reliable DHCPv6 release (previous behavior, send release and exit, is
1235*83ee113eSDavid van Moolenbroek  still available with dhclient -6 -1 -r).
1236*83ee113eSDavid van Moolenbroek
1237*83ee113eSDavid van Moolenbroek			Changes since 4.0.0 (new features)
1238*83ee113eSDavid van Moolenbroek
1239*83ee113eSDavid van Moolenbroek- Added DHCPv6 rapid commit support.
1240*83ee113eSDavid van Moolenbroek
1241*83ee113eSDavid van Moolenbroek- Added explicit parser support for zero-length DHCP options, such as
1242*83ee113eSDavid van Moolenbroek  rapid-commit, via format code 'Z'.
1243*83ee113eSDavid van Moolenbroek
1244*83ee113eSDavid van Moolenbroek- It's now possible to update the "ends" field of a lease with OMAPI.
1245*83ee113eSDavid van Moolenbroek  This is useful if you want not only to release a lease, but also make
1246*83ee113eSDavid van Moolenbroek  it available for reuse right away.  Hat tip to Christof Chen.
1247*83ee113eSDavid van Moolenbroek
1248*83ee113eSDavid van Moolenbroek- Fixed definition of the iaaddr hash functions to use the correct
1249*83ee113eSDavid van Moolenbroek  functions when referencing and dereferencing memory.
1250*83ee113eSDavid van Moolenbroek
1251*83ee113eSDavid van Moolenbroek- Some definitions not in phase with the IANA registry were updated.
1252*83ee113eSDavid van Moolenbroek
1253*83ee113eSDavid van Moolenbroek- Allocated interface IDs are better controlled ('u' bit set to zero,
1254*83ee113eSDavid van Moolenbroek  reserved IDs avoided).
1255*83ee113eSDavid van Moolenbroek
1256*83ee113eSDavid van Moolenbroek- Unicast options are taken into account only for RENEWs.
1257*83ee113eSDavid van Moolenbroek
1258*83ee113eSDavid van Moolenbroek- NoAddrsAvail answers to SOLICITs are always ADVERTISEs even when a SOLICIT
1259*83ee113eSDavid van Moolenbroek  carries a rapid-commit option.
1260*83ee113eSDavid van Moolenbroek
1261*83ee113eSDavid van Moolenbroek- Return in place of raise an impossible condition when one tries to release
1262*83ee113eSDavid van Moolenbroek  an empty active lease.
1263*83ee113eSDavid van Moolenbroek
1264*83ee113eSDavid van Moolenbroek- Timer granularity is now 1/100s in the DHCPv6 client.
1265*83ee113eSDavid van Moolenbroek
1266*83ee113eSDavid van Moolenbroek- The dhclient-script was updated to create a host route for the default
1267*83ee113eSDavid van Moolenbroek  gateway if the supplied subnet mask for an IPv4 address was a /32.  This
1268*83ee113eSDavid van Moolenbroek  allows the client to work in 'captive' network environments, where the
1269*83ee113eSDavid van Moolenbroek  operator does not want clients to crosstalk directly.
1270*83ee113eSDavid van Moolenbroek
1271*83ee113eSDavid van Moolenbroek- MINUS tokens should be parseable again.
1272*83ee113eSDavid van Moolenbroek
1273*83ee113eSDavid van Moolenbroek- Multiple (up to "delayed-ack x;" maximum) DHCPv4 packets are now queued and
1274*83ee113eSDavid van Moolenbroek  released in bursts after single fsync() events when the upper limit is
1275*83ee113eSDavid van Moolenbroek  reached or if the receiving sockets go dry.  The practical upshot is
1276*83ee113eSDavid van Moolenbroek  that fsync-coupled server performance is now multiplicitively increased.
1277*83ee113eSDavid van Moolenbroek  The default delayed ack limit is 28.  Thanks entirely to a patch from
1278*83ee113eSDavid van Moolenbroek  Christof Chen.
1279*83ee113eSDavid van Moolenbroek
1280*83ee113eSDavid van Moolenbroek			Changes since 4.0.0 (bug fixes)
1281*83ee113eSDavid van Moolenbroek
1282*83ee113eSDavid van Moolenbroek- DHCP now builds on AIX.
1283*83ee113eSDavid van Moolenbroek
1284*83ee113eSDavid van Moolenbroek- Exit with warning when DHCPv6-specific statements are used in the
1285*83ee113eSDavid van Moolenbroek  config file but -6 is not specified.
1286*83ee113eSDavid van Moolenbroek
1287*83ee113eSDavid van Moolenbroek- Fixed "--version" flag in dhcrelay
1288*83ee113eSDavid van Moolenbroek
1289*83ee113eSDavid van Moolenbroek- The 'min-secs' configuration parameter's log message has been updated to
1290*83ee113eSDavid van Moolenbroek  be more helpful.
1291*83ee113eSDavid van Moolenbroek
1292*83ee113eSDavid van Moolenbroek- The warning logged when an address range doesn't fit in the subnets
1293*83ee113eSDavid van Moolenbroek  they were declared has been updated to be more helpful and identify the
1294*83ee113eSDavid van Moolenbroek  typo in configuration that created the spanning addresses.
1295*83ee113eSDavid van Moolenbroek
1296*83ee113eSDavid van Moolenbroek- A bug in failover pool rebalancing that caused POOLREQ message ping-pongs
1297*83ee113eSDavid van Moolenbroek  was repaired.
1298*83ee113eSDavid van Moolenbroek
1299*83ee113eSDavid van Moolenbroek- A flaw in failover pool rebalancing that could cause POOLREQ messages to
1300*83ee113eSDavid van Moolenbroek  be sent outside of the min-balance/max-balance scheduled intervals has
1301*83ee113eSDavid van Moolenbroek  been repaired.
1302*83ee113eSDavid van Moolenbroek
1303*83ee113eSDavid van Moolenbroek- A cosmetic bug during potential-conflict recovery that caused the peer's
1304*83ee113eSDavid van Moolenbroek  'conflict-done' state message to be logged as 'unknown-state' has been
1305*83ee113eSDavid van Moolenbroek  repaired.  It is now logged correctly.
1306*83ee113eSDavid van Moolenbroek
1307*83ee113eSDavid van Moolenbroek- A bug was fixed where the 'giaddr' may be used to find the client's subnet
1308*83ee113eSDavid van Moolenbroek  rather than its own 'ciaddr'.
1309*83ee113eSDavid van Moolenbroek
1310*83ee113eSDavid van Moolenbroek- A log message was introduced to clarify the situation where a failover
1311*83ee113eSDavid van Moolenbroek  'address' parameter (the server's local address) did not resolve to an
1312*83ee113eSDavid van Moolenbroek  IPv4 address.
1313*83ee113eSDavid van Moolenbroek
1314*83ee113eSDavid van Moolenbroek- The minimum site code value was set to 224 in 3.1.0 to track RFC3942.  This
1315*83ee113eSDavid van Moolenbroek  broke a lot of legacy site local configurations.  The new code in place will
1316*83ee113eSDavid van Moolenbroek  track site local space minimum option codes and logs a warning to encourage
1317*83ee113eSDavid van Moolenbroek  updates and exploration of site local code migration problems.  Option
1318*83ee113eSDavid van Moolenbroek  codes less than 128 in site local spaces remain inaccessible.
1319*83ee113eSDavid van Moolenbroek
1320*83ee113eSDavid van Moolenbroek- A possible relay agent option bug was repaired where random server
1321*83ee113eSDavid van Moolenbroek  initialization state may have been used to signal the relay agent
1322*83ee113eSDavid van Moolenbroek  information options sub-option code for the 'END' of the option space.
1323*83ee113eSDavid van Moolenbroek
1324*83ee113eSDavid van Moolenbroek- Fixes to allow code to compile and run on Solaris 9.
1325*83ee113eSDavid van Moolenbroek
1326*83ee113eSDavid van Moolenbroek- Fixes to allow code to compile on Mac OS X Leopard (10.5).
1327*83ee113eSDavid van Moolenbroek
1328*83ee113eSDavid van Moolenbroek- When server is configured with options that it overrides, a warning is
1329*83ee113eSDavid van Moolenbroek  issued when the configuration file is read, rather than at the time the
1330*83ee113eSDavid van Moolenbroek  option is overridden. This was important, because the warning was given
1331*83ee113eSDavid van Moolenbroek  every time the option was overridden, which could create a lot of
1332*83ee113eSDavid van Moolenbroek  unnecessary logging.
1333*83ee113eSDavid van Moolenbroek
1334*83ee113eSDavid van Moolenbroek- Fixed a compilation problems on platforms that define a value for FDDI,
1335*83ee113eSDavid van Moolenbroek  which conflicts with a dhcp configuration syntax token by the same name.
1336*83ee113eSDavid van Moolenbroek
1337*83ee113eSDavid van Moolenbroek- When a failover server suspects it has encountered a peer running a
1338*83ee113eSDavid van Moolenbroek  version 3.0.x failover server, a warning that the failover wire protocol
1339*83ee113eSDavid van Moolenbroek  is incompatible is printed.
1340*83ee113eSDavid van Moolenbroek
1341*83ee113eSDavid van Moolenbroek- The failover server no longer issues a floating point error if it encounters
1342*83ee113eSDavid van Moolenbroek  a previously undefined option code.
1343*83ee113eSDavid van Moolenbroek
1344*83ee113eSDavid van Moolenbroek- Fix startup error messages to report a missing "subnet6 declaration", rather
1345*83ee113eSDavid van Moolenbroek  than a missing "subnet declaration", when running as a DHCPv6 server.
1346*83ee113eSDavid van Moolenbroek
1347*83ee113eSDavid van Moolenbroek- DHCPv6 client timestamp in DUID was based on the year 1970 rather
1348*83ee113eSDavid van Moolenbroek  than the year 2000.
1349*83ee113eSDavid van Moolenbroek
1350*83ee113eSDavid van Moolenbroek- Warn when attempting to use a hardware parameter in DHCPv6.
1351*83ee113eSDavid van Moolenbroek
1352*83ee113eSDavid van Moolenbroek- DHCPv6 released resources are now marked as released by the client.
1353*83ee113eSDavid van Moolenbroek
1354*83ee113eSDavid van Moolenbroek- 'Soft' bindings have no more side-effects.
1355*83ee113eSDavid van Moolenbroek
1356*83ee113eSDavid van Moolenbroek			Changes since 4.0.0b3
1357*83ee113eSDavid van Moolenbroek
1358*83ee113eSDavid van Moolenbroek- The reverse dns name for PTR updates on IPv6 addresses has been fixed to
1359*83ee113eSDavid van Moolenbroek  use ip6.arpa. rather than default to in-addr.arpa and require user
1360*83ee113eSDavid van Moolenbroek  configuration.
1361*83ee113eSDavid van Moolenbroek
1362*83ee113eSDavid van Moolenbroek- dhc6_lease_destroy() and dhc6_ia_destroy() now set lease and IA pointers
1363*83ee113eSDavid van Moolenbroek  to NULL after freeing, to prevent subsequent accesses to freed memory.
1364*83ee113eSDavid van Moolenbroek
1365*83ee113eSDavid van Moolenbroek- The DHCPv6 server would not send the preference option unless the
1366*83ee113eSDavid van Moolenbroek  client requested it, via the ORO. This has been fixed, so the DHCPv6
1367*83ee113eSDavid van Moolenbroek  server will always send the preference value if it is configured.
1368*83ee113eSDavid van Moolenbroek
1369*83ee113eSDavid van Moolenbroek- When addresses were passed as hints to the server in an IA, they were
1370*83ee113eSDavid van Moolenbroek  incorrectly handled, sometimes being treated as an error. Now the
1371*83ee113eSDavid van Moolenbroek  server will treat these as hints and ignore them if it cannot supply
1372*83ee113eSDavid van Moolenbroek  a requested address.
1373*83ee113eSDavid van Moolenbroek
1374*83ee113eSDavid van Moolenbroek- If the client had multiple addresses, and one expired (was not renewed
1375*83ee113eSDavid van Moolenbroek  by the server), the client would continue to attempt to renew the same
1376*83ee113eSDavid van Moolenbroek  old address over and over.  Now, the client will omit any expired
1377*83ee113eSDavid van Moolenbroek  addresses from future Confirm, Renew, or Rebind messages.
1378*83ee113eSDavid van Moolenbroek
1379*83ee113eSDavid van Moolenbroek- dhclient -6 will now select renew/rebind timers based upon the longest
1380*83ee113eSDavid van Moolenbroek  address expiration time rather than the shortest expiration time, in
1381*83ee113eSDavid van Moolenbroek  order to avoid cascading renewals in the event a server elects not to
1382*83ee113eSDavid van Moolenbroek  extend one of multiple IAADDR leases.
1383*83ee113eSDavid van Moolenbroek
1384*83ee113eSDavid van Moolenbroek- The server now limits clients that request multiple addresses to one
1385*83ee113eSDavid van Moolenbroek  address per IA by default, which can be adjusted through the
1386*83ee113eSDavid van Moolenbroek  "limit-addrs-per-ia" configuration option.
1387*83ee113eSDavid van Moolenbroek
1388*83ee113eSDavid van Moolenbroek- The DHCPv6 client now issues fresh transaction IDs on Renew and Rebind
1389*83ee113eSDavid van Moolenbroek  message exchanges, rather than using the most recent ID.
1390*83ee113eSDavid van Moolenbroek
1391*83ee113eSDavid van Moolenbroek- The DHCPv6 server now replies to Information-Request messages.
1392*83ee113eSDavid van Moolenbroek
1393*83ee113eSDavid van Moolenbroek- A bug was fixed in the dhclient-script for BSDs to correctly carry error
1394*83ee113eSDavid van Moolenbroek  codes through some conditions.
1395*83ee113eSDavid van Moolenbroek
1396*83ee113eSDavid van Moolenbroek- The parsing of some options in the dhclient lease file, in particular
1397*83ee113eSDavid van Moolenbroek  the success DHCPv6 status-code, was fixed.
1398*83ee113eSDavid van Moolenbroek
1399*83ee113eSDavid van Moolenbroek- A bug was fixed that caused the DHCPv6 ORO option to be corrupted with
1400*83ee113eSDavid van Moolenbroek  seemingly random values.
1401*83ee113eSDavid van Moolenbroek
1402*83ee113eSDavid van Moolenbroek- A reference overleak in DHCPv6 shared network processing was repaired.
1403*83ee113eSDavid van Moolenbroek
1404*83ee113eSDavid van Moolenbroek- ./configure now autodetects local database locations rather than trying
1405*83ee113eSDavid van Moolenbroek  to put dhcpd.leases and dhclient.leases in /usr/local/var/db, which no
1406*83ee113eSDavid van Moolenbroek  one ever has.
1407*83ee113eSDavid van Moolenbroek
1408*83ee113eSDavid van Moolenbroek- Regression fix for bug where server advertised a IPv6 address in
1409*83ee113eSDavid van Moolenbroek  response to a SOLICIT but would not return the address in response
1410*83ee113eSDavid van Moolenbroek  to a REQUEST.
1411*83ee113eSDavid van Moolenbroek
1412*83ee113eSDavid van Moolenbroek- A bug was fixed where the DHCPv6 server puts the NoAddrsAvail status
1413*83ee113eSDavid van Moolenbroek  code in the IA_NA was fixed.  The status code now appears in the root
1414*83ee113eSDavid van Moolenbroek  level.
1415*83ee113eSDavid van Moolenbroek
1416*83ee113eSDavid van Moolenbroek			Changes since 4.0.0b2
1417*83ee113eSDavid van Moolenbroek
1418*83ee113eSDavid van Moolenbroek- Clarified error message when lease limit exceeded
1419*83ee113eSDavid van Moolenbroek
1420*83ee113eSDavid van Moolenbroek- Relative time may now be used as a qualifier for 'allow' and 'deny' access
1421*83ee113eSDavid van Moolenbroek  control lists.  These directives may be used to assist in re-addressing
1422*83ee113eSDavid van Moolenbroek  address pools without having to constantly reconfigure the server.  Please
1423*83ee113eSDavid van Moolenbroek  see 'man dhcpd.conf' for more information on allow/deny 'after time' syntax.
1424*83ee113eSDavid van Moolenbroek  Thanks to a patch from Christof Chen.
1425*83ee113eSDavid van Moolenbroek
1426*83ee113eSDavid van Moolenbroek- The server will now include multiple IA_NA's and multiple IAADDRs within
1427*83ee113eSDavid van Moolenbroek  them, if advertised by the client.  It still only seeks to allocate one
1428*83ee113eSDavid van Moolenbroek  new address.
1429*83ee113eSDavid van Moolenbroek
1430*83ee113eSDavid van Moolenbroek			Changes since 4.0.0b1
1431*83ee113eSDavid van Moolenbroek
1432*83ee113eSDavid van Moolenbroek- Use different paths for PID and lease files when running in DHCPv4
1433*83ee113eSDavid van Moolenbroek  or DHCPv6 mode, so that servers for both protcols can be run
1434*83ee113eSDavid van Moolenbroek  simultaneously on a single interface.
1435*83ee113eSDavid van Moolenbroek
1436*83ee113eSDavid van Moolenbroek- Fixed a buffer overflow error which could have allowed a denial
1437*83ee113eSDavid van Moolenbroek  of service under unusual server configurations
1438*83ee113eSDavid van Moolenbroek
1439*83ee113eSDavid van Moolenbroek- Eliminated a spurious error message from the client
1440*83ee113eSDavid van Moolenbroek
1441*83ee113eSDavid van Moolenbroek- A number of bugs with the internal handling of lease state on the
1442*83ee113eSDavid van Moolenbroek  server have been fixed. Some of these could cause server crashes.
1443*83ee113eSDavid van Moolenbroek
1444*83ee113eSDavid van Moolenbroek- The peer_wants_leases() changes pulled up from 3.1.0 were corrected,
1445*83ee113eSDavid van Moolenbroek  'never used' leases will no longer consistently shift between servers
1446*83ee113eSDavid van Moolenbroek  on every pool rebalance run.
1447*83ee113eSDavid van Moolenbroek
1448*83ee113eSDavid van Moolenbroek- sendmsg()/recvmsg() control buffers are now declared in such a way to
1449*83ee113eSDavid van Moolenbroek  ensure they are correctly aligned on all (esp. 64-bit) architectures.
1450*83ee113eSDavid van Moolenbroek
1451*83ee113eSDavid van Moolenbroek- The client leasing subsystem was streamlined and corrected to account
1452*83ee113eSDavid van Moolenbroek  more closely for changes in client link attachment selection.
1453*83ee113eSDavid van Moolenbroek
1454*83ee113eSDavid van Moolenbroek			Changes since 4.0.0a3
1455*83ee113eSDavid van Moolenbroek
1456*83ee113eSDavid van Moolenbroek- The DHCP server no longer requires a "ddns-update-style" statement,
1457*83ee113eSDavid van Moolenbroek  and now defaults to "none", which means DNS updates are disabled.
1458*83ee113eSDavid van Moolenbroek
1459*83ee113eSDavid van Moolenbroek- Log messages when failover peer names mismatch have been improved to
1460*83ee113eSDavid van Moolenbroek  point out the problem.
1461*83ee113eSDavid van Moolenbroek
1462*83ee113eSDavid van Moolenbroek- Bug where server advertised a IPv6 address in response to a SOLICIT
1463*83ee113eSDavid van Moolenbroek  but would not return the address in response to a REQUEST. Thanks to
1464*83ee113eSDavid van Moolenbroek  Dennis Kou for finding the bug.
1465*83ee113eSDavid van Moolenbroek
1466*83ee113eSDavid van Moolenbroek- Fixed an error causing the server to lock up on lease expiration,
1467*83ee113eSDavid van Moolenbroek  reported independently by Jothilingam Vasu and Dennis Kou.
1468*83ee113eSDavid van Moolenbroek
1469*83ee113eSDavid van Moolenbroek- Fixed a ./configure bug where compile tests were failing due to
1470*83ee113eSDavid van Moolenbroek  "-Werror" (unused variable) rather than the actual test failure.  Lead
1471*83ee113eSDavid van Moolenbroek  to inconsistent and unworkable auto-configurations.
1472*83ee113eSDavid van Moolenbroek
1473*83ee113eSDavid van Moolenbroek- Compilation with DLPI and -Werror has been repaired.
1474*83ee113eSDavid van Moolenbroek
1475*83ee113eSDavid van Moolenbroek- Error in decoding IA_NA option if multiple interfaces are present
1476*83ee113eSDavid van Moolenbroek  fixed by Marcus Goller.
1477*83ee113eSDavid van Moolenbroek
1478*83ee113eSDavid van Moolenbroek- DHCPv6 server Confirm message processing has been enhanced - it no
1479*83ee113eSDavid van Moolenbroek  longer replies only to clients with host {} records, it now replies
1480*83ee113eSDavid van Moolenbroek  as directed in RFC3315 section 18.2.2 - that is, to all clients
1481*83ee113eSDavid van Moolenbroek  regardless of the existence of bindings.
1482*83ee113eSDavid van Moolenbroek
1483*83ee113eSDavid van Moolenbroek- A core dump during expired lease cleanup has been repaired.
1484*83ee113eSDavid van Moolenbroek
1485*83ee113eSDavid van Moolenbroek- DDNS updates state information are now stored in 'binding scopes' that
1486*83ee113eSDavid van Moolenbroek  follow the leases through their lifecycles.  This enables DDNS teardowns
1487*83ee113eSDavid van Moolenbroek  on leases that are assigned and expired inbetween a server restart (the
1488*83ee113eSDavid van Moolenbroek  state is recovered from dhcpd.leases).  Arbitrary user-specified binding
1489*83ee113eSDavid van Moolenbroek  scopes ('set var = "value";') are not yet supported.
1490*83ee113eSDavid van Moolenbroek
1491*83ee113eSDavid van Moolenbroek- Additional compilation problems on HP/UX have been repaired.
1492*83ee113eSDavid van Moolenbroek
1493*83ee113eSDavid van Moolenbroek			Changes since 4.0.0a2
1494*83ee113eSDavid van Moolenbroek
1495*83ee113eSDavid van Moolenbroek- Fix for startup where there are no IPv4 addresses on an interface.
1496*83ee113eSDavid van Moolenbroek  Thanks to Marcus Goller for reporting the bug.
1497*83ee113eSDavid van Moolenbroek
1498*83ee113eSDavid van Moolenbroek- Fixed file descriptor leak on listen failure. Thanks to Tom Clark.
1499*83ee113eSDavid van Moolenbroek
1500*83ee113eSDavid van Moolenbroek- Bug in server configuration parser caused server to get stuck on
1501*83ee113eSDavid van Moolenbroek  startup for certain bad pool declarations. Thanks to Guillaume
1502*83ee113eSDavid van Moolenbroek  Knispel for the bug report and fix.
1503*83ee113eSDavid van Moolenbroek
1504*83ee113eSDavid van Moolenbroek- Code cleaned to remove warnings reported by "gcc -Wall".
1505*83ee113eSDavid van Moolenbroek
1506*83ee113eSDavid van Moolenbroek- DHCPv6 is now the default. You can disable DHCPv6 support using the
1507*83ee113eSDavid van Moolenbroek  "--disable-dhcpv6" flag when you run the configure script.
1508*83ee113eSDavid van Moolenbroek
1509*83ee113eSDavid van Moolenbroek- An internal database inconsistency bug was repaired where the server
1510*83ee113eSDavid van Moolenbroek  would segfault if a client attempted to renew a lease that had been
1511*83ee113eSDavid van Moolenbroek  loaded from persistent storage.
1512*83ee113eSDavid van Moolenbroek
1513*83ee113eSDavid van Moolenbroek- 'request' and 'also request' syntaxes have been added to accommodate
1514*83ee113eSDavid van Moolenbroek  the DHCPv6 client configuration.  'send dhcp6.oro' is no longer
1515*83ee113eSDavid van Moolenbroek  necessary.
1516*83ee113eSDavid van Moolenbroek
1517*83ee113eSDavid van Moolenbroek- Bug fixed where configuration file parsing did not work with
1518*83ee113eSDavid van Moolenbroek  zero-length options; this made it impossible to set the
1519*83ee113eSDavid van Moolenbroek  rapid-commit option.
1520*83ee113eSDavid van Moolenbroek
1521*83ee113eSDavid van Moolenbroek- Bogus messages about host records with IPv4 fixed-addresses being of
1522*83ee113eSDavid van Moolenbroek  non-128-bits in length were removed.
1523*83ee113eSDavid van Moolenbroek
1524*83ee113eSDavid van Moolenbroek			Changes since 4.0.0a1
1525*83ee113eSDavid van Moolenbroek
1526*83ee113eSDavid van Moolenbroek- Bug in octal parsing fixed. Thanks to Bernd Fuhrmann for the report
1527*83ee113eSDavid van Moolenbroek  and fix.
1528*83ee113eSDavid van Moolenbroek
1529*83ee113eSDavid van Moolenbroek- Autoconf now supplies proper flags for Solaris DHCPv6 builds.
1530*83ee113eSDavid van Moolenbroek
1531*83ee113eSDavid van Moolenbroek- Fix for parsing error on some IPv6 addresses.
1532*83ee113eSDavid van Moolenbroek
1533*83ee113eSDavid van Moolenbroek- Invalid CIDR representation for IPv6 subnets or ranges now checked
1534*83ee113eSDavid van Moolenbroek  for when loading configuration.
1535*83ee113eSDavid van Moolenbroek
1536*83ee113eSDavid van Moolenbroek- Compilation on HP/UX has been repaired.  The changes should generally
1537*83ee113eSDavid van Moolenbroek  apply to any architecture that supplies SIOCGLIFCONF but does not
1538*83ee113eSDavid van Moolenbroek  use 'struct lifconf' structures to pass values.
1539*83ee113eSDavid van Moolenbroek
1540*83ee113eSDavid van Moolenbroek- Two new operators, ~= and ~~, have been integrated to implement
1541*83ee113eSDavid van Moolenbroek  boolean matches by regular expression (such as may be used in
1542*83ee113eSDavid van Moolenbroek  class matching statements).  Thanks to a patch by Alexandr S.
1543*83ee113eSDavid van Moolenbroek  Agranovsky, which underwent slight modification.
1544*83ee113eSDavid van Moolenbroek
1545*83ee113eSDavid van Moolenbroek- Fix for icmp packets on 64-bit systems (bug introduced in 4.0).
1546*83ee113eSDavid van Moolenbroek
1547*83ee113eSDavid van Moolenbroek- A bug was fixed in interface discovery wherein an error identifying
1548*83ee113eSDavid van Moolenbroek  a server-configured interface with no IPv4 addresses would SEGV.
1549*83ee113eSDavid van Moolenbroek
1550*83ee113eSDavid van Moolenbroek- Fixed a bug in which write_lease() might report a failure incorrectly
1551*83ee113eSDavid van Moolenbroek
1552*83ee113eSDavid van Moolenbroek- Added support for DHCPv6 Release messages
1553*83ee113eSDavid van Moolenbroek
1554*83ee113eSDavid van Moolenbroek- Added -x option to dhclient, which triggers dhclient processes
1555*83ee113eSDavid van Moolenbroek  to exit gracefully without releasing leases first
1556*83ee113eSDavid van Moolenbroek
1557*83ee113eSDavid van Moolenbroek- All binaries (client, server, relay) now change directories
1558*83ee113eSDavid van Moolenbroek  to / before going into daemon mode, so as not to hold $CWD open
1559*83ee113eSDavid van Moolenbroek
1560*83ee113eSDavid van Moolenbroek- Fixed a bug parsing DHCPv6 client-id's in host-identifier statements
1561*83ee113eSDavid van Moolenbroek
1562*83ee113eSDavid van Moolenbroek- Fixed a bug with the 'ddns-updates' boolean server configuration
1563*83ee113eSDavid van Moolenbroek  parameter, which caused the server to fail.
1564*83ee113eSDavid van Moolenbroek
1565*83ee113eSDavid van Moolenbroek			Changes since 4.0.0-20070413
1566*83ee113eSDavid van Moolenbroek
1567*83ee113eSDavid van Moolenbroek- Old (expired) leases are now cleaned.
1568*83ee113eSDavid van Moolenbroek
1569*83ee113eSDavid van Moolenbroek- IPv6 subnets now have support for arbitrary allocation ranges via
1570*83ee113eSDavid van Moolenbroek  a new 'range6' configuration directive.
1571*83ee113eSDavid van Moolenbroek
1572*83ee113eSDavid van Moolenbroek- An obviated option code hash lookup to find D6O_CLIENTID was removed.
1573*83ee113eSDavid van Moolenbroek
1574*83ee113eSDavid van Moolenbroek- Corrected some situations where variables might be used without being
1575*83ee113eSDavid van Moolenbroek  initialized.
1576*83ee113eSDavid van Moolenbroek
1577*83ee113eSDavid van Moolenbroek- Silenced several other compiler warnings.
1578*83ee113eSDavid van Moolenbroek
1579*83ee113eSDavid van Moolenbroek- Include the more standard sys/uio.h rather than rely upon other
1580*83ee113eSDavid van Moolenbroek  header files to include it (fixes a BSD 4.2 compile failure).
1581*83ee113eSDavid van Moolenbroek
1582*83ee113eSDavid van Moolenbroek- Duplicate dhclient-script updates for DHCPv6 to all provided scripts.
1583*83ee113eSDavid van Moolenbroek
1584*83ee113eSDavid van Moolenbroek- DHCPv4 I/O methods that failed to sense hardware address were corrected.
1585*83ee113eSDavid van Moolenbroek
1586*83ee113eSDavid van Moolenbroek- DHCPv4 is now the default (as documented) rather than DHCPv6.  The default
1587*83ee113eSDavid van Moolenbroek  was set to DHCPv6 to facilitate ease early development, and forgotten.
1588*83ee113eSDavid van Moolenbroek
1589*83ee113eSDavid van Moolenbroek- Corrected a segmentation violation in DHCPv4 socket processing.
1590*83ee113eSDavid van Moolenbroek
1591*83ee113eSDavid van Moolenbroek- dhclient will now fork() into the background once it binds to an
1592*83ee113eSDavid van Moolenbroek  IPv6 address, or immediately if the -n flag is supplied.
1593*83ee113eSDavid van Moolenbroek
1594*83ee113eSDavid van Moolenbroek- -q is now the default behaviour on dhclient, with -d or -v enabling
1595*83ee113eSDavid van Moolenbroek  non-quiet (stderr logging) mode.
1596*83ee113eSDavid van Moolenbroek
1597*83ee113eSDavid van Moolenbroek- Fix documentation of the domain-search atom (quoted, with commas).
1598*83ee113eSDavid van Moolenbroek
1599*83ee113eSDavid van Moolenbroek- Document DHCPv6 options presently in the default table.
1600*83ee113eSDavid van Moolenbroek
1601*83ee113eSDavid van Moolenbroek- Replaced ./configure shellscripting with GNU Autoconf.
1602*83ee113eSDavid van Moolenbroek
1603*83ee113eSDavid van Moolenbroek		     Changes since 3.1.0 (NEW FEATURES)
1604*83ee113eSDavid van Moolenbroek
1605*83ee113eSDavid van Moolenbroek- DHCPv6 Client and Server protocol support.  Use '-6' to run the daemons
1606*83ee113eSDavid van Moolenbroek  as v6-only.  Use '-4' to run the daemons as v4-only (default.  There is
1607*83ee113eSDavid van Moolenbroek  no support currently for both.
1608*83ee113eSDavid van Moolenbroek
1609*83ee113eSDavid van Moolenbroek- Server support for multiple IA_NA options, containing at most one
1610*83ee113eSDavid van Moolenbroek  IAADDR option.
1611*83ee113eSDavid van Moolenbroek
1612*83ee113eSDavid van Moolenbroek- Client support for one IA_NA option, containing any number of IAADDR
1613*83ee113eSDavid van Moolenbroek  options.
1614*83ee113eSDavid van Moolenbroek
1615*83ee113eSDavid van Moolenbroek- Server support for the DHCPv6 Information-request message.
1616*83ee113eSDavid van Moolenbroek
1617*83ee113eSDavid van Moolenbroek- Inappropriate unicast DHCPv6 messages sent to the server are now
1618*83ee113eSDavid van Moolenbroek  discarded, and this has rearchitected the IO system slightly.
1619*83ee113eSDavid van Moolenbroek
1620*83ee113eSDavid van Moolenbroek- The DHCPv6 server DUID defaults to type 1, is persistently stored in
1621*83ee113eSDavid van Moolenbroek  the leases database, and can be over-ridden (either completely, or by
1622*83ee113eSDavid van Moolenbroek  specifying type 1 or type 2).
1623*83ee113eSDavid van Moolenbroek
1624*83ee113eSDavid van Moolenbroek- The server only uses Rapid-Commit if it has been configured with the
1625*83ee113eSDavid van Moolenbroek  Rapid-Commit option and the client requests it.
1626*83ee113eSDavid van Moolenbroek
1627*83ee113eSDavid van Moolenbroek- DDNS support. We now update AAAA records in the same place we would
1628*83ee113eSDavid van Moolenbroek  update A records, if we have an IPv6 address. We also generate IP6.ARPA
1629*83ee113eSDavid van Moolenbroek  style names for PTR records if we're dealing with an IPv6 address.  Both
1630*83ee113eSDavid van Moolenbroek  A and AAAA updates are done using the same 'fqdn.' virtual option space
1631*83ee113eSDavid van Moolenbroek  (although the DHCPv4 FQDN and DHCPv6 FQDN options are formatted
1632*83ee113eSDavid van Moolenbroek  differently, they both use the same code here).
1633*83ee113eSDavid van Moolenbroek
1634*83ee113eSDavid van Moolenbroek- The Linux dhclient-script attempts to set and remove assigned addresses,
1635*83ee113eSDavid van Moolenbroek  and to configure /etc/resolv.conf from nameserver and domain name
1636*83ee113eSDavid van Moolenbroek  configurations.  It can be extended to configure other parameters.
1637*83ee113eSDavid van Moolenbroek
1638*83ee113eSDavid van Moolenbroek- Initial DHCPv6 lease support.
1639*83ee113eSDavid van Moolenbroek
1640*83ee113eSDavid van Moolenbroek- The IO system now tracks all local IP addresses, so that the DHCP
1641*83ee113eSDavid van Moolenbroek  applications (particularly the dhcrelay) can discern between what frames
1642*83ee113eSDavid van Moolenbroek  were transmitted to it, and what frames are being carried through it which
1643*83ee113eSDavid van Moolenbroek  it should not intercept.
1644*83ee113eSDavid van Moolenbroek
1645*83ee113eSDavid van Moolenbroek			Changes since 3.1.0 (Maintenance)
1646*83ee113eSDavid van Moolenbroek
1647*83ee113eSDavid van Moolenbroek- A bug was repaired where MAC Address Affinity for virgin leases always
1648*83ee113eSDavid van Moolenbroek  mapped to the primary.  Virgin leases now have an interleaved preference
1649*83ee113eSDavid van Moolenbroek  between primary and secondary.
1650*83ee113eSDavid van Moolenbroek
1651*83ee113eSDavid van Moolenbroek- A bug was repaired where MAC Address Affinity for clients with no client
1652*83ee113eSDavid van Moolenbroek  identifier was sometimes mishashed to the peer.  Load balancing during
1653*83ee113eSDavid van Moolenbroek  runtime and pool rebalancing were opposing.
1654*83ee113eSDavid van Moolenbroek
1655*83ee113eSDavid van Moolenbroek- An assertion in lease counting relating to reserved leases was repaired.
1656*83ee113eSDavid van Moolenbroek
1657*83ee113eSDavid van Moolenbroek- The subnet-mask option inclusion now conforms with RFC2132 section 3.3;
1658*83ee113eSDavid van Moolenbroek  it will only appear prior to the routers option if it is present on the
1659*83ee113eSDavid van Moolenbroek  Parameter-Request-List.  The subnet-mask option will also only be
1660*83ee113eSDavid van Moolenbroek  included by default (if it is not on the PRL) in response to DISCOVER
1661*83ee113eSDavid van Moolenbroek  or REQUEST messages.
1662*83ee113eSDavid van Moolenbroek
1663*83ee113eSDavid van Moolenbroek- The FQDN option is only supplied if the client supplied an FQDN option or
1664*83ee113eSDavid van Moolenbroek  if the FQDN option was explicitly requested on the PRL.
1665*83ee113eSDavid van Moolenbroek
1666*83ee113eSDavid van Moolenbroek- Dynamic BOOTP leases are now load balanced in failover.
1667*83ee113eSDavid van Moolenbroek
1668*83ee113eSDavid van Moolenbroek			Changes since 3.1.0rc1
1669*83ee113eSDavid van Moolenbroek
1670*83ee113eSDavid van Moolenbroek- The parse warning that 'deny dyanmic bootp;' must be configured for
1671*83ee113eSDavid van Moolenbroek  failover protected subnets was removed.
1672*83ee113eSDavid van Moolenbroek
1673*83ee113eSDavid van Moolenbroek			Changes since 3.1.0b2
1674*83ee113eSDavid van Moolenbroek
1675*83ee113eSDavid van Moolenbroek- Failover rebalance events no longer play ping pong with round errors
1676*83ee113eSDavid van Moolenbroek  (moving leases between free and back to backup where there are an
1677*83ee113eSDavid van Moolenbroek  odd number of leases).
1678*83ee113eSDavid van Moolenbroek
1679*83ee113eSDavid van Moolenbroek- The 'pool' log line has been split into two messages, one before the
1680*83ee113eSDavid van Moolenbroek  rebalance run, and one after.
1681*83ee113eSDavid van Moolenbroek
1682*83ee113eSDavid van Moolenbroek- Any queued BNDACKs are transmitted before transmitting new BNDUPDs.
1683*83ee113eSDavid van Moolenbroek  This enforces the correct sequence of events for the remote server
1684*83ee113eSDavid van Moolenbroek  processing these messages.
1685*83ee113eSDavid van Moolenbroek
1686*83ee113eSDavid van Moolenbroek			Changes since 3.1.0b1
1687*83ee113eSDavid van Moolenbroek
1688*83ee113eSDavid van Moolenbroek- Fixed a bug that caused OMAPI clients to freeze when opening lease
1689*83ee113eSDavid van Moolenbroek  objects.
1690*83ee113eSDavid van Moolenbroek
1691*83ee113eSDavid van Moolenbroek- A new server config option "fqdn-reply" specifies whether the server
1692*83ee113eSDavid van Moolenbroek  should send out option 81 (FQDN).  Defaults to "on".  If set to "off",
1693*83ee113eSDavid van Moolenbroek  the FQDN option is not sent, even if the client requested it.  This is
1694*83ee113eSDavid van Moolenbroek  needed because some clients misbehave otherwise.  Thanks to Christof Chen
1695*83ee113eSDavid van Moolenbroek  at Allianz.
1696*83ee113eSDavid van Moolenbroek
1697*83ee113eSDavid van Moolenbroek- Allow trace output files (-tf option) to be overwritten, rather than
1698*83ee113eSDavid van Moolenbroek  crashing dhcpd if the file already exists
1699*83ee113eSDavid van Moolenbroek
1700*83ee113eSDavid van Moolenbroek- A bug was fixed that caused dhcpd to segfault if a pool was declared
1701*83ee113eSDavid van Moolenbroek  outside the scope of a subnet in dhcpd.conf.
1702*83ee113eSDavid van Moolenbroek
1703*83ee113eSDavid van Moolenbroek- Some uninitialized values were repaired in dhcpleasequery.c that
1704*83ee113eSDavid van Moolenbroek  caused the server to abort.
1705*83ee113eSDavid van Moolenbroek
1706*83ee113eSDavid van Moolenbroek- A new server config option, 'do-reverse-updates', has been added
1707*83ee113eSDavid van Moolenbroek  which causes the server to abstain from performing updates on PTR
1708*83ee113eSDavid van Moolenbroek  records.  Thanks to a patch from Christof Chen at Allianz.
1709*83ee113eSDavid van Moolenbroek
1710*83ee113eSDavid van Moolenbroek- A bug was repaired in subencapsulation support, where spaces separated
1711*83ee113eSDavid van Moolenbroek  by empty spaces would not get included.
1712*83ee113eSDavid van Moolenbroek
1713*83ee113eSDavid van Moolenbroek- A bug in dhclient was repaired which caused it to send parameter request
1714*83ee113eSDavid van Moolenbroek  lists of 55 bytes in length no matter how long the declared PRL was.
1715*83ee113eSDavid van Moolenbroek
1716*83ee113eSDavid van Moolenbroek- 'dhcp.c(3953): non-null pointer' has been repaired.  This fixes a flaw
1717*83ee113eSDavid van Moolenbroek  wherein the DHCPv4 server may ignore a configured server-identifier.
1718*83ee113eSDavid van Moolenbroek
1719*83ee113eSDavid van Moolenbroek- A flaw in failover startup sequences was repaired that sometimes left
1720*83ee113eSDavid van Moolenbroek  the primary DHCP server's pool rebalance schedules unscheduled.
1721*83ee113eSDavid van Moolenbroek
1722*83ee113eSDavid van Moolenbroek- Corrected a flaw that broke encapsulated spaces included due to presence
1723*83ee113eSDavid van Moolenbroek  on the parameter request list.
1724*83ee113eSDavid van Moolenbroek
1725*83ee113eSDavid van Moolenbroek			Changes since 3.1.0a3
1726*83ee113eSDavid van Moolenbroek
1727*83ee113eSDavid van Moolenbroek- Some spelling fixes.
1728*83ee113eSDavid van Moolenbroek
1729*83ee113eSDavid van Moolenbroek			Changes since 3.1.0a2
1730*83ee113eSDavid van Moolenbroek
1731*83ee113eSDavid van Moolenbroek- A bug was fixed where attempting to permit leasequeries results in a
1732*83ee113eSDavid van Moolenbroek  fatal internal error, "Unable to find server option 49".
1733*83ee113eSDavid van Moolenbroek
1734*83ee113eSDavid van Moolenbroek- A bug was fixed in dhclient rendering the textual output form of the
1735*83ee113eSDavid van Moolenbroek  domain-search option syntax.
1736*83ee113eSDavid van Moolenbroek
1737*83ee113eSDavid van Moolenbroek			Changes since 3.1.0a1
1738*83ee113eSDavid van Moolenbroek
1739*83ee113eSDavid van Moolenbroek- A bug in the FQDN universe that added FQDN codes to the NWIP universe's
1740*83ee113eSDavid van Moolenbroek  hash table was repaired.
1741*83ee113eSDavid van Moolenbroek
1742*83ee113eSDavid van Moolenbroek- The servers now try harder to transmit pending binding updates when
1743*83ee113eSDavid van Moolenbroek  entering normal state.
1744*83ee113eSDavid van Moolenbroek
1745*83ee113eSDavid van Moolenbroek- UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and
1746*83ee113eSDavid van Moolenbroek  requeues all pending updates.  This should reduce the number of spurious
1747*83ee113eSDavid van Moolenbroek  'xid mismatch' log messages.
1748*83ee113eSDavid van Moolenbroek
1749*83ee113eSDavid van Moolenbroek- An option definition referencing leak was fixed, which resulted in early
1750*83ee113eSDavid van Moolenbroek  termination of dhclient upon the renewal event.
1751*83ee113eSDavid van Moolenbroek
1752*83ee113eSDavid van Moolenbroek- Some default hash table sizes were tweaked, some upwards, some downwards.
1753*83ee113eSDavid van Moolenbroek  3.1.0a1's tables resulted in a reduction in default server memory use.
1754*83ee113eSDavid van Moolenbroek  The new selected values provide more of a zero sum (increasing the size
1755*83ee113eSDavid van Moolenbroek  of tables likely to be populated, decreasing the size of tables unlikely).
1756*83ee113eSDavid van Moolenbroek
1757*83ee113eSDavid van Moolenbroek- Lease structures appear in three separate hashes: by IP address, by UID,
1758*83ee113eSDavid van Moolenbroek  and by hardware address.  One type of table was used for all three, and
1759*83ee113eSDavid van Moolenbroek  improvements to IP address hashing were applied to all three (so UID and
1760*83ee113eSDavid van Moolenbroek  hardware addresses were treated like 4-byte integers).  There are now two
1761*83ee113eSDavid van Moolenbroek  types of tables, and the uid/hw hashes use functions more appropriate
1762*83ee113eSDavid van Moolenbroek  to their needs.
1763*83ee113eSDavid van Moolenbroek
1764*83ee113eSDavid van Moolenbroek- The max-lease-misbalance percentage no longer causes scheduled rebalance
1765*83ee113eSDavid van Moolenbroek  runs to be skipped: it still governs the schedule, but every scheduled
1766*83ee113eSDavid van Moolenbroek  run will attempt balance.
1767*83ee113eSDavid van Moolenbroek
1768*83ee113eSDavid van Moolenbroek- A segfault bug in recursive encapsulation support has been corrected.
1769*83ee113eSDavid van Moolenbroek
1770*83ee113eSDavid van Moolenbroek			Changes since 3.0 (New Features)
1771*83ee113eSDavid van Moolenbroek
1772*83ee113eSDavid van Moolenbroek- A workaround for certain STSN servers that send a mangled domain-name
1773*83ee113eSDavid van Moolenbroek  option was introduced for dhclient.  The client will now accept corrupted
1774*83ee113eSDavid van Moolenbroek  server responses, if they contain a valid DHCP_MESSAGE_TYPE (OFFER, ACK,
1775*83ee113eSDavid van Moolenbroek  or NAK).  The server will continue to not accept corrupt client packets.
1776*83ee113eSDavid van Moolenbroek
1777*83ee113eSDavid van Moolenbroek- Support for 'reserved' (pseudo-static) and BOOTP leases via failover
1778*83ee113eSDavid van Moolenbroek  was introduced.
1779*83ee113eSDavid van Moolenbroek
1780*83ee113eSDavid van Moolenbroek- Support for adding, removing, and managing class and subclass statements
1781*83ee113eSDavid van Moolenbroek  via OMAPI.
1782*83ee113eSDavid van Moolenbroek
1783*83ee113eSDavid van Moolenbroek- The failover implementation was updated to comply with revision 12 of
1784*83ee113eSDavid van Moolenbroek  the protocol draft.
1785*83ee113eSDavid van Moolenbroek
1786*83ee113eSDavid van Moolenbroek- 'make install' now creates the initial zero-length dhcpd.leases file if
1787*83ee113eSDavid van Moolenbroek  one does not already exist on the system.
1788*83ee113eSDavid van Moolenbroek
1789*83ee113eSDavid van Moolenbroek- RFC3942 compliance, site-local option spaces start at 224 now, not 128.
1790*83ee113eSDavid van Moolenbroek
1791*83ee113eSDavid van Moolenbroek- The Load Balance Algorithm was misimplemented.  The current implementation
1792*83ee113eSDavid van Moolenbroek  matches RFC 3074.
1793*83ee113eSDavid van Moolenbroek
1794*83ee113eSDavid van Moolenbroek- lcase() and ucase() configuration expressions have been added which adjust
1795*83ee113eSDavid van Moolenbroek  their arguments from upper to lower and lower to upper cases respectively.
1796*83ee113eSDavid van Moolenbroek  Thanks to a patch from Albert Herranz.
1797*83ee113eSDavid van Moolenbroek
1798*83ee113eSDavid van Moolenbroek- The dhclient 'reject ...;' statement, which rejects leases given by named
1799*83ee113eSDavid van Moolenbroek  server-identifiers, now permits address ranges to be specified in CIDR
1800*83ee113eSDavid van Moolenbroek  notation.  Thanks to a patch from David Boyce.
1801*83ee113eSDavid van Moolenbroek
1802*83ee113eSDavid van Moolenbroek- The subnet-mask option is now supplied by default, but at lowest
1803*83ee113eSDavid van Moolenbroek  priority.  This helps a small minority of clients that provide parameter
1804*83ee113eSDavid van Moolenbroek  request lists, but do not list the subnet-mask option because they were
1805*83ee113eSDavid van Moolenbroek  designed to interoperate with a server that behaves in this manner.
1806*83ee113eSDavid van Moolenbroek
1807*83ee113eSDavid van Moolenbroek- The FQDN option is similarly supplied even if it does not appear on the
1808*83ee113eSDavid van Moolenbroek  parameter request list, but not to the exclusion of options that do
1809*83ee113eSDavid van Moolenbroek  appear at the parameter request list.  Up until now it had ultimate
1810*83ee113eSDavid van Moolenbroek  priority over the client's parameter request list.
1811*83ee113eSDavid van Moolenbroek
1812*83ee113eSDavid van Moolenbroek- Varying option space code and length bit widths (8/16/32) are now
1813*83ee113eSDavid van Moolenbroek  supported.  This is a milestone in achieving RFC 3925 "VIVSO" and
1814*83ee113eSDavid van Moolenbroek  DHCPv6 support.
1815*83ee113eSDavid van Moolenbroek
1816*83ee113eSDavid van Moolenbroek- A new common (server or client) option, 'db-time-format local;', has
1817*83ee113eSDavid van Moolenbroek  been added which prints the local time in /var/db/dhcpd.leases rather
1818*83ee113eSDavid van Moolenbroek  than UTC.  Thanks to a patch from Ken Lalonde.
1819*83ee113eSDavid van Moolenbroek
1820*83ee113eSDavid van Moolenbroek- Some patches to improve DHCP Server startup speed from Andrew Matheson
1821*83ee113eSDavid van Moolenbroek  have been incorporated.
1822*83ee113eSDavid van Moolenbroek
1823*83ee113eSDavid van Moolenbroek- Failover pairs now implement 'MAC Affinity' on leases moving from the
1824*83ee113eSDavid van Moolenbroek  active to free states.  Leases that belonged to the failover secondary
1825*83ee113eSDavid van Moolenbroek  are moved to BACKUP state rather than FREE upon exiting EXPIRED state.
1826*83ee113eSDavid van Moolenbroek  If lease rebalancing must move leases, it tries first to move leases
1827*83ee113eSDavid van Moolenbroek  that belong to the peer in need.
1828*83ee113eSDavid van Moolenbroek
1829*83ee113eSDavid van Moolenbroek- The server no longer sends POOLREQ messages unless the pool is severely
1830*83ee113eSDavid van Moolenbroek  misbalanced in the peer's favor (see 'man dhcpd.conf' for more details).
1831*83ee113eSDavid van Moolenbroek
1832*83ee113eSDavid van Moolenbroek- Pool rebalance events no longer happen upon successfully allocating a
1833*83ee113eSDavid van Moolenbroek  lease.  Instead, they happen on a schedule.  See 'man dhcpd.conf' for the
1834*83ee113eSDavid van Moolenbroek  min-balance and max-balance statements for more information.
1835*83ee113eSDavid van Moolenbroek
1836*83ee113eSDavid van Moolenbroek- The DHCP Relay Agent Information Option / Link Selection Sub-Option
1837*83ee113eSDavid van Moolenbroek  is now supported.  (See RFC3527 for details).
1838*83ee113eSDavid van Moolenbroek
1839*83ee113eSDavid van Moolenbroek- A new DDNS related server option, update-conflict-detection, has been
1840*83ee113eSDavid van Moolenbroek  added.  If this option is enabled, dhcpd will perform normal DHCID
1841*83ee113eSDavid van Moolenbroek  conflict resolution (the default).  If this option is disabled, it will
1842*83ee113eSDavid van Moolenbroek  instead trust the assigned name implicitly (removing any other bindings
1843*83ee113eSDavid van Moolenbroek  on that name).  This option has not been made available in dhclient.
1844*83ee113eSDavid van Moolenbroek
1845*83ee113eSDavid van Moolenbroek- In those cases where the DHCP software manufactures an IP header (to
1846*83ee113eSDavid van Moolenbroek  transmit via bpf, lpf, etc), the IP TTL the software selects has been
1847*83ee113eSDavid van Moolenbroek  increased from 16 to 128.  This is intended to match Microsoft Windows
1848*83ee113eSDavid van Moolenbroek  DHCP Client behaviour, to increase compatibility.
1849*83ee113eSDavid van Moolenbroek
1850*83ee113eSDavid van Moolenbroek- 'ignore client-updates;' now has behaviour that is different from
1851*83ee113eSDavid van Moolenbroek  'deny client-updates;'.  The client's request is not truly ignored,
1852*83ee113eSDavid van Moolenbroek  rather it is encouraged.  Should this value be configured, the server
1853*83ee113eSDavid van Moolenbroek  updates DNS as though client-updates were set to 'deny'.  That is, it
1854*83ee113eSDavid van Moolenbroek  enters into DNS whatever it is configured to do already, provided it is
1855*83ee113eSDavid van Moolenbroek  configured to.  Then it sends a response to the client that lets the
1856*83ee113eSDavid van Moolenbroek  client believe it is performing client updates (which it will), probably
1857*83ee113eSDavid van Moolenbroek  for a different name.  In essence, this lets the client do as it will,
1858*83ee113eSDavid van Moolenbroek  ignoring this aspect of their request.
1859*83ee113eSDavid van Moolenbroek
1860*83ee113eSDavid van Moolenbroek- Support for compressed 'domain name list' style DHCP option contents, and
1861*83ee113eSDavid van Moolenbroek  in particular the domain search option (#119) was added.
1862*83ee113eSDavid van Moolenbroek
1863*83ee113eSDavid van Moolenbroek- The DHCP LEASEQUERY protocol as defined in RFC4388 is now implemented.
1864*83ee113eSDavid van Moolenbroek  LEASEQUERY lets you query the DHCP server for information about a lease,
1865*83ee113eSDavid van Moolenbroek  using either an IP address, MAC address, or client identifier.  Thanks
1866*83ee113eSDavid van Moolenbroek  to a patch from Justin Haddad.
1867*83ee113eSDavid van Moolenbroek
1868*83ee113eSDavid van Moolenbroek- DHCPD is now RFC2131 section 4.1 compliant (broadcast to all-ones ip and
1869*83ee113eSDavid van Moolenbroek  ethernet mac address) on the SCO platform specifically without any strange
1870*83ee113eSDavid van Moolenbroek  ifconfig hacks.  Many thanks go to the Kroger Co. for donating the
1871*83ee113eSDavid van Moolenbroek  hardware and funding the development.
1872*83ee113eSDavid van Moolenbroek
1873*83ee113eSDavid van Moolenbroek- A new common configuration executable statement, execute(), has been
1874*83ee113eSDavid van Moolenbroek  added.  This permits dhcpd or dhclient to execute a named external
1875*83ee113eSDavid van Moolenbroek  program with command line arguments specified from other configuration
1876*83ee113eSDavid van Moolenbroek  language.  Thanks to a patch written by Mattias Ronnblom, gotten to us
1877*83ee113eSDavid van Moolenbroek  via Robin Breathe.
1878*83ee113eSDavid van Moolenbroek
1879*83ee113eSDavid van Moolenbroek- A new dhcp server option 'adaptive-lease-time-threshold' has been added
1880*83ee113eSDavid van Moolenbroek  which causes the server to substantially reduce lease-times if there are
1881*83ee113eSDavid van Moolenbroek  few (configured percentage) remaining leases.  Thanks to a patch submitted
1882*83ee113eSDavid van Moolenbroek  from Christof Chen.
1883*83ee113eSDavid van Moolenbroek
1884*83ee113eSDavid van Moolenbroek- Encapsulated option spaces within encapsulated option spaces is now
1885*83ee113eSDavid van Moolenbroek  formally supported.
1886*83ee113eSDavid van Moolenbroek
1887*83ee113eSDavid van Moolenbroek			Changes since 3.0.6rc1
1888*83ee113eSDavid van Moolenbroek
1889*83ee113eSDavid van Moolenbroek- supersede_lease() now requeues leases in their respective hardware
1890*83ee113eSDavid van Moolenbroek  address hash bucket.  This mirrors client identifier behaviour.
1891*83ee113eSDavid van Moolenbroek
1892*83ee113eSDavid van Moolenbroek			Changes since 3.0.5
1893*83ee113eSDavid van Moolenbroek
1894*83ee113eSDavid van Moolenbroek- Assorted fixes for broken network devices:  Packet length is now
1895*83ee113eSDavid van Moolenbroek  determined from the IP header length field to finally calculate the
1896*83ee113eSDavid van Moolenbroek  UDP payload length, because some NIC drivers return more data than
1897*83ee113eSDavid van Moolenbroek  they actually received.
1898*83ee113eSDavid van Moolenbroek
1899*83ee113eSDavid van Moolenbroek- UDP packets are now stored in aligned data structures.
1900*83ee113eSDavid van Moolenbroek
1901*83ee113eSDavid van Moolenbroek- A logic error in omapi interface code was repaired that might result in
1902*83ee113eSDavid van Moolenbroek  incorrectly indicating 'up' state when any flags were set, rather than
1903*83ee113eSDavid van Moolenbroek  specifically the INTERFACE_REQUESTED flag.  Thanks to a patch from
1904*83ee113eSDavid van Moolenbroek  Jochen Voss which got to us via Andrew Pollock at Debian.
1905*83ee113eSDavid van Moolenbroek
1906*83ee113eSDavid van Moolenbroek- A reference leak on binding scopes set by ddns updates was repaired.
1907*83ee113eSDavid van Moolenbroek
1908*83ee113eSDavid van Moolenbroek- A memory leak in the minires_nsendsigned() function call was repaired.
1909*83ee113eSDavid van Moolenbroek  Effectively, this leaked ~176 bytes per DDNS update.
1910*83ee113eSDavid van Moolenbroek
1911*83ee113eSDavid van Moolenbroek- In the case where an "L2" DHCP Relay Agent (one that does not set giaddr)
1912*83ee113eSDavid van Moolenbroek  was directly attached to the same broadcast domain as the DHCP server,
1913*83ee113eSDavid van Moolenbroek  the RFC3046 relay agent information option was not being returned to the
1914*83ee113eSDavid van Moolenbroek  relay in the server's replies.  This was fixed; the dhcp server no longer
1915*83ee113eSDavid van Moolenbroek  requires the giaddr to reply with relay agent information.  Note that
1916*83ee113eSDavid van Moolenbroek  this also improves compatibility with L2 devices that "intercept" DHCP
1917*83ee113eSDavid van Moolenbroek  packets and expect relay agent information even in unicast (renewal)
1918*83ee113eSDavid van Moolenbroek  replies.  Thanks to a patch from Pekka Silvonen.
1919*83ee113eSDavid van Moolenbroek
1920*83ee113eSDavid van Moolenbroek- A bug was fixed where the BOOTP header 'sname' field had a value, the
1921*83ee113eSDavid van Moolenbroek  copy written to persistent storage was actually the contents of the
1922*83ee113eSDavid van Moolenbroek  'file' field.
1923*83ee113eSDavid van Moolenbroek
1924*83ee113eSDavid van Moolenbroek- A bug was fixed where the nwip virtual option space was referencing
1925*83ee113eSDavid van Moolenbroek  the fqdn option's virtual option space's option cache.
1926*83ee113eSDavid van Moolenbroek
1927*83ee113eSDavid van Moolenbroek- Timestamp parsing errors that indicated missing "minutes" fields rather
1928*83ee113eSDavid van Moolenbroek  than the actually missing "seconds" fields have been repaired thanks to
1929*83ee113eSDavid van Moolenbroek  a patch from Kevin Steves.
1930*83ee113eSDavid van Moolenbroek
1931*83ee113eSDavid van Moolenbroek- A grammar error in the dhclient.8 manpage was repaired thanks to a patch
1932*83ee113eSDavid van Moolenbroek  from Chris Wagner.
1933*83ee113eSDavid van Moolenbroek
1934*83ee113eSDavid van Moolenbroek- Several spelling typos were repaired, and some cross-references to other
1935*83ee113eSDavid van Moolenbroek  relevant documents were included in the manpages, thanks to a patch
1936*83ee113eSDavid van Moolenbroek  by Andrew Pollock which got to us via Tomas Pospisek.
1937*83ee113eSDavid van Moolenbroek
1938*83ee113eSDavid van Moolenbroek- Some bugs were fixed in the 'emergency relay agent options hologram'
1939*83ee113eSDavid van Moolenbroek  which is used to retain relay agent option contents from when the
1940*83ee113eSDavid van Moolenbroek  client was in INIT or REBIND states.  This should solve problems where
1941*83ee113eSDavid van Moolenbroek  relay agent options were not echoed from the server, even when giaddr
1942*83ee113eSDavid van Moolenbroek  was set.
1943*83ee113eSDavid van Moolenbroek
1944*83ee113eSDavid van Moolenbroek- dhclient now closes its descriptor to dhclient.leases prior to executing
1945*83ee113eSDavid van Moolenbroek  dhclient-script.  Thanks to a patch from Tomas Pospisek.
1946*83ee113eSDavid van Moolenbroek
1947*83ee113eSDavid van Moolenbroek- The server's "by client-id" and "by hardware address" hash table lists
1948*83ee113eSDavid van Moolenbroek  are now sorted according to the preference to re-allocate that lease to
1949*83ee113eSDavid van Moolenbroek  returning clients.  This should eliminate pool starvation problems
1950*83ee113eSDavid van Moolenbroek  arising when "INIT" clients were given new leases rather than presently
1951*83ee113eSDavid van Moolenbroek  active ones.
1952*83ee113eSDavid van Moolenbroek
1953*83ee113eSDavid van Moolenbroek			Changes since 3.0.5rc1
1954*83ee113eSDavid van Moolenbroek
1955*83ee113eSDavid van Moolenbroek- A bug was repaired in fixes to the dhclient, which sought to run the
1956*83ee113eSDavid van Moolenbroek  dhclient-script with the 'EXPIRE' state should it receive a NAK in
1957*83ee113eSDavid van Moolenbroek  response to a REQUEST.  The client now iterates the PREINIT state
1958*83ee113eSDavid van Moolenbroek  after the EXPIRE state, so that interfaces that might be configured
1959*83ee113eSDavid van Moolenbroek  'down' can be brought back 'up' and initialized.
1960*83ee113eSDavid van Moolenbroek
1961*83ee113eSDavid van Moolenbroek- DHCPINFORM handling for clients that properly set ciaddr and come to the
1962*83ee113eSDavid van Moolenbroek  server via a relay aget has been repaired.
1963*83ee113eSDavid van Moolenbroek
1964*83ee113eSDavid van Moolenbroek			Changes since 3.0.4
1965*83ee113eSDavid van Moolenbroek
1966*83ee113eSDavid van Moolenbroek- A warning that host statements declared within subnet or shared-network
1967*83ee113eSDavid van Moolenbroek  scopes are actually global has been added.
1968*83ee113eSDavid van Moolenbroek
1969*83ee113eSDavid van Moolenbroek- The default minimum lease time (if min-lease-time was not specified)
1970*83ee113eSDavid van Moolenbroek  was raised from 0 to 300.  0 is not thought to be sensible, and is
1971*83ee113eSDavid van Moolenbroek  known to be damaging.
1972*83ee113eSDavid van Moolenbroek
1973*83ee113eSDavid van Moolenbroek- Added additional fatal error sanity checks surrounding lease binding
1974*83ee113eSDavid van Moolenbroek  state count calculations (free/active counts used for failover pool
1975*83ee113eSDavid van Moolenbroek  balancing).
1976*83ee113eSDavid van Moolenbroek
1977*83ee113eSDavid van Moolenbroek- Some time value size fixes in 3.0.4 brought on from FreeBSD /usr/ports were
1978*83ee113eSDavid van Moolenbroek  misapplied to server values rather than client values.  The server no longer
1979*83ee113eSDavid van Moolenbroek  advertises 8-byte lease-time options when on 64-bit platforms.
1980*83ee113eSDavid van Moolenbroek
1981*83ee113eSDavid van Moolenbroek- A bug where leases not in ACTIVE state would get billed to billed classes
1982*83ee113eSDavid van Moolenbroek  (classes with lease limitations) was fixed.  Non-active leases OFFERed
1983*83ee113eSDavid van Moolenbroek  to clients are no longer billed (but billing is checked before offering).
1984*83ee113eSDavid van Moolenbroek
1985*83ee113eSDavid van Moolenbroek- The dhcpd.conf.5 manpage was updated in regard to the ddns-domainname
1986*83ee113eSDavid van Moolenbroek  configuration option - the default configuration and results should be
1987*83ee113eSDavid van Moolenbroek  more clear now.
1988*83ee113eSDavid van Moolenbroek
1989*83ee113eSDavid van Moolenbroek- If the dhclient were to receive a DHCPNAK while it was in the RENEW
1990*83ee113eSDavid van Moolenbroek  state (and consequently, had an active, 'bound' address and related
1991*83ee113eSDavid van Moolenbroek  configuration options), it would fail to 'tear down' this information
1992*83ee113eSDavid van Moolenbroek  before proceeding into INIT state.  dhclient now iterates the dhclient-
1993*83ee113eSDavid van Moolenbroek  script with the 'EXPIRE' action to cause these teardowns prior to entering
1994*83ee113eSDavid van Moolenbroek  INIT state.  Thanks to a patch from Chris Zimmerman.
1995*83ee113eSDavid van Moolenbroek
1996*83ee113eSDavid van Moolenbroek- The omapi.1 manpage had some formatting errors repaired thanks to a patch
1997*83ee113eSDavid van Moolenbroek  from Yoshihiko Sarumaru.
1998*83ee113eSDavid van Moolenbroek
1999*83ee113eSDavid van Moolenbroek- A few lines of code that were failover-specific were moved within
2000*83ee113eSDavid van Moolenbroek  #if defined() clauses so that compilation without failover could be
2001*83ee113eSDavid van Moolenbroek  made possible.
2002*83ee113eSDavid van Moolenbroek
2003*83ee113eSDavid van Moolenbroek- The log message emitted when the 'leased-address' value was not available
2004*83ee113eSDavid van Moolenbroek  in dhcpd.conf "executable statements" has been updated to be more helpful.
2005*83ee113eSDavid van Moolenbroek  Manpage information for this value has also been updated.
2006*83ee113eSDavid van Moolenbroek
2007*83ee113eSDavid van Moolenbroek- Abandoned or dissociated (err condition) leases now remove any related
2008*83ee113eSDavid van Moolenbroek  dynamic dns bindings.  Thanks to a patch from Patrick Schoo.
2009*83ee113eSDavid van Moolenbroek
2010*83ee113eSDavid van Moolenbroek- Attempting to write a new lease file to replace a corrupt (due to
2011*83ee113eSDavid van Moolenbroek  encountering non-retryable errors during writing) lease file should
2012*83ee113eSDavid van Moolenbroek  no longer result in an infinite recursion.
2013*83ee113eSDavid van Moolenbroek
2014*83ee113eSDavid van Moolenbroek- Host declaration hardware addresses and client identifiers may only be
2015*83ee113eSDavid van Moolenbroek  configured once.  dhcpd will now fail to load config files that specify
2016*83ee113eSDavid van Moolenbroek  multiple identifiers (previous versions would silently over-ride the
2017*83ee113eSDavid van Moolenbroek  value with the later configured value).
2018*83ee113eSDavid van Moolenbroek
2019*83ee113eSDavid van Moolenbroek- Several option codes that have been allocated since our last release
2020*83ee113eSDavid van Moolenbroek  have been named and documented.
2021*83ee113eSDavid van Moolenbroek
2022*83ee113eSDavid van Moolenbroek- Option names of the form "unknown-123" have been removed from the in-
2023*83ee113eSDavid van Moolenbroek  memory hash tables.  In order to support options of these names that
2024*83ee113eSDavid van Moolenbroek  may appear in dhclient.leases or similar in previous versions, the
2025*83ee113eSDavid van Moolenbroek  parser will now find the new option code definition, or mock up a
2026*83ee113eSDavid van Moolenbroek  generic option code definition.  This should result in a smooth
2027*83ee113eSDavid van Moolenbroek  transition from one name to the other, as the new name is used to
2028*83ee113eSDavid van Moolenbroek  write new output.
2029*83ee113eSDavid van Moolenbroek
2030*83ee113eSDavid van Moolenbroek			Changes since 3.0.4rc1
2031*83ee113eSDavid van Moolenbroek
2032*83ee113eSDavid van Moolenbroek- The dhcp-options.5 manpage was updated to correct indentation errors
2033*83ee113eSDavid van Moolenbroek  thanks to a patch from Jean Delvare.
2034*83ee113eSDavid van Moolenbroek
2035*83ee113eSDavid van Moolenbroek			Changes since 3.0.4b3
2036*83ee113eSDavid van Moolenbroek
2037*83ee113eSDavid van Moolenbroek- Some manual pages were clarified pursuant to discussion on the dhcp-server
2038*83ee113eSDavid van Moolenbroek  mailing list.
2039*83ee113eSDavid van Moolenbroek
2040*83ee113eSDavid van Moolenbroek			Changes since 3.0.4b2
2041*83ee113eSDavid van Moolenbroek
2042*83ee113eSDavid van Moolenbroek- Null-termination sensing for certain clients that unfortunately require
2043*83ee113eSDavid van Moolenbroek  it in DHCPINFORM processing was repaired.
2044*83ee113eSDavid van Moolenbroek
2045*83ee113eSDavid van Moolenbroek- The host-name option and a few others were moved from "X" format to "t"
2046*83ee113eSDavid van Moolenbroek  format to be compatible with new NULL handling functions.
2047*83ee113eSDavid van Moolenbroek
2048*83ee113eSDavid van Moolenbroek- DHCPINFORM processing is a little more careful about return addressing
2049*83ee113eSDavid van Moolenbroek  its responses, or if responding via a relay.  The INFORM related
2050*83ee113eSDavid van Moolenbroek  messages also log the 'effective client ip address' rather than the
2051*83ee113eSDavid van Moolenbroek  client's supplied ciaddr (since some clients produce null ciaddrs).
2052*83ee113eSDavid van Moolenbroek
2053*83ee113eSDavid van Moolenbroek- The server was inappropriately sending leases to the RESET state in the
2054*83ee113eSDavid van Moolenbroek  event that multiple active leases were found to match a singly-identified
2055*83ee113eSDavid van Moolenbroek  client.  This was changed to RELEASED (by accepting a different, ACTIVE
2056*83ee113eSDavid van Moolenbroek  binding, the client is implicitly releasing its lease).  This repairs a
2057*83ee113eSDavid van Moolenbroek  bug wherein secondary servers in failover pairs detecting this condition
2058*83ee113eSDavid van Moolenbroek  move leases to RESET, and primaries refuse to accept that state
2059*83ee113eSDavid van Moolenbroek  transition (properly).
2060*83ee113eSDavid van Moolenbroek
2061*83ee113eSDavid van Moolenbroek- The memset-after-dmalloc() changes made in 3.0.4b1 have been backed out.
2062*83ee113eSDavid van Moolenbroek
2063*83ee113eSDavid van Moolenbroek			Changes since 3.0.4b1
2064*83ee113eSDavid van Moolenbroek
2065*83ee113eSDavid van Moolenbroek- Command line parsing in omshell was repaired - it no longer closes
2066*83ee113eSDavid van Moolenbroek  STDIN after reading one line.
2067*83ee113eSDavid van Moolenbroek
2068*83ee113eSDavid van Moolenbroek- The resolver library no longer closes the /etc/resolv.conf file
2069*83ee113eSDavid van Moolenbroek  descriptor it opened twice.
2070*83ee113eSDavid van Moolenbroek
2071*83ee113eSDavid van Moolenbroek- Changes to trailing NULL removal in 't' option-atoms has been rethought,
2072*83ee113eSDavid van Moolenbroek  it now includes 'd' (domain name) types, and tries hard not to rewind an
2073*83ee113eSDavid van Moolenbroek  option beyond the start of the text field it is un-terminating.
2074*83ee113eSDavid van Moolenbroek
2075*83ee113eSDavid van Moolenbroek			Changes since 3.0.3
2076*83ee113eSDavid van Moolenbroek
2077*83ee113eSDavid van Moolenbroek- A DDNS update handling function was misusing the DNS error codes, rather
2078*83ee113eSDavid van Moolenbroek  than the internal generic result enumeration.  The result is a confusing
2079*83ee113eSDavid van Moolenbroek  syslog line, logging the wrong condition.
2080*83ee113eSDavid van Moolenbroek
2081*83ee113eSDavid van Moolenbroek- The DHCP Server was not checking pool balance in the case where it brought
2082*83ee113eSDavid van Moolenbroek  a non-ACTIVE lease out of storage for a client that was returning to use
2083*83ee113eSDavid van Moolenbroek  a lease it once had long ago, and had since expired.
2084*83ee113eSDavid van Moolenbroek
2085*83ee113eSDavid van Moolenbroek- Failover peers no longer bother to look for free leases to allocate when
2086*83ee113eSDavid van Moolenbroek  they already found the client's ACTIVE lease.  DISCOVERs are load balanced
2087*83ee113eSDavid van Moolenbroek  whether freely-allocated or not, unless the server doubts the peer has
2088*83ee113eSDavid van Moolenbroek  leases to allocate.
2089*83ee113eSDavid van Moolenbroek
2090*83ee113eSDavid van Moolenbroek- Fixed a bug in dhcrelay agent addition code that suppressed trailing
2091*83ee113eSDavid van Moolenbroek  PAD options - it was suppressing only one trailing PAD option, rather
2092*83ee113eSDavid van Moolenbroek  than the entire block of them.
2093*83ee113eSDavid van Moolenbroek
2094*83ee113eSDavid van Moolenbroek! Fixed some unlikely overlapping-region memcpy() bugs in dhcrelay agent
2095*83ee113eSDavid van Moolenbroek  option addition and stripping code.  Added a few sanity checks.  Although
2096*83ee113eSDavid van Moolenbroek  highly improbable, due to requiring the reception of a DHCP datagram well
2097*83ee113eSDavid van Moolenbroek  in excess of all known to be used physical MTU limitations, it is possible
2098*83ee113eSDavid van Moolenbroek  this may have been used in a stack overflow security vulnerability.  Thanks
2099*83ee113eSDavid van Moolenbroek  to a patch from infamous42md.
2100*83ee113eSDavid van Moolenbroek
2101*83ee113eSDavid van Moolenbroek! Added some sanity checks to OMAPI connection/authentication code.
2102*83ee113eSDavid van Moolenbroek  Although highly improbable, due to having to deliver in excess of 2^32
2103*83ee113eSDavid van Moolenbroek  bytes of data via the OMAPI channel, not to mention requiring dhcpd to
2104*83ee113eSDavid van Moolenbroek  be able to malloc() a memory region 2^32 bytes in size, it was possible
2105*83ee113eSDavid van Moolenbroek  this might have resulted in a heap overflow security vulnerability.
2106*83ee113eSDavid van Moolenbroek  Thanks to a patch from infamous42md.
2107*83ee113eSDavid van Moolenbroek
2108*83ee113eSDavid van Moolenbroek- dmalloc() memset()'s the non-debug (data) portion of the allocated
2109*83ee113eSDavid van Moolenbroek  memory to zero.  Code that memset()'s the result returned by dmalloc() to
2110*83ee113eSDavid van Moolenbroek  zero is redundant.  These redundancies were removed.
2111*83ee113eSDavid van Moolenbroek
2112*83ee113eSDavid van Moolenbroek- Some type declaration corrections to u_int16_t were made in common/tr.c
2113*83ee113eSDavid van Moolenbroek  (Token Ring support) thanks to a patch from Jason Vas Dias at Red Hat.
2114*83ee113eSDavid van Moolenbroek
2115*83ee113eSDavid van Moolenbroek- A failover bug that was allowing leases that EXPIRED or were RELEASED
2116*83ee113eSDavid van Moolenbroek  where tsfp and tstp are identical timestamps to languish in these
2117*83ee113eSDavid van Moolenbroek  transitional states has been repaired.  As a side effect, lease
2118*83ee113eSDavid van Moolenbroek  databases should be kept more consistent overall, not just for these
2119*83ee113eSDavid van Moolenbroek  transitional states.
2120*83ee113eSDavid van Moolenbroek
2121*83ee113eSDavid van Moolenbroek- If the lease db is deleted out from under the daemon, and it moves to rewrite
2122*83ee113eSDavid van Moolenbroek  the db, it will go ahead with the operation and move the new db into place
2123*83ee113eSDavid van Moolenbroek  once it detects the old db does not exist.
2124*83ee113eSDavid van Moolenbroek
2125*83ee113eSDavid van Moolenbroek- dhclient now ignores IRDA, SIT, and IEEE1394 network interfaces, as it
2126*83ee113eSDavid van Moolenbroek  is either nonsensical or (in the case of IEEE1394) is not known to support
2127*83ee113eSDavid van Moolenbroek  these interfaces.  Thanks to Marius Gedminas and Andrew Pollock of Debian.
2128*83ee113eSDavid van Moolenbroek
2129*83ee113eSDavid van Moolenbroek- Some previously undocumented reasons for dhclient-script invoking has
2130*83ee113eSDavid van Moolenbroek  been documented in the dhclient-script.8 manpage.
2131*83ee113eSDavid van Moolenbroek
2132*83ee113eSDavid van Moolenbroek- Failover potential expiry calculations (TSTP) have been corrected.  Results
2133*83ee113eSDavid van Moolenbroek  should be substantially more consistent, and proper given the constraints.
2134*83ee113eSDavid van Moolenbroek
2135*83ee113eSDavid van Moolenbroek- Adjusted lease state validation checks in potential-conflict, to
2136*83ee113eSDavid van Moolenbroek  account for possible clock skew similarly to normal state, and several
2137*83ee113eSDavid van Moolenbroek  previously illegal transitions were made legal (ex: active->released).
2138*83ee113eSDavid van Moolenbroek
2139*83ee113eSDavid van Moolenbroek- An impossible sanity check was removed from omapi/buffer.c, thanks to a
2140*83ee113eSDavid van Moolenbroek  patch from 'infamous42md'.
2141*83ee113eSDavid van Moolenbroek
2142*83ee113eSDavid van Moolenbroek- An OMAPI host/network byte order problem in lease time values has been
2143*83ee113eSDavid van Moolenbroek  repaired.
2144*83ee113eSDavid van Moolenbroek
2145*83ee113eSDavid van Moolenbroek- Several minor bugs, largely relating to treating 8-byte time values as
2146*83ee113eSDavid van Moolenbroek  4-byte entities, have been repaired after careful review of the FreeBSD
2147*83ee113eSDavid van Moolenbroek  ports collection's patch set.  Thanks to the nameless entities who have
2148*83ee113eSDavid van Moolenbroek  contributed to the FreeBSD ports.
2149*83ee113eSDavid van Moolenbroek
2150*83ee113eSDavid van Moolenbroek- When writing a trace file, the file is now created with permissions 0600,
2151*83ee113eSDavid van Moolenbroek  to help administrators avoid accidentally publicising sensitive config
2152*83ee113eSDavid van Moolenbroek  data.
2153*83ee113eSDavid van Moolenbroek
2154*83ee113eSDavid van Moolenbroek- The calculation of the maximum size of DHCP packets no longer includes
2155*83ee113eSDavid van Moolenbroek  Ethernet framing overhead.  The result is that the 'Maximum Message
2156*83ee113eSDavid van Moolenbroek  Size' option advertised by clients, or the default value 576, is no
2157*83ee113eSDavid van Moolenbroek  longer reduced by 14 bytes, and instead directly reflects the IP level
2158*83ee113eSDavid van Moolenbroek  MTU (and the default, minimum allowed IP MTU of 576).
2159*83ee113eSDavid van Moolenbroek
2160*83ee113eSDavid van Moolenbroek- The special status of RELEASED/EXPIRED/RESET leases when a server
2161*83ee113eSDavid van Moolenbroek  is operating in partner-down was fixed.  It no longer requires a
2162*83ee113eSDavid van Moolenbroek  lease be twice the MCLT beyond STOS to 'reallocate', and the expiry
2163*83ee113eSDavid van Moolenbroek  event to turn these into FREE leases without peer acknowledgement
2164*83ee113eSDavid van Moolenbroek  (after STOS+MCLT) has been repaired.
2165*83ee113eSDavid van Moolenbroek
2166*83ee113eSDavid van Moolenbroek- Compilation on older Solaris systems (lacking /usr/include/sys/int_types.h)
2167*83ee113eSDavid van Moolenbroek  has been repaired.
2168*83ee113eSDavid van Moolenbroek
2169*83ee113eSDavid van Moolenbroek- "append"ing a string onto the end of a "t" type option (such as the
2170*83ee113eSDavid van Moolenbroek  domain-name field) that had been improperly NULL-terminated by the
2171*83ee113eSDavid van Moolenbroek  DHCP server will no longer result in a truncated string containing
2172*83ee113eSDavid van Moolenbroek  only the option from the server, and not the expected appended value.
2173*83ee113eSDavid van Moolenbroek  Thanks to a patch from Jason Vas Dias at Red Hat.
2174*83ee113eSDavid van Moolenbroek
2175*83ee113eSDavid van Moolenbroek- File handlers on configuration state (config files and lease dbs) should
2176*83ee113eSDavid van Moolenbroek  be treated consistently, regardless of whether TRACING is defined or not.
2177*83ee113eSDavid van Moolenbroek
2178*83ee113eSDavid van Moolenbroek- The Linux build environment has had some minor improvements - better
2179*83ee113eSDavid van Moolenbroek  sensing of 64-bit pointer sizes (only used for establishing an icmp_id),
2180*83ee113eSDavid van Moolenbroek  and corrections to #if operators regarding LINUX_MAJOR should it ever
2181*83ee113eSDavid van Moolenbroek  move to 3.[01].x.
2182*83ee113eSDavid van Moolenbroek
2183*83ee113eSDavid van Moolenbroek- The server now tries harder to survive the condition where it is unable
2184*83ee113eSDavid van Moolenbroek  to open a new lease file to rewrite the lease state database.
2185*83ee113eSDavid van Moolenbroek
2186*83ee113eSDavid van Moolenbroek			Changes since 3.0.3b3
2187*83ee113eSDavid van Moolenbroek
2188*83ee113eSDavid van Moolenbroek- dhclient.conf documentation for interface {} was updated to reflect recent
2189*83ee113eSDavid van Moolenbroek  discussion on the dhcp-hackers mailing list.
2190*83ee113eSDavid van Moolenbroek
2191*83ee113eSDavid van Moolenbroek- In response to reports that the software does not compile on GCC 4.0.0,
2192*83ee113eSDavid van Moolenbroek  -Werror was removed from Makefile.conf for all platforms that used it.
2193*83ee113eSDavid van Moolenbroek  We will address the true problem in a future release; this is a temporary
2194*83ee113eSDavid van Moolenbroek  workaround.
2195*83ee113eSDavid van Moolenbroek
2196*83ee113eSDavid van Moolenbroek			Changes since 3.0.3b2
2197*83ee113eSDavid van Moolenbroek
2198*83ee113eSDavid van Moolenbroek- An error in code changes introduced in 3.0.3b2 was corrected, which caused
2199*83ee113eSDavid van Moolenbroek  static BOOTP clients to receive random addresses.
2200*83ee113eSDavid van Moolenbroek
2201*83ee113eSDavid van Moolenbroek			Changes since 3.0.3b1
2202*83ee113eSDavid van Moolenbroek
2203*83ee113eSDavid van Moolenbroek- A bug was fixed in BOOTPREQUEST handling code wherein stale references to
2204*83ee113eSDavid van Moolenbroek  host records would be left behind on leases that were not allocated to the
2205*83ee113eSDavid van Moolenbroek  client currently booting (eg in the case where the host was denied booting).
2206*83ee113eSDavid van Moolenbroek
2207*83ee113eSDavid van Moolenbroek- The dhcpd.conf.5 manpage was updated to be more clear in regards to
2208*83ee113eSDavid van Moolenbroek  multiple host declarations (thanks to Vincent McIntyre).  'Interim' style
2209*83ee113eSDavid van Moolenbroek  dynamic updates were also retouched.
2210*83ee113eSDavid van Moolenbroek
2211*83ee113eSDavid van Moolenbroek			Changes since 3.0.2
2212*83ee113eSDavid van Moolenbroek
2213*83ee113eSDavid van Moolenbroek- A bug was fixed where a server might load balance a DHCP REQUEST to its
2214*83ee113eSDavid van Moolenbroek  peer after already choosing not to load balance the preceding DISCOVER.
2215*83ee113eSDavid van Moolenbroek  The peer cannot allocate the originating server's lease.
2216*83ee113eSDavid van Moolenbroek
2217*83ee113eSDavid van Moolenbroek- In the case where a secondary server lost its stable storage while the
2218*83ee113eSDavid van Moolenbroek  primary was still in communications-interrupted, and came back online,
2219*83ee113eSDavid van Moolenbroek  the lease databases would not be fully transferred to the secondary.
2220*83ee113eSDavid van Moolenbroek  This was due to the secondary errantly sending an extra UPDREQ message
2221*83ee113eSDavid van Moolenbroek  when the primary made its state transition to PARTNER-DOWN known.
2222*83ee113eSDavid van Moolenbroek
2223*83ee113eSDavid van Moolenbroek- The package will now compile cleanly in gcc 3.3 and 3.4.  As a side effect,
2224*83ee113eSDavid van Moolenbroek  lease structures will be 9 bytes smaller on all platforms.  Thanks to
2225*83ee113eSDavid van Moolenbroek  Jason Vas Dias at Red Hat.
2226*83ee113eSDavid van Moolenbroek
2227*83ee113eSDavid van Moolenbroek- Interface discovery code in DISCOVER_UNCONFIGURED mode is now
2228*83ee113eSDavid van Moolenbroek  properly restricted to only detecting broadcast interfaces.  Thanks
2229*83ee113eSDavid van Moolenbroek  to a patch from Jason Vas Dias at Red Hat.
2230*83ee113eSDavid van Moolenbroek
2231*83ee113eSDavid van Moolenbroek- decode_udp_ip_header was changed so that the IP address was copied out
2232*83ee113eSDavid van Moolenbroek  to a variable, rather than referenced by a pointer.  This enforces 4-byte
2233*83ee113eSDavid van Moolenbroek  alignment of the 32-bit IP address value.  Thanks to a patch from Dr.
2234*83ee113eSDavid van Moolenbroek  Peter Poeml.
2235*83ee113eSDavid van Moolenbroek
2236*83ee113eSDavid van Moolenbroek- An incorrect log message was corrected thanks to a patch from
2237*83ee113eSDavid van Moolenbroek  Dr. Peter Poeml.
2238*83ee113eSDavid van Moolenbroek
2239*83ee113eSDavid van Moolenbroek- A bug in DDNS was repaired, where if the server's first DDNS action was
2240*83ee113eSDavid van Moolenbroek  a DDNS removal rather than a DDNS update, the resolver library's
2241*83ee113eSDavid van Moolenbroek  retransmit timer and retry timer was set to the default, implying a
2242*83ee113eSDavid van Moolenbroek  15 second timeout interval.  Which is a little excessive in a synchronous,
2243*83ee113eSDavid van Moolenbroek  single-threaded system.  In all cases, ISC DHCP should now hold fast to
2244*83ee113eSDavid van Moolenbroek  a 1-second timeout, trying only once.
2245*83ee113eSDavid van Moolenbroek
2246*83ee113eSDavid van Moolenbroek- The siaddr field was being improperly set to the server-identifier when
2247*83ee113eSDavid van Moolenbroek  responding to DHCP messages.  RFC2131 clarified the siaddr field as
2248*83ee113eSDavid van Moolenbroek  meaning the 'next server in the bootstrap process', eg a tftp server.
2249*83ee113eSDavid van Moolenbroek  The siaddr field is now left zeroed unless next-server is configured.
2250*83ee113eSDavid van Moolenbroek
2251*83ee113eSDavid van Moolenbroek- mockup_lease() could have returned in an error condition (or in the
2252*83ee113eSDavid van Moolenbroek  condition where no fixed-address was found matching the shared
2253*83ee113eSDavid van Moolenbroek  network) with stale references to a host record.  This is probably not
2254*83ee113eSDavid van Moolenbroek  a memory leak since host records generally never die anyway.
2255*83ee113eSDavid van Moolenbroek
2256*83ee113eSDavid van Moolenbroek- A bug was repaired where failover servers would let stale client identifiers
2257*83ee113eSDavid van Moolenbroek  persist on leases that were reallocated to new clients not sending an id.
2258*83ee113eSDavid van Moolenbroek
2259*83ee113eSDavid van Moolenbroek- Binding scopes ("set var = value;") are now removed from leases allocated
2260*83ee113eSDavid van Moolenbroek  by failover peers if the lease had expired.  This should help reduce the
2261*83ee113eSDavid van Moolenbroek  number of stale binding scopes on leases.
2262*83ee113eSDavid van Moolenbroek
2263*83ee113eSDavid van Moolenbroek- A small memory leak was closed involving client identifiers larger than
2264*83ee113eSDavid van Moolenbroek  7 bytes, and failover.
2265*83ee113eSDavid van Moolenbroek
2266*83ee113eSDavid van Moolenbroek- Configuring a subnet in dhcpd.conf with a subnet mask of 32 bits might
2267*83ee113eSDavid van Moolenbroek  cause an internal function to overflow heap.  Thanks to Jason Vas Dias
2268*83ee113eSDavid van Moolenbroek  at Red Hat.
2269*83ee113eSDavid van Moolenbroek
2270*83ee113eSDavid van Moolenbroek- Some inconsistencies in treating numbers that the lexer parsed as 'NUMBER'
2271*83ee113eSDavid van Moolenbroek  or 'NUMBER_OR_NAME' was repaired.  Hexadecimal parsing is affected, and
2272*83ee113eSDavid van Moolenbroek  should work better.
2273*83ee113eSDavid van Moolenbroek
2274*83ee113eSDavid van Moolenbroek- In several cases, parse warnings were being issued before the lexical
2275*83ee113eSDavid van Moolenbroek  token had been advanced to the token whose value was causing an error...
2276*83ee113eSDavid van Moolenbroek  causing parse warnings to claim the problem is on the wrong token.
2277*83ee113eSDavid van Moolenbroek
2278*83ee113eSDavid van Moolenbroek- Host declarations matching on client identifier for dynamic leases will
2279*83ee113eSDavid van Moolenbroek  no longer match fixed-address host declarations (this is now identical
2280*83ee113eSDavid van Moolenbroek  to behaviour for host records matching on hardware address).
2281*83ee113eSDavid van Moolenbroek
2282*83ee113eSDavid van Moolenbroek			Changes since 3.0.2rc3
2283*83ee113eSDavid van Moolenbroek
2284*83ee113eSDavid van Moolenbroek- A previously undocumented configuration directive, 'local-address',
2285*83ee113eSDavid van Moolenbroek  was documented in the dhcpd.conf manpage.
2286*83ee113eSDavid van Moolenbroek
2287*83ee113eSDavid van Moolenbroek			Changes since 3.0.2rc2
2288*83ee113eSDavid van Moolenbroek
2289*83ee113eSDavid van Moolenbroek- Two variables introduced in 3.0.2b1 were used without being initialized
2290*83ee113eSDavid van Moolenbroek  in the case where neither the FILE nor SNAME fields were available for
2291*83ee113eSDavid van Moolenbroek  overloading.  This was repaired.
2292*83ee113eSDavid van Moolenbroek
2293*83ee113eSDavid van Moolenbroek- A heretofore believed to be impossible corner case of the option
2294*83ee113eSDavid van Moolenbroek  overloading implementation turned out to be possible ("Unable to sort
2295*83ee113eSDavid van Moolenbroek  overloaded options after 10 tries.").  The implementation was reworked
2296*83ee113eSDavid van Moolenbroek  to consider the case of an option so large it would require more than
2297*83ee113eSDavid van Moolenbroek  three chunks to fit.
2298*83ee113eSDavid van Moolenbroek
2299*83ee113eSDavid van Moolenbroek- Many other instances of variables being used without being initialized
2300*83ee113eSDavid van Moolenbroek  were repaired.
2301*83ee113eSDavid van Moolenbroek
2302*83ee113eSDavid van Moolenbroek- An uninitialized variable in omapi_io_destroy() led to the discovery
2303*83ee113eSDavid van Moolenbroek  that this function may result in orphaned pointers (and hence, a memory
2304*83ee113eSDavid van Moolenbroek  leak).
2305*83ee113eSDavid van Moolenbroek
2306*83ee113eSDavid van Moolenbroek			Changes since 3.0.2rc1
2307*83ee113eSDavid van Moolenbroek
2308*83ee113eSDavid van Moolenbroek- allocate_lease() was rewritten to repair a bug in which the server would
2309*83ee113eSDavid van Moolenbroek  try to allocate an ABANDONED lease when FREE leases were available.
2310*83ee113eSDavid van Moolenbroek
2311*83ee113eSDavid van Moolenbroek			Changes since 3.0.2b1
2312*83ee113eSDavid van Moolenbroek
2313*83ee113eSDavid van Moolenbroek- Some dhcp-eval.5 manpage formatting was repaired.
2314*83ee113eSDavid van Moolenbroek
2315*83ee113eSDavid van Moolenbroek			Changes since 3.0.1
2316*83ee113eSDavid van Moolenbroek
2317*83ee113eSDavid van Moolenbroek- A bug was fixed in the server's 'option overloading' implementation,
2318*83ee113eSDavid van Moolenbroek  where options loaded into the 'file' and 'sname' packet fields were
2319*83ee113eSDavid van Moolenbroek  not aligned precisely as rfc2131 dictates.
2320*83ee113eSDavid van Moolenbroek
2321*83ee113eSDavid van Moolenbroek- The FreeBSD client script was changed to support the case where a domain
2322*83ee113eSDavid van Moolenbroek  name was not provided by the server.
2323*83ee113eSDavid van Moolenbroek
2324*83ee113eSDavid van Moolenbroek- A memory leak in 'omshell' per each command line parsed was
2325*83ee113eSDavid van Moolenbroek  repaired, thanks to a patch from Jarkko Torppa.
2326*83ee113eSDavid van Moolenbroek
2327*83ee113eSDavid van Moolenbroek- Log functions writing to stderr were adjusted to use the STDERR_FILENO
2328*83ee113eSDavid van Moolenbroek  system definition rather than '2'.  This is a no-op for 90% of platforms.
2329*83ee113eSDavid van Moolenbroek
2330*83ee113eSDavid van Moolenbroek- One call to trace_write_packet_iov() counted the number of io vectors
2331*83ee113eSDavid van Moolenbroek  incorrectly, causing inconsistent tracefiles.  This was fixed.
2332*83ee113eSDavid van Moolenbroek
2333*83ee113eSDavid van Moolenbroek- Some expression parse failure memory leaks were closed.
2334*83ee113eSDavid van Moolenbroek
2335*83ee113eSDavid van Moolenbroek- A host byte order problem in tracefiles was repaired.
2336*83ee113eSDavid van Moolenbroek
2337*83ee113eSDavid van Moolenbroek- Pools configured in DHCPD for failover possessing permission lists that
2338*83ee113eSDavid van Moolenbroek  previously were assumed to not include dyanmic bootp clients are now
2339*83ee113eSDavid van Moolenbroek  a little more pessimistic.  The result is, dhcpd will nag you about just
2340*83ee113eSDavid van Moolenbroek  about most pools that possess a 'allow' statement with no 'deny' that
2341*83ee113eSDavid van Moolenbroek  would definitely match a dynamic bootp client.
2342*83ee113eSDavid van Moolenbroek
2343*83ee113eSDavid van Moolenbroek- The 'ddns-update-style' configuration warning bit now insists that
2344*83ee113eSDavid van Moolenbroek  the configuration be globally scoped.
2345*83ee113eSDavid van Moolenbroek
2346*83ee113eSDavid van Moolenbroek- Two memory leaks in dhclient were closed thanks to a patch from Felix
2347*83ee113eSDavid van Moolenbroek  Farkas.
2348*83ee113eSDavid van Moolenbroek
2349*83ee113eSDavid van Moolenbroek- Some minor but excellently pedantic documentation errors were fixed
2350*83ee113eSDavid van Moolenbroek  thanks to a patch from Thomas Klausner.
2351*83ee113eSDavid van Moolenbroek
2352*83ee113eSDavid van Moolenbroek- Bugs in operator precedence in executable statements have been repaired
2353*83ee113eSDavid van Moolenbroek  once again.  More legal syntaxes should be parsed legally.
2354*83ee113eSDavid van Moolenbroek
2355*83ee113eSDavid van Moolenbroek- Failing to initialize a tracefile for any reason if a tracefile was
2356*83ee113eSDavid van Moolenbroek  specified is now a fatal error.  Thanks to a patch from Albert Herranz.
2357*83ee113eSDavid van Moolenbroek
2358*83ee113eSDavid van Moolenbroek- Corrected a bug in which the number of leases transferred as calculated
2359*83ee113eSDavid van Moolenbroek  by the failover primary and sent to peers in POOLRESP responses may be
2360*83ee113eSDavid van Moolenbroek  incorrect.  This value is not believed to be used by other failover
2361*83ee113eSDavid van Moolenbroek  implementations, excepting perhaps as logged information.
2362*83ee113eSDavid van Moolenbroek
2363*83ee113eSDavid van Moolenbroek- Corrected a bug in which 'dhcp_failover_send_poolresp()' was in fact
2364*83ee113eSDavid van Moolenbroek  sending POOLREQ messages instead of POOLRESP mesasges.  This message
2365*83ee113eSDavid van Moolenbroek  was essentially ignored since failover secondaries effectively do not
2366*83ee113eSDavid van Moolenbroek  respond to POOLREQ messages.
2367*83ee113eSDavid van Moolenbroek
2368*83ee113eSDavid van Moolenbroek- Type definitions for various bitwidths of integers in the sunos5-5
2369*83ee113eSDavid van Moolenbroek  build of ISC DHCP have been fixed.  It should compile and run more
2370*83ee113eSDavid van Moolenbroek  easily when built in 64-bit for this platform.
2371*83ee113eSDavid van Moolenbroek
2372*83ee113eSDavid van Moolenbroek- "allow known-clients;" is now a legal syntax, to avoid confusion.
2373*83ee113eSDavid van Moolenbroek
2374*83ee113eSDavid van Moolenbroek- If one dhcp server chooses to 'load balance' a request to its failover
2375*83ee113eSDavid van Moolenbroek  peer, it first checks to see if it believes said peer has a free
2376*83ee113eSDavid van Moolenbroek  lease to allocate before ignoring the DISCOVER.
2377*83ee113eSDavid van Moolenbroek
2378*83ee113eSDavid van Moolenbroek- log() was logging a work buffer, rather than the value returned by
2379*83ee113eSDavid van Moolenbroek  executing the statements configured by the user.  In some cases,
2380*83ee113eSDavid van Moolenbroek  the work buffer and the intended results were the same.  In some other
2381*83ee113eSDavid van Moolenbroek  cases, they were not.  This was fixed thanks to a patch from Gunnar
2382*83ee113eSDavid van Moolenbroek  Fjone and directconnect.no.
2383*83ee113eSDavid van Moolenbroek
2384*83ee113eSDavid van Moolenbroek- Compiler warnings for some string type conversions was fixed, thanks
2385*83ee113eSDavid van Moolenbroek  to Andreas Gustafsson.
2386*83ee113eSDavid van Moolenbroek
2387*83ee113eSDavid van Moolenbroek- The netbsd build environments were simplified to one, in which
2388*83ee113eSDavid van Moolenbroek  -Wconversion is not used, thanks to Andreas Gustafsson.
2389*83ee113eSDavid van Moolenbroek
2390*83ee113eSDavid van Moolenbroek- How randomness in the backoff-cutoff dhclient configuration variable
2391*83ee113eSDavid van Moolenbroek  is implemented was better documented in the manpage, and the behaviour
2392*83ee113eSDavid van Moolenbroek  of dhclient in REQUEST timeout handling was changed to match that of
2393*83ee113eSDavid van Moolenbroek  DISCOVER timeout handling.
2394*83ee113eSDavid van Moolenbroek
2395*83ee113eSDavid van Moolenbroek- Omapi was hardened against clients that pass in null values, thanks
2396*83ee113eSDavid van Moolenbroek  to a patch from Mark Jason Dominus.
2397*83ee113eSDavid van Moolenbroek
2398*83ee113eSDavid van Moolenbroek- A bug was fixed in dhclient that kept it from doing client-side
2399*83ee113eSDavid van Moolenbroek  ddns updates.  Thanks to a patch from Andreas Gustafsson, which
2400*83ee113eSDavid van Moolenbroek  underwent some modification after review by Jason Vas Dias.
2401*83ee113eSDavid van Moolenbroek
2402*83ee113eSDavid van Moolenbroek- Failover implementations disconnected due to the network between
2403*83ee113eSDavid van Moolenbroek  them (rather than one of the two shutting down) will now try to
2404*83ee113eSDavid van Moolenbroek  re-establish the failover connection every 5 seconds, rather than
2405*83ee113eSDavid van Moolenbroek  to simply try once and give up until one of them is restarted.
2406*83ee113eSDavid van Moolenbroek  Thanks to a patch from Ulf Ekberg from Infoblox, and field testing
2407*83ee113eSDavid van Moolenbroek  by Greger V. Teigre which led to an enhancement to it.
2408*83ee113eSDavid van Moolenbroek
2409*83ee113eSDavid van Moolenbroek- A problem that kept DHCP Failover secondaries from tearing down
2410*83ee113eSDavid van Moolenbroek  ddns records was repaired.  Thanks to a patch from Ulf Ekberg from
2411*83ee113eSDavid van Moolenbroek  Infoblox.
2412*83ee113eSDavid van Moolenbroek
2413*83ee113eSDavid van Moolenbroek- 64bit pointer sizes are detected properly on FreeBSD now.
2414*83ee113eSDavid van Moolenbroek
2415*83ee113eSDavid van Moolenbroek- A bug was repaired where the DHCP server would leave stale references
2416*83ee113eSDavid van Moolenbroek  to host records on leases it once thought about offering to certain
2417*83ee113eSDavid van Moolenbroek  clients.  The result would be to apply host and 'known' scopes to the
2418*83ee113eSDavid van Moolenbroek  wrong clients (possibly denying booting).  NOTE:  The 'mis-host' patch
2419*83ee113eSDavid van Moolenbroek  that was being circulated as a workaround is not the way this bug was
2420*83ee113eSDavid van Moolenbroek  fixed.  If you were a victim of this bug in 3.0.1, you are cautioned
2421*83ee113eSDavid van Moolenbroek  to proceed carefully and see if it fixes your problem.
2422*83ee113eSDavid van Moolenbroek
2423*83ee113eSDavid van Moolenbroek- A bug was repaired in the server's DHCPINFORM handling, where it
2424*83ee113eSDavid van Moolenbroek  tried to divine the client's address from the source packet and
2425*83ee113eSDavid van Moolenbroek  would get it wrong.  Thanks to Anshuman Singh Rawat.
2426*83ee113eSDavid van Moolenbroek
2427*83ee113eSDavid van Moolenbroek- A log message was introduced to help illuminate the case where the
2428*83ee113eSDavid van Moolenbroek  server was unable to find a lease to assign to any BOOTP client.
2429*83ee113eSDavid van Moolenbroek  Thanks to Daniel Baker.
2430*83ee113eSDavid van Moolenbroek
2431*83ee113eSDavid van Moolenbroek- A minor dhcpd.conf.5 manpage error was fixed.
2432*83ee113eSDavid van Moolenbroek
2433*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc14
2434*83ee113eSDavid van Moolenbroek
2435*83ee113eSDavid van Moolenbroek- The global variable 'cur_time' was centralized and is now uniformly of a
2436*83ee113eSDavid van Moolenbroek  type #defined in system-dependent headers.  It had previously been defined
2437*83ee113eSDavid van Moolenbroek  in one of many places as a 32-bit value, and this causes mayhem on 64-bit
2438*83ee113eSDavid van Moolenbroek  big endian systems.  It probably wasn't too healthy on little endian
2439*83ee113eSDavid van Moolenbroek  systems either.
2440*83ee113eSDavid van Moolenbroek
2441*83ee113eSDavid van Moolenbroek- A printf format string error introduced in rc14 was repaired.
2442*83ee113eSDavid van Moolenbroek
2443*83ee113eSDavid van Moolenbroek- AIX system-dependent header file was altered to only define NO_SNPRINTF
2444*83ee113eSDavid van Moolenbroek  if the condition used to #ifdef in vsnprintf in AIX' header files
2445*83ee113eSDavid van Moolenbroek  is false.
2446*83ee113eSDavid van Moolenbroek
2447*83ee113eSDavid van Moolenbroek- The Alpha/OSF system-dependent header file was altered to define
2448*83ee113eSDavid van Moolenbroek  NO_SNPRINTF on OS revisions older than 4.0G.
2449*83ee113eSDavid van Moolenbroek
2450*83ee113eSDavid van Moolenbroek- omapip/test.c had string.h added to its includes.
2451*83ee113eSDavid van Moolenbroek
2452*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc13
2453*83ee113eSDavid van Moolenbroek
2454*83ee113eSDavid van Moolenbroek! CAN-2004-0460 - CERT VU#317350: Five stack overflow exploits were closed
2455*83ee113eSDavid van Moolenbroek  in logging messages with excessively long hostnames provided by the
2456*83ee113eSDavid van Moolenbroek  clients.  It is highly probable that these could have been used by
2457*83ee113eSDavid van Moolenbroek  attackers to gain arbitrary root access on systems using ISC DHCP 3.0.1
2458*83ee113eSDavid van Moolenbroek  release candidates 12 or 13.  Special thanks to Gregory Duchemin for
2459*83ee113eSDavid van Moolenbroek  both finding and solving the problem.
2460*83ee113eSDavid van Moolenbroek
2461*83ee113eSDavid van Moolenbroek! CAN-2004-0461 - CERT VU#654390: Once the above was closed, an opening
2462*83ee113eSDavid van Moolenbroek  in log_*() functions was evidenced, on some specific platforms where
2463*83ee113eSDavid van Moolenbroek  vsnprintf() was not believed to be available and calls were wrapped to
2464*83ee113eSDavid van Moolenbroek  sprintf() instead.  Again, credit goes to Gregory Duchemin for finding
2465*83ee113eSDavid van Moolenbroek  the problem.  Calls to snprintf() are now linked to a distribution-local
2466*83ee113eSDavid van Moolenbroek  snprintf implementation, only in those cases where the architecture is
2467*83ee113eSDavid van Moolenbroek  not known to provide one (see includes/cf/[arch].h).  If you experience
2468*83ee113eSDavid van Moolenbroek  linking problems with snprintf/vsnprintf or 'isc_print_' functions, this
2469*83ee113eSDavid van Moolenbroek  is where to look.  This vulnerability did not exist in any previously
2470*83ee113eSDavid van Moolenbroek  published version of ISC DHCP.
2471*83ee113eSDavid van Moolenbroek
2472*83ee113eSDavid van Moolenbroek- Compilation on hpux 11.11 was repaired.
2473*83ee113eSDavid van Moolenbroek
2474*83ee113eSDavid van Moolenbroek- 'The cross-compile bug fix' was backed out.
2475*83ee113eSDavid van Moolenbroek
2476*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc12
2477*83ee113eSDavid van Moolenbroek
2478*83ee113eSDavid van Moolenbroek- Fixed a bug in omapi lease lookup function, to form the hardware
2479*83ee113eSDavid van Moolenbroek  address for the hash lookup correctly, thanks to a patch from
2480*83ee113eSDavid van Moolenbroek  Richard Hirst.
2481*83ee113eSDavid van Moolenbroek
2482*83ee113eSDavid van Moolenbroek- Fixed a bug where dhcrelay was sending relayed responses back to the
2483*83ee113eSDavid van Moolenbroek  broadcast address, but with the source's unicast mac address.  Should
2484*83ee113eSDavid van Moolenbroek  now conform to rfc2131 section 4.1.
2485*83ee113eSDavid van Moolenbroek
2486*83ee113eSDavid van Moolenbroek- Cross-compile bug fix; use $(AR) instead of ar.  Thanks to Morten Brorup.
2487*83ee113eSDavid van Moolenbroek
2488*83ee113eSDavid van Moolenbroek- Fixed a crash bug in dhclient where dhcpd servers that do not provide
2489*83ee113eSDavid van Moolenbroek  renewal times results in an FPE.  As a side effect, dhclient can now
2490*83ee113eSDavid van Moolenbroek  properly handle 0xFFFFFFFF (-1) expiry times supplied by servers.  Thanks
2491*83ee113eSDavid van Moolenbroek  to a patch from Burt Silverman.
2492*83ee113eSDavid van Moolenbroek
2493*83ee113eSDavid van Moolenbroek- The 'ping timeout' debugs from rc12 were removed to -DDEBUG only,
2494*83ee113eSDavid van Moolenbroek  and reformatted to correct a compilation error on Solaris platforms.
2495*83ee113eSDavid van Moolenbroek
2496*83ee113eSDavid van Moolenbroek- A patch was applied which fixes a case where leases read from the
2497*83ee113eSDavid van Moolenbroek  leases database do not properly over-ride previously read leases.
2498*83ee113eSDavid van Moolenbroek
2499*83ee113eSDavid van Moolenbroek- dhcpctl.3 manpage was tweaked.
2500*83ee113eSDavid van Moolenbroek
2501*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc11
2502*83ee113eSDavid van Moolenbroek
2503*83ee113eSDavid van Moolenbroek- A patch from Steve Campbell was applied with minor modifications to
2504*83ee113eSDavid van Moolenbroek  permit reverse dns PTR record updates with values containing spaces.
2505*83ee113eSDavid van Moolenbroek
2506*83ee113eSDavid van Moolenbroek- A patch from Florian Lohoff was applied with some modifications to
2507*83ee113eSDavid van Moolenbroek  dhcrelay.  It now discards packets whose hop count exceeds 10 by default,
2508*83ee113eSDavid van Moolenbroek  and a command-line option (-c) can be used to set this threshold.
2509*83ee113eSDavid van Moolenbroek
2510*83ee113eSDavid van Moolenbroek- A failover bug relating to identifying peers by name length instead of
2511*83ee113eSDavid van Moolenbroek  by name was fixed.
2512*83ee113eSDavid van Moolenbroek
2513*83ee113eSDavid van Moolenbroek- Declaring failover configs within shared-network statements should no
2514*83ee113eSDavid van Moolenbroek  longer result in error.
2515*83ee113eSDavid van Moolenbroek
2516*83ee113eSDavid van Moolenbroek- The -nw command line option to dhclient now works.
2517*83ee113eSDavid van Moolenbroek
2518*83ee113eSDavid van Moolenbroek- Thanks to a patch from Michael Richardson:
2519*83ee113eSDavid van Moolenbroek	- Some problems with long option processing have been fixed.
2520*83ee113eSDavid van Moolenbroek	- Some fixes to minires so that updates of KEY records will work.
2521*83ee113eSDavid van Moolenbroek
2522*83ee113eSDavid van Moolenbroek- contrib/ms2isc was updated by Shu-Min Chang of the Intel Corporation.
2523*83ee113eSDavid van Moolenbroek  see contrib/ms2isc/readme.txt for revision notes.
2524*83ee113eSDavid van Moolenbroek
2525*83ee113eSDavid van Moolenbroek- Dhclient no longer uses shell commands to kill another instance of
2526*83ee113eSDavid van Moolenbroek  itself, it sends the signal directly.  Thanks to a patch from Martin
2527*83ee113eSDavid van Moolenbroek  Blapp.
2528*83ee113eSDavid van Moolenbroek
2529*83ee113eSDavid van Moolenbroek- The FreeBSD dhclient-script was changed so that a failure to write to
2530*83ee113eSDavid van Moolenbroek  /etc/resolv.conf does not prematurely end the script.  This keeps dhclient
2531*83ee113eSDavid van Moolenbroek  from looping infinitely when this is the case.  Thanks to a patch from
2532*83ee113eSDavid van Moolenbroek  Martin Blapp.
2533*83ee113eSDavid van Moolenbroek
2534*83ee113eSDavid van Moolenbroek- A patch from Bill Stephens was applied which resolves a problem with lease
2535*83ee113eSDavid van Moolenbroek  expiry times in failover configurations.
2536*83ee113eSDavid van Moolenbroek
2537*83ee113eSDavid van Moolenbroek- A memory leak in configuration parsing was closed thanks to a patch from
2538*83ee113eSDavid van Moolenbroek  Steve G.
2539*83ee113eSDavid van Moolenbroek
2540*83ee113eSDavid van Moolenbroek- The function which discovers interfaces will now skip non-broadcast or
2541*83ee113eSDavid van Moolenbroek  point-to-point interfaces, thanks to a patch from David Brownlee.
2542*83ee113eSDavid van Moolenbroek
2543*83ee113eSDavid van Moolenbroek- Options not yet known by the dhcpd or dhclient have had their names
2544*83ee113eSDavid van Moolenbroek  changed such that they do not contain # symbols, in case they should ever
2545*83ee113eSDavid van Moolenbroek  appear in a lease file.  An option that might have been named "#144" is
2546*83ee113eSDavid van Moolenbroek  now "unknown-144".
2547*83ee113eSDavid van Moolenbroek
2548*83ee113eSDavid van Moolenbroek- Another patch from Bill Stephens which allows the ping-check timeout to
2549*83ee113eSDavid van Moolenbroek  be configured as 'ping-timeout'.  Defaults to 1.
2550*83ee113eSDavid van Moolenbroek
2551*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc10
2552*83ee113eSDavid van Moolenbroek
2553*83ee113eSDavid van Moolenbroek- Potential buffer overflows in minires repaired.
2554*83ee113eSDavid van Moolenbroek
2555*83ee113eSDavid van Moolenbroek- A change to the linux client script to use /bin/bash, since /bin/sh may
2556*83ee113eSDavid van Moolenbroek  not be bash.
2557*83ee113eSDavid van Moolenbroek
2558*83ee113eSDavid van Moolenbroek- Some missing va_end cleanups thanks to a patch from Thomas Klausner.
2559*83ee113eSDavid van Moolenbroek
2560*83ee113eSDavid van Moolenbroek- A correction of boolean parsing syntax validation - some illegal syntaxes
2561*83ee113eSDavid van Moolenbroek  that worked before are now detected and produce errs, some legal syntaxes
2562*83ee113eSDavid van Moolenbroek  that errored before will now work properly.
2563*83ee113eSDavid van Moolenbroek
2564*83ee113eSDavid van Moolenbroek- Some search-and-replace errors that caused some options to change their
2565*83ee113eSDavid van Moolenbroek  names was repaired.
2566*83ee113eSDavid van Moolenbroek
2567*83ee113eSDavid van Moolenbroek- Shu-min Chang of the Intel corporation has contributed a perl script and
2568*83ee113eSDavid van Moolenbroek  module that converts the MS NT4 DHCP configuration to a ISC DHCP3
2569*83ee113eSDavid van Moolenbroek  configuration file.
2570*83ee113eSDavid van Moolenbroek
2571*83ee113eSDavid van Moolenbroek- Applied the remainder of the dhcpctl memory leak patch provided by Bill
2572*83ee113eSDavid van Moolenbroek  Squier at ReefEdge, Inc.  (groo@reefedge.com).
2573*83ee113eSDavid van Moolenbroek
2574*83ee113eSDavid van Moolenbroek- Missing non-optional failover peer configurations will now result in a soft
2575*83ee113eSDavid van Moolenbroek  error rather than a null dereference.
2576*83ee113eSDavid van Moolenbroek
2577*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc9
2578*83ee113eSDavid van Moolenbroek
2579*83ee113eSDavid van Moolenbroek- A format string was corrected to fix compiler warnings.
2580*83ee113eSDavid van Moolenbroek
2581*83ee113eSDavid van Moolenbroek- A number of spelling corrections were made in the man pages.
2582*83ee113eSDavid van Moolenbroek
2583*83ee113eSDavid van Moolenbroek- The dhclient.conf.5 man page was changed to refer to do-forward-updates
2584*83ee113eSDavid van Moolenbroek  rather than a configuration option that doesn't exist.
2585*83ee113eSDavid van Moolenbroek
2586*83ee113eSDavid van Moolenbroek- A FreeBSD-specific bug in the interface removal handling was fixed.
2587*83ee113eSDavid van Moolenbroek
2588*83ee113eSDavid van Moolenbroek- A Linux-specific Token Ring detection problem was fixed.
2589*83ee113eSDavid van Moolenbroek
2590*83ee113eSDavid van Moolenbroek- Hashes removed from as-yet-unknown agent options, having those options
2591*83ee113eSDavid van Moolenbroek  appear in reality before we know about them will no longer produce
2592*83ee113eSDavid van Moolenbroek  self-corrupting lease databases.
2593*83ee113eSDavid van Moolenbroek
2594*83ee113eSDavid van Moolenbroek- dhclient will use the proper port numbers now when using the -g option.
2595*83ee113eSDavid van Moolenbroek
2596*83ee113eSDavid van Moolenbroek- A order-of-operations bug with 2 match clauses in 1 class statement is
2597*83ee113eSDavid van Moolenbroek  fixed thanks to a patch from Andrew Matheson.
2598*83ee113eSDavid van Moolenbroek
2599*83ee113eSDavid van Moolenbroek- Compilation problems on Solaris were fixed.
2600*83ee113eSDavid van Moolenbroek
2601*83ee113eSDavid van Moolenbroek- Compilation problems when built with DEBUG or DEBUG_PACKET were repaired.
2602*83ee113eSDavid van Moolenbroek
2603*83ee113eSDavid van Moolenbroek- A fix to the dhcp ack process which makes certain group options will be
2604*83ee113eSDavid van Moolenbroek  included in the first DHCPOFFER message was made thanks to a patch from
2605*83ee113eSDavid van Moolenbroek  Ling Gou.
2606*83ee113eSDavid van Moolenbroek
2607*83ee113eSDavid van Moolenbroek- A few memory leaks were repaired thanks to patches from Bill Squier at
2608*83ee113eSDavid van Moolenbroek  ReefEdge, Inc.  (groo@reefedge.com).
2609*83ee113eSDavid van Moolenbroek
2610*83ee113eSDavid van Moolenbroek- A fix for shared-networks that sometimes give clients options for the
2611*83ee113eSDavid van Moolenbroek  wrong subnets (in particular, 'option routers') was applied, thanks to
2612*83ee113eSDavid van Moolenbroek  Ted Lemon for the patch.
2613*83ee113eSDavid van Moolenbroek
2614*83ee113eSDavid van Moolenbroek- Omshell's handling of dotted octets as values was changed such that dots
2615*83ee113eSDavid van Moolenbroek  one after the other produce zero values in the integer string.
2616*83ee113eSDavid van Moolenbroek
2617*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc8
2618*83ee113eSDavid van Moolenbroek
2619*83ee113eSDavid van Moolenbroek- Fix a format string vulnerability in the server that could lead to a
2620*83ee113eSDavid van Moolenbroek  remote root compromise (discovered by NGSEC Research Team, www.ngsec.com).
2621*83ee113eSDavid van Moolenbroek
2622*83ee113eSDavid van Moolenbroek- Add additional support for NetBSD/sparc64.
2623*83ee113eSDavid van Moolenbroek
2624*83ee113eSDavid van Moolenbroek- Fix a bug in the command-line parsing of the client.  Also, resolve
2625*83ee113eSDavid van Moolenbroek  a memory leak.
2626*83ee113eSDavid van Moolenbroek
2627*83ee113eSDavid van Moolenbroek- Add better support for shells other than bash in the Linux client
2628*83ee113eSDavid van Moolenbroek  script.
2629*83ee113eSDavid van Moolenbroek
2630*83ee113eSDavid van Moolenbroek- Various build fixes for modern versions of FreeBSD and Linux.
2631*83ee113eSDavid van Moolenbroek
2632*83ee113eSDavid van Moolenbroek- Fix a bad bounds check when printing binding state names.
2633*83ee113eSDavid van Moolenbroek
2634*83ee113eSDavid van Moolenbroek- Clarify documentation about fixed-address and multiple addresses.
2635*83ee113eSDavid van Moolenbroek
2636*83ee113eSDavid van Moolenbroek- Fix a typo in the authoritative error message.
2637*83ee113eSDavid van Moolenbroek
2638*83ee113eSDavid van Moolenbroek- Make a log entry when we can't write a billing class.
2639*83ee113eSDavid van Moolenbroek
2640*83ee113eSDavid van Moolenbroek- Use conversion targets that are the right size on all architectures.
2641*83ee113eSDavid van Moolenbroek
2642*83ee113eSDavid van Moolenbroek- Increment the hop count when relaying.
2643*83ee113eSDavid van Moolenbroek
2644*83ee113eSDavid van Moolenbroek- Log a message when lease state is changed through OMAPI.
2645*83ee113eSDavid van Moolenbroek
2646*83ee113eSDavid van Moolenbroek- Don't rerun the shared_network when evaluating the pool.
2647*83ee113eSDavid van Moolenbroek
2648*83ee113eSDavid van Moolenbroek- Fix a reversed test in the parser.
2649*83ee113eSDavid van Moolenbroek
2650*83ee113eSDavid van Moolenbroek- Change the type of rbuf_max.
2651*83ee113eSDavid van Moolenbroek
2652*83ee113eSDavid van Moolenbroek- Make FTS_LAST a manifest constant to quiet warnings.
2653*83ee113eSDavid van Moolenbroek
2654*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc7
2655*83ee113eSDavid van Moolenbroek
2656*83ee113eSDavid van Moolenbroek- Fix two compiler warnings that are generated when compiling on Solaris
2657*83ee113eSDavid van Moolenbroek  with gcc.   These stop the build, even though they weren't actually
2658*83ee113eSDavid van Moolenbroek  errors, because we prefer that our builds generate no warnings.
2659*83ee113eSDavid van Moolenbroek
2660*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc6
2661*83ee113eSDavid van Moolenbroek
2662*83ee113eSDavid van Moolenbroek- Don't allow a lease that's in the EXPIRED, RELEASED or RESET state
2663*83ee113eSDavid van Moolenbroek  to be renewed.
2664*83ee113eSDavid van Moolenbroek
2665*83ee113eSDavid van Moolenbroek- Implement lease stealing for cases where the primary has fewer leases
2666*83ee113eSDavid van Moolenbroek  than the secondary, as called for by the standard.
2667*83ee113eSDavid van Moolenbroek
2668*83ee113eSDavid van Moolenbroek- Add a fudge factor to the lease expiry acceptance code, (suggested
2669*83ee113eSDavid van Moolenbroek  by Kevin Miller of CMU).
2670*83ee113eSDavid van Moolenbroek
2671*83ee113eSDavid van Moolenbroek- Fix a bug in permit_list_match that made it much too willing to say
2672*83ee113eSDavid van Moolenbroek  that two permit lists matched.
2673*83ee113eSDavid van Moolenbroek
2674*83ee113eSDavid van Moolenbroek- Unless DEBUG_DNS_UPDATES is defined, print more user-friendly (and
2675*83ee113eSDavid van Moolenbroek  also more compact) messages about DNS updates.
2676*83ee113eSDavid van Moolenbroek
2677*83ee113eSDavid van Moolenbroek- Fix a bug in generating wire-format domain names for the FQDN option.
2678*83ee113eSDavid van Moolenbroek
2679*83ee113eSDavid van Moolenbroek- Fix a bug where the FQDN option would not be returned if the client
2680*83ee113eSDavid van Moolenbroek  requested it, contrary to the standard.
2681*83ee113eSDavid van Moolenbroek
2682*83ee113eSDavid van Moolenbroek- On Darwin, use the FreeBSD DHCP client script.
2683*83ee113eSDavid van Moolenbroek
2684*83ee113eSDavid van Moolenbroek- On NetBSD/sparc, don't check for casting warnings.
2685*83ee113eSDavid van Moolenbroek
2686*83ee113eSDavid van Moolenbroek- Add a flag in the DHCP client to disable updating the client's A
2687*83ee113eSDavid van Moolenbroek  record when sending an FQDN option indicating that the client is
2688*83ee113eSDavid van Moolenbroek  going to update its A record.
2689*83ee113eSDavid van Moolenbroek
2690*83ee113eSDavid van Moolenbroek- In the client, don't attempt a DNS update until one second after
2691*83ee113eSDavid van Moolenbroek  configuring the new IP address, and if the update times out, keep
2692*83ee113eSDavid van Moolenbroek  trying until a response, positive or negative, is received from the
2693*83ee113eSDavid van Moolenbroek  DNS server.
2694*83ee113eSDavid van Moolenbroek
2695*83ee113eSDavid van Moolenbroek- Fix an uninitialized memory bug in the DHCP client.
2696*83ee113eSDavid van Moolenbroek
2697*83ee113eSDavid van Moolenbroek- Apply some FreeBSD-specific bug fixes suggested by Murray Stokely.
2698*83ee113eSDavid van Moolenbroek
2699*83ee113eSDavid van Moolenbroek- Fix a bug in ns_parserr(), where it was returning the wrong sort
2700*83ee113eSDavid van Moolenbroek  of result code in some cases (suggested by Ben Harris of the
2701*83ee113eSDavid van Moolenbroek  NetBSD project).
2702*83ee113eSDavid van Moolenbroek
2703*83ee113eSDavid van Moolenbroek- Fix a bug in is_identifier(), where it was checking against EOF
2704*83ee113eSDavid van Moolenbroek  instead of the END_OF_FILE token (also suggested by Ben Harris).
2705*83ee113eSDavid van Moolenbroek
2706*83ee113eSDavid van Moolenbroek- Fix a bug where if an option universe contained no options, the
2707*83ee113eSDavid van Moolenbroek  DHCP server could dump core (Walter Steiner).
2708*83ee113eSDavid van Moolenbroek
2709*83ee113eSDavid van Moolenbroek- Fix a bug in the handling of encapsulated options.
2710*83ee113eSDavid van Moolenbroek
2711*83ee113eSDavid van Moolenbroek- Fix a bug that prevented NWIP suboptions from being processed.
2712*83ee113eSDavid van Moolenbroek
2713*83ee113eSDavid van Moolenbroek- Delete the FTS_BOOTP and FTS_RESERVED states and implement them
2714*83ee113eSDavid van Moolenbroek  as modifier flags to the FTS_ACTIVE state, as called for in the
2715*83ee113eSDavid van Moolenbroek  failover protocol standard.
2716*83ee113eSDavid van Moolenbroek
2717*83ee113eSDavid van Moolenbroek- Fix bugs in the pool merging code that resulted in references and
2718*83ee113eSDavid van Moolenbroek  dereferences of null pointers.   This bug had no impact unless the
2719*83ee113eSDavid van Moolenbroek  POINTER_DEBUG flag was defined.
2720*83ee113eSDavid van Moolenbroek
2721*83ee113eSDavid van Moolenbroek- In the server, added a do-forward-updates flag that can be used to
2722*83ee113eSDavid van Moolenbroek  disable forward updates in all cases, so that sites that want the
2723*83ee113eSDavid van Moolenbroek  clients to take sole responsibility for updating their A record can
2724*83ee113eSDavid van Moolenbroek  do so.
2725*83ee113eSDavid van Moolenbroek
2726*83ee113eSDavid van Moolenbroek- Make it possible to disable optimization of PTR record updates.
2727*83ee113eSDavid van Moolenbroek
2728*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc5
2729*83ee113eSDavid van Moolenbroek
2730*83ee113eSDavid van Moolenbroek- Include some new documentation and changes provided by Karl Auer.
2731*83ee113eSDavid van Moolenbroek
2732*83ee113eSDavid van Moolenbroek- Add a workaround for some Lexmark printers that send a double-NUL-
2733*83ee113eSDavid van Moolenbroek  terminated host-name option, which would break DNS updates.
2734*83ee113eSDavid van Moolenbroek
2735*83ee113eSDavid van Moolenbroek- Fix an off-by-one error in the MAC-address checking code for
2736*83ee113eSDavid van Moolenbroek  DHCPRELEASE that was added in 3.0.1rc5.
2737*83ee113eSDavid van Moolenbroek
2738*83ee113eSDavid van Moolenbroek- Fix a bug where client-specific information was not being discarded
2739*83ee113eSDavid van Moolenbroek  from the lease when it expired or was released, resulting in
2740*83ee113eSDavid van Moolenbroek  problems if the lease was reallocated to a different client.
2741*83ee113eSDavid van Moolenbroek
2742*83ee113eSDavid van Moolenbroek- If more than one allocation pool is specified that has the same set
2743*83ee113eSDavid van Moolenbroek  of constraints as another allocation pool on the same shared
2744*83ee113eSDavid van Moolenbroek  network, merge the two pools.
2745*83ee113eSDavid van Moolenbroek
2746*83ee113eSDavid van Moolenbroek- Don't print an error in fallback_discard, since this just causes
2747*83ee113eSDavid van Moolenbroek  confusion and does not appear to be helping to encourage anyone to
2748*83ee113eSDavid van Moolenbroek  fix this bug.
2749*83ee113eSDavid van Moolenbroek
2750*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc4
2751*83ee113eSDavid van Moolenbroek
2752*83ee113eSDavid van Moolenbroek- Fix a bug that would cause the DHCP server to spin if asked to parse
2753*83ee113eSDavid van Moolenbroek  a certain kind of incorrect statement.
2754*83ee113eSDavid van Moolenbroek
2755*83ee113eSDavid van Moolenbroek- Fix a related bug that would prevent an error from being reported in
2756*83ee113eSDavid van Moolenbroek  the same case.
2757*83ee113eSDavid van Moolenbroek
2758*83ee113eSDavid van Moolenbroek- Additional documentation.
2759*83ee113eSDavid van Moolenbroek
2760*83ee113eSDavid van Moolenbroek- Make sure that the hardware address matches the lease when
2761*83ee113eSDavid van Moolenbroek  processing a DHCPRELEASE message.
2762*83ee113eSDavid van Moolenbroek
2763*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc3
2764*83ee113eSDavid van Moolenbroek
2765*83ee113eSDavid van Moolenbroek- A minor bug fix in the arguments to a logging function call.
2766*83ee113eSDavid van Moolenbroek- Documentation update for dhcpd.conf.
2767*83ee113eSDavid van Moolenbroek
2768*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc2
2769*83ee113eSDavid van Moolenbroek
2770*83ee113eSDavid van Moolenbroek- Allow the primary to send a POOLREQ message.   This isn't what the current
2771*83ee113eSDavid van Moolenbroek  failover draft says to do, so we may have to back it out if I can't get the
2772*83ee113eSDavid van Moolenbroek  authors to relent, but the scheme for balancing that's specified in the
2773*83ee113eSDavid van Moolenbroek  current draft seems needlessly hairy, so I'm floating a trial balloon.
2774*83ee113eSDavid van Moolenbroek  The rc1 code did not implement the method described in the draft either.
2775*83ee113eSDavid van Moolenbroek
2776*83ee113eSDavid van Moolenbroek			Changes since 3.0.1rc1
2777*83ee113eSDavid van Moolenbroek
2778*83ee113eSDavid van Moolenbroek- Treat NXDOMAIN and NXRRSET as success when we are trying to delete a
2779*83ee113eSDavid van Moolenbroek  domain or RRSET.   This allows the DHCP server to forget about a name
2780*83ee113eSDavid van Moolenbroek  it added to the DNS once it's been removed, even if the DHCP server
2781*83ee113eSDavid van Moolenbroek  wasn't the one that removed it.
2782*83ee113eSDavid van Moolenbroek
2783*83ee113eSDavid van Moolenbroek- Install defaults for failover maximum outstanding updates and maximum
2784*83ee113eSDavid van Moolenbroek  silent time.   This prevents problems that might occur if these values
2785*83ee113eSDavid van Moolenbroek  were not configured.
2786*83ee113eSDavid van Moolenbroek
2787*83ee113eSDavid van Moolenbroek- Don't do DDNS deletes if ddns-update-style is none.
2788*83ee113eSDavid van Moolenbroek
2789*83ee113eSDavid van Moolenbroek- Return relay agent information options in DHCPNAK.   This prevents DHCPNAK
2790*83ee113eSDavid van Moolenbroek  messages from being dropped when the relay agent information option contains
2791*83ee113eSDavid van Moolenbroek  routing information.
2792*83ee113eSDavid van Moolenbroek
2793*83ee113eSDavid van Moolenbroek- Fix a problem where coming up in recover wouldn't result in an update
2794*83ee113eSDavid van Moolenbroek  request being sent.
2795*83ee113eSDavid van Moolenbroek
2796*83ee113eSDavid van Moolenbroek- Add some more chatty messages when we start a recovery update and when it's
2797*83ee113eSDavid van Moolenbroek  done.
2798*83ee113eSDavid van Moolenbroek
2799*83ee113eSDavid van Moolenbroek- Fix a possible problem where some state might have been left around
2800*83ee113eSDavid van Moolenbroek  after the peer lost contact and regained contact about how many updates
2801*83ee113eSDavid van Moolenbroek  were pending.
2802*83ee113eSDavid van Moolenbroek
2803*83ee113eSDavid van Moolenbroek- Don't nix a lease update because of a lease conflict.   This test has
2804*83ee113eSDavid van Moolenbroek  never (as far as I know) prevented a mistake, and it appears to cause
2805*83ee113eSDavid van Moolenbroek  problems with failover.
2806*83ee113eSDavid van Moolenbroek
2807*83ee113eSDavid van Moolenbroek- Add support in rc history code for keeping a selective history, rather
2808*83ee113eSDavid van Moolenbroek  than a history of all references and dereferences.   This code is only used
2809*83ee113eSDavid van Moolenbroek  when extensive additional debugging is enabled.
2810*83ee113eSDavid van Moolenbroek
2811*83ee113eSDavid van Moolenbroek			   Changes since 3.0
2812*83ee113eSDavid van Moolenbroek
2813*83ee113eSDavid van Moolenbroek- Make allocators for hash tables.   As a side effect, this fixes a memory
2814*83ee113eSDavid van Moolenbroek  smash in the subclass allocation code.
2815*83ee113eSDavid van Moolenbroek
2816*83ee113eSDavid van Moolenbroek- Fix a small bug in omshell where if you try to close an object when
2817*83ee113eSDavid van Moolenbroek  no object is open, it dumps core.
2818*83ee113eSDavid van Moolenbroek
2819*83ee113eSDavid van Moolenbroek- Fix an obscure coredump that could occur on shutdown.
2820*83ee113eSDavid van Moolenbroek
2821*83ee113eSDavid van Moolenbroek- Fix a bug in the recording of host declaration rubouts in the lease file.
2822*83ee113eSDavid van Moolenbroek
2823*83ee113eSDavid van Moolenbroek- Fix two potential spins in the host deletion code.
2824*83ee113eSDavid van Moolenbroek
2825*83ee113eSDavid van Moolenbroek- Fix a core dump that would happen if an application tried to update
2826*83ee113eSDavid van Moolenbroek  a host object attribute with a null value.
2827*83ee113eSDavid van Moolenbroek
2828*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 12
2829*83ee113eSDavid van Moolenbroek
2830*83ee113eSDavid van Moolenbroek- Fix a memory leak in the evaluation code.
2831*83ee113eSDavid van Moolenbroek
2832*83ee113eSDavid van Moolenbroek- Fix an obscure core dump.
2833*83ee113eSDavid van Moolenbroek
2834*83ee113eSDavid van Moolenbroek- Print a couple of new warnings when parsing the configuration file
2835*83ee113eSDavid van Moolenbroek  when crucial information is left out.
2836*83ee113eSDavid van Moolenbroek
2837*83ee113eSDavid van Moolenbroek- Log "no free leases" as an error.
2838*83ee113eSDavid van Moolenbroek
2839*83ee113eSDavid van Moolenbroek- Documentation updates.
2840*83ee113eSDavid van Moolenbroek
2841*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 11
2842*83ee113eSDavid van Moolenbroek
2843*83ee113eSDavid van Moolenbroek- Always return a subnet selection option if one is sent.
2844*83ee113eSDavid van Moolenbroek
2845*83ee113eSDavid van Moolenbroek- Fix a warning that was being printed because an automatic data
2846*83ee113eSDavid van Moolenbroek  structure wasn't zeroed.
2847*83ee113eSDavid van Moolenbroek
2848*83ee113eSDavid van Moolenbroek- Fix some failover state transitions that were being handled
2849*83ee113eSDavid van Moolenbroek  incorrectly.
2850*83ee113eSDavid van Moolenbroek
2851*83ee113eSDavid van Moolenbroek- When supersede_lease is called on a lease whose end time has already
2852*83ee113eSDavid van Moolenbroek  expired, but for which a state transition has not yet been done, do
2853*83ee113eSDavid van Moolenbroek  a state transition.   This fixes the case where if the secondary
2854*83ee113eSDavid van Moolenbroek  allocated a lease to a client and the lease "expired" while the
2855*83ee113eSDavid van Moolenbroek  secondary was in partner-down, no expiry event would actually
2856*83ee113eSDavid van Moolenbroek  happen, so the lease would remain active until the primary was
2857*83ee113eSDavid van Moolenbroek  restarted.
2858*83ee113eSDavid van Moolenbroek
2859*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 10
2860*83ee113eSDavid van Moolenbroek
2861*83ee113eSDavid van Moolenbroek- Fix a bug that was preventing released leases from changing state
2862*83ee113eSDavid van Moolenbroek  in failover-enabled pools.
2863*83ee113eSDavid van Moolenbroek
2864*83ee113eSDavid van Moolenbroek- Fix a core dump in the client identifier finder code (for host
2865*83ee113eSDavid van Moolenbroek  declarations).
2866*83ee113eSDavid van Moolenbroek
2867*83ee113eSDavid van Moolenbroek- Finish fixing a bug where bogus data would sometimes get logged to
2868*83ee113eSDavid van Moolenbroek  the dhclient.leases file because it was opened as descriptor 2.
2869*83ee113eSDavid van Moolenbroek
2870*83ee113eSDavid van Moolenbroek- Fix the Linux dhclient-script according to suggestions made by
2871*83ee113eSDavid van Moolenbroek  several people on the dhcp-client mailing list.
2872*83ee113eSDavid van Moolenbroek
2873*83ee113eSDavid van Moolenbroek- Log successful DNS updates at LOG_INFO, not LOG_ERROR.
2874*83ee113eSDavid van Moolenbroek
2875*83ee113eSDavid van Moolenbroek- Print an error message and refuse to run if a failover peer is
2876*83ee113eSDavid van Moolenbroek  defined but not referenced by any pools.
2877*83ee113eSDavid van Moolenbroek
2878*83ee113eSDavid van Moolenbroek- Correct a confusing error message in failover.
2879*83ee113eSDavid van Moolenbroek
2880*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 9
2881*83ee113eSDavid van Moolenbroek
2882*83ee113eSDavid van Moolenbroek- Fix a bug in lease allocation for Dynamic BOOTP clients.
2883*83ee113eSDavid van Moolenbroek
2884*83ee113eSDavid van Moolenbroek	  Changes since 3.0 Release Candidate 8 Patchlevel 2
2885*83ee113eSDavid van Moolenbroek
2886*83ee113eSDavid van Moolenbroek- Fix a bug that prevented update-static-leases from working.
2887*83ee113eSDavid van Moolenbroek
2888*83ee113eSDavid van Moolenbroek- Document failover-state OMAPI object.
2889*83ee113eSDavid van Moolenbroek
2890*83ee113eSDavid van Moolenbroek- Fix a compilation error on SunOS 4.
2891*83ee113eSDavid van Moolenbroek
2892*83ee113eSDavid van Moolenbroek	  Changes since 3.0 Release Candidate 8 Patchlevel 1
2893*83ee113eSDavid van Moolenbroek
2894*83ee113eSDavid van Moolenbroek- Fix a parsing bug that broke dns updates (both interim and ad-hoc).
2895*83ee113eSDavid van Moolenbroek  This was introduced in rc8pl1 as an unintended result of the memory
2896*83ee113eSDavid van Moolenbroek  leakage fixes that were in pl1.
2897*83ee113eSDavid van Moolenbroek
2898*83ee113eSDavid van Moolenbroek- Fix a long-standing bug where the server would record that an update
2899*83ee113eSDavid van Moolenbroek  had been done for a client with no name, even though no update had
2900*83ee113eSDavid van Moolenbroek  been done, and then when the client's lease expired the deletion of
2901*83ee113eSDavid van Moolenbroek  that nonexistant record would time out because the name was the null
2902*83ee113eSDavid van Moolenbroek  string.
2903*83ee113eSDavid van Moolenbroek
2904*83ee113eSDavid van Moolenbroek- Clean up the omshell, dhcpctl and omapi man pages a bit.
2905*83ee113eSDavid van Moolenbroek
2906*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 8
2907*83ee113eSDavid van Moolenbroek
2908*83ee113eSDavid van Moolenbroek- Fix a bug that could cause the DHCP server to spin if
2909*83ee113eSDavid van Moolenbroek  one-lease-per-client was enabled.
2910*83ee113eSDavid van Moolenbroek
2911*83ee113eSDavid van Moolenbroek- Fix a bug that was causing core dumps on BSD/os in the presence of
2912*83ee113eSDavid van Moolenbroek  malformed packets.
2913*83ee113eSDavid van Moolenbroek
2914*83ee113eSDavid van Moolenbroek- In partner-down state, don't restrict lease lengths to MCLT.
2915*83ee113eSDavid van Moolenbroek
2916*83ee113eSDavid van Moolenbroek- On the failover secondary, record the MCLT received from the primary
2917*83ee113eSDavid van Moolenbroek  so that if we come up without a connection to the primary we don't
2918*83ee113eSDavid van Moolenbroek  wind up giving out zero-length leases.
2919*83ee113eSDavid van Moolenbroek
2920*83ee113eSDavid van Moolenbroek- Fix some compilation problems on BSD/os.
2921*83ee113eSDavid van Moolenbroek
2922*83ee113eSDavid van Moolenbroek- Fix a bunch of memory leaks.
2923*83ee113eSDavid van Moolenbroek
2924*83ee113eSDavid van Moolenbroek- Fix a couple of bugs in the option printer.
2925*83ee113eSDavid van Moolenbroek
2926*83ee113eSDavid van Moolenbroek- Fix an obscure error reporting bug in the dns update code, and also
2927*83ee113eSDavid van Moolenbroek  make the message clearer when a key algorithm isn't supported.
2928*83ee113eSDavid van Moolenbroek
2929*83ee113eSDavid van Moolenbroek- Fix a bug in the tracing code that prevented trace runs that used
2930*83ee113eSDavid van Moolenbroek  tcp connections from being played back.
2931*83ee113eSDavid van Moolenbroek
2932*83ee113eSDavid van Moolenbroek- Add some additional debugging capability for catching memory leaks
2933*83ee113eSDavid van Moolenbroek  on exit.
2934*83ee113eSDavid van Moolenbroek
2935*83ee113eSDavid van Moolenbroek- Make the client release the lease correctly on shutdown.
2936*83ee113eSDavid van Moolenbroek
2937*83ee113eSDavid van Moolenbroek- Add some configurability to the build system.
2938*83ee113eSDavid van Moolenbroek
2939*83ee113eSDavid van Moolenbroek- Install omshell manual page in man1, not man8.
2940*83ee113eSDavid van Moolenbroek
2941*83ee113eSDavid van Moolenbroek- Craig Gwydir sent in a patch that fixes a long-standing bug in the
2942*83ee113eSDavid van Moolenbroek  DHCP client that could cause core dumps, but that for some reason
2943*83ee113eSDavid van Moolenbroek  hadn't been noticed until now.
2944*83ee113eSDavid van Moolenbroek
2945*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 7
2946*83ee113eSDavid van Moolenbroek
2947*83ee113eSDavid van Moolenbroek- Fix a bug in failover where we weren't sending updates after a
2948*83ee113eSDavid van Moolenbroek  transition from communications-interrupted to normal.
2949*83ee113eSDavid van Moolenbroek
2950*83ee113eSDavid van Moolenbroek- Handle expired/released/reset -> free transition according to the
2951*83ee113eSDavid van Moolenbroek  protocol specification (this works - the other way not only wasn't
2952*83ee113eSDavid van Moolenbroek  conformant, but also didn't work).
2953*83ee113eSDavid van Moolenbroek
2954*83ee113eSDavid van Moolenbroek- Add a control object in both client and server that allows either
2955*83ee113eSDavid van Moolenbroek  daemon to be shut down cleanly.
2956*83ee113eSDavid van Moolenbroek
2957*83ee113eSDavid van Moolenbroek- When writing a lease, if we run out of disk space, shut down the
2958*83ee113eSDavid van Moolenbroek  output file and insist on writing a new one before proceeding.
2959*83ee113eSDavid van Moolenbroek
2960*83ee113eSDavid van Moolenbroek- In the server, if the OMAPI listener port is occupied, keep trying
2961*83ee113eSDavid van Moolenbroek  to get it, rather than simply giving up and exiting.
2962*83ee113eSDavid van Moolenbroek
2963*83ee113eSDavid van Moolenbroek- Support fetching variables from leases and also updating and adding
2964*83ee113eSDavid van Moolenbroek  variables to leases via OMAPI.
2965*83ee113eSDavid van Moolenbroek
2966*83ee113eSDavid van Moolenbroek- If two failover peers have wildly different clocks, refuse to start
2967*83ee113eSDavid van Moolenbroek  doing failover.
2968*83ee113eSDavid van Moolenbroek
2969*83ee113eSDavid van Moolenbroek- Fix a bug in the DNS update code that could cause core dumps when
2970*83ee113eSDavid van Moolenbroek  running on alpha processors.
2971*83ee113eSDavid van Moolenbroek
2972*83ee113eSDavid van Moolenbroek- Fixed a bug in ddns updates for static lease entries, thanks to a
2973*83ee113eSDavid van Moolenbroek  patch from Andrey M Linkevitch.
2974*83ee113eSDavid van Moolenbroek
2975*83ee113eSDavid van Moolenbroek- Add support for Darwin/MacOS X
2976*83ee113eSDavid van Moolenbroek
2977*83ee113eSDavid van Moolenbroek- Install omshell (including new documentation).
2978*83ee113eSDavid van Moolenbroek
2979*83ee113eSDavid van Moolenbroek- Support DNS updates in the client (this is a very obscure feature
2980*83ee113eSDavid van Moolenbroek  that most DHCP client users probably will not be able to use).
2981*83ee113eSDavid van Moolenbroek
2982*83ee113eSDavid van Moolenbroek- Somewhat cleaner status logging in the client.
2983*83ee113eSDavid van Moolenbroek
2984*83ee113eSDavid van Moolenbroek- Make OMAPI key naming syntax compatible with the way keys are
2985*83ee113eSDavid van Moolenbroek  actually named (key names are domain names).
2986*83ee113eSDavid van Moolenbroek
2987*83ee113eSDavid van Moolenbroek- Fix a bug in the lease file writer.
2988*83ee113eSDavid van Moolenbroek
2989*83ee113eSDavid van Moolenbroek- Install DHCP ISC headers in a different place than BIND 9 ISC
2990*83ee113eSDavid van Moolenbroek  headers, to avoid causing trouble in BIND 9 builds.
2991*83ee113eSDavid van Moolenbroek
2992*83ee113eSDavid van Moolenbroek- Don't send updates for attributes on an object when the attributes
2993*83ee113eSDavid van Moolenbroek  haven't changed.   Support deleting attributes on remote objects.
2994*83ee113eSDavid van Moolenbroek
2995*83ee113eSDavid van Moolenbroek- Fix a number of bugs in omshell, and add the unset and refresh
2996*83ee113eSDavid van Moolenbroek  statements.
2997*83ee113eSDavid van Moolenbroek
2998*83ee113eSDavid van Moolenbroek- Handle disconnects in OMAPI a little bit more intelligently (so that
2999*83ee113eSDavid van Moolenbroek  the caller gets ECONNRESET instead of EINVAL).
3000*83ee113eSDavid van Moolenbroek
3001*83ee113eSDavid van Moolenbroek- Fix a bunch of bugs in the handling of clients that have existing
3002*83ee113eSDavid van Moolenbroek  leases when the try to renew their leases while failover is
3003*83ee113eSDavid van Moolenbroek  operating.
3004*83ee113eSDavid van Moolenbroek
3005*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 6
3006*83ee113eSDavid van Moolenbroek
3007*83ee113eSDavid van Moolenbroek- Fix a core dump that could happen when processing a DHCPREQUEST from
3008*83ee113eSDavid van Moolenbroek  a client that had a host declaration that contained both a
3009*83ee113eSDavid van Moolenbroek  fixed-address declaration and a dhcp-client-identifier option
3010*83ee113eSDavid van Moolenbroek  declaration, if the client identifier was longer than nine bytes.
3011*83ee113eSDavid van Moolenbroek
3012*83ee113eSDavid van Moolenbroek- Fix a memory leak that could happen in certain obscure cases when
3013*83ee113eSDavid van Moolenbroek  using omapi to manipulate leases.
3014*83ee113eSDavid van Moolenbroek
3015*83ee113eSDavid van Moolenbroek- Fix some bugs and omissions in omshell.
3016*83ee113eSDavid van Moolenbroek
3017*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 5
3018*83ee113eSDavid van Moolenbroek
3019*83ee113eSDavid van Moolenbroek- Fix a bug in omapi_object_dereference that prevented objects in
3020*83ee113eSDavid van Moolenbroek  chains from having their reference counts decreased on dereference.
3021*83ee113eSDavid van Moolenbroek
3022*83ee113eSDavid van Moolenbroek- Fix a bug in omapi_object_dereference that would prevent object
3023*83ee113eSDavid van Moolenbroek  chains from being freed upon removal of the last reference external
3024*83ee113eSDavid van Moolenbroek  to the chain.
3025*83ee113eSDavid van Moolenbroek
3026*83ee113eSDavid van Moolenbroek- Fix a number of other memory leaks in the OMAPI protocol subsystem.
3027*83ee113eSDavid van Moolenbroek
3028*83ee113eSDavid van Moolenbroek- Add code in the OMAPI protocol handler to trace memory leakage.
3029*83ee113eSDavid van Moolenbroek
3030*83ee113eSDavid van Moolenbroek- Clean up the memory allocation/reference history printer.
3031*83ee113eSDavid van Moolenbroek
3032*83ee113eSDavid van Moolenbroek- Support input of dotted quads and colon-separated hex lists as
3033*83ee113eSDavid van Moolenbroek  attribute values in omshell.
3034*83ee113eSDavid van Moolenbroek
3035*83ee113eSDavid van Moolenbroek- Fix a typo in the Linux interface discovery code.
3036*83ee113eSDavid van Moolenbroek
3037*83ee113eSDavid van Moolenbroek- Conditionalize a piece of trace code that wasn't conditional.
3038*83ee113eSDavid van Moolenbroek
3039*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 4
3040*83ee113eSDavid van Moolenbroek
3041*83ee113eSDavid van Moolenbroek- Fix a bug that would prevent leases from being abandoned properly on
3042*83ee113eSDavid van Moolenbroek  DHCPDECLINE.
3043*83ee113eSDavid van Moolenbroek
3044*83ee113eSDavid van Moolenbroek- Fix failover peer OMAPI support.
3045*83ee113eSDavid van Moolenbroek
3046*83ee113eSDavid van Moolenbroek- In failover, correctly handle expiration of leases.   Previously,
3047*83ee113eSDavid van Moolenbroek  leases would never be reclaimed because they couldn't make the
3048*83ee113eSDavid van Moolenbroek  transition from EXPIRED to FREE.
3049*83ee113eSDavid van Moolenbroek
3050*83ee113eSDavid van Moolenbroek- Fix some broken failover state transitions.
3051*83ee113eSDavid van Moolenbroek
3052*83ee113eSDavid van Moolenbroek- Documentation fixes.
3053*83ee113eSDavid van Moolenbroek
3054*83ee113eSDavid van Moolenbroek- Take out an unnecessary check in DHCP relay agent information option
3055*83ee113eSDavid van Moolenbroek  stashing code that was preventing REBINDING clients from rebinding.
3056*83ee113eSDavid van Moolenbroek
3057*83ee113eSDavid van Moolenbroek- Prevent failover peers from allocating leases in DHCPREQUEST
3058*83ee113eSDavid van Moolenbroek  processing if the lease belongs to the other server.
3059*83ee113eSDavid van Moolenbroek
3060*83ee113eSDavid van Moolenbroek- Record server version in lease file introductory comment.
3061*83ee113eSDavid van Moolenbroek
3062*83ee113eSDavid van Moolenbroek- Correctly report connection errors in OMAPI and failover.
3063*83ee113eSDavid van Moolenbroek
3064*83ee113eSDavid van Moolenbroek- Make authentication signature algorithm name comparisons in OMAPI
3065*83ee113eSDavid van Moolenbroek  case-insensitive.
3066*83ee113eSDavid van Moolenbroek
3067*83ee113eSDavid van Moolenbroek- Fix compile problem on SunOS 4.x
3068*83ee113eSDavid van Moolenbroek
3069*83ee113eSDavid van Moolenbroek- If a signature algorithm is not terminated with '.', terminate it so
3070*83ee113eSDavid van Moolenbroek  that comparisons between fully-qualified names will work
3071*83ee113eSDavid van Moolenbroek  consistently.
3072*83ee113eSDavid van Moolenbroek
3073*83ee113eSDavid van Moolenbroek- Different SIOCGIFCONF probe code, may "fix" problem on some Linux
3074*83ee113eSDavid van Moolenbroek  systems with the probe not working correctly.
3075*83ee113eSDavid van Moolenbroek
3076*83ee113eSDavid van Moolenbroek- Don't allow user to type omapi key on command line of omshell.
3077*83ee113eSDavid van Moolenbroek
3078*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 3
3079*83ee113eSDavid van Moolenbroek
3080*83ee113eSDavid van Moolenbroek- Do lease billing on startup in a way that I *think* will finally do
3081*83ee113eSDavid van Moolenbroek  the billing correctly - the previous method could overbill as a
3082*83ee113eSDavid van Moolenbroek  result of duplicate leases.
3083*83ee113eSDavid van Moolenbroek
3084*83ee113eSDavid van Moolenbroek- Document OMAPI server objects.
3085*83ee113eSDavid van Moolenbroek
3086*83ee113eSDavid van Moolenbroek	  Changes since 3.0 Release Candidate 2 Patchlevel 1
3087*83ee113eSDavid van Moolenbroek
3088*83ee113eSDavid van Moolenbroek- Fix some problems in the DDNS update code.   Thanks to Albert
3089*83ee113eSDavid van Moolenbroek  Herranz for figuring out the main problem.
3090*83ee113eSDavid van Moolenbroek
3091*83ee113eSDavid van Moolenbroek- Fix some reference counting errors on host entries that were causing
3092*83ee113eSDavid van Moolenbroek  core dumps.
3093*83ee113eSDavid van Moolenbroek
3094*83ee113eSDavid van Moolenbroek- Fix a byte-swap bug in the token ring code, thanks to Jochen
3095*83ee113eSDavid van Moolenbroek  Friedrich.
3096*83ee113eSDavid van Moolenbroek
3097*83ee113eSDavid van Moolenbroek- Fix a bug in lease billing, thanks to Jonas Bulow.
3098*83ee113eSDavid van Moolenbroek
3099*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 2
3100*83ee113eSDavid van Moolenbroek
3101*83ee113eSDavid van Moolenbroek- Change the conditions under which a DHCPRELEASE is actually
3102*83ee113eSDavid van Moolenbroek  committed to be consistent with lease binding states rather than
3103*83ee113eSDavid van Moolenbroek  using the lease end time.   This may fix some problems with the
3104*83ee113eSDavid van Moolenbroek  billing class code.
3105*83ee113eSDavid van Moolenbroek
3106*83ee113eSDavid van Moolenbroek- Fix a bug where lease updates would fail on Digital Unix (and maybe
3107*83ee113eSDavid van Moolenbroek  others) because malloc was called with a size of zero.
3108*83ee113eSDavid van Moolenbroek
3109*83ee113eSDavid van Moolenbroek- Fix a core dump that happens when the DHCP server can't create its
3110*83ee113eSDavid van Moolenbroek  trace file.
3111*83ee113eSDavid van Moolenbroek
3112*83ee113eSDavid van Moolenbroek	  Changes since 3.0 Release Candidate 1 Patchlevel 1
3113*83ee113eSDavid van Moolenbroek
3114*83ee113eSDavid van Moolenbroek- Fix the dhcp_failover_put_message to not attempt to allocate a
3115*83ee113eSDavid van Moolenbroek  zero-length buffer.   Some versions of malloc() fail if you try to
3116*83ee113eSDavid van Moolenbroek  allocate a zero-length buffer, and this was causing problems on,
3117*83ee113eSDavid van Moolenbroek  e.g., Digital Unix.
3118*83ee113eSDavid van Moolenbroek
3119*83ee113eSDavid van Moolenbroek- Fix a case where the failover code was printing an error message
3120*83ee113eSDavid van Moolenbroek  when no error had occurred.
3121*83ee113eSDavid van Moolenbroek
3122*83ee113eSDavid van Moolenbroek- Fix a problem where when a server went down and back up again, the
3123*83ee113eSDavid van Moolenbroek  peer would not see a state transition and so would stay in the
3124*83ee113eSDavid van Moolenbroek  non-communicating state.
3125*83ee113eSDavid van Moolenbroek
3126*83ee113eSDavid van Moolenbroek- Be smart about going into recover_wait.
3127*83ee113eSDavid van Moolenbroek
3128*83ee113eSDavid van Moolenbroek- Fix a problem in the failover implementation where peers would fail
3129*83ee113eSDavid van Moolenbroek  to come into sync if interrupted in the RECOVER state.   This could
3130*83ee113eSDavid van Moolenbroek  have been the cause of some problems people have reported recently.
3131*83ee113eSDavid van Moolenbroek
3132*83ee113eSDavid van Moolenbroek- Fix a problem with billing classes where they would not be unbilled
3133*83ee113eSDavid van Moolenbroek  when the client lease expired.
3134*83ee113eSDavid van Moolenbroek
3135*83ee113eSDavid van Moolenbroek- If select fails, figure out which descriptor is bad, and cut it out
3136*83ee113eSDavid van Moolenbroek  of the I/O loop.   This prevents a potentially nasty spin.  I
3137*83ee113eSDavid van Moolenbroek  haven't heard any report it in a while, but it came up consistently
3138*83ee113eSDavid van Moolenbroek  in testing.
3139*83ee113eSDavid van Moolenbroek
3140*83ee113eSDavid van Moolenbroek- Fix a bug in the relay agent where if you specified interfaces on
3141*83ee113eSDavid van Moolenbroek  the command line, it would fail.
3142*83ee113eSDavid van Moolenbroek
3143*83ee113eSDavid van Moolenbroek- Fix a couple of small bugs in the omapi connection object (no known
3144*83ee113eSDavid van Moolenbroek  user impact).
3145*83ee113eSDavid van Moolenbroek
3146*83ee113eSDavid van Moolenbroek- Add the missing 3.0 Beta 1 lease conversion script.
3147*83ee113eSDavid van Moolenbroek
3148*83ee113eSDavid van Moolenbroek- Read dhcp client script hooks if they exist, rather than only if
3149*83ee113eSDavid van Moolenbroek  they're executable.
3150*83ee113eSDavid van Moolenbroek
3151*83ee113eSDavid van Moolenbroek		Changes since 3.0 Release Candidate 1
3152*83ee113eSDavid van Moolenbroek
3153*83ee113eSDavid van Moolenbroek- Fix a memory smash that happens when fixed-address leases are used.
3154*83ee113eSDavid van Moolenbroek  ANY SITE AT WHICH FIXED-ADDRESS STATEMENTS ARE BEING USED SHOULD
3155*83ee113eSDavid van Moolenbroek  UPGRADE IMMEDIATELY.   This has been a long-standing bug - thanks to
3156*83ee113eSDavid van Moolenbroek  Alvise Nobile for discovering it and helping me to find it!
3157*83ee113eSDavid van Moolenbroek
3158*83ee113eSDavid van Moolenbroek- Fix a small bug in binary-to-ascii, thanks to H. Peter Anvin of
3159*83ee113eSDavid van Moolenbroek  Transmeta.
3160*83ee113eSDavid van Moolenbroek
3161*83ee113eSDavid van Moolenbroek- There is a known problem with the DHCP server doing failover on
3162*83ee113eSDavid van Moolenbroek  Compaq Alpha systems.   This patchlevel is not a release candidate
3163*83ee113eSDavid van Moolenbroek  because of this bug.   The bug should be straightforward to fix, so
3164*83ee113eSDavid van Moolenbroek  a new release candidate is expected shortly.
3165*83ee113eSDavid van Moolenbroek
3166*83ee113eSDavid van Moolenbroek- There is a known problem in the DDNS update code that is probably a
3167*83ee113eSDavid van Moolenbroek  bug, and is not, as far as we know, fixed in this patchlevel.
3168*83ee113eSDavid van Moolenbroek
3169*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 24
3170*83ee113eSDavid van Moolenbroek
3171*83ee113eSDavid van Moolenbroek- Went over problematic failover state transitions and made them all
3172*83ee113eSDavid van Moolenbroek  work, so that failover should now much less fragile.
3173*83ee113eSDavid van Moolenbroek
3174*83ee113eSDavid van Moolenbroek- Add some dhcpctl and omapi documentation
3175*83ee113eSDavid van Moolenbroek
3176*83ee113eSDavid van Moolenbroek- Fix compile errors when compiling with unusual predefines.
3177*83ee113eSDavid van Moolenbroek
3178*83ee113eSDavid van Moolenbroek- Make Token Ring work on Linux 2.4
3179*83ee113eSDavid van Moolenbroek
3180*83ee113eSDavid van Moolenbroek- Fix the Digital Unix BPF_WORDALIGN bug.
3181*83ee113eSDavid van Moolenbroek
3182*83ee113eSDavid van Moolenbroek- Fix some dhcp client documentation errors.
3183*83ee113eSDavid van Moolenbroek
3184*83ee113eSDavid van Moolenbroek- Update some parts of the README file.
3185*83ee113eSDavid van Moolenbroek
3186*83ee113eSDavid van Moolenbroek- Support GCC on SCO.
3187*83ee113eSDavid van Moolenbroek
3188*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 23
3189*83ee113eSDavid van Moolenbroek
3190*83ee113eSDavid van Moolenbroek- Fix a bug in the DNS update code where a status code was not being
3191*83ee113eSDavid van Moolenbroek  checked.   This may have been causing core dumps.
3192*83ee113eSDavid van Moolenbroek
3193*83ee113eSDavid van Moolenbroek- When parsing the lease file, if a lease declaration includes a
3194*83ee113eSDavid van Moolenbroek  billing class statement, and the lease already has a billing class,
3195*83ee113eSDavid van Moolenbroek  unbill the old class.
3196*83ee113eSDavid van Moolenbroek
3197*83ee113eSDavid van Moolenbroek- When processing failover transactions, where acks will be deferred,
3198*83ee113eSDavid van Moolenbroek  process the state transition immediately.
3199*83ee113eSDavid van Moolenbroek
3200*83ee113eSDavid van Moolenbroek-  Don't try to use the new SIOCGIFCONF buffer size detection code on
3201*83ee113eSDavid van Moolenbroek   Linux 2.0, which doesn't provide this functionality.
3202*83ee113eSDavid van Moolenbroek
3203*83ee113eSDavid van Moolenbroek- Apply a patch suggested by Tuan Uong for a problem in dlpi.c.
3204*83ee113eSDavid van Moolenbroek
3205*83ee113eSDavid van Moolenbroek- Fix a problem in using the which command in the configure script.
3206*83ee113eSDavid van Moolenbroek
3207*83ee113eSDavid van Moolenbroek- Fix a parse error in the client when setting up an omapi listener.
3208*83ee113eSDavid van Moolenbroek
3209*83ee113eSDavid van Moolenbroek- Document the -n and -g flags to the client.
3210*83ee113eSDavid van Moolenbroek
3211*83ee113eSDavid van Moolenbroek- Make sure there is always a stdin and stdout on startup.   This
3212*83ee113eSDavid van Moolenbroek  prevents shell scripts from accidentally writing error messages into
3213*83ee113eSDavid van Moolenbroek  configuration files that happen to be opened as stderr.
3214*83ee113eSDavid van Moolenbroek
3215*83ee113eSDavid van Moolenbroek- If an interface is removed, the client will now notice that it is
3216*83ee113eSDavid van Moolenbroek  gone rather than spinning.   This has only been tested on NetBSD.
3217*83ee113eSDavid van Moolenbroek
3218*83ee113eSDavid van Moolenbroek- The client will attempt to get an address even if it can't create a
3219*83ee113eSDavid van Moolenbroek  lease file.
3220*83ee113eSDavid van Moolenbroek
3221*83ee113eSDavid van Moolenbroek- Don't overwrite tracefiles.
3222*83ee113eSDavid van Moolenbroek
3223*83ee113eSDavid van Moolenbroek- Fix some memory allocation bugs in failover.
3224*83ee113eSDavid van Moolenbroek
3225*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 22
3226*83ee113eSDavid van Moolenbroek
3227*83ee113eSDavid van Moolenbroek- Apply some patches suggested by Cyrille Lefevre, who is maintaining
3228*83ee113eSDavid van Moolenbroek  the FreeBSD ISC DHCP Distribution port.
3229*83ee113eSDavid van Moolenbroek
3230*83ee113eSDavid van Moolenbroek- Fix a core dump in DHCPRELEASE.
3231*83ee113eSDavid van Moolenbroek
3232*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 21
3233*83ee113eSDavid van Moolenbroek
3234*83ee113eSDavid van Moolenbroek- This time for sure: fix the spin described in the changes for pl20.
3235*83ee113eSDavid van Moolenbroek
3236*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 20
3237*83ee113eSDavid van Moolenbroek
3238*83ee113eSDavid van Moolenbroek- Fix a problem with Linux detecting large numbers of interfaces (Ben)
3239*83ee113eSDavid van Moolenbroek
3240*83ee113eSDavid van Moolenbroek- Fix a memory smash in the quotify code, which was introduced in
3241*83ee113eSDavid van Moolenbroek  pl19.
3242*83ee113eSDavid van Moolenbroek
3243*83ee113eSDavid van Moolenbroek- Actually fix the spin described in the changes for pl20.   The
3244*83ee113eSDavid van Moolenbroek  previous fix only partially fixed the problem - enough to get it
3245*83ee113eSDavid van Moolenbroek  past the regression test.
3246*83ee113eSDavid van Moolenbroek
3247*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 19
3248*83ee113eSDavid van Moolenbroek
3249*83ee113eSDavid van Moolenbroek- Fix a bug that could cause the server to abort if compiled with
3250*83ee113eSDavid van Moolenbroek  POINTER_DEBUG enabled.
3251*83ee113eSDavid van Moolenbroek
3252*83ee113eSDavid van Moolenbroek- Fix a bug that could cause the server to spin when responding to a
3253*83ee113eSDavid van Moolenbroek  DHCPREQUEST.
3254*83ee113eSDavid van Moolenbroek
3255*83ee113eSDavid van Moolenbroek- Apply Joost Mulders' suggested patches for DLPI on x86.
3256*83ee113eSDavid van Moolenbroek
3257*83ee113eSDavid van Moolenbroek- Support NUL characters in quoted strings.
3258*83ee113eSDavid van Moolenbroek
3259*83ee113eSDavid van Moolenbroek- Install unformatted man pages on SunOS.
3260*83ee113eSDavid van Moolenbroek
3261*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 18
3262*83ee113eSDavid van Moolenbroek
3263*83ee113eSDavid van Moolenbroek- Allow the server to be placed in partner-down state using OMAPI.
3264*83ee113eSDavid van Moolenbroek  (Damien Neil)
3265*83ee113eSDavid van Moolenbroek
3266*83ee113eSDavid van Moolenbroek- Implement omshell, which can be used to do arbitrary things to the
3267*83ee113eSDavid van Moolenbroek  server (in theory). (Damien Neil)
3268*83ee113eSDavid van Moolenbroek
3269*83ee113eSDavid van Moolenbroek- Fix a case where if a client had two different leases the server could
3270*83ee113eSDavid van Moolenbroek  actually dereference the second one when it hadn't been referenced,
3271*83ee113eSDavid van Moolenbroek  leading to memory corruption and a core dump. (James Brister)
3272*83ee113eSDavid van Moolenbroek
3273*83ee113eSDavid van Moolenbroek- Fix a case where a client could request the address of another client's
3274*83ee113eSDavid van Moolenbroek  lease, but find_lease wouldn't detect that the other client had it, and
3275*83ee113eSDavid van Moolenbroek  would attempt to allocate it to the client, resulting in a lease conflict
3276*83ee113eSDavid van Moolenbroek  message.
3277*83ee113eSDavid van Moolenbroek
3278*83ee113eSDavid van Moolenbroek- Fix a case where a client with more than one client identifier could be
3279*83ee113eSDavid van Moolenbroek  given a lease where the hardware address was correct but the client
3280*83ee113eSDavid van Moolenbroek  identifier was not, resulting in a lease conflict message.
3281*83ee113eSDavid van Moolenbroek
3282*83ee113eSDavid van Moolenbroek- Fix a problem where the server could write out a colon-separated
3283*83ee113eSDavid van Moolenbroek  hex list as a value for a variable, which would then not parse.
3284*83ee113eSDavid van Moolenbroek  The fix is to always write strings as quoted strings, with any
3285*83ee113eSDavid van Moolenbroek  non-printable characters quoted as octal escape sequences.   So
3286*83ee113eSDavid van Moolenbroek  a file written the old way still won't work, but new files written
3287*83ee113eSDavid van Moolenbroek  this way will work.
3288*83ee113eSDavid van Moolenbroek
3289*83ee113eSDavid van Moolenbroek- Fix documentation for sending non-standard options.
3290*83ee113eSDavid van Moolenbroek
3291*83ee113eSDavid van Moolenbroek- Use unparsable names for unknown options.    WARNING: this will
3292*83ee113eSDavid van Moolenbroek  break any configuration files that use the option-nnn convention.
3293*83ee113eSDavid van Moolenbroek  If you want to continue to use this convention for some options,
3294*83ee113eSDavid van Moolenbroek  please be sure to write a definition, like this:
3295*83ee113eSDavid van Moolenbroek
3296*83ee113eSDavid van Moolenbroek  option option-nnn code nnn = string;
3297*83ee113eSDavid van Moolenbroek
3298*83ee113eSDavid van Moolenbroek  You can use a descriptive name instead of option-nnn if you like.
3299*83ee113eSDavid van Moolenbroek
3300*83ee113eSDavid van Moolenbroek- Fix a problem where we would see a DHCPDISCOVER/DHCPOFFER/
3301*83ee113eSDavid van Moolenbroek  DHCPREQUEST/DHCPACK/DHCPREQUEST/DHCPNAK sequence.   This was the
3302*83ee113eSDavid van Moolenbroek  result of a deceptively silly bug in supersede_lease.
3303*83ee113eSDavid van Moolenbroek
3304*83ee113eSDavid van Moolenbroek- Fix client script exit status check, according to a fix supplied by
3305*83ee113eSDavid van Moolenbroek  Hermann Lauer.
3306*83ee113eSDavid van Moolenbroek
3307*83ee113eSDavid van Moolenbroek- Fix an endianness bug in the tracefile support, regarding ICMP
3308*83ee113eSDavid van Moolenbroek  messages.
3309*83ee113eSDavid van Moolenbroek
3310*83ee113eSDavid van Moolenbroek- Fix a bug in the client where the medium would not work correctly if
3311*83ee113eSDavid van Moolenbroek  it contained quoted strings.
3312*83ee113eSDavid van Moolenbroek
3313*83ee113eSDavid van Moolenbroek		       ** there was no pl17 **
3314*83ee113eSDavid van Moolenbroek
3315*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 16
3316*83ee113eSDavid van Moolenbroek
3317*83ee113eSDavid van Moolenbroek- Add support for transaction tracing.   This allows the state of the
3318*83ee113eSDavid van Moolenbroek  DHCP server on startup, and all the subsequent transactions, to be
3319*83ee113eSDavid van Moolenbroek  recorded in a file which can then be played back to reproduce the
3320*83ee113eSDavid van Moolenbroek  behaviour of the DHCP server.   This can be used to quickly
3321*83ee113eSDavid van Moolenbroek  reproduce bugs that cause core dumps or corruption, and also for
3322*83ee113eSDavid van Moolenbroek  tracking down memory leaks.
3323*83ee113eSDavid van Moolenbroek
3324*83ee113eSDavid van Moolenbroek- Incorporate some bug fixes provided by Joost Mulders for the DLPI
3325*83ee113eSDavid van Moolenbroek  package which should clear up problems people have been seeing on
3326*83ee113eSDavid van Moolenbroek  Solaris.
3327*83ee113eSDavid van Moolenbroek
3328*83ee113eSDavid van Moolenbroek- Fix bugs in the handling of options stored as linked lists (agent
3329*83ee113eSDavid van Moolenbroek  options, fqdn options and nwip options) that could cause memory
3330*83ee113eSDavid van Moolenbroek  corruption and core dumps.
3331*83ee113eSDavid van Moolenbroek
3332*83ee113eSDavid van Moolenbroek- Fix a bug in DHCPREQUEST handling that resulted in DHCPNAK messages
3333*83ee113eSDavid van Moolenbroek  not being send in some cases when they were needed.
3334*83ee113eSDavid van Moolenbroek
3335*83ee113eSDavid van Moolenbroek- Make the lease structure somewhat more compact.
3336*83ee113eSDavid van Moolenbroek
3337*83ee113eSDavid van Moolenbroek- Make initial failover startup *much* faster.   This was researched
3338*83ee113eSDavid van Moolenbroek  and implemented by Damien Neil.
3339*83ee113eSDavid van Moolenbroek
3340*83ee113eSDavid van Moolenbroek- Add a --version flag to all executables, which prints the program
3341*83ee113eSDavid van Moolenbroek  name and version to standard output.
3342*83ee113eSDavid van Moolenbroek
3343*83ee113eSDavid van Moolenbroek- Don't rewrite the lease file every thousand leases.
3344*83ee113eSDavid van Moolenbroek
3345*83ee113eSDavid van Moolenbroek- A bug in nit.c for older SunOS machines was fixed by a patch sent in
3346*83ee113eSDavid van Moolenbroek  by Takeshi Hagiwara.
3347*83ee113eSDavid van Moolenbroek
3348*83ee113eSDavid van Moolenbroek- Fix a memory corruption bug in the DHCP client.
3349*83ee113eSDavid van Moolenbroek
3350*83ee113eSDavid van Moolenbroek- Lots of documentation updates.
3351*83ee113eSDavid van Moolenbroek
3352*83ee113eSDavid van Moolenbroek- Add a feature allowing environment variables to be passed to the
3353*83ee113eSDavid van Moolenbroek  DHCP client script on the DHCP client command line.
3354*83ee113eSDavid van Moolenbroek
3355*83ee113eSDavid van Moolenbroek- Fix client medium support, which had been broken for some time.
3356*83ee113eSDavid van Moolenbroek
3357*83ee113eSDavid van Moolenbroek- Fix a bug in the DHCP client initial startup backoff interval, which
3358*83ee113eSDavid van Moolenbroek  would cause two DHCPDISCOVERS to be sent back-to-back on startup.
3359*83ee113eSDavid van Moolenbroek
3360*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 15
3361*83ee113eSDavid van Moolenbroek
3362*83ee113eSDavid van Moolenbroek- Some documentation tweaks.
3363*83ee113eSDavid van Moolenbroek
3364*83ee113eSDavid van Moolenbroek- Maybe fix a problem in the DLPI code.
3365*83ee113eSDavid van Moolenbroek
3366*83ee113eSDavid van Moolenbroek- Fix some error code space inconsistencies in ddns update code.
3367*83ee113eSDavid van Moolenbroek
3368*83ee113eSDavid van Moolenbroek- Support relay agents that intercept unicast DHCP messages to stuff
3369*83ee113eSDavid van Moolenbroek  agent options into them.
3370*83ee113eSDavid van Moolenbroek
3371*83ee113eSDavid van Moolenbroek- Fix a small memory leak in the relay agent option support code.
3372*83ee113eSDavid van Moolenbroek
3373*83ee113eSDavid van Moolenbroek- Fix a core dump that would occur if a packet was sent with no
3374*83ee113eSDavid van Moolenbroek  options.
3375*83ee113eSDavid van Moolenbroek
3376*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 14
3377*83ee113eSDavid van Moolenbroek
3378*83ee113eSDavid van Moolenbroek- Finish fixing a long-standing bug in the agent options code.   This
3379*83ee113eSDavid van Moolenbroek  was causing core dumps and failing to operate correctly - in
3380*83ee113eSDavid van Moolenbroek  particular, agent option stashing wasn't working.   Agent option
3381*83ee113eSDavid van Moolenbroek  stashing should now be working, meaning that agent options can be
3382*83ee113eSDavid van Moolenbroek  used in class statements to control address allocation.
3383*83ee113eSDavid van Moolenbroek
3384*83ee113eSDavid van Moolenbroek- Fix up documentation.
3385*83ee113eSDavid van Moolenbroek
3386*83ee113eSDavid van Moolenbroek- Fix a couple of small memory leaks that would have added up
3387*83ee113eSDavid van Moolenbroek  significantly in a high-demand situation.
3388*83ee113eSDavid van Moolenbroek
3389*83ee113eSDavid van Moolenbroek- Add a log-facility configuration parameter.
3390*83ee113eSDavid van Moolenbroek
3391*83ee113eSDavid van Moolenbroek- Fix a compile error on some older operating systems.
3392*83ee113eSDavid van Moolenbroek
3393*83ee113eSDavid van Moolenbroek- Add the ability in the client to execute certain statements before
3394*83ee113eSDavid van Moolenbroek  transmitting packets to the server.   Handy for debugging; not much
3395*83ee113eSDavid van Moolenbroek  practical use otherwise.
3396*83ee113eSDavid van Moolenbroek
3397*83ee113eSDavid van Moolenbroek- Don't send faked-out giaddr when renewing or bound - again, useful
3398*83ee113eSDavid van Moolenbroek  for debugging.
3399*83ee113eSDavid van Moolenbroek
3400*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 13
3401*83ee113eSDavid van Moolenbroek
3402*83ee113eSDavid van Moolenbroek- Fixed a problem where the fqdn decoder would sometimes try to store
3403*83ee113eSDavid van Moolenbroek  an option with an (unsigned) negative length, resulting in a core
3404*83ee113eSDavid van Moolenbroek  dump on some systems.
3405*83ee113eSDavid van Moolenbroek
3406*83ee113eSDavid van Moolenbroek- Work around the Win98 DHCP client, which NUL-terminates the FQDN
3407*83ee113eSDavid van Moolenbroek  option.
3408*83ee113eSDavid van Moolenbroek
3409*83ee113eSDavid van Moolenbroek- Work around Win98 and Win2k clients that will claim they want to do
3410*83ee113eSDavid van Moolenbroek  the update even when they don't have any way to do it.
3411*83ee113eSDavid van Moolenbroek
3412*83ee113eSDavid van Moolenbroek- Fix some log messages that can be printed when failover is operating
3413*83ee113eSDavid van Moolenbroek  that were not printing enough information.
3414*83ee113eSDavid van Moolenbroek
3415*83ee113eSDavid van Moolenbroek- It was possible for a DHCPDISCOVER to get an allocation even when
3416*83ee113eSDavid van Moolenbroek  the state machine said the server shouldn't be responding.
3417*83ee113eSDavid van Moolenbroek
3418*83ee113eSDavid van Moolenbroek- Don't load balance DHCPREQUESTs from clients in RENEWING and
3419*83ee113eSDavid van Moolenbroek  REBINDING, since in RENEWING, if we heard it, it's for us, and in
3420*83ee113eSDavid van Moolenbroek  REBINDING, the client wouldn't have got to REBINDING if its primary
3421*83ee113eSDavid van Moolenbroek  were answering.
3422*83ee113eSDavid van Moolenbroek
3423*83ee113eSDavid van Moolenbroek- When we get a bogus state lease binding state transition, don't do
3424*83ee113eSDavid van Moolenbroek  the transition.
3425*83ee113eSDavid van Moolenbroek
3426*83ee113eSDavid van Moolenbroek
3427*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 12
3428*83ee113eSDavid van Moolenbroek
3429*83ee113eSDavid van Moolenbroek- Fixed a couple of silly compile errors.
3430*83ee113eSDavid van Moolenbroek
3431*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 11
3432*83ee113eSDavid van Moolenbroek
3433*83ee113eSDavid van Moolenbroek- Albert Herranz tracked down and fixed a subtle bug in the base64
3434*83ee113eSDavid van Moolenbroek  decoder that would prevent any key with an 'x' in its base64
3435*83ee113eSDavid van Moolenbroek  representation from working correctly.
3436*83ee113eSDavid van Moolenbroek
3437*83ee113eSDavid van Moolenbroek- Thanks to Chris Cheney and Michael Sanders, we have a fix for the
3438*83ee113eSDavid van Moolenbroek  hang that they both spotted in the DHCP server - when
3439*83ee113eSDavid van Moolenbroek  one-lease-per-client was set, the code to release the "other" lease
3440*83ee113eSDavid van Moolenbroek  could spin.
3441*83ee113eSDavid van Moolenbroek
3442*83ee113eSDavid van Moolenbroek- Fix a problem with alignment of the input buffer in bpf in cases
3443*83ee113eSDavid van Moolenbroek  where two packets arrive in the same bpf read.
3444*83ee113eSDavid van Moolenbroek
3445*83ee113eSDavid van Moolenbroek- Fix a problem where the relay agent would crash if you specified an
3446*83ee113eSDavid van Moolenbroek  interface name on the command line.
3447*83ee113eSDavid van Moolenbroek
3448*83ee113eSDavid van Moolenbroek- Add the ability to conditionalize client behaviour based on the
3449*83ee113eSDavid van Moolenbroek  client state.
3450*83ee113eSDavid van Moolenbroek
3451*83ee113eSDavid van Moolenbroek- Add support for the FQDN option, and added support for a new way of
3452*83ee113eSDavid van Moolenbroek  doing ddns updates (ddns update style interim) that allows more than
3453*83ee113eSDavid van Moolenbroek  one DHCP server to update the DNS for the same network(s).   This
3454*83ee113eSDavid van Moolenbroek  was implemented by Damien Neil with some additional functionality
3455*83ee113eSDavid van Moolenbroek  added by Ted Lemon.
3456*83ee113eSDavid van Moolenbroek
3457*83ee113eSDavid van Moolenbroek- Damien added a "log" statement, so that the configuration file can
3458*83ee113eSDavid van Moolenbroek  be made to log debugging information and other information.
3459*83ee113eSDavid van Moolenbroek
3460*83ee113eSDavid van Moolenbroek- Fixed a bug that caused option buffers not to be terminated with an
3461*83ee113eSDavid van Moolenbroek  end option.
3462*83ee113eSDavid van Moolenbroek
3463*83ee113eSDavid van Moolenbroek- Fixed a long-standing bug in the support for option spaces where the
3464*83ee113eSDavid van Moolenbroek  options are stored as an ordered list rather than in a hash table,
3465*83ee113eSDavid van Moolenbroek  which could theoretically result in memory pool corruption.
3466*83ee113eSDavid van Moolenbroek
3467*83ee113eSDavid van Moolenbroek- Prevent hardware declarations with no actual hardware address from
3468*83ee113eSDavid van Moolenbroek  being written as something unparsable, and behave correctly in the
3469*83ee113eSDavid van Moolenbroek  face of a null hardware address on input.
3470*83ee113eSDavid van Moolenbroek
3471*83ee113eSDavid van Moolenbroek- Allow key names to be FQDNs, and qualify the algorithm name if it is
3472*83ee113eSDavid van Moolenbroek  specified unqualified.
3473*83ee113eSDavid van Moolenbroek
3474*83ee113eSDavid van Moolenbroek- Modify the DDNS update code so that it never prints the "resolver
3475*83ee113eSDavid van Moolenbroek  failed" message, but instead says *why* the resolver failed.
3476*83ee113eSDavid van Moolenbroek
3477*83ee113eSDavid van Moolenbroek- Officially support the subnet selection option, which now has an
3478*83ee113eSDavid van Moolenbroek  RFC.
3479*83ee113eSDavid van Moolenbroek
3480*83ee113eSDavid van Moolenbroek- Fix a build bug on MacOS X.
3481*83ee113eSDavid van Moolenbroek
3482*83ee113eSDavid van Moolenbroek- Allow administrator to disable ping checking.
3483*83ee113eSDavid van Moolenbroek
3484*83ee113eSDavid van Moolenbroek- Clean up dhcpd.conf documentation and add more information about how
3485*83ee113eSDavid van Moolenbroek  it works.
3486*83ee113eSDavid van Moolenbroek
3487*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 10
3488*83ee113eSDavid van Moolenbroek
3489*83ee113eSDavid van Moolenbroek- Fix a bug introduced during debugging (!) and accidentally committed
3490*83ee113eSDavid van Moolenbroek  to CVS.
3491*83ee113eSDavid van Moolenbroek
3492*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 9
3493*83ee113eSDavid van Moolenbroek
3494*83ee113eSDavid van Moolenbroek- Fix DHCP client handling of vendor encapsulated options.
3495*83ee113eSDavid van Moolenbroek
3496*83ee113eSDavid van Moolenbroek- Fix a bug in the handling of relay agent information options introduced
3497*83ee113eSDavid van Moolenbroek  in patchlevel 9.
3498*83ee113eSDavid van Moolenbroek
3499*83ee113eSDavid van Moolenbroek- Stash agent options on client leases by default, and use the stashed
3500*83ee113eSDavid van Moolenbroek  options at renewal time.
3501*83ee113eSDavid van Moolenbroek
3502*83ee113eSDavid van Moolenbroek- Add the ability to test the client's binding state in the client
3503*83ee113eSDavid van Moolenbroek  configuration language.
3504*83ee113eSDavid van Moolenbroek
3505*83ee113eSDavid van Moolenbroek- Fix a core dump in the DNS update code.
3506*83ee113eSDavid van Moolenbroek
3507*83ee113eSDavid van Moolenbroek- Fix some expression evaluation bugs that were causing updates to be
3508*83ee113eSDavid van Moolenbroek  done when no client hostname was received.
3509*83ee113eSDavid van Moolenbroek
3510*83ee113eSDavid van Moolenbroek- Fix expression evaluation debugging printfs.
3511*83ee113eSDavid van Moolenbroek
3512*83ee113eSDavid van Moolenbroek- Teach pretty_print_option to print options in option spaces other than
3513*83ee113eSDavid van Moolenbroek  the DHCP option space.
3514*83ee113eSDavid van Moolenbroek
3515*83ee113eSDavid van Moolenbroek- Add a warning message if the RHS of a not is not boolean.
3516*83ee113eSDavid van Moolenbroek
3517*83ee113eSDavid van Moolenbroek- Never select for more than a day, because some implementations of
3518*83ee113eSDavid van Moolenbroek  select will just fail if the timeout is too long (!).
3519*83ee113eSDavid van Moolenbroek
3520*83ee113eSDavid van Moolenbroek- Fix a case where a DHCPDISCOVER from an unknown network would be
3521*83ee113eSDavid van Moolenbroek  silently dropped.
3522*83ee113eSDavid van Moolenbroek
3523*83ee113eSDavid van Moolenbroek- Fix a bug where if a client requested an IP address for which a different
3524*83ee113eSDavid van Moolenbroek  client had the lease, the DHCP server would reallocate it anyway.
3525*83ee113eSDavid van Moolenbroek
3526*83ee113eSDavid van Moolenbroek- Fix the DNS update code so that if the client changes its name, the DNS
3527*83ee113eSDavid van Moolenbroek  will be correctly updated.
3528*83ee113eSDavid van Moolenbroek
3529*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 8
3530*83ee113eSDavid van Moolenbroek
3531*83ee113eSDavid van Moolenbroek- Oops, there was another subtle math error in the header-length
3532*83ee113eSDavid van Moolenbroek  bounds-checking.
3533*83ee113eSDavid van Moolenbroek
3534*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 7
3535*83ee113eSDavid van Moolenbroek
3536*83ee113eSDavid van Moolenbroek- Oops, forgot to byte-swap udp header length before bounds-checking it.
3537*83ee113eSDavid van Moolenbroek
3538*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 6
3539*83ee113eSDavid van Moolenbroek
3540*83ee113eSDavid van Moolenbroek- Fix a possible DoS attack where a client could cause the checksummer
3541*83ee113eSDavid van Moolenbroek  to dump core.   This was a read, not a write, so it shouldn't be
3542*83ee113eSDavid van Moolenbroek  possible to exploit it any further than that.
3543*83ee113eSDavid van Moolenbroek
3544*83ee113eSDavid van Moolenbroek- Implement client- and server-side support for using the Client FQDN
3545*83ee113eSDavid van Moolenbroek  option.
3546*83ee113eSDavid van Moolenbroek
3547*83ee113eSDavid van Moolenbroek- Support for other option spaces in the client has been added.   This
3548*83ee113eSDavid van Moolenbroek  means that it is now possible to define a vendor option space on the
3549*83ee113eSDavid van Moolenbroek  client, request options in that space from the server (which must
3550*83ee113eSDavid van Moolenbroek  define the same option space), and then use those options in the
3551*83ee113eSDavid van Moolenbroek  client.   This also allows NWIP and Client FQDN options to be used
3552*83ee113eSDavid van Moolenbroek  meaningfully.
3553*83ee113eSDavid van Moolenbroek
3554*83ee113eSDavid van Moolenbroek- Add object initializer support.   This means that objects can now be
3555*83ee113eSDavid van Moolenbroek  initialized to something other than all-zeros when allocated, which
3556*83ee113eSDavid van Moolenbroek  makes, e.g., the interface object support code a little more robust.
3557*83ee113eSDavid van Moolenbroek
3558*83ee113eSDavid van Moolenbroek- Fix an off-by-one bug in the host stuffer.   This was causing host
3559*83ee113eSDavid van Moolenbroek  deletes not the work, and may also have been causing OMAPI
3560*83ee113eSDavid van Moolenbroek  connections to get dropped.   Thanks to James Brister for tracking
3561*83ee113eSDavid van Moolenbroek  this one down!
3562*83ee113eSDavid van Moolenbroek
3563*83ee113eSDavid van Moolenbroek- Fixed a core dump in the interface discovery code that is triggered
3564*83ee113eSDavid van Moolenbroek  when there is no subnet declaration for an interface, but the server
3565*83ee113eSDavid van Moolenbroek  decides to continue running.   Thanks to Shane Kerr for tracking
3566*83ee113eSDavid van Moolenbroek  down and fixing this problem.
3567*83ee113eSDavid van Moolenbroek
3568*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 5
3569*83ee113eSDavid van Moolenbroek
3570*83ee113eSDavid van Moolenbroek- Fix a bug in the recent enhancement to the interface discovery code
3571*83ee113eSDavid van Moolenbroek  to support arbitrary-length interface lists.
3572*83ee113eSDavid van Moolenbroek
3573*83ee113eSDavid van Moolenbroek- Support NUL-terminated DHCP options when initializing client-script
3574*83ee113eSDavid van Moolenbroek  environment.
3575*83ee113eSDavid van Moolenbroek
3576*83ee113eSDavid van Moolenbroek- Fix suffix operator.
3577*83ee113eSDavid van Moolenbroek
3578*83ee113eSDavid van Moolenbroek- Fix NetWare/IP option parsing.
3579*83ee113eSDavid van Moolenbroek
3580*83ee113eSDavid van Moolenbroek- Better error/status checking in dhcpctl initialization and omapi
3581*83ee113eSDavid van Moolenbroek  connection code.
3582*83ee113eSDavid van Moolenbroek
3583*83ee113eSDavid van Moolenbroek- Fix a potential memory smash in dhcpctl code.
3584*83ee113eSDavid van Moolenbroek
3585*83ee113eSDavid van Moolenbroek- Fix SunOS4 and (maybe) Ultrix builds.
3586*83ee113eSDavid van Moolenbroek
3587*83ee113eSDavid van Moolenbroek- Fix a bug where a certain sort of incoming packet could cause a core
3588*83ee113eSDavid van Moolenbroek  dump on Solaris (and probably elsewhere).
3589*83ee113eSDavid van Moolenbroek
3590*83ee113eSDavid van Moolenbroek- Add some more safety checks in error logging code.
3591*83ee113eSDavid van Moolenbroek
3592*83ee113eSDavid van Moolenbroek- Add support for ISC_R_INCOMPLETE in OMAPI protocol connection code.
3593*83ee113eSDavid van Moolenbroek
3594*83ee113eSDavid van Moolenbroek- Fix relay agent so that if an interface is specified on the command
3595*83ee113eSDavid van Moolenbroek  line, the relay agent does not dump core.
3596*83ee113eSDavid van Moolenbroek
3597*83ee113eSDavid van Moolenbroek- Fix class matching so that match if can be combined with match or
3598*83ee113eSDavid van Moolenbroek  spawn with.
3599*83ee113eSDavid van Moolenbroek
3600*83ee113eSDavid van Moolenbroek- Do not allow spurious leases in the lease database to introduce
3601*83ee113eSDavid van Moolenbroek  potentially bogus leases into the in-memory database.
3602*83ee113eSDavid van Moolenbroek
3603*83ee113eSDavid van Moolenbroek- Fix a byte-order problem in the client hardware address type code
3604*83ee113eSDavid van Moolenbroek  for OMAPI.
3605*83ee113eSDavid van Moolenbroek
3606*83ee113eSDavid van Moolenbroek- Be slightly less picky about what sort of hardware addresses OMAPI
3607*83ee113eSDavid van Moolenbroek  can install in host declarations.
3608*83ee113eSDavid van Moolenbroek
3609*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 4
3610*83ee113eSDavid van Moolenbroek
3611*83ee113eSDavid van Moolenbroek- Incorporated Peter Marschall's proposed change to array/record
3612*83ee113eSDavid van Moolenbroek  parsing, which allows things like the slp-agent option to be encoded
3613*83ee113eSDavid van Moolenbroek  correctly.   Thanks very much to Peter for taking the initiative to
3614*83ee113eSDavid van Moolenbroek  do this, and for doing such a careful job of it (e.g., updating the
3615*83ee113eSDavid van Moolenbroek  comments)!
3616*83ee113eSDavid van Moolenbroek
3617*83ee113eSDavid van Moolenbroek- Added an encoding for the slp-agent option.   :')
3618*83ee113eSDavid van Moolenbroek
3619*83ee113eSDavid van Moolenbroek- Fixed SunOS 4 build.  Thanks to Robert Elz for responding to my
3620*83ee113eSDavid van Moolenbroek  request for help on this with patches!
3621*83ee113eSDavid van Moolenbroek
3622*83ee113eSDavid van Moolenbroek- Incorporated a change that should fix a problem reported by Philippe
3623*83ee113eSDavid van Moolenbroek  Jumelle where when the network connection between two servers is
3624*83ee113eSDavid van Moolenbroek  lost, they never reconnect.
3625*83ee113eSDavid van Moolenbroek
3626*83ee113eSDavid van Moolenbroek- Fix client script files other than that for NetBSD to actually use
3627*83ee113eSDavid van Moolenbroek  make_resolv_conf as documented in the manual page.
3628*83ee113eSDavid van Moolenbroek
3629*83ee113eSDavid van Moolenbroek- Fix a bug in the packet handling code that could result in a core
3630*83ee113eSDavid van Moolenbroek  dump.
3631*83ee113eSDavid van Moolenbroek
3632*83ee113eSDavid van Moolenbroek- Fix a bug in the bootp code where responses on the local net would
3633*83ee113eSDavid van Moolenbroek  be sent to the wrong MAC address.   Thanks to Jerry Schave for
3634*83ee113eSDavid van Moolenbroek  catching this one.
3635*83ee113eSDavid van Moolenbroek
3636*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 3
3637*83ee113eSDavid van Moolenbroek
3638*83ee113eSDavid van Moolenbroek- In the DHCP client, execute client statements prior to using the values
3639*83ee113eSDavid van Moolenbroek  of options, so that the client configuration can overridden, e.g., the
3640*83ee113eSDavid van Moolenbroek  lease renewal time.
3641*83ee113eSDavid van Moolenbroek
3642*83ee113eSDavid van Moolenbroek- Fix a reference counting error that would result in very reproducible
3643*83ee113eSDavid van Moolenbroek  failures in updates, as well as occasional core dumps, if a zone was
3644*83ee113eSDavid van Moolenbroek  declared without a key.
3645*83ee113eSDavid van Moolenbroek
3646*83ee113eSDavid van Moolenbroek- Fix some Linux 2.0 compilation problems.
3647*83ee113eSDavid van Moolenbroek
3648*83ee113eSDavid van Moolenbroek- Fix a bug in scope evaluation during execution of "on" statements that
3649*83ee113eSDavid van Moolenbroek  caused values not to be recorded on leases.
3650*83ee113eSDavid van Moolenbroek
3651*83ee113eSDavid van Moolenbroek- If the dhcp-max-message-size option is specified in scope, and the
3652*83ee113eSDavid van Moolenbroek  client didn't send this option, use the one specified in scope to
3653*83ee113eSDavid van Moolenbroek  determine the maximum size of the response.
3654*83ee113eSDavid van Moolenbroek
3655*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 2
3656*83ee113eSDavid van Moolenbroek
3657*83ee113eSDavid van Moolenbroek- Fix a case where spawning subclasses were being allocated
3658*83ee113eSDavid van Moolenbroek  incorrectly, resulting in a core dump.
3659*83ee113eSDavid van Moolenbroek
3660*83ee113eSDavid van Moolenbroek- Fix a case where the DHCP server might inappropriately NAK a
3661*83ee113eSDavid van Moolenbroek  RENEWING client.
3662*83ee113eSDavid van Moolenbroek
3663*83ee113eSDavid van Moolenbroek- Fix a place dhcprequest() where static leases could leak.
3664*83ee113eSDavid van Moolenbroek
3665*83ee113eSDavid van Moolenbroek- Include memory.h in omapip_p.h so that we don't get warnings about
3666*83ee113eSDavid van Moolenbroek  using memcmp().
3667*83ee113eSDavid van Moolenbroek
3668*83ee113eSDavid van Moolenbroek		Changes since 3.0 Beta 2 Patchlevel 1
3669*83ee113eSDavid van Moolenbroek
3670*83ee113eSDavid van Moolenbroek- Notice when SIOCFIGCONF returns more data than fit in the buffer -
3671*83ee113eSDavid van Moolenbroek  allocate a larger buffer, and retry.   Thanks to Greg Fausak for
3672*83ee113eSDavid van Moolenbroek  pointing this out.
3673*83ee113eSDavid van Moolenbroek
3674*83ee113eSDavid van Moolenbroek- In the server, if no interfaces were configured, report an error and
3675*83ee113eSDavid van Moolenbroek  exit.
3676*83ee113eSDavid van Moolenbroek
3677*83ee113eSDavid van Moolenbroek- Don't ever record a state of 'startup'.
3678*83ee113eSDavid van Moolenbroek
3679*83ee113eSDavid van Moolenbroek- Don't try to evaluate the local failover binding address if none was
3680*83ee113eSDavid van Moolenbroek  specified.   Thanks to Joseph Breu for finding this.
3681