# Kea 2.1.4, March 30 2022, Release Notes Welcome to Kea 2.1.4, the fifth monthly release of the 2.1 development branch. As with any other development release, use this with caution: development releases are not recommended for production use. Kea is a DHCP implementation developed by Internet Systems Consortium (ISC) that features DHCPv4 and DHCPv6 servers with DNS updating and a REST API; optional database support (MySQL and PostgreSQL); optional RADIUS, Kerberos, and Yang/NETCONF support; and much more. Kea provides extensive management capabilities, including but not limited to: TLS support, run-time configuration monitoring and updates via a REST API, host reservations, client classification, and more. 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 bugfixes and features have been implemented since the Kea 2.1.3 release: 1. **PostgreSQL Config Backend for DHCPv6**: The last remaining missing part (DHCPv6 support) has now been implemented. The PostgreSQL-based Config Backend implementation is now complete. This brings Kea's PostgreSQL capabilities to full parity with MySQL. The implementation supports the same features as its MySQL counterpart: global parameters, shared networks, subnets, pools, options, option definitions, and classes [#96, #2356, #2334, #2355, #2349, #2346, #2342, #2330, #2322]. 2. **Early global HR lookup**: During normal operation, Kea selects a subnet first based on topological information and then conducts a host reservation (HR) lookup for that specific subnet. This meant that the subnet selection could affect HR selection, but the opposite was not possible. In some scenarios, the opposite operation (do a global host reservation lookup first and then use the classes defined in HR to select subnet) makes sense. This is now possible. A new boolean parameter `early-global-reservations-lookup` has been added to allow this behavior. This option is not compatible with RADIUS [#1543, #2249, #2304]. 3. **RADIUS and subnet selection**: The RADIUS hook is now able to reselect a subnet based on the address reserved by RADIUS. This new functionality will be useful for deployments that use RADIUS and several subnets, with or without shared networks [#2347]. 4. **Custom spaces in flex-option**: The flex-option hook now has the ability to interact with sub-options, including standard and custom spaces [#2314]. 5. **Bug fixes**: We fixed a bug which caused client classes with empty test expressions to fail class evaluation when those classes were retrieved from a Config Backend [#2336]. The file creation dates are now set properly for files installed via native packages [#2325]. Custom logging in forensic logging now properly handles cases with more than one lease (either IPv6 address or IPv6 prefix) in the same packet [#2181]. The obsolete log message, DHCP4_NCR_CREATE, has been removed from kea-dhcp4 [#2308]. [#2344] corrected an issue in the MySQL config back end that caused it to incorrectly store values of zero for valid and preferred (v6) life times when those parameters were not explicitly set in commands to add or update subnets. In order to ensure consistent behavior users should consider running the following SQL statement against their MySQL config database(s): START TRANSACTION; SET @disable_audit = 1; UPDATE dhcp4_client_class set valid_lifetime=null, min_valid_lifetime=null, max_valid_lifetime=null where valid_lifetime = 0; UPDATE dhcp6_client_class set valid_lifetime=null, min_valid_lifetime=null, max_valid_lifetime=null where valid_lifetime = 0; UPDATE dhcp6_client_class set preferred_lifetime=null, min_preferred_lifetime=null, max_preferred_lifetime=null where preferred_lifetime = 0; COMMIT; The script was left as an optional exercise in the unlikely event that users have intentionally set these values to zero. 6. **Build improvements**: hammer (test tool) installs a RADIUS server along with the RADIUS client libs [#2350]. A script used in CI to detect discrepancies between DB schema scripts had been improved [#2326]. 7. **Doc updates**: Clarified documentation for `subnet4-update` and `subnet6-update` to explain that the whole subnet is being overwritten, not just the fields specified. If you only want to change one or a few fields, use `subnetX-get` first, change the desired fields and then push the updated content with `subnetX-update` [#2265] ## Incompatible Changes None. ## 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 under the terms of an End User License Agreement. ## 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 at https://kea.readthedocs.io/en/latest/index.html. 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. ## Changes The following summarizes changes and important upgrade notes since the 2.1.3 release for Kea core: 2004. [build] razvan Library version numbers bumped for Kea 2.1.4 development version. (Gitlab #2363) 2003. [func] fdupont Added the support of sub-options in the flex_option hook library. (GitLab #2314) 2002. [bug] tmark Fixed a bug in MySql config back end that caused it to store unspecified, client-class valid and preferred life time values as zero in the database. (Gitlab #2344) 2001. [bug] razvan Fixed a bug which causes client classes with empty test expressions to fail class evaluation when those classes are retrieved from config back end. (Gitlab #2336) 2000. [func] fdupont Added the ``early-global-reservations-lookup`` configuration parameter which allows to perform a search for global host reservations and set client classes before the subnet selection. This is achieved when explicitly configured to ``true`` and it defaults to ``false`` if not configured. (Gitlab #2249) 1999. [func] tmark, razvan The kea-dhcp6 server fully supports using PostgreSQL for config back end. This should be considered an experimental feature. (Gitlab #2355, #2356) 1998. [func] tmark, razvan With the addition of support for client classes, the kea-dhcp4 server now fully supports using PostgreSQL for config back end. (Gitlab #2322) 1997. [bug] tmark The obsolete log message, DHCP4_NCR_CREATE, has been removed from kea-dhcp4. (GitLab #2301) And for Kea premium: 140. [bug] andrei The RADIUS hook library now reselects the assigned subnet to another subnet containing the reserved address, if such a subnet is configured, if it is different than the one initially selected and if "reselect-subnet-address" is true. Prior to this, the subnet reselection based on the reserved address was stricter and in some cases returned SUBNET_ID_UNUSED resulting in NAK or NoAddrsAvail. (Gitlab #2347) 139. [func] fdupont Added a configuration error for the RADIUS hook library when the early-global-reservations-lookup global flag is set to true. (Gitlab #2304) 138. [func] razvan Added support for multiple IA_NA with multiple OPTION_IAADDR sub-options and multiple IA_PD with multiple OPTION_IAPREFIX sub-options to be logged by the forensic log hook by matching each allocated or released lease with the packet options. (Gitlab #2181) See https://gitlab.isc.org/isc-projects/kea/-/wikis/Release-Notes for a complete list of release notes. Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.