[Kea-announce] Kea 1.6.0 is now available

Michael McNally mcnally at isc.org
Wed Aug 28 21:26:55 UTC 2019

On behalf of ISC and the Kea team I'm pleased to announce that
Kea 1.6.0 is now available.  Besides fixes for the three
vulnerabilities disclosed today (CVE-2019-6472, CVE-2019-6473,
and CVE-2019-6474) the 1.6 release contains a whole host of
new features, including major work on Configuration Backend

We invite you to give it a try!

Michael McNally
ISC Support


                Kea 1.6.0, August 28th 2019, Release Notes

Welcome to Kea 1.6.0. Kea is a DHCP implementation developed by Internet
Systems Consortium, Inc. that features fully functional DHCPv4 and DHCPv6
servers, a dynamic DNS update daemon, a Control Agent (CA) that provides a
REST API to control the DHCP and DNS update servers, an example shell client
to connect to the CA, a daemon that is able to retrieve YANG configuration
and updates from Sysrepo, and a DHCP performance-measurement tool. Both DHCP
servers fully support server discovery, address assignment, renewal,
rebinding, release, decline, information request, DNS updates, client
classification, and host reservations. The DHCPv6 server also supports
prefix delegation. Lease information is stored in a CSV file by default; it
can optionally be stored in a MySQL, PostgreSQL, or Cassandra database
instead. Host reservations can be stored in a configuration file, or in a
MySQL, PostgreSQL, or Cassandra database. They can also be retrieved from a
RADIUS server, although this functionality is somewhat limited. Kea DHCPv4
and DHCPv6 daemons provide support for YANG models, which are stored in a
Sysrepo datastore and can be configured via the NETCONF protocol.

The text below references issue numbers. For more details, visit the Kea
GitLab page at https://gitlab.isc.org/isc-projects/kea/issues.

IMPORTANT NOTE: Kea has been in development for almost 8 years now. Over
that period several aspects did not age well and could be improved.
Unfortunately, some of the changes are not backward-compatible and require
small tweaks to existing installations. After much deliberation, ISC decided
to tackle all those problems at once by grouping all of these changes into
this release. We apologize for the inconvenience this change will cause, but
we believe that grouping them into a single release will minimize the
impact. We expect that future releases will not require additional
incompatible changes. The major incompatible changes are:

* Since its beginning, Kea used some file locations that were not compliant
with the recommended FHS (File Hierarchy System). Default file locations for
the lease file, server-duid, log files, and lock files have changed. Files
previously stored in /var/kea are now stored in /var/run/kea. Server hooks
previously installed in /usr/lib/hooks are now installed in
/usr/lib/kea/hooks. The log files are now stored in /var/log/kea (#538,

* The kea-admin commands (lease-init, lease-version, lease-upgrade) were
renamed to better reflect the fact that the database can store much more
than just leases. They're now called db-init, db-version, and db-upgrade

* The logging entry in the configuration file is no longer a global
configuration. This requires a simple configuration file modification. You
need to move your logging entry from the global scope into the Dhcp4, Dhcp6,
DhcpDdns, Control-agent, and/or Netconf scopes (#208).

Please see the [migration to 1.6 wiki
for details.

The major new changes introduced since 1.6.0-beta1 are:

1. **option[x].option[y].hex operator**. This new expression lets you access
any sub-option in a unified way in flex-id and/or in client classification

2. **14 new commands for config-backend**. The new commands are
remote-option{4,6}-network-del, remote-option{4,6}-network-set,
remote-option{4,6}-pool-del, remote-option{4,6}-pool-set,
remote-option{4,6}-subnet-del, remote-option{4,6}-subnet-set,
remote-option6-pd-pool-del, and remote-option6-pd-pool-set. Those commands
let you set DHCPv4 and DHCPv6 options in the configuration backend on
different levels: shared network, subnet, pool, and PD pool. Previously, to
update an option the whole configuration entity (e.g. a shared network) had
to be recreated (#418, #826).

3. **Documentation migrated to Sphinx**. Kea's documentation previously used
an outdated DocBook format. We migrated to Sphinx and in the process
refreshed both the content and look of our documentation. If you don't know
what Sphinx is, take a look at http://kea.readthedocs.io. Besides a more
modern look, Sphinx lets us seamlessly switch between versions. This will
become more apparent when future Kea releases become available (#644, #623,
#679, #698, #736, #760, #762, #764, #777, #780, #807, #809, #810, #824,

3. **YANG/NETCONF update**. The YANG modules were updated to reflect the
latest added parameters in DHCPv4 and DHCPv6. The code has been updated to
compile correctly with the recently released Sysrepo 0.7.8 (#433, #742).

4. **server-tag-get command**. A new command has been implemented that
allows retrieval of a server-tag used by a specific Kea instance (#470).

5. **Log format is now configurable**. With the availability of native DEB
and RPM packages, it became more obvious that the existing systems log much
of the information that Kea already logged, such as timestamp, process name,
or PID. Kea 1.6.0 allows you to configure which meta information is logged

6. **Various configuration backend fixes and improvements**. The
configuration backend received a round of bug fixes and improvements. In
particular, it is now possible to configure client-class information in CB
(#680, #727, #801, #804, #847).

7. **It's easier to define binary options**. Previously, the only way to
define option values in binary format was to use a hex string. While it
covered all cases, it was awkward to use for longer strings. Now you can use
a double-single quote to define binary options, e.g. "'this is a binary
string'" (#761).

8. **Compatibility with new log4cplus**. Distributions with newer log4cplus
versions (2.0.0 or later) with disabled implicit initialization had problems
running Kea. After this fix, Kea 1.6.0 should build cleanly on distros such
as Alpine. This is a stepping-stone for preparing Alpine packages that could
in turn be used for nice, small Docker images (#625).

The major new features and changes introduced since 1.6.0-beta1 are:

1. **Server tags**. The configuration backend is a new feature that lets the
DHCPv4 and DHCPv6 servers manage and fetch their configuration from a MySQL
database. That mechanism was introduced in 1.6.0-beta to allow multiple
servers to share the same MySQL database, effectively letting administrators
deploy the same configuration to all servers. In 1.6.0-final, for each
configuration entity in the configuration backend it is possible to specify
server tags. These tags identify the server(s) that a particular piece of
the configuration should apply to. For example, if you have two subnets,
subnet1 and subnet2, you can instruct the config backend to use subnet1 on
servers A and B and subnet2 on servers B, C, and D. Server tags are
supported for global options, option definitions, shared networks, and
subnets (#676, #710, #711, #712, #713, #714, #715, #716, #717, #737).

2. **Native RPM and DEB packages**. ISC is now providing native packages for
many popular systems. Please go to https://cloudsmith.io/~isc/repos/ to get
the latest packages. Both open source Kea as well as premium and
subscription hooks are available as packages.  ISC packages are available
for currently supported versions of Fedora, CentOS, Ubuntu, and Debian.
Providing RPMs and DEBs is a fairly new task for us, so ISC would love to
hear your feedback on this (#425, #446).

3. **DROP class**. Kea offers a powerful client classification mechanism to
distinguish between various types of devices. You now can use this tool to
drop unwanted traffic. You simply need to define a class with a special name
called DROP; if an incoming packet is assigned to this class, the packet is
dropped immediately (#606).

4. **max-lease-time, min-lease-time**. Until now, Kea allowed administrators
to configure a specific, fixed value for lease lifetimes. Two new optional
parameters - max-lease-time and min-lease-time - allow you to expand this to
a range. Both the DHCPv4 and DHCPv6 protocols allow clients to send hints.
Those new parameters let Kea honor those hints (#295).

5. **lease6-bulk-apply**. Kea provides a high-availability (HA) mechanism
that synchronizes leases between two servers. Each time a new lease is
assigned to a client, the server that assigned it sends a note to its
partner. This works fine in most cases; however, DHCPv6 allows a single
client to get multiple IPv6 address and IPv6 prefixes in one exchange. When
this capability is used, the Kea server sends multiple, separate lease
updates to its partner. With the introduction of lease6-bulk-apply, all of
them are sent in one command, greatly reducing communication delay and thus
improving overall HA performance for DHCPv6 (#683, #689).

6. **sanity-check improvements**. A number of small improvements in sanity
check for leases have been implemented. Due to the way leases are loaded
from a file and managed in memory in the memfile backend, Kea could display
repeated warnings about leases. This problem has been greatly mitigated and
the sanity checker got smarter (#685, #686).

7. **Broken packet-handling improved**. Three cases of incorrect handling of
broken packets were fixed. In two cases, it could cause DHCPv4 or DHCPv6
daemon to terminate on assert. A third case could make Kea write a malformed
lease to file and then, if over 100 of such leases were written, cause Kea
to fail on restart due to an excessive number of errors. The logic is now
updated to by default not give up after 100 errors, but to continue working
through the lease file. An optional parameter 'max-row-errors' has been
introduced (#722, #730, #805).

The major new features and changes introduced since the 1.5.0 version are:

1. **Config Backend**. Kea Configuration Backend (abbreviated as Config
Backend or CB) is a new feature which lets the DHCPv4 and DHCPv6 servers
manage and fetch their configuration from one or more MySQL databases. The
MySQL CB implementation is distributed as a hooks library. You can now store
most of the Kea configuration in the CB: global parameters, shared networks,
subnets, pools, options, and option definitions. Instead of specifying these
parameters in your local configuration, you can now put this information in
the database and simply tell Kea where to find it. Kea will merge the
parameters from the CB with other parameters configured locally (such as
interfaces). Kea can periodically poll the CB and retrieve updates. This
will greatly simplify automated configuration change deployments.

The most basic configuration for CB looks more or less like this:

 "Dhcp4": {
        "config-control": {
            "config-databases": [
                    "type": "mysql",
                    "name": "kea",
                    "user": "kea",
                    "password": "iusedefaultpasswords",
                    "host": ""
            "config-fetch-wait-time": 20
        "hooks-libraries": [

The CB is supported for DHCPv4 and DHCPv6. You can connect multiple Kea
instances to retrieve configurations from the same central database; this
lets you effectively centralize your Kea servers' configuration and push
configuration changes to all your Kea servers.

The configuration backend uses server tags to identify configuration
elements (such as a specific subnet) which should be applied to the server
with that tag. This lets you differentiate configurations between servers
while keeping all configuration elements in the same centralized database.
In future releases (1.7.0 and beyond), we will continue improving and
expanding this mechanism. The improvements will likely include adding more
capabilities for configuration in database storage, such as client classes,
hooks, logging, and network interfaces.

The CB is implemented for MySQL only. This is a conscious decision; we hope
to polish the feature's rough edges on one specific backend before we
implement it for other databases. It is somewhat likely that PostgreSQL will
appear sometime in the future, but that will happen only when the
MySQL-based CB is mostly complete. Unfortunately, due to Cassandra's nature
as a non-relational database and the difficulty of working with it, it is
unlikely we will ever implement a CB for Cassandra.

The config backend is by far the most complex feature ever developed in Kea
and we ask for your honest feedback on it. Did you manage to get it working?
What was easy and what was difficult or not working? What are the features
you'd like to see next?

2. **Management commands for the Config Backend**. The CB stores data in a
MySQL schema that is public. It's possible to insert a configuration into
the MySQL tables manually, or automatically using SQL scripts, but this
requires a reasonably good knowledge of the schema. As an alternative, ISC
has developed a new hooks library that provides management commands for
config backends. It simplifies many typical operations, such as listing,
adding, retrieving, and deleting of global parameters, shared networks,
subnets, pools, options, and option definitions. For a complete list, see
commands starting with "remote-" in [Appendix A of the Kea Administrator
Reference Manual](https://kea.readthedocs.io/en/latest/api.html). The
cb_cmds hooks library is available to subscribers only. If you are not a
subscriber and would like to subscribe, please contact info at isc.org and our
sales team will assist you.

3. **Native packages**. As we continue its development, Kea is adding
integration with other open source products, including NETCONF (provided by
Sysrepo), RADIUS (based on the FreeRADIUS client), and Cassandra. That
flexibility comes at a price, though. It is getting more difficult to
install Kea with those optional dependencies enabled. We also noticed that
some OS distributions lag behind in packaging the latest Kea releases. To
help alleviate both of those problems, ISC has begun providing our own
native (DEB and RPM) packages for several popular distributions. We are
providing packages for current versions of CentOS, Debian, Fedora, and
Ubuntu. The binary packages cover DHCPv4, DHCPv6, DDNS, Control Agent, and
all three (MySQL, PostgreSQL, Cassandra) backends. ISC subscription
customers will also be given an option to conveniently install hooks as
separate packages. In the future we plan to experiment with packaging
NETCONF with Sysrepo and all its necessary dependencies.

4. **Improved compatibility**. Kea follows RFC standards as defined by the
IETF; however, there are some devices out there that are not as strict in
following the standards. Nevertheless, Kea should be able to work with such
devices. Kea 1.6.0 now sends the DHCPv4 message type as the first option
(#530), the trailing null is now stripped from received options (#539),
empty hostnames are handled better (#40), and it's now possible to define
sub-options with codes 0 and 255 (#564).

5. **Control socket for DDNS**. The DDNS daemon has finally gotten its
control socket and can process commands. It's now possible to update its
configuration and in general interact with it while it's running. The
following nine commands are now supported: build-report, config-get,
config-reload, config-set, config-test, config-write, list-commands,
shutdown, and version-get (#30).

6. **Preliminary performance improvements**. While overall performance
improvements will be the major focus of the next Kea release, we conducted
some preliminary work in 1.6. Perfdhcp, a tool for testing performance, is
now multi-threaded (#283) and has a new 'avalanche' mode to simulate a large
number of devices renewing at once. It lets you measure how long it takes to
provision a specified number of devices, with a realistic model of devices
getting impatient and retransmitting when not provided with an answer within
one second. Also, Kea DHCPv4 can now be configured to disable client-id
lookup in a database to speed up operations (#509).

7. **Performance reports**. ISC has started publishing performance reports.
The two documents available now are [Performance report comparing 1.4.0 and
1.5.0](https://kb.isc.org/docs/kea-performance-tests-140-vs-150) and
[Performance optimization

8. **New host cache commands**. Two new commands have been implemented in
the host cache hook: cache-size (which lets you check the current number of
cached entries) and cache-get-by-id (which lets you look up whether an entry
for a specified hardware address, client-id, duid, circuit-id, or flex-id is
in the cache) (#594).

9. **New subnet commands**. Two new commands were added to the subnet_cmds
hook: subnet4-update and subnet6-update. They allow the existing IPv4 and
IPv6 subnets to be tweaked (#465); previously, in order to update an
existing subnet you had to first remove it and then re-add it with the

10. **New host commands**. Two new commands were added to the host_cmds
hook. They allow retrieval of all reservations from a given subnet, either
in one go (reservation-get-all) or page by page (reservation-get-page)
(#313, #511).

11. **High-Availability improvements**. Two improvements have been made in
the High-Availability code. First, it better handles abrupt time changes,
e.g. when NTP changes the system clock (#599). Second, the CA daemon now
adds the Host http header, which makes it possible to set up a reverse HA
proxy with NGINX (#360).

12. **Logging moved** to daemon scope (#273). Earlier Kea versions had the
Logging scope defined at the global level in their JSON configurations, due
to historical reasons that no longer apply. The idea was to have one
configuration file shared by all daemons, but it didn't withstand the test
of time. Kea 1.6.0 moves the Logging entry to specific scopes, such as Dhcp4
or Dhcp6. For the time being, Kea 1.6.0 still accepts the old syntax, but
prints a warning. Future Kea versions will eventually drop that backward
compatibility and will produce an error. Make sure you update your

13. **Automatically calculate renewal and rebind timers** (#365). Earlier
Kea versions had the renewal (t1) and rebind (t2) timers configured manually
with their own defaults. These were simple mechanics that worked in general,
but it was too easy to inadvertently misconfigure Kea. It is now possible to
tell Kea to automatically calculate t1 and t2 times based on valid (v4) or
preferred (v6) lifetimes. See the 'calculate-tee-times', 't1-percent', and
't2-percent' parameters for details.

14. **Hook libraries moved to a separate directory**. Earlier Kea versions
installed hooks in a /usr/lib/hooks/ directory. This was confusing as the
/usr/lib/ directory is shared by all software installed on the system and it
was unclear what the hooks meant. The directory is now called
/usr/lib/kea/hooks. When upgrading to 1.6.0 make sure you update your
configuration to point to the right hooks libraries (#161).

15. **Hammer added**. ISC developed a tool that is used internally to build
VMs and install Kea dependencies on many systems. We thought that, while the
tool is not intended for end-users, there may be power users that could
benefit from having access to such a tool. It is not part of the tarball
release, but it may be retrieved from our GitLab repository (#373).

16. Many small **fixes related to recent OS releases**: NetBSD 8.0 (#165),
Fedora 29 (#354), FreeBSD 11.2 (#367), CentOS 7 (#380), macOS/XCode (#561),
Ubuntu 19.04 (#589), and installation on Debian 9 with MariaDB 10.1 (#389).

17. **RADIUS improvements**. RADIUS has gotten a round of improvements: a
memory leak has been fixed (#415), accounting is now better-documented
(#416), and RADIUS with shared networks works much better (#474).

18. **Cassandra consistency** is now a configurable parameter (#16).

19. **Kea can recalculate statistics** when the server configuration changes
(#394). This addresses a problem when statistics were reflecting an old
configuration and didn't take into account configuration changes since the
last full server reconfiguration.

20. **Better debugging of flex-id** for non-printable characters (#21).

This release includes TODO issues addressed since 1.5.0 (TODO in 1.6.0-beta
and TODO in 1.6.0-final).

## Changes to Release Model
Beginning with this release, we plan to change the release model for Kea. We
will stabilize every even-numbered minor version (second digit of the
version number is even) for production use. Therefore, 1.6.x, 1.8.x, 2.0.x
will be stable versions. We will also begin producing development versions
on every odd-numbered minor version branch, including 1.7.x, 1.9.x and so
on. For more details on the plan, see ISC's Software Support Policy at

## License
This version of Kea is released under the Mozilla Public License, version


The premium and subscriber-only hook libraries are provided in source code
form, under the terms of an End User License Agreement (you will get the
source code that you can modify freely, but you are not permitted to
redistribute it).

## Testing premium and subscriber-only hooks

ISC Kea support customers will receive tickets inviting them to download the
premium hooks, which are included with the support subscription. If you are
interested in testing premium hooks and do not have a Kea support contract,
please contact info at isc dot org to request a trial copy.

## Download

Pre-built ISC packages for current versions of the most popular Linux
operating systems are available at:


The Kea source and PGP signature for this release may be downloaded from:


The signature was generated with the ISC code signing key which is available


ISC provides detailed documentation, including installation instructions and
usage tutorials, in the Kea Administrator Reference Manual. Documentation is
included with the installation or via
https://kb.isc.org/docs/kea-administrator-reference-manual in HTML, plain
text, or PDF formats. ISC maintains a public open source code tree, wiki,
issue tracking system, milestone planning, and a roadmap at

Limitations and known issues with this release can be found at

We ask users of this software to please let us know how it worked for you
and what operating system you tested on. Feel free to share your feedback on
the Kea Users mailing list
(https://lists.isc.org/mailman/listinfo/kea-users).  Also we would like to
hear whether the documentation is adequate and accurate. Please open tickets
in the Kea GitLab project for bugs, documentation omissions and errors, and
enhancement requests. We want to hear from you even if everything worked.

## Support

Professional support for Kea is available from ISC. We encourage all
professional users to consider this option; Kea maintenance is funded with
support subscriptions. For more information on ISC's Kea and DHCP software
support see https://www.isc.org/support/.

Free best-effort support is provided by our user community via a mailing
list. Information on all public email lists is available at
https://www.isc.org/community/mailing-list. If you have any comments or
questions about working with Kea, please share them to the Kea Users List
(https://lists.isc.org/mailman/listinfo/kea-users). Bugs and feature
requests may be submitted via GitLab at

## Changes

The following summarizes changes and important upgrade notes since the
previous release (1.6.0-beta2).

1658.	[bug]		tmark
	Renamed the column "array" in option definition tables
	in MySQL schema to "is_array" to avoid a reserved word
	conflict introduced by MySQL 8.0.17.
	(Gitlab #853,!26-p, git 6665c3b6d0f9f2a45b7710e8e9a36fff8f99bf7f)

1657.	[bug]		marcin, tomek
	Corrected multiple occurrences of out of bounds vector reads.
	These could cause server to assert when GLIBCXX_ASSERTIONS
	was enabled during compilation. Also, eliminated overflows as
	a result of strncpy.
	(Gitlab #851,!24-p, git 4b1d6ffc5ae4f1e1fa5990a644c9786e7f6afea6)

1656.	[bug]		marcin
	Corrected a bug in the Kea MySQL Configuration Backend which
	caused the Kea DHCPv6 server to incorrectly require the server
	tag to be provided with the remote-subnet6-option-set command.
	In addition, corrected issues with setting and deleting
	pool specific DHCP options via the Configuration Backend.
	(Gitlab #847,!23-p, git 578bc6c997679c507c2f9e419783d34de77816cd)

1655.	[bug]		marcin
	Corrected a bug in the Kea MySQL Configuration Backend which
	prevented the DHCP servers from discovering and fetching the
	changes applied with the new commands. The new commands set
	and delete the options embedded within the subnets, shared
	networks and pools.
	(Gitlab #845,!22-p, git 7fb2255b212e4e98ff4dbf6d8e2e0ada78701110)

1654.	[sec]		tmark
	kea-dhcp4 Memfile logic now ensures during reading and writing
	that leases which are not in the declined state, have either
	a hardware address, client id, or both. kea-dhcp6 Memfile logic
	now ensures leases which are not declined have a non-empty DUID.
	(Gitlab #805,!6-p, git 9705445210cf2a5c4bbe86fde4ce010c45b7aac1)

1653.	[sec]		tmark
	Added a new parameter, "max-row-errors", to Memfile lease database
	configuration for kea-dhcp4 and kea-dhcp6.  This parameter can be
	used to limit the number of rows discarded due to error during
	lease file loading after which the server will abandon the effort
	and exit. The default value of 0 disables the limit.
	(Gitlab #805,!5-p git af7393c517cea37a7091075e5d0d24793bccf013)

1652.	[sec]		tmark
	Prevent the DHCP servers from asserting when malformed
	hostname or FQDN options are received.  Now the servers will
	drop the DHCP packets containing the malformed options.
	(Gitlab #730,!2-p git a2a98c421bb400a81218bd28d6a6f62accd31b1f)

1651.	[sec]		tmark
	Added logic to kea-dhcp6 to catch values for client or
	server DUIDs that exceed 128 bytes to inbound packet
	sanity checking.
	(Gitlab #722,!1-p git bb1a64b8945950f4439121ce4fef566d37c8630c)

1650.	[build]		marcin
	Bumped up library version numbers for Kea 1.6.0 final release.
	(Gitlab #841,!490, git 2e88e2554905dd66b9974c9fc513ee7e7b825a46)

1649.	[doc]		sgoldlust
	API documentation updated and cleaned up.
	(Gitlab #810,!471, git f1ae84186beb54d45f8455236827108289b0b0d6)

1648.	[func]		fdupont,marcin
	Client classification information (client-class,
	require-client-classes) and excluded prefix (excluded-prefix,
	excluded-prefix-len) may now be specified in the MySQL
	Configuration Backend.
	(Gitlab #659,!387, git 1f2cae397b48e2a28a7a7e61f6392691b9d32c13)

1647.	[doc]		marcin
	Updated "Local and Relayed Traffic in Shared Networks" sections
	of the Kea ARM. Explained that all subnets within a shared
	network should have the same subnet selector, i.e. interface
	name or relay IP address.
	(Gitlab #496,!483, git 1335e5643cc142c65bfc49c13280e9aaf3eeec21)

1646.	[func]		fdupont
	YANG models updated to cover the latest parameters:
	pattern and max-row-errors.
	(Gitlab #823,!477, git 79d0d45ec0c791560e297ca77fc88842b0a33868)

1645.	[func]		tmark
	Binary option data may now be specified as a single-quoted
	text string, within double quotes: "'some text'".  This is
	handy for binary options that convey text such as urls or
	file names.
	(Gitlab #761,!447, git 215d84f00208ac8a2710c28abc3386d6b765ede6)

1644.	[doc]		marcin, fdupont
	Added a warning about class dependence on built-in classes.
	(Gitlab #727,!466, git 9977d2927cf9b9cf1cd13de30aa5551ca900165b)

1643.	[build]		godfryd
	Added an optional --with-site-packages switch to configure
	script. It allows python package installation in a separate
	directory (mostly useful on Debian systems when building native
	(Gitlab #721,#480, git 66332000ff618fbb41656981c7bbf3bb940066fe)

1642.	[doc]		fdupont, marcin
	User documentation for remote-option{4,6}-* commands.
	(Gitlab #826,!479, git 9b469ab63a9627e377a219cf8f83033e4e613b11)

1641.	[func]		tmark
	Added a new Logger output option, 'pattern', which can be
	used to customize log message content and layout.
	(Gitlab #665,!460, git 2add51ecf0d91d2a9ac797594c38472190c18460)

1640.	[func]		fdupont
	Added sub-option expression for client classification and flex-id.
	Users can access sub-option with option[12].option[34].hex or
	(Gitlab #150,!385, git 70bb412f20b706484538680906d6fcfd7ee6da68)

1639.	[func]		fdupont
	Updated YANG models with the latest changes in kea-dhcp4 and
	(Gitlab #433,!473, git c46e8da1561e7d0c6c6f481d2e32cc9ae398324c)

1638.	[bug]		franek, razvan
	Kea statistics improvements: Correct statistic-get{all} commands.
	(Gitlab #756,!470, git 59fb24794af8a9ca8ee3621bc01dfd507350b2c1)

1637.	[bug]		tmark
	Corrected an issue in kea-dhcp6 where the server would assign
	a different lease each time a client with a dynamic host
	reservation returned via a SOLICIT.
	(Gitlab #754,!440, git c548d9330e6f626e538343c5e6361457057efdd7)

1636.	[bug]		razvan
	Http request and response parser now accepts 0 for Content-Length.
	(Gitlab #708,!423, git 09d75804e050083b502a96c8e77b0e98c735ae3d)

1635.	[doc]		godfryd, tomek
	Converted API documentation to Sphinx format.
	(Gitlab #777,!464, git 3ba1a265537330308c313a38b85e84cbe02704ae)

1634.	[func]		franek, razvan
	Kea statistics improvements: Added commands for set sample age and
	set sample count.
	(Gitlab #731,!459, git dde1b96b33ed20dbe2c815f1168e62b66635e39f)

1633.	[bug]		fdupont
	Added missing YANG Kea test module in distributions.
	(Gitlab #747,!436, git a800e79c7917acc723cbc71b626adc360e15a8d7)

1632.	[doc]		razvan, tmark
	Fixed doc examples.
	(Gitlab #649,!381, git e14b90735ff57be0776270364064952d353d7e3a)

1631.	[bug]		marcin
	Corrected the bug in mysql_cb hooks library which in some cases
	caused the pools to be orphaned and left in the database after
	the subnet has been updated.
	(Gitlab #632,!438, git ea15b537d62c66e03923b5fdce91db8795f436b4)

1630.	[build]		fdupont
	Added support for sysrepo 0.7.8 (and libyang 1.0-r3).
	(Gitlab #742,!430, git 6776a829f90768225ea794145e522560d26fe959)

1629.	[func]		tmark
	High Availability logging now also emits server and partner system
	times when reporting clock skew issues.  Prior to this it reported
	only the skew between the two servers.
	(Gitlab #174,!414, git 9715ddecb0143d997a57edea564f5c180a7f8577)

1628.	[bug]		fdupont
	Improved the error message from MySQL CB -set commands when
	a specified server does not exist.
	(Gitlab #732,!429, git 82f34e60363eec72a117939a5526bdb1ececb53c)

1627.	[func]		fdupont
	Added new command server-tag-get to DHCPv4 and DHCPv6 servers.
	(Gitlab #470,!386, git 3cb43f112662ba3f9d2fc7152dfa1639401b1491)

1626.	[bug]		marcin
	Automatically delete embedded options as a result of deleting
	a subnet, pool or shared network from the MySQL Configuration
	Backend. Prior to this change, the options were unnecessarily
	left in the database. The database schema version was affected
	and its version bumped up to 8.2.
	(Gitlab #680,!426, git 03f0af3900bdd9eaa951b23cc9508f0618d3f1bb)

The following summarizes changes and important upgrade notes since the
previous release (1.6.0-beta).

1625.	[build]		tmark, marcin
	Bumped up libraries version numbers for Kea 1.6.0 beta2 release.
	(Gitlab #740,!427, git 359fe51531e802f052bd4172d4e295378155dbd5)

1624.	[doc]		marcin
	Documented a usage of the server tags with the Kea Configuration
	Backend in the Kea ARM.
	(Gitlab #643,!421, git 4c60b02e619bce2c434bbf9ee0e775d8776b2d74)

1623.	[bug]		fdupont
	Eliminated the issue whereby the DHCP server could terminate as a
	result of the remote-network4-del and remote-network6-del commands.
	(Gitlab #738,!425, git b34151b647aae8690fe0996090e13403a8e3ad55)

1622.	[bug]		fdupont
	Corrected server tags returned with the metadata when fetching
	option definitions from the MySQL configuration backend
	(Gitlab #737,!424, git 1cc95ae2a66102427e583b4924383fd414e24f0f)

1621.	[func]		fdupont
	Both kea-dhcp4 and kea-dhcp6 now support a special class, 'DROP'.
	When the class is defined, inbound client packets that match the
	class's match expression will be dropped without further processing.
	Each such drop is logged at DEBUG level and accounted for in
	drop statistics.
	(Gitlab #606,!375, git bfa5b2c50324e9d2339daa8309774f49a5e7bf3c)

1620.	[func]		franek, razvan
	Kea statistics improvements: Support for storing more than one
	(Gitlab #696,!418, git c7b8c275758c96f56081e02da429f5dd9d653b87)

1619.	[func]		marcin
	Add support for associating subnets with the server tags in the
	mysql_cb hooks library.
	(Gitlab #717,!417, git e121ec4e0a04bc5bebdbfecf9cc1606b50e71263)

1618.	[func]		marcin
	Add support for associating the shared networks with the server
	tags in the mysql_cb hooks library.
	(Gitlab #716,!412, git 326fdbeb51dc1f6eebbdbbdcce78cfac87a61bd9)

1617.	[bug]		fdupont
	During the application of the config backend the external config
	is initialized to the default values so when a global parameter
	is changed and deleted it gets back a sane value.
	(Gitlab #630,!355, git 237afd3c512ed4d05ae76de76cce21dca643a889)

1616.	[func]		fdupont
	Renamed kea-admin lease-init, lease-version and lease-upgrade
	commands to db-init, db-version and db-upgrade. Only the lease-*
	command is now lease-dump.
	(Gitlab #466,!393, git cbd2ed23f2ea0649ccf608fe818197d2923108f0)

1615.	[func]		fdupont
	Added check for keyword name and type in parsers of objects
	managed by the config backend (options, option definitions,
	subnets and shared networks).
	(Gitlab #575,!358, git c9d87afad8db924da0aadc1b8ab40638bd0a6738)

1614.	[func]		marcin
	Add support for associating the DHCP option definitions with
	the server tags in the mysql_cb hooks library.
	(Gitlab #715,!411, git 5511725555138213de4f48dc1091d65b5db47034)

1613.	[func]		marcin
	Add support for associating the global DHCP options with the
	server tags in the mysql_cb hooks library.
	(Gitlab #714,!409, git 711c1dca9de388b786942fe5bedb8b8cf63b85ba)

1612.	[bug]		razvan
	Fixed crash caused by unloading premium libraries which use
	custom host cache containers.
	(Gitlab #639,!410, git d3f7e9d9a18d93fb014c8e637e15c6ae9ca9269e)

1611.	[doc]		fdupont
	Clarified how Kea handles subnet prefixes in server configuration.
	(Gitlab #419,!333, git f260b51148b4f7584165e13fcf2320fdd5992a74)

1610.	[build]		fdupont
	Removed the obsolete compatcheck top directory.
	(Gitlab #667,!391, git 8cb113a52f0cf56fbdb5cb0e87464135234c2ac1)

1609.	[bug]		fdupont
	Fixed the implementation of authentication keys in DHCPv6
	host reservations. Please note this includes a PostgreSQL
	schema update.
	(Gitlab #550,!297, git f45511f0445cd4204671771175f7f0d34df54b0e)

1608.	[bug]		fdupont
	Missing debug DHCP6_PACKET_SEND logging message was added.
	(Gitlab #699,!401, git ac96edbe30be5c93f5e3d2512961f1bc99c3253a)

1607.	[bug]		tmark
	Corrected an initialization issue which caused lease sanity
	checking to be enabled inside the Lease File Cleanup (LFC)
	process.  The LFC cannot meaningfully perform sanity checking
	as it does not have access to the full server configuration.
	(Gitlab #686,!403 git 68b2cb0385779ef0c520164e418dee124d7cb364)

1606.	[bug]		tmark
	Corrected an error with retrieving DHCPv6 leases, whose IAID
	values are larger than int32_t max, from Postgresql lease
	(Gitlab #651,!384, git 67e047df61d56558d474514a21ed0db96152557a)

1605.	[func]		marcin
	Extended mysql_cb hooks library to support new API calls for
	managing the DHCP servers in the database. In addition, added
	support for associating the global parameters with the server
	(Gitlab #642,!373, git 8ca1021809a6c44cf8a6589a959e94ca9ca76c29)

1604.	[bug]		fdupont
	Improved configuration failure messages when the problem is
	from the configuration backend and not the configuration file.
	(Gitlab #616,!379, git 637e9f03cc502068822ab0310f2e070d4a4da339)

1603.	[perf]		tmark
	High Availability now registers its HTTP sockets with Interface
	Manager's main thread allowing the thread can monitor them for
	IO readiness. This should improve the responsiveness of HA peers
	to each other.
	(Gitlab #691,!395, git 4a0b024bc6d83b26fe702d95ee7ce0c914b37d8e)

1602.	[func]		fdupont
	Added more information to sanity-checker log messages.
	(Gitlab #685,!392, git 5367cd1196662739bbff5e99072ab6a55cfb0489)

1601.	[func]		fdupont
	Kea servers now add the lease validity lifetime to informational
	lease allocation log messages.
	(Gitlan #694,!399, git cb29b532cf1f8790f9752d7e8253b0aa31ce05e6)

1600.	[bug]		fdupont
	Fixed prefixLengthFromRange() routine.
	(Gitlab #583.!377, git 10bd31217d8a0a77345c4cba7a59314f70c1b509)

1599.	[perf]		marcin
	Improved performance of the DHCPv6 server running with High
	Availability by aggregating multiple lease updates in a single
	lease6-bulk-apply command instead of generating multiple
	lease6-update commands, one for each allocated lease.
	(Gitlab #689,!394, git 65021b840b94da3d118e541fba5469c8ed15175b)

1598.	[bug]		razvan
	Added unittests for long (> 65536 chars) tokens in parsed configs
	so any crash related to parsers could be detected.
	(Gitlab #604,!376, git 811735b67fcdb5592c3e020792c154f2f454259c)

1597.	[func]		fdupont
	Added new configuration parameters for handling user lease
	time hints to kea-dhcp4: min-valid-lifetime and max-valid-lifetime;
	and to kea-dhcp6: min-preferred-lifetime, max-preferred-lifetime,
	min-valid-lifetime, and max-valid-lifetime.
	(Gitlab #295,!325, git 8641448c4106bf28ea32df72e5e0ad520d3946ae)

1596.	[func]		marcin
	Implemented lease6-bulk-apply command in the lease_cmds hooks
	(Gitlab #683,!390, git 122473c18b632ddfa22b8a48f6d9399bc18e2598)

1595.	[func]		fdupont
	Removed unused t1_ and t2_ members from internal lease class.
	(Gitlab #567,!357, git 6072db5f4ca6cfa9573152c255f97dd170acbd57)

1594.	[bug]		fdupont
	Kea no longer uses the .../var/kea directory, for instance pid
	files are now in .../var/run/kea.
	BEWARE this applies to the kea-dhcp6-serverid file so if the
	server will not find the file at its new location it will believe
	it is the first time it is being started and will generate a new
	server DUID.  If that happens, clients will keep trying to get to
	the old server and be confused.
	(Gitlab #538,!334, git 928b9ae57452aae1dff92ad689ba180fa975381c)

1593.	[bug]		marcin
	Fixed a bug in the Kea Control Agent which caused a sporadic crash
	after a tiemout while sending the HTTP response to the controlling
	(Gitlab #491,!363, git ff204dfe4dd80702f8bb2edf83f8486e019a7e04)

1592.	[build]		tmark
	Files related to YANG and netconf are now only installed
	when the build is configured with --with-syspro.
	(Gitlab #584,!364, git 350ae513ed4e8e8e07b159658f88ec7d70b644d3)

1591.	[doc]		razvan
	Fixed classify and pd-exclude documentation examples.
	(Gitlab #590,!380, git 26b04d2d2d2a88be6abc5879a2fb48e05f0003fd)

1590.	[func]		fdupont
	It is now possible to specify hostname-char-set and
	hostname-char-replacement at the global scope allowing to sanitize
	host names without requiring a dhcp-ddns entry.
	(Gitlab #540,!374, git 0a5979369902070ee0c4faf3b713627455b99489)

1589.	[bug]		razvan
	Fixed configuring kea with tools/cql_config when using --with-cql
	from source.
	(Gitlab #522,!261, git bf7debc182e094a8b34f1f2df99cf4e9f84c8906)

1588.	[func]		marcin
	Extended APIs of the DHCPv4 and DHCPv6 configuration backends with
	the management functions for the server tags.
	(Gitlab #641,!352, git 022d2266e71ced7ec79e0717298ca8e88330a7e7)

1587.	[bug]		razvan
	Fixed IPv6 prefix delegation pools retrieval from the MySQL
	Configuration Backend.
	(Gitlab #637,!349, git 483273734e8608ed68624d7a868f20672c859c95)

The following summarizes changes and important upgrade notes since the
previous release (1.5.0).

1586.	[build]		razvan, marcin
	Bumped up libraries version numbers for Kea 1.6.0 beta release.
	(Gitlab #617,!340, git c0434bf882b6ec483120e39f6b70b5a40fe7c711)

1585.	[bug, func]	marcin
	MySQL Configuration Backend supports DHCPv6 interface-id parameter.
	(Gitlab #628,!341, git 3a07c636ba4c7fceabe59ec597c44a9c8e3367eb)

1584.	[doc]		marcin
	Documented Kea Configuration Backend in the Kea Administrator
	Reference Manual.
	(Gitlab #71,!314, git 3a65b7a9104f2a988dacf1acc26312b4259e958d)

1583.	[bug]		fdupont, marcin
	Corrected a bug which caused failures to merge a subnet from the
	Configuration Backend into the DHCP server's configuration
	when subnet identifier was modified.
	(Gitlab #492,!252, git c9aba2b5e915c27a8539e6b8f0498179ba896da4)

1582.	[bug]		tmark
	Input values for DHCPv4 and DHCPv6 options of type 'string'
	will now be trimmed of any trailing null bytes (0x0).
	(Gitlab #539, !330, git b126558e9e39e9bff517dceac25a00e96d150085)

1581.	[bug]		marcin
	Corrected a bug whereby the DHCPv6 server did not take into
	account a relay address specified at the shared network level
	during the subnet selection.
	(Gitlab #620,!332, git c2383e404a5227f6b55655c09ccdc03930815500)

1580.	[bug]		jonatan.raudsepp
	Compilation fix for Alpine linux in Perfdhcp code. Thanks to
	Jonatan Raudsepp for sending a patch!
	(Gitlab #624,!337, git 19321df9e4490b75ac7b322afec9d231bcb6ffe3)

1579.	[bug]		razvan
	Fixed a bug which caused setting dhcp4o6-port to not function via
	Kea configuration backend.
	(Gitlab #577,!331, git 98c24fe1873795bbc94d426c54c588b05d79406f)

1578.	[func]		fdupont
	The configuration syntax has changed. The Logging scope that used
	to be shared between all servers has been deprecated. Each daemon
	is supposed to define its own loggers using 'loggers' array. The
	old configuration syntax is still accepted, but is considered
	deprecated.  Kea 1.6 will accept it, but that capability will be
	removed in the future. Please migrate your configuration to new
	(Gitlab #208,!196, git 37b8ec6c2c4b64681059f8fad26d112adbb7ee2b)

1577.	[func]		razvan
	Implemented host reservations page retrieval for Cassandra.
	(Gitlab #511,!278, git 152e82b49f5e5abd9d3a2a4825ed8620973f5ef1)

1576.	[doc]		fdupont
	New commands cache-get-by-id and cache-size are now documented.
	(Gitlab #594,!324, git 3753008cc77f71457b5d777560d8e36dc56e7acd)

1575.	[bug]		razvan
	Fixed issue with keactrl logging error when trying to stop running
	(Gitlab #534,!327, git 6ddee0a93ec4ad692cc385150c159d9e8da5232d)

1574.	[bug]		razvan
	Add logging to the MySQL config backend.
	(Gitlab #398,!315, git bc46fd3420afdf60ae8841866e8458f7f6e072e8)

1573.	[bug]		razvan
	Fixed build sysrepo from sources using sysrepo_config.
	(Gitlab #523,!262, git b86864a9b058a18eaaded2273dc5f40a9ec97c78)

1572.	[bug]		tmark
	Corrected an issue where kea-dhcp6 was incorrectly scheduling DNS
	entry removals when renewing leases with generated FQDNs.
	(Gitlab #577,!310, git 362f40bebbdbe083ec6420a43ee1c050edf6bba6)

1571.	[bug]		marcin
	The mysql_cb hooks library registers the MySQL backend for the
	DHCPv6 server.
	(Gitlab #603,!322, git 1ede298fcdc7a9b7018b6e300e2d759e33f73645)

1570.	[bug]		marcin
	Corrected the bug in the Kea HTTP library which could cause a server
	to assert when system clock was modified during the transaction.
	(Gitlab #599,!320, git 958abe5063b6e602c0070e336524e313c3a87671)

1569.	[perf]		fdupont
	Improved performance of the DHCPv4 server in cases when
	match-client-id set disabled by removing unnecessary query to the
	lease database."
	(Gitlab 509,!272, git 2ad41651c1118fe6f7dfb918df0694dd254706f1)

1568.	[bug]		tmark
	kea-dhcp6 now properly skips sanity checking prefix leases.
	Prior to this it was incorrectly subjecting them to sanity
	checks during memfile lease file reloads and then flagging
	the leases as incorrect.
	(Gitlab #591,!#313, git 12262c5df19673652be73cf1dd62d07527bee95d)

1567.	[bug]		marcin
	Kea HTTP client now always includes Host header in all HTTP requests.
	The Host header is required in all HTTP/1.1 requests. This corrects
	the problem whereby HA peers were unable to communicate via reverse
	HTTP proxy because the proxy was responding with Bad Request status
	when no Host header was included.
	(Gitlab #360,!305, git ddb6dbf4cf63e98d3954c5d46e0311abc4fd6cfc)

1566.	[func]		tmark
	kea-dhcp6 can now be configured to calculate values to
	send to clients for T1 and T2 times. Prior to this
	it was only possibly to specify explicit values.
	(Gitlab #365,!296, git 144b83a84c836d6ff17620b35cb74f830b13c2eb)

1565.	[func]		marcin
	MySQL Config Backend returns server tags associated with the
	configuration elements.
	(Gitlab #579,!309, git 1e2648df047fe964e8ad3e9deb1c85eea32b1219)

1564.	[func]		fdupont
	Implemented two new commands to manage subnets:	subnet4-update and
	subnet6-update. They allow an update of existing subnets
	(Gitlab #465,!265, git 71eb9188033f81dab56fc5a847a39f5497398b62)

1563.	[bug]		razvan
	Fixed compilation of google benchmarks.
	(Gitlab #520,!260, git 11aa890d30ecce5518b9f0bad389feea6be78167)

1562.	[bug]		marcin
	Corrected a bug whereby the DHCP server would trigger a segfault
	upon termination when MySQL configuration backend was in use.
	(Gitlab #571,!306, git 705e7bb6dd27ec90dd2807d4aac0905e3cb13de4)

1561.	[func]		tmark
	kea-dhcp6 now automatically deletes configuration elements
	that have been deleted from configuration backends.
	(Gitlab #566,!304, git 2e85376f1b57187b822c662144380e04372cffff)

1560.	[bug]		fdupont
	kea-dhcp4 now permits option code values of 0 and 255 for
	options defined in option spaces other than the "dhcp4" space.
	(Gitlab #564,!300, git 7a0a0b84d91893f08c0ee6f236daa05bede65166)

1559.	[func]		fdupont
	Added DHCPv6 support to the MySQL Config Backend hook.
	(Gitlab #397,!244, git 980091ecd717e41a61f0d7f6808213e450647d8e)

1558.	[func]		tmark
	In addition to a continuous string of digits, hexadecimal
	literals may now be a series of one or more octets separated
	by either colons or spaces.
	(Gitlab #484, git 251efcd5f518a215173845b22555276df0e0ffc6)

1557.	[bug]		marcin
	Added support for "reservation-mode" parameter in the shared network
	configuration parsers. It corrects a bug in Configuration Backend
	whereby host reservation mode was not stored in the database when
	specified via remote-network4-set command.
	(Gitlab #517,!301, git e6533001e9d850432254d3cfe995a4f7abcee6e2)

1556.	[bug]		fdupont
	Corrected parser for option definitions to refuse definitions with
	duplicate code or name.
	(Gitlab #503,!246, git 0befb653277463cd8f88740119fe90a93dbb1466)

1555.	[bug]		fdupont
	Corrected parsers for option definitions to prevent setting out of
	range option code values.
	(Gitlab #500,!247, git 5c139602d7656df74060fee63461ffba4f290547)

1554.	[func]		tmark
	kea-dhcp6 now uses globals, option definitions, options,
	share-networks, and subnets from configuration back ends.
	(Gitlab #413,!288, git ff367e273ed8763b354db272c5955a78203d865e)

1553.	[func]		marcin
	DHCPv4 server automatically fetches incremental configuration updates
	from the configuration backends.
	(Gitlab #103,!277, git 319f7709edb40d6c01390a34942b9d4a200b333e)
	(Gitlab #103,!289, git 80087e2d0f90f9ba6623860fed4f4d33ee935ad0)

1552.	[bug]		marcin
	Corrected inheritance of the subnet and shared network specific
	parameters in the MySQL Configuration Backend.
	(Gitlab #552,!295, git 4812e4227a57b29bfa3995e71588233424a3abb1)

1551.	[func]		razvan
	Added consistency and serial-consistency parameters to CQL
	connection. Fixed all statements.
	(Gitlab #16,!287, git 56a9b6a860899274f9cafe2366a6731a46490e92)

1550.	[func]		marcin
	Implemented inheritance of the DHCPv4 global and shared network
	specific configuration parameters when using configuration
	(Gitlab #490,!284, git 2508f942e879ef74b20c07ffdba37d187d6ea932)

1549.	[func]		tmark
	kea-dhcp6 can now be configured to fetch data from configuration
	back ends. It does not yet utilize the data fetched.
	(Gitlab #104,!290, git d8a25c1ecd17ad24bdce6af19e7a42ce66d4c4f2)

1548.	[func]		razvan
	Added consistency and serial-consistency parameters to CQL
	(Gitlab #16,!266, git 5771173d721464d879869fad6456211031858d6c)

1547.	[bug, doc]		fdupont
	Option value for sip-ua-cs-domains has been corrected in the
	Kea User's Guide. Thanks to Shawn Routhier from Infoblox for
	reporting this issue.
	(Gitlab #536,!281, git c128fd9a6b7bffc36ba4fe9a0badebe55441d673)

1546.	[func]		tmark
	kea-dhcp4 now uses options fetched from configured backends.
	(Gitlab #401,!254, git 6a33a6f1810f5899ff9c8bc79d0093eebad5c728)

1545.	[func]		fdupont
	A new parameter "data-directory" has been added to DHCPv6.
	If specified, it allows DHCPv6 server to store lease and
	server-id files in non-standard locations.
	(Gitlab #430,!263, git 1f094e18a21124abcaf846cab52c8cba65ca36bc)

1544.	[build]		fdupont
	Message compiler is no longer needed during compilation and
	generated message files are part of the distribution. They can be
	regenerated using --enable-generate-messages switch passed to
	configure script.
	(Gitlab #441,!233, git 499b7c36454bcac2553f7bf304d48d7d80f4d4ca)

1543.	[bug]		fdupont
	Corrected behavior of the remote-subnet4-set so as it is now
	possible to set the subnet using both an ID or a subnet prefix.
	(Gitlab #481,!251, git 9ef651950fde16e258e4b03dd21bbf6dd07d5231)

1542.	[test]		tmark
	MySQL, PostgreSQL, and CQL unit tests will now attempt to wipe
	the unit test data, rather than the (re)create the schema between
	each test.  This reduces test execution time appreciably.  The
	behavior may be overridden by defining environment variable:
	KEA_TEST_DB_WIPE_DATA_ONLY="false".  This will cause the schema
	to be recreated before each test but may dramatically increase
	test execution time.
	(Gitlab #526,!269, git 7e81d7bea27e919b652351880872aae68ad1b209)
	(Gitlab #531,!279, git 7f8c4fc535df3019789aea1881b7bb3bd539963a)

1541.	[bug]		fdupont
	Empty Relay Agent Information option is no longer sent in server
	responses. Thanks to Geoffrey Huang from Qingdao Agricultural
	University, and Jiaqi Liu from Qingdao WuKeSong Company
	Communication Limited, Shandong, PRC for reporting this issue.
	(Gitlab #519,#510,!271, git f3563396d2227e48e96a5d65587406d8d1868db5)

1540.	[func]		fdupont
	Added a new method deleteSharedNetworkSubnets4 in the config
	backend API to delete all subnets belonging to a shared network.
	(Gitlab #512,!256, git 76991c42d115641c7fdcd0f215137be578fb39a0)

1539.	[build]		fdupont
	Obsolete dns++.pc file for pkg-config was removed.
	(Gitlab #498,!274, git 93cd62c99f69cc379c08cd06791db522c1fb0aca)

1538.	[func]		marcin
	DHCP configuration parsers correctly handle unspecified parameters.
	This change was required for the MySQL Config Backend to record
	unspecified parameters as NULL in the database.
	(Gitlab #488,!259, git d3b33058651036be34200f16d2da230267415056)

1537.	[func]		godfryd
	Improved handling unix sockets in unit tests. Now by default
	they are created in temporary folder under /tmp folder. This
	fixes the issue with creating sockets with too long path
	in the case when source folder is deeply nested.
	(Gitlab #357,!258, git a45e2f68d7d1848adb0cf755954a3d76c9dff338)

1536.	[build]		tomek
	Many changes in keactrl, kea-admin, cql_config and sysrepo_config
	scripts. ISC is now using shellcheck to verify portability of
	our scripts.
	(Gitlab #480,!245, git 8818ba0260ba36710b88db6401069f9fe4f3a73a)

1535.	[func]		godfryd
	Added checking required Vagrant version by Hammer.
	Removed Hammer from EXTRA_DIST.
	(Gitlab #518,!257, git ea0006f6eb948d7d4a034b413c5086cbe483eb75)

1534.	[func]		marcin
	MySQL config backend correctly handles the optional values for
	subnets and shared networks. Also, updated the MySQL config
	backend to store and fetch T1 and T2 percentage settings.
	(Gitlab #489,!250, git 01fc4d5bb4105b90c7025e8ca8131c3c15203848)

1533.	[doc]		sgoldlust,stephen
	Kea User's Guide significantly updated.
	(Gitlab #362,!182, git 4b7a8df6054d18f2c90fe61d93533466f89e6324)

1532.	[func]*		marcin
	Renamed OptionalValue C++ object to Optional and modified its
	API. This object is now used to represent optional values in
	subnets and shared networks. This is an internal Kea logic
	change but it may impact existing user hooks libraries.
	(Gitlab #487,!232, git 1c58e0ce9b9fd6fc8864dbfb2335bc5841c78ff3)

1531.	[func]		tmark
	When fetching configuration data from configured backends,
	kea-dhcp4 will now merge option definitions.
	(Gitlab #400,!243, git 0c5d1417031e49bd0c247889989e187db2dd8f4b)

1530.	[bug]		adwol
	Potential syntax error in keactrl fixed. Thanks to Adam Osuchowski
	from Silesian University of Technology for providing a patch.
	(Gitlab #162,!241, git b1a1137f252432aa956ed6fea3da21c740857333)

1529.	[func]		tmark
	When fetching configuration data from configured backends,
	kea-dhcp4 will now merge global parameters.
	(Gitlab #402,!224, git dadaf76f8dd61b8bb3405aa5dc80029f09b2d4ec)

1528.	[func]		fdupont
	Aligned DHCPv4 and DHCPv6 specific tables used by the MySQL Config
	Backend. Extended MySQL schema to implement audit trail for the
	DHCPv6 Config Backend.
	(Gitlab #460,!232,!236, git 57f945f917db522773281c9e95ec8027afae6205)

1527.	[build]		adwol,fdupont,tomek
	Default Kea installation directory has been changed to
	(Gitlab #161,!240, git cfaf16cf02191bf5b7172cade3f58a626288b5f0)

1526.	[func]		tmark
	In addition to subnets, when fetching configuration data from
	configured backends, kea-dhcp4 will now merge shared-networks.
	(Gitlab #399,!215, git 6b57b6b5d678c91b6b380fbe08beafd06b0e7b1d)

1525.	[func]		fdupont
	Defined API for the DHCPv6 Configuration Backend.
	(Gitlab #458,!231, git f16e03d9bf1c10903c16b2614223b10880f73d50)

1524.	[func]		tomek
	Support for vendor options improved in DHCPv4 and DHCPv6. Kea is now
	able to send back vendor suboptions, even if the client packet didn't
	include DHCPv4 vivso (125) or DHCPv6 vendor (17) option. Usage of
	classification in such a case is required, though.
	(Gitlab #464,!238, git 5c79da9358862657a631a9a8fc2ce79ae26b762e)

1523.	[bug]		fdupont
	IfaceMgr::send method now returns proper status that matches
	its documentation. Thanks to Matthias Stoeckl from Secunet
	for reporting this issue.
	(Gitlab #417,!221, git 4be58523f38097cea81ea06161aead58e00aeb2a)

1522.	[bug]		marcin
	The "unspecified" DHCP timer values (e.g. renew-timer) are
	represented as NULL values in the database. This corrects
	a bug whereby the unspecified timers defaulted to 0 which
	prevented the DHCP server from calculating the timers to
	be sent to the client. Instead a value of 0 was sent.
	(Gitlab #451,!227, git 5ec9a55528fbcfff4e0c808f9a745b9fd3a5dfae)

1521.	[func]		marcin
	Removed subsecond precision for the timestamps in MySQL config
	backend. It caused issues on systems with MySQL version prior
	to 5.6.4 which don't support subsecond timestamp values.
	(Gitlab #444,!229, git 71200e98f5a862908240a0d2e269b5da23290af9)

1520.	[build]		fdupont
	Made perfdhcp build optional and off by default: to build it
	please use the new --enable-perfdhcp configure flag.
	(Gitlab #340,!220, git b2d9a5559c348e82d6730809ccf1429097a9872c)

1519.	[bug]		Brent Bloxam
	A bug in kea-admin that always assumed the PostgreSQL database is
	always local has been fixed. Thank you to Brent Bloxam from
	Beanfield Metroconnect for submiting a patch!
	(Gitlab #423,!216, git d14e2f34c7d544aeb5e1e219f305fac9ab18c498)

1518.	[func]		marcin
	Extended MySQL schema to include the types of the global DHCP
	parameters in the database. The Kea servers will use this
	information to cast the values fetched from the database into
	their actual types. The supported types are: string, integer,
	boolean and real.
	(Gitlab #429,!217, git edd745c507ce5a888461df1489311de0c22cd312)

1517.	[func]		tmark
	kea-dhcp4 will now connect to and fetch configuration data from
	configured backends. At this point, only fetched subnet data is
	merged and used.
	(Gitlab #101,!202, git c572f8aea94349ff5fb4afee13a88ba811cc6459)

1516.	[func]		marcin
	Implemented audit trail for MySQL Configuration Backend. It allows
	for tracking incremental changes in the servers' configurations.
	Both mysql_cb hooks library and the MySQL schema have been updated
	to facilitate this feature.
	(Gitlab #396,!205, git 6d40db07ef641eef29405c42e718979e7a1e8675)

1515.	[func]		fdupont
	Changes required for new host commands that retrieve all host
	reservations from a given subnet (reservation-get-all,
	reservation-get-page) added. Also added documentation.
	(Gitlab #313,!199, git 991b2fadcb9e8171a78e27f95e4bfba6393d7824)

1514.	[func]		fdupont
	Control Agent and DHCP-DDNS daemons now support config-reload
	command, that instruct a given server to load again its
	configuration from a file on disk.
	(Gitlab #375,!192, git 93648a3a4918225e2c4413ae220fccc59eaea99a)

1513.	[func]		godfryd
	Fixed perfdhcp that now it keeps requested rate during performance
	testing. Previously it was always about 20% lower than expected.
	(Gitlab #283,!135, git 329f54bb151ec35888e9a8070cc5fa368d6f1f5e)

1512.   [func]      tmark
	kea-dhcp4 will now ignore empty Host Name (option code 12) values
	received from clients.  While an empty value for this option is
	not RFC-compliant, some clients do send them.  Prior to the this
	server would drop the entire packet.  In the spirit of being liberal
	in what we accept, the server will now simply omit the option.
	(Gitlab #40,!203, git f41bd35c3e7a3bdc1f31c5602fd91d5c84c60163)

1511.	[func]		fdupont
	Obsolete experimental secure DHCPv6 options (701-704) removed.
	(Gitlab #386,!196, git 1114527652615fb730e323946cafaf1c7ca72b42)

1510.	[bug]		fdupont
	DHCPv4 and DHCPv6 no longer crash if badly broken configuration
	is received.
	(Gitlab #381,!193, git f45fe7b7e3916d36d017b4ec5b50588fbf517d86)

1509.	[func]		tmark
	kea-dhcp4 can now be configured to calculate values to
	send to clients for for T1 and T2 (options 58 and 59
	repsectively).  Prior to this it was only possibly to
	specify explicit values.
	(Gitlab #365,!194, git 67944844a40436cd69e0e5b4962f5c9cba89ef6f)

1508.	[func]		fdupont
	Implemented the management API using a control socket for the
	DHCP DDNS (D2) server. D2 now supports the following commands:
	build-report, config-get, config-set, config-test, config-write,
	list-commands, shutdown and version-get. Also, extended Control
	Agent (CA) to support one additional command: config-set.
	(Gitlab #30,!183, git ab27550cec365f42289eb5fa1bc39f33f01b19c2)

1507.	[func]		tmark
	kea-dhcp4 now ensures that the message type option (53) is
	the first option in outbound DHCPv4 packets.  This was done
	to accommodate non-compliant clients that require the option
	to be first.
	(Gitlab #363,!177, git 34f40035bf7a7849083138cacee440a9f0991d67)

Thank you again to everyone who assisted us in making this release possible.
If you would like to contribute to ISC to help us continue to make quality
open source software, please visit our donations page at

We look forward to receiving your feedback.

More information about the Kea-announce mailing list