RELNOTES 201 KB
Newer Older
1
                Internet Systems Consortium DHCP Distribution
2
3
                           Version 4.4.0a1
                           11 December 2017
Ted Lemon's avatar
Ted Lemon committed
4

5
                             Release Notes
Ted Lemon's avatar
Ted Lemon committed
6

7
                              NEW FEATURES
8

9
The major "theme" for ISC DHCP 4.4.x ....
10

11
    <TBD PRIOR TO RELEASE OF 4.4.0>
12

Evan Hunt's avatar
Evan Hunt committed
13
14
15
For information on how to install, configure and run this software, as
well as how to find documentation and report bugs, please consult the
README file.
16

Evan Hunt's avatar
Evan Hunt committed
17
18
ISC DHCP uses standard GNU configure for installation. Please review the
output of "./configure --help" to see what options are available.
19

Evan Hunt's avatar
Evan Hunt committed
20
21
22
The system has only been tested on Linux, FreeBSD, and Solaris, and may not
work on other platforms. Please report any problems and suggested fixes to
<dhcp-users@isc.org>.
David Hankins's avatar
David Hankins committed
23

24
25
26
27
ISC DHCP is open source software maintained by Internet Systems
Consortium.  This product includes cryptographic software written
by Eric Young (eay@cryptsoft.com).

28
29
30
31
32
33
34
35
36
37
38
39
40
Please note that as of version 4.4.0, ISC DHCP is licensed under the Mozilla
Public License, MPL 2.0. Please see https://www.mozilla.org/en-US/MPL/2.0/
to read the MPL 2.0 license terms.

Older versions already published under the ISC license will remain under the
ISC license.  Those unsure whether or not the license change affects their use
of ISC DHCP, or who wish to discuss how to comply with the license may contact
ISC at info@isc.org or use https://www.isc.org/mission/contact/.

We welcome comments from DHCP users, about this or anything else we do.  Email
Vicky Risk, Product Manager at vicky@isc.org or discuss on
dhcp-users@lists.isc.org.

41
			Changes since 4.3.0 (new features)
42

43
44
45
46
47
48
- Insert the raw data from a fully encapsualted option into the option cache.
  This allows "exists" to check for the option if any sub options exist.  It
  also adds the raw data to the environment variables supplied to the client
  script.
  [ISC-Bugs #39863]

Francis Dupont's avatar
Francis Dupont committed
49
50
51
52
53
- Pass configure arguments which begin with an upper case letter, e.g.
  CFLAGS, to the embedded bind configure, so it is no longer required
  to use environment variables to get the same effect.
  [ISC-Bugs #35143]

Francis Dupont's avatar
Francis Dupont committed
54
55
56
- Added --enable-kqueue, --enable-epoll, --enable-devpoll and a more
  general --with-bind-extra-config to pass extra options to the
  embedded bind configure. Note we had mixed experiences with this
Francis Dupont's avatar
Francis Dupont committed
57
  so it is at the user risk, i.e., they are NOT SUPPORTED yet.
Francis Dupont's avatar
Francis Dupont committed
58
  [ISC-Bugs #20890]
Francis Dupont's avatar
Francis Dupont committed
59

Francis Dupont's avatar
Francis Dupont committed
60
61
62
63
64
- Changed the way the embedded bind Makefile is updated by configure.
  The only user visible side effect is that --with-libbind now requires
  either "no" or an (absolute) path, i.e. "yes" is no longer valid.
  [ISC-Bugs #43227]

65
66
67
- Added the support for git repositories in the util/bind.sh script.
  When you build ISC DHCP from a git repo, i.e., without a "bind"
  directory populated as in the release distribution file, you may now
Francis Dupont's avatar
Francis Dupont committed
68
69
  create the bind directory, change to it and clone the private
  (repo.isc.org/proj/git/prod/bind9.git) or the public
Francis Dupont's avatar
Francis Dupont committed
70
  (https://source.isc.org/git/bind9.git) git repository into
71
  bind/bind9 and then invoke the util/bind.sh script as usual.
Francis Dupont's avatar
Francis Dupont committed
72
73
  Note this option is incompatible with "make dist" (and make "distcheck")
  because no bind/bind.tar.gz nor bind/version.tmp files are available.
Francis Dupont's avatar
Francis Dupont committed
74
75
  [ISC-Bugs #43236]

Francis Dupont's avatar
Francis Dupont committed
76
77
78
79
- Use the embedded bind libraries where they are built (vs where they
  are installed).
  [ISC-Bugs #39319]

80
81
82
83
- Use last version (9.11) of plain embedded bind libraries in place of
  older (9.9) version of export bind libraries.
  [ISC-Bugs #43215]

84
- Using "make distcheck" now works with external bind libraries (aka
Francis Dupont's avatar
Francis Dupont committed
85
86
87
  configure --with-libbind).
  [ISC-Bugs #43285]

88
89
90
91
92
93
94
95
96
- The server now allows the client identifier (option 61) to own leases
  in more than one subnet concurrently. Prior to this the server would
  incorrectly release an existing lease in one subnet prior to assigning
  a lease in another subnet. Note that the prior behavior can be still
  be achieved by enabling one-lease-per-client. Thanks to both David Zych at
  the University of Illinois and Norm Proffitt of Infoblox for reporting
  the issue; and Norm for suggesting a solution.
  [ISC-Bugs #41358]

Francis Dupont's avatar
Francis Dupont committed
97
98
99
- Added --enable-bind-install to install embedded bind includes and
  libraries. Default is to not install them (it was the previous
  behavior). If you'd like to change the includedir and/or libdir
Francis Dupont's avatar
Francis Dupont committed
100
101
102
  installation directories to something different than for ISC DHCP
  you must pass them using the --with-bind-extra-config configuration
  arguments.
Francis Dupont's avatar
Francis Dupont committed
103
104
  [ISC-Bugs #39318]

Francis Dupont's avatar
Francis Dupont committed
105
106
107
108
109
110
- Added support of dynamic shared libraries with libtool. A new
  --enable-libtool configuration parameter is available but
  should not be used directly: *please* read the build configuration
  section in the README file for the recommended procedure.
  [ISC-Bugs #29402]

111
112
113
114
115
116
117
- IPv6 operation now supports an EUI-64 based address allocation which will
  calculate addresses for clients with EUI-64 DUIDs based on those DUIDs when
  enabled by setting use-eui-64 true.  The parameter may defined down to the
  pool scope.  Note this feature must be compiled in by defining EUI_64 in
  includes/site.h. This flag is undefined by default.
  [ISC-Bugs #43927]

118
119
120
121
- Added new compile time option --with-srv-conf-file which specifies a
  default location of the server configuration file.
  [ISC-Bugs #44765]

122
123
124
125
126
127
128
129
130
131
132
- Added --dad-wait-time parameter to dhclient. It specifies the maximum time,
  in seconds, that the client process should wait for the duplicate address
  detection to complete before initiating DHCP requests. This value is
  propagated to the dhclient script and the script is responsible for waiting
  the specified amount of time or until DAD has completed. If the script does
  not support it, specifying this parameter has no effect. The default value
  is 0 which specifies that the script should not wait for DAD. With this
  change the following scripts have been modified to support the new parameter:
  freebsd, linux, macos, netbsd, openbsd.
  [ISC-Bugs #36169]

133
- Modified DDNS support initialization such that DNS related ports will only be
134
135
136
137
  opened by the server (dhcpd) at startup if ddns-update-style is not "none";
  by dhclient only if and when the it first attempts an update; and never by
  dhcrelay.  Prior to this all three always did the initialization at startup
  which causes them to always open on and listen for traffic on two random
138
  ports. Thanks to Rodney Beede for reporting the issue.
139
140
141
  [ISC-Bugs #45290]
  [ISC-Bugs #33377]

142
143
144
145
- Added error logging to two memory allocation failure checks. Thanks to Bill
  Parker (wp02855 at gmail dot com) for reporting the issue.
  [ISC-Bugs #41185]

146
147
148
- Corrected a dhclient -6 issue that caused the client to crash with an
  "Impossible condition" error after de-preferencing its only IA binding.
  The crash occurred when server configuration changes rendered the existing
149
150
  binding out-of-range and no other leases were available to offer.  Thanks
  to Pierre Clerissi for bringing this issue to our attention.
151
152
  [ISC-Bugs #44373]

153
154
155
156
- By defining CALL_SCRIPT_ON_ONETRY_FAIL in includes/site.h, dhclient will
  now call the script with reason set to FAIL when run with -1 (one try) and
  there are no server responses.  This applies to IPv4 mode only. Thanks for a
  patch by Martin Pitt which got to us via Andrew Pollock.
157
158
  [ISC-bugs #18183]

Tomek Mrugalski's avatar
Tomek Mrugalski committed
159
- Linux script updated. The script is now based on Debian version. It uses
160
161
  ip tool from iproute2 package and ifconfig is no longer used. This also
  addresses an issue of calling arping with inappropriate parameter.
Tomek Mrugalski's avatar
Tomek Mrugalski committed
162
  [ISC-bugs #19430]
163
  [ISC-bugs #18111]
Tomek Mrugalski's avatar
Tomek Mrugalski committed
164

165
- The directory minires has been removed from the source tree.  It has
166
  long been obsolete for branches other than v4_1_esv.  Additionally,
167
168
169
  includes/minires.h was renamed includes/ns_name.h.
  [ISC-bugs #45471]

170
171
172
173
174
- The directory includes/isc-dhcp and it's only occupant, dst.h, have
  been removed from the source tree.  They are obsolete for branches
  other than v4_1_esv.
  [ISC-bugs #45541]

175
176
177
178
179
- Replaced ISC licensing with Mozilla Public License, MPL 2.0 licensing
  throughout.  Please see https://www.mozilla.org/en-US/MPL/2.0/ to read
  the MPL 2.0 license terms.
  [ISC-Bugs #45541]

180
181
182
183
184
185
- Load balancing for failover peers can now be disabled by setting
  "load balance max secs" to 0. Doing so for both peers means both
  servers will respond to all DHCPDISCOVERs or DHCPREQUESTs as soon as
  they are received.
  [ISC-Bugs #39669]

186
187
- Added a new dhclient command line parameter, --prefix-len-hint <length>.
  When used in conjunction with -P, it directs dhclient to use the given
188
189
  length as the prefix length hint when requesting prefixes.  Thanks to
  H. Peter Anvin for suggesting this change.
190
191
192
193
194
195
196
197
198
199
 [ISC-Bugs #43792]
 [ISC-Bugs #35112]
 [ISC-Bugs #32228]
 [ISC-Bugs #29470]

- dhclient will now wait for 10 seconds after declining an IPv4 address
  before issuing a discover.  This is in keeping with RFC 2131, section 3.1.5.
  Prior to this dhclient did not wait at all. The amount of time dhclient
  waits can be specified via a new command line parameter:
  --decline-wait-time <seconds>.  A value of zero equates to no wait at all.
200
  Thanks to Pavel Kankovsky for bringing this matter to our attention.
201
  [ISC-Bugs #45457]
202

203
204
205
206
- Corrected dhclient command line parsing for --dad-wait-time that causes
  even valid values to fail as invalid on some environments.
  [ISC-Bugs #46535]

207
208
209
210
211
212
- dhclient will now include the lease address when logging DHCPOFFERs,
  DHCPREQUESTs, DHCPACKs, DHCPRELEASEs, and DHCPDECLINEs.  Additionally,
  DHCPOFFERs will be logged before their corresponding DHCPREQUESTs are
  sent and logged.
  [ISC-Bugs #2729]

213
214
215
216
217
218
219
220
- When given the -T command line argument, in addition to reading the
  current lease file, the server will write the leases to a temporary
  lease file.  This can help detect issues in server configuration that
  only surface when leases are written to the file.  The current lease
  file will not be modified and the temporary lease file is removed upon
  completion of the test.
  [ISC-Bugs #22267]

221
222
223
224
225
226
- dhclient will now generate a DHCPv6 DECLINE message containing all IA_NA
  addresses which for which the client script indicates a DAD failure. After
  receiving the DECLINE reply, dhclient will restart the solicit process.
  Note, the client script must exit with a value of 3 to signify that the
  address failed DAD.  Thanks to Jiri Popelka of Red Hat for submitting the
  patch that was the foundation for this change.
227
228
  [ISC-Bugs #21237]
  [ISC-Bugs #23357]
229
  [ISC-Bugs #36966]
230

231
232
233
234
235
236
237
238
239
240
- Replaced compilation option, enable-secs-byteorder, with a run-time, server
  configuration parameter, check-secs-byte-order.  When enabled, the
  server will check for clients that do the byte ordering on the secs field
  incorrectly.  This field should be in network byte order but some clients
  get it wrong.  When this parameter is enabled the server will examine the
  secs field and if it looks wrong (high byte non zero and low byte zero) swap
  the bytes.  The default is disabled.  This parameter is only useful when
  doing load balancing within failover.
  [ISC-Bugs #45364]

241
242
243
244
245
246
247
248
249
250
251
252
253
254
- If the server detects that a DHCPv6 client (IAID+DUID) has roamed to a new
  network, it will now automatically release pre-existing leases on the old
  network. When this occurs the server will emit a log statement:

      "Client: <id> roamed to new network, releasing lease: <address>"

  The server will carry out all of the same steps that would normally occur
  when a client explicitly releases a lease.  Prior to this the server simply
  dropped the pre-existing leases on the floor without doing the appropriate
  clean-up.  Clients that need leases in multiple networks must supply a
  unique IAID in each IA. Thanks to Fernando Soto from BlueCat Networks for
  reporting the issue.
  [ISC-Bugs #44576]

255
256
257
- The ability of the server to send back dhcp6.vendor-opts values has been
  restored. A change in 4.3.5 (see #29246) which enabled it to send back the
  FQDN option unfortunately broke its ability send back dhcp6.vendor-opts.
258
259
  Thanks to Sumant Gupta (sumantgupta at gmail dot com) of Landis+Gry for
  bringing this issue to our attention.
260
261
  [ISC-Bugs #46427]

262
263
264
265
266
267
268
269
- The default value for server (-6) parameter, prefix-length-mode, has been
  changed from "exact" to "prefer". In "prefer" mode the server will offer
  the first available prefix with the same length as that requested by the
  client. If none are found then it will offer the first available prefix of
  any length.  This is more in line with with RFC 8168 and should improve
  the out-of-the-box user experience.
  [ISC-Bugs #45615]

270
271
272
273
274
275
276
277
278
279
280
- Added support for 'dhcp-cache-threshold' to IPv6 operation: If a client
  renews before 'dhcp-cache-threshold' percent of its lease has elapsed
  (default 25%), the server will reuse the allocated lease (provide a
  lease within the currently allocated lease-time) rather than extend or
  renew the lease.  This allows the server to reply without needlessly
  writing leases to disk.  The preferred and valid lease lifetimes
  sent to the client will be reduced by the age of the lease. The option
  may be specified down to the pool level and is supported for all three
  pool types: NA, TA, and PD.
  [ISC-Bugs #45292]

281
282
283
284
285
286
287
288
289
290
- Added three new server configuration parameters which influence DDNS:
  1. ddns-dual-stack-mixed-mode - alters DNS conflict resolution behavior
  to mitigate issues with non-compliant clients in dual stack environments.

  2. ddns-guard-id-must-match - relaxes the DHCID RR client id matching
  requirement of DNS conflict resolution.

  3. ddns-other-guard is-dynamic - alters dual-stack-mixed-mode behavior to
  allow unguarded DNS entries to be overwritten in certain cases
  [ISC-Bugs #42620]
291
292
  [ISC-Bugs #42621]
  [ISC-Bugs #44753]
293

294
295
296
297
298
299
300
- A "key-algorithm <algorithm>" statement has been added to omshell to
  allow the specification of the key algorithm to use during transaction
  authentication.  Prior to this it was hard-coded to be hmac-md5. It now
  supports all of the same algorithms as the dhcpd server: hmac-md5 (the
  default), hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, and hmac-sha512.
  [ISC-Bugs #46771]

301
302
303
304
305
- Added a server configuration parameter, persist-eui-64-leases, which
  determines whether or not EUI-64 based leases are written to the
  leases file.  Default is true.
  [ISC-Bugs #45046]

306
307
308
309
310
311
312
313
- Changed the default value of the prefix length passed by dhclient into the
  client script for each IPv6 address, from 64 to 128. In addition, dhclient
  now supports a command line argument, --address-prefix-len <len>, which may
  be used to override the default value.  PLEASE NOTE: If your DHCPv6 clients
  require a value other than 128, you MUST specify the value via this new
  command line argument.  Prior to this the only way to alter the value was at
  compile time by changing DHCLIENT_DEFAULT_PREFIX_LEN in include/sites.h.
  [ISC-Bugs #23252]
314
  [ISC-Bugs #37221]
315

316
317
318
319
320
- Modified dhclient (-6) to bypass sending a confirm (INIT REBOOT) when it has
  only expired address assocations.  Thanks to Jiri Popelka at Red Hat for
  raising the issue and submitting the patch.
  [ISC-Bugs #22675]

321
			Changes since 4.3.0 (bug fixes)
322

323
324
325
326
- Tidy up several small tickets.
  Correct parsing of DUID from config file, previously the LL type
  was put in the wrong place in the DUID string.
  [ISC-Bugs #20962]
327

328
329
330
  Add code to parse "do-forward-updates" as well as "do-forward-update"
  Thanks to Jiri Popelka at Red Hat.
  [ISC-Bugs #31328]
331

332
333
  Remove log_priority as it isn't currently used.
  [ISC-Bugs #33397]
334

335
336
  Increase the size of the buffer used for reading interface information.
  [ISC-Bugs #34858]
337

338
339
- Remove an extra set of the msg_controllen variable.
  [ISC-Bugs #21035]
340

341
342
343
344
- Add a more understandable error message if a configuration attempts
  to add multiple keys for a single zone.  Thanks to a patch from Jiri
  Popelka at Red Hat.
  [ISC-Bugs #31892]
345

346
347
- Fix some minor issues in the dst code.
  [ISC-Bugs #34172]
348

349
350
- Properly #ifdef functions so that the code can compile without NSUPDATE.
  [ISC-Bugs #35058]
351

352
353
354
- Update the partner's stos (start time of state, basically when we last
  heard from this partner) field when updating the state in failover.
  [ISC-Bugs #35549]
355

356
357
358
359
360
- Modify the overload processing to allow space for the remote agent ID.
  [ISC-Bugs #35569]
  Handle the ordering of the SUBNET_MASK option even if it is the last
  option in the list.
  [ISC-Bugs #24580]
361

362
363
364
365
- Remove the code that allows a server to follow RFC3315 instead of
  the subsequent errata from August 2010 when determining which IAs
  to include if no addresses will be assigned.
  [ISC-Bugs #28938]
366

367
368
- Remove unused RCSID tags.
  [ISC-Bugs #35846]
369

370
371
372
373
- Correct the v6 client timing code.  When doing the timing backoff
  for MRT limit it to MRD.
  Thanks to Jiri Popelka at Red Hat for the bug report and fix.
  [ISC-Bugs #21238
374

375
376
377
378
- Add a log entry when killing a client and remove the PID files
  when a server, relay or client are killed.
  [ISC-Bugs #16970]
  [ISC-Bugs #17258]
379

380
381
382
383
384
385
386
387
388
389
390
391
392
393
- Some minor cleanups in the client code.
  In addition to checking for dhcpc check for bootpc in the services list.
  [ISC-Bugs #18933]
  Correct the client code to only try to get a lease once when the
  given the "-1" argument.
  Thanks to Jiri Popelka at Red Hat for the bug report and fix.
  [ISC-Bugs #26735]
  When asked for the version don't send the output to syslog.
  [ISC-Bugs #29772]
  Add the next server information to the environment variables for
  use by the client script.  In order to avoid changing the client
  lease file the next server information isn't written to it.
  Thanks to Tomas Hozza at Red Hat for the suggestion and a prototype fix.
  [ISC-Bugs #33098]
394

395
396
397
398
399
400
401
402
403
- Several updates to the dhcp server code.
  When not in quiet mode print out the files being used.
  [ISC-Bugs #17551]
  As accessing some pid files may require privileges move the dropping
  of permission bits due to the paranoia patch to be after the pid code.
  Thanks to Jiri Popelka at Red Hat for the bug report and fix.
  [ISC-Bugs #25806]
  When processing a "--version" request don't output the version information
  to syslog.
404

405
406
407
408
409
- Add the "enable-log-pid" build option to the configure script.  When enabled
  this causes the client, server and relay programs to include the PID
  number in syslog messages.
  Thanks to Marius Tomaschewski for the suggestion and proto-patch.
  [ISC-Bugs #29713]
410

411
412
413
414
415
- Add a #define to specify the prefix length used when a client attempts
  to configure an address.  This can be modified by editing includes/site.h.
  By default it is set to 64.  While 128 might be a better choice it would
  also be a change for currently running systems, so we have left it at 64.
  [ISC-Bugs #DHCP-2]
416

417
418
419
420
421
422
- Add a run time option to the client "-df" to allow the administrator to
  point to a second lease file the client can search for a DUID.  This can
  be used to allow a v4 and a v6 instance of the client to share a DUID.
  The second file will only be searched if there isn't a DUID in the main
  lease file and the DUID will be written out to the main lease file.
  [ISC-Bugs #34886]
423

424
425
426
- Have the client fsync the lease file to avoid lease corruption if the
  client hibernates or otherwise shuts down.
  [ISC-Bugs #35894]
427

428
429
430
- Add a check for L2VLAN in bpf.c to help support VLAN interfaces
  Thanks to Steinar Haug for the suggestion.
  [ISC-Bugs #36033]
431

432
433
434
- Modify the handling of the resolv.conf file to allow the DHCP
  process to start up even if the resolv.conf file has problems.
  [ISC-Bugs #35989]
435

436
437
438
439
440
- Add threshold logging functionality.  Two new options,
  log-threshold-low and log-threshold-high, indicate to the
  server if and when it should log an error message as addresses
  in a pool are used.
  [ISC-Bugs #34487]
441

442
443
444
- Add code to properly dereference a pointer in the dhclient code
  on an error condition.
  [ISC-Bugs #36194]
445

446
447
- Add code to help clean up soft leases.
  [ISC-Bugs #36304]
448

449
450
451
- Disable the gentle shutdown functionality until we can determine
  the best way to present it to remove or reduce the side effects.
  [ISC-Bugs #36066]
452

453
454
455
456
- Modify the message displayed when a process hits a fatal error.
  The new message is much shorter and simply points to the README
  and our website for directions on bug submissions.
  [ISC-Bugs #24789]
457

458
459
- Handle an absent resolv.conf file better.
  [ISC-Bugs #35194]
460

461
462
463
464
- Tidy up receive packet processing.
  Thanks to Brad Plank of GTA for reporting the issue and suggesting
  a possible patch.
  [ISC-Bugs #34447]
465

466
467
- Corrected parser's right brace matching when a statement contains an error.
  [ISC-Bugs #36021]
468

469
470
471
472
- TSIG-authenticated dynamic DNS updates now support the use of these
  additional algorithms: hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384,
  and hmac-sha512
  [ISC-Bugs #36947]
473

474
475
- Added check for invalid failover message type. Thanks to Tobias Stoeckmann
  working with the OpenBSD project who spotted the issue and provided the
476
  patch.
477
  [ISC-Bugs #36653]
478

479
480
481
482
- Corrected rate limiting checks for bad packet logging.  Thanks to Tobias
  Stoeckmann working with the OpenBSD project who spotted the issue and
  provided the patch.
  [ISC-Bugs #36897]
483

484
485
486
- Log statements depicting what files will be used by the server now occur
  after the configuration file has been processed.
  [ISC-Bugs #36671]
487

488
489
490
491
492
- Addressed Coverity issues reported as of 07-31-2014:
  [ISC-Bugs #36712] Corrects Coverity reported "high" impact issues.
  [ISC-Bugs #36933] Corrects Coverity reported "medium" impact issues
  [ISC-Bugs #37708] Fixes compilation error in dst_api.c seen in older
  compilers that was introduced by #36712
493

494
495
- Server now supports a failover split value of 256.
  [ISC-Bugs] #36664]
496

497
498
499
500
501
502
503
- Remove unneeded error #defines.  These defines were included in case
  external programs required the older versions of the macro.  They
  have been #ifdeffed for now and will be removed at a future date.
  See site.h for the #define to include them again, but you should
  switch to using the DHCP_R_* versions instead of the ISC_R_* versions.
  Also ISC_R_MULTIPLE has been removed as it is also defined in bind.
  [ISC-Bugs #37128]
504

505
506
507
508
509
510
511
512
- Added checks in range6 and prefix6 statement parsing to ensure addresses
  are within the declared subnet. Thanks to Jiri Popelka at Red Hat for the
  bug report and patch.
  [ISC-Bugs #32453]
  [ISC-Bugs #17766]
  [ISC-Bugs #18510]
  [ISC-Bugs #23698]
  [ISC-Bugs #28883]
513

514
515
516
517
518
519
520
521
522
523
524
525
526
527
- Addressed checksum issues:
  Added checksum readiness check to Linux packet filtering which eliminates
  invalid packet drops due to checksum errors when checksum offloading is
  in use.  Based on dhcp-4.2.2-xen-checksum.patch made to the Fedora project.
  [ISC-Bugs #22806]
  [ISC-Bugs #15902]
  [ISC-Bugs #17739]
  [ISC-Bugs #18010]
  [ISC-Bugs #22556]
  [ISC-Bugs #29769]
  Inbound packets with UDP checksums of 0xffff now validate correctly rather
  than being dropped.
  [ISC-Bugs #24216]
  [ISC-Bugs #25587]
528

529
530
531
532
533
534
535
536
537
- Added the echo-client-id configuration parameter to the server configuration.
  The server now supports RFC 6842 compliant behavior by setting a new
  configuration parameter, echo-client-id.  When enabled, the server will
  include the client identifier option (Option code 61) if received, in its
  responses.  The server identifier returned in NAKs (if enabled) will now
  be the globally defined value (if one) if the server cannot attribute the
  inbound request to a known subnet.
  [ISC-Bugs #35958]
  [ISC-Bugs #32545]
Francis Dupont's avatar
Francis Dupont committed
538

539
540
541
- Added support of the configuration parameter, use-host-decl-names, to
  BOOTP request handling.
  [ISC-Bugs #36233]
542

543
544
545
546
547
- Added logic to ignore the signal, SIGPIPE, which ensures write failures
  will be delivered as errors rather than as SIGPIPE signals on all OSs.
  Thanks to Marius Tomaschewski from SUSE who reported the issue and provided
  the patch upon which the fix is based.
  [ISC-Bugs #32222]
548

549
550
551
552
553
554
555
556
- In the failover code, handle the case of communications being interrupted
  when the servers are dealing with POTENTIAL-CONFLICT.  This patch allows
  the primary to accept the secondary moving from POTENTIAL-CONFLICT to
  RESOLUTION-INTERRUPTED as well as handling the bind update process better.
  In addition the code to resend update or update all requests has been
  modified to send requests more often.
  [ISC-Bugs #36810]
  [ISC-Bugs #20352]
Shawn Routhier's avatar
Shawn Routhier committed
557

558
559
- By default, the server will now choose the value to use in the forward DNS
  name from the following in order of preference:
560

561
562
563
    1. FQDN option if provided by the client
    2. Host name option if provided by the client
    3. Configured option host-name if defined
564

565
566
567
568
569
  As before, this may be overridden by defining ddns-hostname to the desired
  value (or expression).  In addition, the server logic has been extended to
  use the value of the host name declaration if use-host-decl-names is enabled
  and no other value is available.
  [ISC-Bugs #21323]
570

571
572
573
574
575
- DNS updates were being attempted when dhcp-cache-threshold enabled the use of
  the existing lease and the forward DNS name had not changed.  This has been
  corrected.
  [ISC-Bugs #37368]
  [ISC-Bugs #38636]
576

577
578
579
580
581
- Corrected an issue which caused dhclient to incorrectly form the result when
  prepending or appending to the IPv4 domain-search option, received from the
  server, when either of the values being combined contain compressed
  components.
  [ISC-Bugs #20558]
582

583
584
585
586
587
588
589
590
- Added the server-id-check parameter to the server configuration.
  This parameter allows run-time control over whether or not a server,
  participating in failover, verifies the dhcp-server-identifier option in
  DHCP REQUESTs against the server's id before processing the request.
  Formerly, enabling this behavior was done at compilation time through
  the use of the #define, SERVER_ID_CHECK, which has been removed from site.h
  The functionality is now only available through the new runtime parameter.
  [ISC-Bugs #37551]
591

592
593
594
595
596
597
598
599
- During startup, when the server encounters a lease whose binding state is
  FTS_BACKUP but whose pool has no configured failover peer, it will reset the
  lease's binding state to FTS_FREE.  This allows the leases to be reclaimed
  by the server after a pool's configuration has changed from failover to
  standalone. Prior to this such leases would remain stuck in the backup state
  making them unavailable for assignment.  Note this conversion will occur
  whether or not the server is compiled for failover.
  [ISC-Bugs #36960]
600

601
602
603
604
605
606
607
608
- Fixed a small issue in the treatment of hosts in the inform processing
  that could cause the response to an inform to include information from
  the wrong scope.  The two examples we've heard of are getting subnet
  instead of group information associated with a host entry, or getting
  global information instead of subnet if the host entry was built via
  omapi.  Thanks to Julien Soula at University of Lille for finding the
  bug and supplying a patch.
  [ISC-Bugs #35712]
609

610
611
612
613
- Avoid calling pool_timer() recursively from supersede_lease().  This could
  result in leases changing state incorrectly or delaying the running of the
  leae expiration code.
  [ISC-Bugs #38002]
614

615
616
617
618
619
620
621
- Move the check for a PID file and process to be before we rewrite the
  lease file.  This avoids the possibility of starting a second instance
  of a server which changes the current lease file confusing the first
  instance.  This check is only included if the admin hasn't disabled PID
  files.
  [ISC-Bugs #38078]
  [ISC-Bugs #38143]
622

623
624
625
626
- In the client code change the way preferred_life and max_life are printed
  for environment variables to be unsigned rather than signed.
  Thanks to Jiri Popelka at Red Hat for the bug report and patch.
  [ISC-Bugs #37084]
627

628
629
630
631
632
633
634
635
636
- Modified Linux packet handling such that packets received via VLAN are now
  seen only by the VLAN interface. Prior to this, such packets were seen by
  both the VLAN interface and its parent (physical) interface, causing the
  server to respond to both.  Note this remains an issue for non-Linux OSs.
  Thanks to Jiri Popelka at Red Hat for the patch.
  [ISC-Bugs #37415]
  [ISC-Bugs #37133]
  [ISC-Bugs #36668]
  [ISC-Bugs #36652]
637

638
639
640
641
642
643
644
645
646
- Log content has been changed to more directly suggest that admins should
  check for multiple IPv6 clients attempting to use the same DUID when only
  abandoned addresses are available.  Debug level logging will now emit counts
  of the total number of, in-use, and abandoned addresses in a shared subnet
  when the server finds no addresses available for a given DUID.  Lastly,
  threshold logging is now automatically disabled for shared subnets whose
  total number of possible addresses exceeds (2^64)-1.
  [ISC-Bugs #26376]
  [ISC-Bugs #38131]
647

648
649
650
651
652
653
654
655
656
657
- Added a global parameter, prefix-length-mode, which may be used to determine
  how the server uses a non-zero value for prefix-length supplied by clients
  when soliciting DHCPv6 prefixes.  The server supports selection modes of:
  ignore, prefer, exact, minimum and maximum which are described in detail in
  the server man pages.  The prior behavior of the server was to only offer a
  prefix whose length exactly matched the prefix-length value requested. If
  no such prefixes were available, the server returned a status of none
  available.  Note the default mode, "exact", provides this same behavior.
  [ISC-Bugs #36780]
  [ISC-Bugs #32228]
658

659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
- Corrected inconsistencies in dhcrelay's setting the upper interface hop count
  limit such that it now sets it to 32 when the upstream address is a multicast
  address per RFC 3315 Section 20. Prior to this if the -u argument preceded
  the -l argument on the command line or if the same interface was specified
  for both; the logic to set the hop limit count for the upper interface was
  skipped.  This caused the hop count limit to be set to the default value
  (typically 1) in the outbound upstream packets.
  [ISC-Bugs #37426]

- Modify the linux and openwrt dhclient scripts to process information
  from a stateless request.  Thanks to Jiri Popelka at Red Hat for the
  bug report and patch.
  [ISC-Bugs #36102]

- Remove more unused RCSID tags.  These weren't noticed in 4.3 as
  the code isn't used anymore but we remove them here to keep the
  code consistent across versions.
  [ISC-Bugs #36451]

- The server now does a better check to see if it can allocate the memory
  for large blocks of v4 leases and should provide a slightly better error
  message.  Note well: the server pre-allocates v4 addresses, if you use
  a large range, such as a /8, the server will attempt to use a large
  amount of memory and may not start if there either isn't enough memory
683
684
685
  or the size exceeds what the code supports.
  [ISC-Bugs #38637]

686
687
688
689
690
691
692
693
694
695
- The server will now reject unicast Request, Renew, Decline, and Release
  messages from a client unless the server would have sent that client the
  dhcp6.unicast option.  This behavior is in compliance with paragraph 1 in
  each of the sections 18.2,1, 18.2.3, 18.2.6, and 18.2.7 of RFC 3315. Prior
  to this, the server would simply accept the messages.  Now, in order for
  the server to accept such a message, the server configuration must include
  the dhcp6.unicast option either globally or within the shared network to
  which the requested lease belongs. In other words, the server will map
  the first IA_XX address found within the client message to a shared-network
  and look for the presence of the unicast option there and then globally.
Thomas Markwalder's avatar
Thomas Markwalder committed
696
697
  Thanks to Jiri Popelka at Red Hat for this issue and his patch which
  inspired the fix.
698
  [ISC-Bugs #21235]
Shawn Routhier's avatar
Shawn Routhier committed
699

700
701
702
703
- The ATF (Automated Testing Framework) tools used for optional unit tests
  can now be built from its embedded sources in bind, solving the
  atf-run / atf-report issue with recent (>= 0.20) versions of ATF.
  The new configuration option is "./configure --with-atf=bind".
704
  [ISC-Bugs #38754, #39300]
705

706
707
708
709
710
711
- Corrected a compilation error introduced by the fix for ISC-Bugs #22806.
  On older linuxes that do not include the tpacket_auxdata structure don't
  bother allocating the cmsgbuf as it isn't necessary and we don't have
  a proper length for it.
  [ISC-Bugs #39209]

712
713
714
715
716
717
- Remove the dst directory.  This was replaced in 4.2.0 with the dst
  code from the Bind libraries but we continued to include it for
  backwards compatibility.  As we have now released 4.3.x it seems
  reasonable to remove it.
  [ISC-Buts #39019]

718
- Write out the DUID server id on startup in all cases, previously if it
719
  was read in from server-duid option in the config or lease files for
720
721
722
  DHCPv4 it would not be written to the new lease file.
  [ISC-Bugs #37791]

723
724
725
726
727
728
- When parsing dates for leases convert dates past 2038 to "never".
  This avoids problems with integer overflows in the date and time
  handling code for people that decide to use very large lease times
  or add a lease entry with a date far in the future.
  [ISC-Bugs #33056]

729
730
731
732
- Leave the siaddr field clear when sending a NACK as per RFC 2131
  table 3.
  [ISC-Bugs #38769]

733
734
735
736
737
- In the client don't send expired addresses to the script as part of
  the binding process.  Thanks to Sven Trenkel at Google for reporting
  the issue and suggesting the patch.
  [ISC-Bugs #38631]

738
739
740
741
- While parsing IPv6 addresses treat "add" as part of the address instead
  of as a token.
  [ISC-Bugs #39529]

742
743
744
745
746
747
748
749
- Add support for accessing the v4 lease queues (active, free etc) in a
  binary fashion instead of needing to walk through a linear list to
  insert, find or remove an entry from the queues.  In addition add a
  compile time option "--enable-binary-leases" to enable the new code
  or to continue using the old code.  The old code is the default.
  Thanks to Fernando Soto from BlueCat Networks for the patch.
  [ISC-Bugs #39078]

750
751
752
753
754
- Delayed-ack now works properly with Failover. Prior to this, bind updates
  post startup were being queued but never delivered. Among other things, this
  was causing leases to not transition from expired or released to free.
  [ISC-Bugs #31474]

755
756
757
758
- Clean up parsing of v6 lease files a bit to avoid infinite loops if the
  lease file is corrupt in certain ways.
  [ISC-Bugs #39760]

759
- Corrected a crash in dhclient that occurs during lease renewal if the
760
761
  client is performing its own DNS updates.  Thanks to Jiri Popelka at Red Hat
  for the bug report.
762
763
  [ISC-Bugs #38639]

764
765
766
767
768
- Corrected an issue in v6 lease file parsing. Prior to this, when encountering
  a lease with an address for which no configured pool exists, the server was
  declaring the lease file corrupt and incorrectly skipping over the subsequent
  entry in the file.  The server will now emit a log message indicating that
  no pool was found for the address (or prefix) and correctly resume parsing
769
  with the next entry in the lease file.  Our thanks to Michal Žejdl for
770
  reporting the issue.
771
772
  [ISC-Bugs #39314]

773
774
775
776
777
778
779
780
781
- Be more liberal in finding a subnet group associated with a static
  prefix.  When we added the class matching code for v6 we also added
  a requirement that the static prefix must be within a subnet the
  client was in, in order to find the proper statements.  We now
  look for a subnet based on the prefix, failing that on the static
  address for the client and failing that on the shared network
  itself.
  [ISC-Bugs #38329]

782
783
784
785
786
- Add a new action expression "parse_vendor_options", which can be used
  to parse a vendor-encapsualted-option received by the server based on
  the encoding specified by the vendor-option-space statement.
  [ISC-Bugs #36449]

787
788
789
790
791
- Enhance the PARANOIA patch to include fchown() the lease file to
  allow it to be manipulated after the server does a chown().
  Thanks to Jiri Popelka at Red Hat for the patch.
  [ISC-Bugs #36978]

792
793
794
795
796
797
- Relax the requirement that prefix pools must be within the subnet.
  This was added in as part of #32453 in order to avoid configuration
  mistakes but is being removed as prefixes aren't required to be
  within the same subnet and many people configure them in that fashion.
  [ISC-Bugs #40077]

798
799
- Fixed a server crash that could occur when the server attempts to remove
  the billing class from the last lease billed to a dynamic class after said
800
801
  class has been deleted.  Our thanks to Lasse Pesonen for reporting the
  issue.
802
803
  [ISC-Bugs #39978]

804
805
- LDAP Patches - Numerous small patches submitted by contributors have
  been applied to the contributed code which supplies LDAP support.
806
807
  In addition, two larger submissions have also been included.  The
  first adds support for IPv6 configuration and the second provides
808
809
810
  GSSAPI authentication. We would like to thank the following for their
  contributions (alphabetically):
    Alex Novak at SUSE
811
    Bill Parker (wp02855 at gmail dot com)
812
813
    Jiri Popelka at Red Hat
    Marius Tomaschewski at SUSE
814
    (william at adelaide.edu.au), The University of Adelaide
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
  [ISC-Bugs #39056]
  [ISC-Bugs #22742]
  [ISC-Bugs #24449]
  [ISC-Bugs #28545]
  [ISC-Bugs #29873]
  [ISC-Bugs #30183]
  [ISC-Bugs #30402]
  [ISC-Bugs #32217]
  [ISC-Bugs #32240]
  [ISC-Bugs #33176]
  [ISC-Bugs #33178]
  [ISC-Bugs #36409]
  [ISC-Bugs #36774]
  [ISC-Bugs #37876]

830
- Handle an out of memory condition in the client a bit better.
831
832
  Thanks to Frédéric Perrin from Brocade for finding the issue
  and suggesting a patch.
833
  [ISC-Bugs #39279]
834

835
836
837
838
839
840
- Corrected a compilation error introduced by the fix for ISC-Bugs #37415.
  The error occurs on Linux variants that do not support VLAN tag information
  in packet auxiliary data.  The configure script now only enables inclusion
  of the VLAN tag-based logic if it is supported by the underlying OS.
  [ISC-Bugs #38677]

841
- Specifying the option, --disable-debug, on the configure script command line
842
  now disables debug features.  Prior to this, specifying --disable-debug
843
844
  incorrectly enabled debug features. Thanks to Gustavo Zacarias for reporting
  the issue.
845
  [ISC-Bugs #37780]
846

847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
- Unit test execution now uses a path augmented during configuration
  processing of the --with-atf option to locate ATF runtime tools, atf-run
  and atf-report. For most installations of ATF, this should alleviate the
  need to manually include them in the PATH, as was formerly required.
  If the configure script cannot locate the tools it will emit a warning,
  informing the user that the tools must be in the PATH when running unit
  tests.
  Secondly, please note that "make check" will now exit with a failure status
  code (non-zero) if one or more unit tests fail.  This means that invoking
  "make check" from an upper level directory will cause the make process to
  STOP after the first test subdirectory with failed test(s).  To force all
  tests in all subdirectories to run, regardless of individual test outcome,
  use the command "make -k check".
  [ISC-Bugs #38619]

862
863
- Corrected a static analyzer warning in common/execute.c
  [ISC-Bugs #40374]
864

865
866
867
868
869
870
- ISC DHCP now follows the common convention to use the base name a
  program is invoked with (aka argv[0], vs. a builtin name) for
  logs. This should help differentiate syslog entries for DHCPv4 and
  DHCPv6 servers. You can define OLD_LOG_NAME in includes/site.h to
  keep the previous behavior.
  [ISC-Bugs #38692]
871

872
873
874
875
876
877
- The Linux packet filter code now correctly treats only the least significant
  12 bits in an inbound packet's TCI value as the VLAN id (per IEEE 802.1Q).
  Prior to this it was using the entire 16 bit value as the VLAN id and
  incorrectly discarding packets.  Thanks to Jiri Popelka at Red Hat for
  reporting this issue and supplying its patch.
  [ISC-Bugs #40591]
878

879
880
881
882
883
884
- Fixed several static analysis issues such as potential null
  references, unchecked strdup returns.  Thanks to Bill Parker (wp02855 at
  gmail dot com) who identified these issues and supplied patches to
  address them.
  [ISC-Bugs #40754]
  [ISC-Bugs #40823]
885

886
887
888
- Corrected compilation errors that prohibited building the server
  and its ATF unit tests when failover is disabled.
  [ISC-Bugs #40372]
889

890
891
892
893
- Added the lease address to the end of the debug level log message
  emitted when an existing lease is renewed within the dhcp-cache-threshold.
  Thanks to Nathan Neulinger at Missouri S&T for suggesting the change.
  [ISC-Bugs #40598]
894

895
896
897
898
899
900
- Added dhcpv6 and delayed-ack to settings listed in the "Features:"
  section of the configure script output.  Additionally, all of the
  features reported on will now always show either a "yes" or "no"
  value.  Prior to this features left to their default setting would
  not show a value.
  [ISC-Bugs #40381]
901

902
903
904
905
906
907
908
909
- Added a parameter, authoring-byte-order, to the lease file. This value
  is automatically added to the top of new lease files by the server and
  indicates the internal byte order (big endian or little endian) of the
  server.  This permits lease files generated on a server with one form of
  byte order to be used on a server with the opposite form. Our thanks to
  Timothe Litt for calling this to our attention and for the suggestions
  he provided.
  [ISC-Bugs #38396]
910

911
912
913
- Fixed a small memory leak in the DHCPv6 version of the client code.
  This is unlikely to cause significant issues in actual use.
  [ISC-Bugs #40990]
914

915
916
917
918
919
- Corrected a few minor memory leaks in omapi's dereferencing of
  host objects. Thanks to Jiri Popelka at Red Hat for reporting
  the issue and supplying the patches.
  [ISC-Bugs #33990]
  [ISC-Bugs #41325]
920

921
922
923
- Cleaned up some of the Make infrastructure to make --with-libbind
  work better.  Though it still only works with an absolute path.
  [ISC-Bugs #39210]
924

925
926
927
928
- Made the embedded bind libraries able to be cross compiled
  (please refer to the bind9 documentation to learn how to cross
   compile DHCP and its bind library dependency).
  [ISC-Bugs #38836]
929

930
931
932
- Update the client code to better support getting IA_NAs and IA_PDs
  in the same packet, see RFC7550 for some discussion.
  [ISC-Bugs #40190]
933

934
935
936
937
938
! Update the bounds checking when receiving a packet.
  Thanks to Sebastian Poehn from Sophos for the bug report and a suggested
  patch.
  [ISC-Bugs #41267]
  CVE: CVE-2015-8605
939

940
941
942
943
944
- When handling an incorrect command line for dhcpd, dhclient or dhcrelay
  print out a specific error message about the first error in addition
  to the usage string.  This may be disabled by editing includes/site.h.
  [ISC-Bugs #40321]
  [ISC-Bugs #41454]
945

946
947
948
949
950
951
- The configure script will now exit with an error message if it cannot find
  a GNU-style make tool (needed when building BIND libraries) or pkg-config
  (needed to locate ATF used for building unit tests). Prior to this the
  script would exit indicating success causing subsequent attempts to build
  the software to fail.
  [ISC-Bugs #40371]
952

953
954
955
956
- Properly terminate strings before passing them to regex and fix
  a boundary error when creating certain new data strings.
  Thanks to Andrey Jr. Melnikov for the bug report.
  [ISC-Bugs #41217]
957

958
959
960
961
962
- Option expressions, such as prepend and append, are now supported when
  running dhclient for IPv6.  Prior to this such statements in the
  client configuration file would be parsed but have no affect.  Thanks
  to Jiri Popelka at Red Hat for reporting the issue.
  [ISC-Bugs #39952]
963

964
965
966
967
968
969
- A failover primary server will now accept a binding status update from the
  secondary which transitions a lease from ACTIVE to ABANDONED. This accounts
  for instances in which a client declines a lease and only the secondary
  server receives it.  Prior to this the primary server would reject such an
  update as an "invalid state transition".
  [ISC_BUGS #25189]
970

971
972
973
- Properly allocate memory for a bpf filter.
  Thanks to Bill Parker (wp02855 at gmail dot com) who identified this issue.
  [ISC-Bugs #41485]
974

975
976
977
978
- Updated contrib/dhcp-lease-list.pl to handle garbage in the oui file better
  and to print out the hostnames a bit better.
  Thanks to Antoine Beaupré from Debian for the suggested patch.
  [ISC-Bugs #41288]
979

980
981
982
983
- The DHCPv6 server now handles long valid and preferred lease times better.
  Values that would cause the internal end time of the lease to wrap are
  modified to work as infinite.
  [ISC-Bugs #40773]
984

985
986
987
- Updated support for cross compiling by allowing the library archiver
  to be set at configure time via the environment variable 'AR'.
  [ISC-Bugs #41536]
988

989
990
991
992
993
- The server will now match DHCPv6 relayed clients to host declarations
  which include the "hardware" statement, if the relay connected to the
  client supplies the client's hardware address via client-linklayer-address
  option as per RFC 6939.
  [ISC-Bugs #40334]
994

995
996
997
998
- Allow a filename to be specified instead of /dev/random during
  configuration.  This is passed to the BIND configuration to allow
  for cross compilation.
  [ISC-Bugs #33835]
999

1000
1001
- Add more option definitions.
  [ISC-Bugs #40562]
1002

1003
1004
1005
- Correct outputting of long lines in the lease file when writing
  a lease that includes long strings in an execute statement.
  [ISC-Bugs #40994]
1006

1007
1008
1009
1010
1011
1012
1013
- The server will now correctly treat a lease as reserved when the client
  requests an infinite lease time (i.e. OxFFFFFFFF) and "infinite-is-reserved"
  is enabled.  Prior to this the server would halt.  In addition, corrections
  were made to the server to allow a lease's flags field to be set via omapi.
  Prior to this, the server, depending on the host architecture,  would
  incorrectly parse the new flags value from the omapi message.
  [ISC-Bugs #31179]
1014

1015
1016
1017
1018
- ISC DHCP can now be configured and built from a directory other than
  the top level source directory. Note that "make distcheck" uses this
  feature.
  [ISC-Bugs #39262]
1019

1020
1021
1022
1023
1024
1025
- Add support for RFC 3527 to dhcrelay.  A new, dhcrelay command line argument,
  "-U <interface>" enables the addition of a RFC 3527 compliant link selection
  suboption to the agent option added for clients directly connected to the
  relay.
  [ISC-Bugs #34875]
  [ISC-Bugs #41708]
1026

1027
1028
1029
1030
- Add a new global DHCPv6 option, dhcpv6-set-tee-times, which when enabled
  instructs the server to calculate T1 and T2 as recommended in RFC 3315,
  Section 22.4.
  [ISC-Bugs #25687]
1031

1032
1033
- Corrected minor Coverity issues.
  [ISC-Bugs #35144]
1034

1035
1036
1037
1038
1039
1040
1041
1042
- Add support for RFC 7341 DHCPv4 over DHCPv6 with a new configuration
  option "--enable-dhcpv4o6". Note this feature requires DHCPv6 support
  and is not compatible with delayed-ack. Both client and server use 2
  processes which communicate over UDP on a pair of sockets. The new
  "-4o6 <port>" command line argument enables DHCPv4 over DHCPv6 support
  and specifies the consecutive ports to use for inter-process communication.
  Please look at doc/DHCPv4-over-DHCPv6 for more details.
  [ISC-Bugs #35711]
1043

1044
1045
1046
1047
- Correct interface name formation when using DLPI under Solaris 11. As of
  Solaris 11, ethernet device files are located in "/dev/net".  The configure
  script has been modified to detect this situation and adjust the directory
  used accordingly. Thanks to Jarkko Torppa for reporting this issue and
1048
  submitting a patch
1049
1050
  [ISC-Bugs #37954]
  [ISC-Bugs #40752]
1051

1052
1053
1054
- Add a dereference call when handling an error condition while
  decoding a packet.
  [ISC-Bugs #41774]
1055

1056
1057
1058
1059
1060
1061
- Add a new parameter, lease-id-format, to both dhcpd and dhclient. The
  parameter controls the format in which certain values are written to lease
  files.  Formats supported are octal - quoted string containing octal
  escapes, and hex - unquoted, colon separated hex digits.  Thanks to
  Jay Ford, University of Iowa for bringing the issue to our attention.
  [ISC-Bugs #26378]
1062

1063
1064
1065
1066
! Add an option in site.h to limit the number of failover and control
  connections the server will accept.  By default this is 200.
  [ISC-Bugs #41845]
  CVE: CVE-2016-2774
1067

1068
1069
- Fixed util/bindvar.sh error handling.
  [ISC-Bugs #41973]
1070

1071
1072
1073
- Correct error message in relay to use remote id length instead
  of circuit id length.
  [ISC-Bugs #42556]
1074

1075
1076
1077
1078
- Add support for including an encapsulated option in a response
  from the DHCPv6 server.  This allows the v6 FQDN option to be
  returned in responses.
  [ISC-Bugs #29246]
1079

1080
1081
1082
1083
- Add logic to test directory Makefiles to avoid copying Attfile(s)
  when building within the source tree.  This eliminates a noisy but
  otherwise harmless error message when running "make check".
  [ISC-Bugs #41883]
1084

1085
1086
- Leases are now scrubbed of certain prior use information when pool
  re-balancing reassigns them from one FO peer to the other.  This
1087
1088
1089
1090
  corrects an issue where leases that were offered but not used
  by the client retained the client hostname from the original
  client. Thanks to Pavel Polacek, Jan Evangelista Purkyne University
  for reporting the issue.
1091
  [ISC-Bugs #42008]
1092

1093
1094
1095
1096
- In the LDAP code and schema add some missing '6' characters to use
  the v6 instead of the v4 versions.  Thanks to Denis Taranushin for
  reporting this issue and supplying its patch.
  [ISC-Bugs #42666]
1097

1098
1099
1100
1101
- Correct how the pick-first-value expression is written to a lease
  file.  Previously it was written as a concat expression due to
  a cut and paste error.
  [ISC-Bugs #42253]
1102

1103
1104
1105
- Modify the DDNS code to clean up the PTR record even if there
  are issues while cleaning up the A or AAAA records.
  [ISC-Bugs #23954]
1106

1107
1108
1109
- Added global configuration parameter, abandon-lease-time, which determines
  the amount of time a lease remains abandoned.  The default is 84600 seconds.
  Additionaly, the server now conducts a ping check (if ping checks are
1110
1111
1112
  enabled) prior to offering an abandoned lease to client. Our thanks to
  David Zych at University of Illinois for reporting the issue and working
  with us to produce a viable solution.
1113
  [ISC-Bugs #41815]
1114

1115
1116
- Correct handling of interface names during interface discovery. This
  addresses an issue where interface names of 15 characters in length
1117
  could lead to crashes or interface recognition errors during startup
1118
1119
  of dhcpd, dhclient, and dhcrelay.
  [ISC-Bugs #42226]
1120

1121
- Updates to contrib/dhcp-lease-list.pl to make it more friendly.
1122
  The updates are: looking for the lease file in more places and skipping
1123
  the "processing complete" output when creating machine readable
1124
1125
  output.  Thanks to Cameron Paine (cbp at null dot net) for the
  patch.
1126
  [ISC-Bugs #42113]
1127

1128
1129
1130
1131
1132
1133
- When reusing a lease for dhcp-cache-threshold return the hostname
  to the original lease.  Also if the host pointer, UID or hardware address
  change don't allow reuse of the lease.
  Thanks to Michael Vincent for reporting this and helping us
  verify the problem and fix.
  [ISC-Bugs #42849]
1134

1135
1136
1137
- Change dmalloc to use a size_t as the length argument to bring it
  in line with the call it will make to malloc().
  [ISC-Bugs #40843]
1138

1139
- If the failover socket can't be bound, close it.  Otherwise if the
1140
1141
1142
1143
  user configures an incorrect address in the failover stanza the
  server will continue to open new sockets every 90 seconds until
  it runs out.
  [ISC-Bugs #42452]
1144

1145
1146
1147
1148
- Add DHCPv4-mode, dhcrelay command line options, "-iu" and "-id", that
  allow interfaces to be upstream or downstream respectively.  Upstream
  interfaces will accept and forward only BOOTP replies, while downstream
  interfaces will accept and forward only BOOTP requests.
1149
1150
  [ISC-Bugs #41547]

1151
1152
1153
- Clean up some memory references in the vendor-class construct.
  [ISC-Bugs #42984]

1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
- Removed an extraneous expression in omapi socket callback function. Prior
  to this change, the logic was techinically incorrect but other factors
  ensured the outcome itself was correct.  This change was made primarily
  for code clarity. Thanks to Ganesh Pinjala for bringing the issue to our
  attention.
  [ISC-Bugs #42834]

- Corrected a bug which could cause the server to sporadically crash while
  loading lease files with the lease-id-format is set to "hex".  Our thanks
  to Jay Ford, University of Iowa for reporting the issue.
  [ISC-Bugs #43185]

- Eliminated a noisy, but otherwise harmless debug log statment that may
  appear during server startup when building with --enable-binary-leases
  and configuring multiple pools in a shared network.  Thanks to Fernando
  Soto from BlueCat Networks for reporting the issue and supplying a patch.
  [ISC-Bugs #43262]

1172
- The configure script for use with libtool now catches a failure to
1173
1174
1175
1176
  execute autoreconf. Prior to this, autoreconf failures would go undetected
  causing the legacy configure script to loop when run with --enable-libtool.
  [ISC-Bugs #43546]

1177
1178
1179
1180
1181
1182
1183
- When replying to a DHCPINFORM, the server will now include options specified
  at the pool scope, provided the ciaddr field of the DHCPINFORM is populated.
  Prior to this the server only evaluated options down to the subnet scope.
  Thanks to Fernando Soto at BlueCat Networks for reporting the issue.
  [ISC-Bugs #43219]
  [ISC-Bugs #45051]

Francis Dupont's avatar
Francis Dupont committed
1184
1185
1186
1187
- When memory allocation fails in a repeated way the process writes
  "Run out of memory." on the standard error and exists with status 1.
  [ISC-Bugs #32744]

1188
1189
1190
1191
1192
- The new lmdb (Lightning Memory DataBase) bind9 configure option is
  now disabled by default to avoid the presence of this library to be
  detected which can lead to a link failure.
  [ISC-Bugs #45069]

1193
- The linux interface discovery code has been modified to use getifaddrs()
1194
1195
  as is done for BSD and OS-X.  Prior to this the code would only recognize
  the first address on an interface and thereby omit vlans.
1196
  Thanks to Jiri Popelka at Redhat, Marius Tomaschewski at SUSE, and Wei
1197
1198
1199
1200
1201
  Kong at Novell, who all submitted patches.
  [ISC-Bugs #28761]
  [ISC-Bugs #31992]
  [ISC-Bugs #25428]
  [ISC-Bugs #31940]
1202
  [ISC-Bugs #32935]
1203

1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
- Fixed a bug in OMAPI that causes omshell to crash when a name-value
  pair with a zero length value is shipped in an object. Thanks to
  Fernando Soto at BlueCat Networks for reporting the issue and
  supplying the patch.
  [ISC-Bugs #29108]

- On 64-bit platforms, dhclient now generates the correct value for the
  script environment variable, "expiry", the lease expiry value exceeds
  0x7FFFFFFF.  Prior to this such values would produce negative values
  for expiry in the script environment.
  [ISC-Bugs #43326]

- Common timer logic was modified to cap the maximum timeout values at
  0x7FFFFFFF - 1. Values larger than that were causing fatal timer out of
  range errors on 64-bit platforms. Thanks to Jiri Popelka at Red Hat for
  reporting the issue.
  [ISC-Bugs #28038]

- DHCP6 FQDN option unpacking code now correctly handles values that contain
  spaces, special, or non-printable characters.  Prior to this the buffer
1224
  size needed was underestimated causing a conversion error message to
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
  be logged and DNS updates to be skipped. Thanks to Fernando Soto at
  BlueCat Networks for bringing the matter to our attention.
  [ISC-Bugs #43592]

- When running in -6 mode, dhclient now enforces the require option statement
  and will discard offered leases that do not contain all the required
  options specified in the client configuration.  Prior to this the client
  would still consider such leases.  This may be disabled at compile time
  (see ENFORCE_DHCPV6_CLIENT_REQUIRE in includes/site.h). Thanks to
  Mritunjaykumar Dubey at Nokia for reporting the issue.
  [ISC-Bugs #41473]

- Altered DHCPv4 lease time calculation to avoid roll over errors on 64-bit
  OS systems when using -1 or large values for default-lease-time.  Rollover
  values will be replaced with 0x7FFFFFFF - 1.  This alleviates unintentionally
  short expiration times being handed out when infinite lease times (-1) in
1241
  conjunction with failover.  Our thanks to Alessandro Gherardi for bringing
1242
  the issue to our attention.
1243
  [ISC-Bugs #41976]
Francis Dupont's avatar
Francis Dupont committed
1244

1245
1246
1247
1248
1249
1250
1251
1252
- The server nows checks both the address and length of a prefix delegation
  when attempting to match it to a prefix pool.  This ensures the server
  responds properly when pool configurations change such that once valid,
  "in-pool" delegations are now treated as being invalid.  During lease
  file loading at startup, the server will discard any PD leases that
  are deemed "out-of-pool" either by address or mis-matched prefix length.
  Clients seeking to renew or rebind such leases will get a response of
  No Binding in the case of the former, and the prefix delegation with
1253
1254
  lifetimes set to zero in the case of the latter.  Thanks to Mark Nejedlo
  at TDS Telecom for reporting this issue.
1255
1256
  [ISC-Bugs #35378]

1257
1258
1259
1260
1261
- The server now detects failover peers that are not referenced in at least
  one pool when run with the command line option for test mode, -T.  Prior to
  this the check was performed too far down stream to be detected in test mode.
  [ISC-Bugs #29892]

1262
1263
1264
1265
1266
- Changed severity of the log message indicating UDP checksum errors in
  the received packets from 'info' to 'debug' to avoid logging excessive
  number of false positives when UDP checksum offloading is enabled.
  [ISC-bugs #41757]

1267
1268
1269
- Replaced ifconfig parameters "add" and "delete" with "alias" and "-alias"
  for IPv6 mode in the client scripts, netbsd and openbsd.  This was
  preventing IPv6 addresses from being added or removed from interfaces.
1270
  Thanks to Tim Dean for reporting this issue.
1271
1272
  [ISC-bugs #31573]

1273
1274
1275
1276
1277
- Corrected an issue where the server would return a client's previously
  released prefix lease even when the client provides a prefix length
  hint that does not match the prior lease.  Now the server will only
  return the previous lease if it exactly matches the hint.  If not
  it will attempt to allocate a new prefix based on the hint and the
1278
1279
  prefix-length-mode.  Thanks to Tim DeNike - Lightspeed Communications
  for pointing out the error of our ways.
1280
1281
  [ISC-bugs #45780]

1282
1283
1284
1285
1286
- Added explicit include of BIND9 isc/util.h to adapt to revisisions
  in BIND9 (see BIND9 ticket #46311).  Prior to this the build was failing
  with implicit function declarations errors for POST() and INSIST().
  [ISC-bugs #46332]

1287
1288
1289
1290
1291
1292
- Added to code ignore empty IPv4 host name option (code 12). While RFC 2132
  states the option cannot be empty, some clients are apparently capable of
  sending it. Prior to this the server was attempting to use it and store it
  in the lease file causing issues with DDNS and so forth.
  [ISC-bugs #43786]

1293
1294
1295
1296
1297
- Replaced iasubopt::heap_index with separate values for active and inactive
  heaps: iasubopt::active_index and iasubopt::inactive_index.  This was done
  to accomodate a change in behavior in BIND9 isc_heap_delete().
  [ISC-bugs #46719]

1298
! Plugged a socket descriptor leak in OMAPI, that can occur when there is
1299
  data pending to be written to an OMAPI connection, when the connection
1300
1301
1302
  is closed by the reader. Thanks to Pavel Zhukov at RedHat for bringing
  this issue to our attention and whose patch helped guide us in the right
  direction.
1303
1304
  [ISc-Bugs #46767]

1305
			Changes since 4.2.0 (new features)
1306
1307
1308
1309
1310
1311
1312

- If a client renews before 'dhcp-cache-threshold' percent of its lease
  has elapsed (default 25%), the server will reuse the allocated lease
  (provide a lease within the currently allocated lease-time) rather
  than extend or renew the lease.  This absolves the server of needing
  to perform an fsync() operation on the lease database before reply,
  which improves performance. [ISC-Bugs #22228]
Shawn Routhier's avatar
Shawn Routhier committed
1313
  Updated this patch to support asynchronous DDNS.  If the server is
Jeremy C. Reed's avatar
Jeremy C. Reed committed
1314
  attempting to do DDNS on a lease it should be updated and written to
1315
  disk even if that wouldn't be necessary due to the thresholding.
Shawn Routhier's avatar
Shawn Routhier committed
1316
  [ISC-Bugs #26311]
1317

1318
1319
1320
1321
- The 'no available billing' log line now also logs the name of the last
  matching billing class tried before failing to provide a billing.
  [ISC-Bugs #21759]

1322
1323
1324
1325
- A problem with missing get_hw_addr function when --enable-use-sockets
  was used is now solved on GNU/Linux, BSD and GNU/Hurd systems. Note
  that use-sockets feature was not tested on those systems. Client and
  server code no longer use MAX_PATH constant that is not defined on
Shawn Routhier's avatar
Shawn Routhier committed
1326
  GNU/Hurd systems. [ISC-Bugs #25979]
1327

Shawn Routhier's avatar
Shawn Routhier committed
1328
1329
1330
1331
1332
1333
1334
- Add a perl script in the contrib directory, dhcp-lease-list.pl, which
  can parse v4 lease files and output the lease information in a more
  human friendly manner.  This was written by Christian Hammers with
  some updates by vom and ISC.  This is contributed code and is not
  supported by ISC; however it may be useful to some users.
  [ISC-Bugs #20680]

Shawn Routhier's avatar
Shawn Routhier committed
1335
- Add support in v6 for on-commit, on-expire and on-release.
1336
  [ISC-Bugs #27912]
Shawn Routhier's avatar
Shawn Routhier committed
1337

Shawn Routhier's avatar
Shawn Routhier committed
1338
1339
1340
- Add support for using classes with v6.
  [ISC-Bugs #26510]

Shawn Routhier's avatar
Shawn Routhier committed
1341
1342
1343
1344
1345
1346
1347
- Update the DDNS code to current standards and allow for sharing
  of DDNS entries between v4 and v6 clients.  The new code is used
  if the ddns-update-style is set to "standard", the older code is
  still available if ddns-update-style is set to "interim".  The
  oldest DDNS code "ad-hoc" has been removed.  Thanks to Thomas Pegeot
  who submitted a patch for this issue.  This patch is based on
  that work with some modifications.
1348
  [ISC-Bugs #21139]
Shawn Routhier's avatar
Shawn Routhier committed
1349

1350
1351
1352
1353
1354
1355
- Add a configuration option to the server to suppress using fsync().
  Enabling this option will mean that fsync() is never called.  This
  may provide better performance but there is also a risk that a lease
  will not be properly written to the disk after it has been issued
  to a client and before the server stops.  Using this option is
  not recommended.
1356
  [ISC-Bugs #34810]
1357

1358
1359
1360
1361
1362
1363
1364
- Add some logging statements to indicate when the server is ready
  to serve.  One statement is emitted after the server has finished
  reading its files and is about to enter the dispatch loop.
  This is "Server starting service.".
  The second is emitted when a server determines that both it and
  its failover peer are in the normal state.
  This is "failover peer <name>: Both servers normal."
1365
  [ISC-Bugs #33208]
1366

1367
1368
1369
- Add support for accessing options from v6 relays.  The v6relay
  statement allows the administrator to choose which relay to
  use when searching for an option, see the dhcp-options man page
Shawn Routhier's avatar
Shawn Routhier committed
1370
1371
  for a description.  The host-identifier option has also been
  updated to support the use of relay options, see the dhcpd.conf