# Kea 1.8.0, Aug 26th 2020, Release Notes Welcome to Kea 1.8.0, the first release of the 1.8 series. 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 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. If you are interested in the latest development releases with new features, please look at the upcoming 1.9.x series. The text below references issue numbers. For more details, visit the Kea GitLab page at https://gitlab.isc.org/isc-projects/kea/issues. The following major features and bugfixes were implemented since the 1.6 series: 1. **Multi-threading**. Kea is now able to take advantage of multiple CPU cores and process many packets in parallel. In many cases, this improves overall performance. We have observed a substantial increase in LPS (Leases Per Second) with multi-threading vs the single-threaded mode in configurations without High Availability. Many factors contribute to overall performance, including `enable-multi-threading`, `thread-pool-size`, `packet-queue-size`, what kind of backend is used, whether the database is local or remote, and some of these can limit the performance improvement with multi-threading. ISC has published the results of our performance tests on our Jenkins System (https://jenkins.isc.org/job/kea-1.7/job/performance/KeaPerformanceReport /). There are new sections in Kea ARM dedicated to enabling and tuning multi-threaded performance. 2. **Stork support**. Stork, our new open source management application, monitors many aspects of Kea and presents its status in an easy-to-use graphical interface. Stork can also export statistics to Prometheus and Grafana. Stork relies on the `status-get` API command, available in this version of Kea. You can learn more about Stork here: https://gitlab.isc.org/isc-projects/stork/ 3. **HA improvements**. Many improvements have been made in Kea's High Availability feature. A new mode of operation `passive-backup` has been implemented. In this mode there is one primary server and an arbitrary number of backup servers that get updates from the primary. It is different than other HA modes in the sense that there is no dedicated secondary server. The updates to backup servers are now asynchronous, which greatly reduces the performance penalty for adding new backup servers. Also, a set of new commands to manipulate HA status (`ha-maintenance-start`, `ha-maintenance-notify` and `ha-maintenance-cancel`) are now available. They are useful to perform a controlled shutdown with faster recovery. Finally, the HTTP connection recovery has been improved. The server pairs are now able to reestablish connection more reliably. 4. **Fine grained DNS Updates**. Earlier Kea versions supported global DNS update parameters. Kea 1.8 makes it possible to specify many DNS update parameters at the global, shared network and subnet levels. In particular, it is possible to specify whether to send the updates or not (`ddns-send-updates`), control whether to sanity-check the client update (`ddns-replace-client-name`, `hostname-char-set`, `hostname-char-replacement`), replace (`ddns-generated-prefix`) or expand the update (`ddns-qualifying-suffix`) on a per shared network or subnet basis. This provides more flexibility over DNS updating. 5. **New API commands**. Many new API commands have been implemented. There are new commands to retrieve leases using certain patterns (`lease4-get-by-client-id`, `lease4-get-by-hostname`, `lease4-get-by-hw-address`, `lease6-get-by-duid`, `lease6-get-by-hostname`). Other new commands instruct Kea to retrieve new configuration from the Config Backend immediately rather than waiting for a timer to expire (`config-backend-pull`), or to trigger DNS updates (`lease4-resend-ddns`, `lease6-resend-ddns`). 6. **New open source hook**. [flex_option](https://kea.readthedocs.io/en/latest/arm/hooks.html#flex-op tion-flexible-option-for-option-value-settings). This new hook enables you to add, supersede or remove an option based upon on the result of an expression. The option raw value can be determined by an expression. 7. **New subscriber-only hook**. [Leasequery](https://kea.readthedocs.io/en/latest/arm/hooks.html#lease-qu ery-leasequery). This library provides support for DHCPv4 Leasequery as described in RFC 4388, and for DHCPv6 Lease Query (RFC 5007). This feature is primarily used by hardware relays (Cisco in particular) to update their state after a reboot, but can be used by any device or software that is capable of using the Leasequery protocol. 8. **New open source hook**. [BOOTP](https://kea.readthedocs.io/en/latest/arm/hooks.html#bootp-support ). This legacy feature was added using a hook module so that it can easily be omitted from more modern deployments. Surprisingly enough, there are still many legacy devices that require BOOTP. 9. **Bugfixes**. There are 41 tickets marked as bugs that were fixed since the 1.6.0 release. Even more small improvements have been implemented. For a complete list, please see the Changelog below. Two most notable bug fixes provide a more robust database connection recovery and improve handling of broken configurations. 10. **Documentation and test reports**. There were 19 documentation updates that were deemed big enough to be listed in the Changelog. In addition to that, we now publish weekly performance test reports (see our [Jenkins](https://jenkins.isc.org/job/kea-1.7/job/performance/KeaPerforma nceReport/) test system). This is especially important in the context of tuning multi-threaded Kea deployments. 11. **Kea Migration Assistant (keama) packages**. Keama is a tool that reads ISC DHCP's configuration file and produces a Kea configuration file based on it. ISC DHCP and Kea are very different, so a complete conversion is impossible, but this provides a starting place for people who are migrating. It is now much easier to try it, as Keama packages are now available at https://cloudsmith.io/~isc/repos/keama/packages/. You can learn more about Keama from our [KB article](https://kb.isc.org/docs/migrating-from-isc-dhcp-to-kea-dhcp-usin g-the-migration-assistant). ## License This version of Kea is released under the Mozilla Public License, version 2.0. https://www.mozilla.org/en-US/MPL/2.0 The premium and subscriber-only hooks 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). ## Download Pre-built ISC packages for current versions of the most popular Linux operating systems are available at: https://cloudsmith.io/~isc/repos/ The Kea source and PGP signature for this release may be downloaded from: https://www.isc.org/download The signature was generated with the ISC code signing key, which is available at: https://www.isc.org/pgpkey 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 planner, and roadmap at https://gitlab.isc.org//isc-projects/kea. Limitations and known issues with this release can be found at https://gitlab.isc.org/isc-projects/kea/wikis/known-issues-list. 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). We would also 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 https://gitlab.isc.org/isc-projects/kea/issues. ## Changes The following summarizes changes and important upgrade notes since the 1.6.0 1797. [build] razvan Bump up libs version for Kea 1.8.0 release. (Gitlab #1395) 1796. [bug] marcin Kea HTTP client re-establishes connection with the HTTP server when timeout occurs. Prior to this change the client tried to reuse the connection after timeout often getting subsequent timeouts. Re-establishing the connection may help avoid further timeouts during the High Availability operation. (Gitlab #1390) 1795. [bug] razvan Added check for 'renew-timer' value to be lower than or equal to 'rebind-timer' value at subnet and shared network level. (Gitlab #505) 1794. [func] razvan The 'status-get' command send to DHCPv4 or DHCPv6 servers will return information about multi threading settings ('multi-threading-enabled', and only if this setting is active, 'thread-pool-size' and 'packet-queue-size'). (Gitlab #1305) 1793. [doc] tmark Added Leasequery hook library to the list of available hook libraries in the ARM. (Gitlab #1372) 1792. [doc] tmark Added the Database Connectivity section to the ARM which explains how Kea servers respond to back end database connectivity issues. (Gitlab #1284) 1791. [doc] tmark Updated the ARM section for the Lease Commands hook library which incorrectly stated that a command return value of 2 would be returned when no lease(s) matched the command. The value returned is actually 3. (Gitlab #1384) 1790. [bug] marcin Fixed a bug in Kea Configuration Backend observed when using certain MariaDB database versions. As a result of this bug the Kea servers were unable to fetch configurations stored in the database upon startup. The bug was related to the usage of timestamps which in MariaDB must be set to 1970-01-01 00:00:01 UTC or later. In some cases the Kea CB used out of bounds timestamp values. This bug was observed when using MariaDB 10.4.13. (Gitlab #1382) 1789. [bug] razvan Fixed a bug in the lease reclaim process which would not reschedule the timer if the operation failed. (Gitlab #1335) 1788. [bug]* fdupont When a host reservation in a subnet reserves an address, the address must be within the subnet. This check was previously only done by the host command hook library. Note it does not apply to prefix delegation. (Gitlab #1254) 1787. [bug] razvan The recount leases functions consider leases in 'declined' state as 'assigned' so that when the lease is reclaimed or reused, no negative counters are generated. The 'subnet[X].reclaimed-leases' and 'reclaimed-leases' are now cumulative counters and are never decremented or reset until server restart. Removed references to non existent 'declined-reclaimed-addresses' counters. (Gitlab #1336) 1786. [bug] razvan Update lease stats when using commands from lease-cmds hook. (Gitlab #1065) 1785. [func] fdupont If enabled, the default value for queue capacity in congestion control has been trimmed down from 500 to 64. The feature continues to be disabled by default. (Gitlab #285) 1784. [build] wlodek Socket path in kea ddns default config was changed to /tmp/kea-ddns-ctrl-socket. (Gitlab #1379) 1783. [doc] tomek Installation instructions for RADIUS hook updated. (Gitlab #1310) 1782. [bug] tmark Corrected a bug that causes kea-dhcp4/kea-dhcp6 servers to crash after losing connectivity to a configuration backend database. The servers now correctly honor the max-reconnect-tries parameter. (Gitlab #1369) 1781. [bug] razvan Reject invalid declined state for PD prefix in add and update commands in lease-cmds hook. (Gitlab #1349) Kea 1.7.10 (development) released on Jul 29, 2020 1780. [doc] wlodek Added a section to Kea ARM about tuning performance for kea-dhcp4 and kea-dhcp6. (Gitlab #1285) 1779. [build] tmark Library version numbers bumped for release. (Gitlab #1346) 1778. [func]* fdupont Changed the order of subnets to follow ascending subnet identifier. (Gitlab #1265) 1777. [doc] fdupont Added in the Developer's Guide an example about how to cross compile Kea for a Raspberry Pi. (Gitlab #1221) 1776. [func] fdupont DHCP servers now log a fatal error message when a reconfiguration attempt left a no longer working server. Documentation was updated tp propose remedy actions. (Gitlab #507,#1166) 1775. [doc] vicky A Code of Conduct has been added. (Gitlab #1143) 1774. [func] tmark leaseX-del commands now support a new parameter, update-ddns, which instructs the server to remove DNS entries for a lease after it has been deleted. (Gitlab #544) 1773. [perf] fdupont Kea statistics now uses standard c++11 chrono library instead of POSIX time library from boost. (Gitlab #1174) 1772. [perf] fdupont Set kea-lfc process priority to lower than default. This change should alleviate CPU utilization spikes caused by LFC process observed on some systems. (Gitlab #1311) 1771. [func] fdupont Duplicate ChangeLog entry removed. 1770. [func] fdupont Added kea-admin lease-stat-recount command which recounts cached statistics in MySQL and PostgreSQL lease databases. (Gitlab #1196) 1769. [build] fdupont Added detection of the musl libc which implements dlclose() as a no-operation: this behavior breaks Kea expectations for hook library unloading. (Gitlab #771) 1768. [func]* fdupont Removed the support of the Logging toplevel entry. Now loggers must be defined in each server toplevel entry. (Gitlab #916) 1767. [bug] fdupont Fixed unit tests failing on systems where an interface is named eth0. (Gitlab #1043) 1766. [func] fdupont Optimized the interface manager code and removed the 16 bit limit to interface indexes. (Gitlab #553) 1765. [bug] fdupont Corrected a bug in MySQL Config Backend which occasionally caused the DHCP servers to overlook some configuration changes. This issue could occur when the server fetched configuration changes within one second after they they were applied in the database. (Gitlab #1247) 1764. [doc] fdupont Added thread safety consideration sections to library documentations in the developer guide. (Gitlab #996,#1264) 1763. [bug] fdupont Changed the way hook libraries are unloaded. Now unload is done in two phases: the first phase calls unload() entry points and removes callouts, the second phase unmaps hook library memory spaces. This should lead to fewer problems including fewer crashes at exit time. On the other hand, incorrect libraries can stay in memory until exit and prevent any (re)load. (Gitlab #1282) Kea 1.7.9 (development) released on June 24, 2020 1762. [bug] fdupont Fixed the control command execution: either it was deferred by DHCP packet processing or a spurious error message was logged. (Gitlab #1234) 1761. [bug] fdupont Found and fixed a possible source of incorrect statistics cached in MySQL and PostgreSQL lease databases which in some cases made servers fail to start. (Gitlab #944,#1196) 1760. [bug] razvan Fixed log message on DHCPv6 IA_NA lease renew. (Gitlab #1276) 1759. [bug]* fdupont Fixed the way configuration global entries are parsed in DHCPv4 and DHCPv6 servers. We expect that the change will not be visible for sane configurations. (Gitlab #1245) 1758. [func]* fdupont Earlier Kea versions converted "comment" entries to "user-context" scope in the configuration when using config-get. This backwards compatibility has now been removed. This may affect users who use config-get or config-write commands and use comments in their configurations. (Gitlab #1100) 1757. [bug] fdupont config-backend-pull commands were fixed to be applied to the current configuration (Gitlab #1189) 1756. [bug] fdupont Made the parking lot API generic thread safe. (Gitlab #1255) 1755. [func]* fdupont Implemented various race avoidance mechanisms in the multi-threaded packet processing: only one query from the same client is processed, subsequent queries from the same client are dropped at the exception of the most recent which will be processed after. When picking a free address or prefix from a pool the resource is considered as not free for other threads. This is used by the lease commands hooks library to avoid conflicts with a minimal overhead. Finally individual lease reclamation is exclusive of multi-threaded packet processing. (Gitlab #1147) Kea 1.7.8 (development) released on May 27, 2020 1754. [func] marcin Improved the procedure of restarting the servers in the terminated HA state. The servers can now be restarted sequentially without the risk of returning to the terminated state right after restart. Previously, the servers had to be both shutdown before being restarted to avoid returning to the terminated state. (Gitlab #1205) 1753. [func]* marcin Extended the response to the status-get command to include information about the progress of the failover procedure while the active servers are in the communication interrupted state. The new data allow for monitoring the number of clients attempting to communicate with the partner which is presumably offline, total number of packets sent to the partner and so on. The syntax of the response was modified and is incompatible with previous Kea versions. (Gitlab #1087) 1752. [doc] tmark Added documentation for the Leasequery premium hook library to the ARM. (Gitlab #1180) 1751. [perf] marcin Corrected performance issue occurring while loading large configurations via the MySQL Config Backend. Improper database indexing caused long server startup time as well as long time to respond to various commands, such as subnet4-list or subnet6-list. (Gitlab #1242) 1750. [func] razvan Refactored HooksManager so that no lazy initialization is possible from dhcp processing functions. The function getHooksManager is now private. (Gitlab #1227) 1749. [func] fdupont When the version is a development (vs. stable) one (second number is odd, e.g. in 1.7.x) a server or agent logs a warning to dissuade use in production. (Gitlab #1184) 1748. [func] marcin Added two extensions to the HA hooks library. Firstly, the active servers no longer wait for the lease update acknowledgments from the backup servers. Secondly, the new passive-backup mode allows for running a single active server with a number of backup servers. (Gitlab #999) 1747. [bug] fdupont Multi-threading and congestion handling were made incompatible: when both are enabled by a configuration the dhcp-queue-control is silently disabled, when packet-queue-size is not 0 and the multi-threading packet queue is full the oldest packet is dropped to make room for a new received one. (Gitlab #1173) 1746. [bug] fdupont lease4-add and lease6-add commands now return an error when the lease already exists. (Gitlab #1170) 1745. [bug] fdupont Made state model and external sockets thread safe. (Gitlab #1095) 1744. [func] razvan Stopping packet processing when changing or reloading configuration. (Gitlab #1188) Kea 1.7.7 (development) released on Apr 29, 2020 1743. [doc] tomek ISC now provides a dashboard solution for Kea. Added documentation pointers about the ISC Stork project. (Gitlab #1191) 1742. [func] fdupont Added new cumulative statistics: for each assigned IPv4 address, IPv6 NA address or IPv6 PD prefixes cumulative-assigned-addresses, cumulative-assigned-nas or cumulative-assigned-pds global and per subnet is increased. A spelling error in the result-set of the stat-lease4-get of the stat cmds hook library was fixed. (Gitlab #816) 1741. [func] fdupont When the MySQL InnoDB reports a deadlock (very rare event) the failed query is rerun. (Gitlab #1160) 1740. [bug] fdupont Incorrect signal handling in the process library (used for control agent, d2 and netconf server but not by DHCPv4 or DHCPv6 servers) was replaced by the boost ASIO signal set. (Gitlab #1096) 1739. [func] razvan Added multi threading configuration parameters which can be used to adjust server performance according to setup resources and needs: enable-multi-threading, thread-pool-size and packet-queue-size. There is also an automatic detection implemented by using thread-pool-size set to 0. However, the packet-queue-size must be manually configured and does not scale automatically. The temporary -N command line option was removed. The multi threading is disabled by default. (Gitlab #893) 1738. [func] fdupont Added new global parameters statistic-default-sample-count and statistic-default-sample-age to set the default values used for sample keeping limits. (Gitlab #1005) 1737. [func] tmark Added store-extended-info parameter to kea-dhcp4 and kea-dhcp6 which enables the storage of additional information per lease. This has been added in anticipation of supporting LeaseQuery. (Gitlab #1010) 1736. [doc] fdupont A default logging syntax has been updated to reflect recently added multi-threading capabilities. The process is now identified by name/process-id.thread-id, e.g. kea-dhcp4.dhcpsrv/8475.12345, where 12345 is the thread-id. Its exact syntax is OS dependent. The logging syntax can be tweaked using `pattern` option for logging. (Gitlab #1150) Kea 1.7.6 (development) released on Mar 25, 2020 1735. [func] wlodek Added clean output mode to perfdhcp with configurable separator for periodic reports. (Gitlab #1046) 1734. [doc] vicky A list of supported OSes is now described in a separate platforms.rst file. (Gitlab #1055) 1733. [func] tmark Added lease4-resend-ddns and lease6-resend-ddns commands to the Lease Commands hook library. These commands may be used to instruct kea-dhcp4 or kea-dhcp6 to resend a request to update a lease's DNS entries to kea-dhcp-ddns. (Gitlab #1106) 1732. [func] marcin Client classes specified within host reservations can be used to influence subnet choice within a shared network and pool selection within a subnet. (Gitlab #1139) 1731. [func] razvan The NameChangeSender class is thread safe, making DNS updates compatible with multi-threading packet processing. (Gitlab #1148) 1730. [func] razvan Added -N command line switch that enables experimental multi-threading support. Number of threads can be specified (e.g. -N8) or Kea can be told to autodetect number of CPU threads (-N0). This feature is experimental. It hasn't been tested extensively and is known to cause problems with DDNS and HA. Do not use in production! (Gitlab #893) 1729. [func] razvan The RAII MultiThreadingCriticalSection class is now able to automatically stop and start the packet thread pool in order to perform server configuration and avoid race conditions in non thread safe code. (Gitlab #1016) 1728. [bug] tmark Memfile now supports commas in the hostname and user-context columns. Commas in either column now escaped as "," when written out, and unescaped when read back in. (Gitlab #608) 1727. [bug] tmark When shutting down due to lost backend database connectivity, kea-dhcp4 and kea-dhcp6 processes will exit with a non-zero value. This was temporarily altered by #1108. In addition, the "shutdown" command now supports an "exit-value" argument. (Gitlab #1115) 1726. [func] razvan Handling SKIP and DROP state in hooks so that the same operation is not performed multiple times. Some hooks will throw exceptions if the pktX_receive or pktX_send is handled by other hooks, in such case, the configuration order of the hooks must be changed. (Gitlab #1088) Kea 1.7.5 (development) released on Feb 26, 2020 1725. [func] wlodek Added perfdhcp command option to enable checking address and/or prefix uniqueness. (Gitlab #1021) 1724. [func] razvan Added packet thread pool in dhcpv4 and dhcpv6 servers. It adds the ability to handle processPacket function on multiple threads. When enabled, parked packets are also added to the queue of items to be handles by the thread pool. The packet thread pool is currently disabled and there is no option to enable it yet. (Gitlab #892) 1723. [func] tmark Hostname sanitizing is now globally enabled by default. Prior to this it was disabled. (Gitlab #1048) 1722. [bug] razvan Compilation fix for MySQL/MariaDB on Ubuntu 19.10. (Gitlab #1071) 1721. [func]* fdupont Added multi_threading_compatible function in hooks to retrieve the compatibility with multi-threading. This function is called when the library is loaded and if it reports 0 (incompatible) and multi-threading is enabled, then the configuration will be rejected. The absence of this function from the library defaults to incompatibility with multi-threading. All hooks and premium hooks must be updated to be able to be used with multi-threading. However, not all libraries are (or will ever be) compatible. (Gitlab #947) 1720. [func]* tomek The next step status in pkt4_send hook point now is able to distinguish between SKIP (Kea will skip packing the packet with the assumption that a hook already did that) and DROP (Kea will drop the packet). Previously both SKIP and DROP were interpreted as skip packing. (Gitlab #1090) 1719. [func] razvan Prepared CalloutManager to be used in multi-threading by moving the current library index and hook index to the CalloutHandle. This change removes the CallountHandle::getLibraryHandle, along with the possibility of dynamically registering/deregistering callouts inside callouts. (Gitlab #957) 1718. [bug] tmark kea-dhcp4 and kea-dhcp6 now shutdown gracefully by executing the shutdown command, if connectivity with a backend database has been lost and retries are either disabled or have been exhausted. Prior to this they simply invoked exit() which could orphan control socket files or cause segfaults unloading the CB Cmds hook library. (Gitlab #1108) 1717. [func] razvan Prepared PgSqlHostMgr to be used with multi-threading by using a connection pool with thread context. (Gitlab #1074) 1716. [func] razvan Implemented thread safe stats manager and stats context. (Gitlab #891) 1715. [bug] tmark Kea servers now detect and remove orphaned control channel sockets. This corrects a failure of the servers to restart with an error of "address already in use" following a fatal loss of database connectivity. (Gitlab #1097) Kea 1.7.4 (development) released on Jan 29, 2020 1714. [build] razvan Bumped up library version numbers for Kea 1.7.4 release. (Gitlab #1101) 1713. [bug]* tmark Code added under #35 to permit scoping of DDNS behavioral parameters was refactored to improve performance. (Gitlab #981) 1712. [bug] tmark Corrected an issue in the MySQL CB hook library which could cause subnet and shared-network options, properly added to the CB database, to be discarded when fetched from the backend. (Gitlab #1093) 1711. [func] razvan Prepared MySqlHostMgr to be used with multi-threading by using a connection pool with thread context. (Gitlab #1073) 1710. [bug] fdupont The code that handles default parameters and parameters inheritance, such as applying global values to subnet level, has been updated slightly. Although unlikely, there is small possibility this may affect boot-file-name, client-class, interface, match-client-id, authoritative, next-server, reservation-mode, and server-hostname values in Subnet4 and client-class, interface, interface-id, rapid-commit, and reservation-mode in Subnet6. (Gitlab #724) 1709. [func] fdupont MySQL Configuration Backend now allows for storing DDNS related configuration in the database. (Gitlab #946) 1708. [doc] tomek Clarified the relationship between comments and user context. (Gitlab #1079) 1707. [func] marcin High Availability hooks library supports controlled maintenance of the servers. The new ha-maintenance-start command puts one of the servers in the partner-in-maintenance state and causes this server to take over the entire DHCP traffic directed to the HA service. The second server in the in-maintenance state can be safely shutdown for the maintenance. This new mechanism solves the problem present in earlier versions of Kea when the administrator had to rely on the failover mechanism to promote one of the servers to handle the DHCP traffic while the other server was down. (Gitlab #1024) 1706. [bug] fdupont Fixed BOOTP hook. It now properly handles BOOTP packets and sends valid responses. (Gitlab #1064) 1705. [bug] fdupont Modified option 43 parsing to interpret sub-option codes 0 and 255 as PAD and END when no sub-option with these codes are defined. This adds control of illegal but common use of these reserved code points in option 43. (Gitlab #950) 1704. [func] fdupont Prepared memfile lease manager to be used with multi-threading. (Gitlab #894) 1703. [bug] niclas rozenvik A fix in the --with-gtest option. It is now able to detect the libgtest.a. Thank you to Niclas Rozenvik for reporting the issue and proposing a fix! (Gitlab #1080) 1702. [func] razvan Update and delete operations on database back-ends use lease old expire value (internal storage) to detect concurrent actions on the same lease. (Gitlab #1040) 1701. [func] razvan Initialize all option definitions at program startup instead of using lazy initialization to make access thread safe and lock-less. (Gitlab #889) 1700. [func] godfryd Enabled checking Kea merge request in GitLab CI by Danger tool (see https://danger.systems/guides/dangerfile.html). (Gitlab #672) Kea 1.7.3 (development) released on Nov 18th, 2019 1699. [func] fdupont, marcin Implemented status-get command which returns general status information about a Kea server status and optionally HA specific information if the HA hooks library is present. (Gitlab #1041) 1698. [doc] wlodek Avalanche scenario for perfdhcp is now documented. (Gitlab #876) 1697. [doc] wlodek Forensic logging documentation now mentions database configuration. (Gitlab #943) 1696. [func] fdupont A new hook library libdhcp_bootp has been implemented. Once loaded, this hook will provide support for BOOTP packets, as defined in RFC1497. Please see the "BOOTP support" Section in the ARM for details. (Gitlab #898) 1695. [func] fdupont Added support of BOOTP leases with infinite valid lifetime. This includes representation of such leases in MySQL and PostgreSQL databases which the expire date can be a 32 bit integer. (Gitlab #897) 1694. [doc] marcin Described the usage of the ha-heartbeat command to check the states of the HA enabled DHCP servers. (Gitlab #998) 1693. [func] fdupont Client supplied ciaddr is now sent back when responding to DHCPINFORM (Gitlab #992) 1692. [build] fdupont Better support for google test 1.10.0. (Gitlab #954) 1691. [build] tomek Google test version detection improved. (Gitlab #206) 1690. [func] fdupont, razvan As a preparation for upcoming multi-threading, the PgSQL connection pool has been implemented. This code is not usable on its own yet, but it will allow all threads to share a pool of connections in the future. This should improve the overall PgSQL lease backend performance. Fixed some log messages that were missing lease type details in DHCPv6 PostgreSQL lease manager actions. (Gitlab #1044) Kea 1.7.2 (development) released on Nov 27, 2019 1689. [bug]* fdupont The default Kea Control Agent's configuration file uses port 8000 instead of 8080 for the agent. This corrects the mismatch between the default port number used by the kea-shell and the agent. (Gitlab #793) 1688. [func] fdupont Added a new callout (hook point) executed when the server has completed a configuration update using the Config Backend. (Gitlab #596) 1687. [doc] fdupont Described for developers the way for a hook library to be loadable only for specific server(s) and applied as an example to ha. (Gitlab #50) 1686. [func] razvan Added a generic ThreadPool class which can be used to process functor work items in parallel, on multiple threads. It uses a queue container to manage the work items. (Gitlab #883) 1685. [build] fdupont Small build improvement. The fcntl.h header is included in more portable way. This should make it easier to build on Alpine systems and possibly other systems. (Gitlab #765) 1684. [func] fdupont As a preparation for upcoming multi-threading, the MySQL connection pool has been implemented. This code is not usable on its own yet, but it will allow all threads to share a pool of connections in the future. This should improve the overall MySQL lease backend performance. (Gitlab #960) 1683. [bug] wlodek Perfdhcp is able to parse incoming packet and determine if included IA_NA/IA_PD options are correct, counter of rejected leases is introduced for all DHCP v6 message exchanges. Perfdhcp will no longer send Request/Renew/Release message without proper IA_NA/IA_PD included. (Gitlab #572) 1682. [bug]* tmark Added logic to core code and HA hook lib to allow HA peers to detect and handle out of bandwidth socket events. This corrects a defect introduced in Kea 1.6.0 that can cause an HA server to become unresponsive when an HA socket has been closed by a peer. Note that there is a change to the signature of the external socket callback handler invoked by IfaceMgr. Custome hook libraries happen register external sockets with IfaceMgr will require modification and recompilation. (Gitlab #964) Kea 1.7.1 (development) released on Oct 30, 2019 1681. [func] fdupont Added new command config-backend-pull which forces the server to immediately poll the configuration updates from the configuration backend (Gitlab #904) 1680. [bug,build] Kristoffer Larsen A bug in Makefile has been fixed. The changes made to src/lib/dhcpsrv/alloc_engine_messages.mes are now picked up properly. (Gitlab #752) 1679. [func] fdupont Added new commands to the lease_cmds hooks library to search for leases by hardware address, client-id, DUID and hostname. Now hostnames are stored in lower case within the lease database. (Gitlab #393) 1678. [build] fdupont The arguments passed to configure are now stored and are available using -W command line option. (Gitlab #869) 1677. [doc] wlodek Sample configs now all use the same paths for control sockets. (Gitlab #795) 1676. [func] fdupont A new hook - flex-option - has been developed. It allows setting up DHCPv4 and DHCPv6 option values dynamically, using expression. This capability is very useful when you want to generate option value procedurally. For details, see new section "Flexible Option for Option value settings" in the Kea Administrator Reference Manual. (Gitlab #219,!523, git 2bf854c029b9b07ee6161bc1fcb4dfdc9846ee42) 1675. [func] fdupont Both DHCPv4 and DHCPv6 can now listen on and send responses to a custom UDP port, as specified with the -p command line option. This capability is mostly useful for testing. (Gitlab #677,!548, git 47e709fb7b89464d4473e8c7cb138f539042d68b) 1674. [perf] fdupont Added a Multi Threading Manager singleton class in the util library. (Gitlab #962,!566, git 66b090e54b45bdeefda266ddd62e42b46ed48d1d) 1673. [bug] tmark Fixed a bug introduced in Kea 1.6.0 (see #539) that caused kea-dhcp4 and kea-dhcp6 to discard inbound packets containing string options that consist solely of nulls. The servers will now quietly omit empty or all-null string options from inbound packets. (Gitlab #900,!561, git c75a7c10bde74f59d481a7717b4e03b9cb2268a6) 1672. [build] fdupont Deprecated bind1st and bind2nd templates were replaced with lambda expressions or plain bind templates. (Gitlab #919,!521, git b12fa3374454c9c0d749557d5532aab55dbc58d9) 1671. [bug] tmark Corrected an issue in kea-dhcp6 where the server would fail to extend the expiry of a existing dynamic lease assigned to client with host reservation. (Gitlab #754,!558, git c223380012b82c93292528b593002c2b80b5361b) 1670. [func] fdupont Added searches for host reservations by hostname and by hostname and subnet. (Gitlan #392,!529, git 50068ada6b277c9251de9062501d8c478a8f5529) 1669. [func] tmark Rather than within the 'dhcp-ddns' section, DDNS behavioral parameters may now be specified at global, shared-network, and subnet scopes. Implemented for both kea-dhcp4 and kea-dhcp6. Not yet supported by Config Backend or Netconf. (Gitlab #35,!517, git 49ce6286f5d00f99c1c890f12cbc0fd633c9dbf6) 1668. [build] fdupont The Kea util thread library was removed. (Gitlab #907,!519, git 1b27dc52aae23753643461086f0950b125bf9c93) 1667. [build] fdupont The availability of C++11 thread, mutex, condition variable and atomic libraries is now checked by ./configure. (Gitlab #918,!520, git baf4097520c1cd38366ee4f33a95dde040906e9e) 1666. [doc] tmark Added note in ARM about manually admining cb data being possible but not supported. (Gitlab #917,!518, git f242e5c2e0e14331172671477dce3a6597691b55) Kea 1.7.0 (development) released on Sep 25, 2019 1665. [build] tmark Bumped up library version numbers for Kea 1.7.0 final release. (Gitlab #924,!526, git c4061d0fdd660c8e375b4e1317603935ccc00b39) 1664. [build] razvan Make sysrepo_config detect installed sysrepo version. (Gitlab #766,!449, git e1a236fa4f4680d3eadade6b5f5a6a6065620a5b) 1663. [build] fdupont Dropped support for Botan 1.x crypto library in Kea as these versions are now end of life. (Gitlab #345,!498, git ba028eee986c0da963754c6fcb74790081557bec) 1662. [bug] marcin Prevent deadlock in the Kea DHCP servers caused by allocating memory in the system signal handler. The issue was found on CentOS 7.6, but could possibly affect Kea running on any other OS. (Gitlab #796,!504, git f858d9d0b63a18370ebb8bd7d1b8250d0c5a1cb5) 1661. [bug] tmark kea-dhcp4 now rejects inbound client messages that have neither a hardware address nor a client identifier. (Gitlab #821,!501, git 60baf65d0c9de384b0da147b50b7fc3180fc54dd) 1660. [func] franek Statistics of the DHCP packets are now initialized upon the server startup. This makes the statistics available for fetching via control channel immediately after the server is started. (Gitlab #755,!503, git f0238d1b6e88dfedaa91029ec3b65e06c14cab34) 1659. [bug] razvan Corrected an issue in the DHCPv4 server logic whereby the user-defined option definitions were not committed which could result in configuration failures when values for such options were specified. (Gitlab #729, !434, git e5b68fb226161dcdef0e4d2d9d03d9bdb95af5e2) Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.