# Kea 2.7.4 Release Notes, October 30th, 2024 Welcome to Kea 2.7.4, the fifth monthly release of the 2.7 development series. 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 update and a REST API; optional database support (MySQL and PostgreSQL); optional RADIUS, Kerberos, YANG/NETCONF, and GSS-TSIG support; and much more. Kea provides extensive management capabilities, including but not limited to: TLS support, Role-Based Access Control, run-time configuration monitoring and updates via a REST API, host reservations, and client classification. The text below references issue numbers. For more details, visit the Kea GitLab page at https://gitlab.isc.org/isc-projects/kea/-/issues. For details about Docker issues, visit the page at https://gitlab.isc.org/isc-projects/kea-docker/-/issues/. For details about packaging, visit the page at https://gitlab.isc.org/isc-projects/kea-packaging/-/issues/. The following bug fixes and features have been implemented since the previous release, version 2.7.3: 1. **SQL hooks**: Support for MySQL and PostgreSQL was moved to separate hooks. Administrators who want to use specific backends need to load those hooks. [ #3536]. The documentation regarding those new hooks was updated [ #3586]. The parser was relaxed to accept any lease and host database type [ #3585]. 2. **Class tags**: Option class-tagging allows an option value to be conditionally applied to the response based on the client's class membership. The effect is similar to using an if-block in ISC DHCP to conditionally include options at a given scope. Class-tagging is done by specifying a list of one or more class names in the option's `client-classes` entry. Tagged classes can be used in global, network, subnet, pool, class, and host scopes [ #3583]. 3. **Classification**: The `only-if-required` and `require-client-classes` were renamed to `only-in-additional-list` and `evaluate-additional-classes` [ #3587]. We fixed a bug where Kea did not return the value of vendor-encapsulated-options when redefined in a client class [ #3582, #3510]. Classes included in 'require-client-classes' that do not have test expressions will now be unconditionally added to the client's list of matching classes; previously they were ignored [ #3588]. Additional classes are now evaluated in the same order as for option data, i.e. (pd-)pool, subnet, and shared network. In earlier versions, the order was reversed but this feature was not used [ #3590]. 4. **CCC Options**: The DHCPv4 daemon now supports CableLabs Client Configuration option (122) and all its sub-options (except sub-option 3) as defined in RFC3495, RFC3594, and RFC3634 [ #3404]. 5. **NTP Servers options**: We added support for the DHCPv6 `ntp-server` (56) option specified by RFC 5908 and its associated suboptions in the `v6-ntp-server-suboptions` space [ #3390]. 6. **New API commands**: Three new commands were added: `subnet4-select-test`, `subnet6-select-test`, and `subnet4o6-select-test`. They can be used to check which subnet would be selected for given parameters [ #2974]. 7. **Fuzzing support**: Kea source code has been fuzz-tested for a while; we moved the fuzzing support into the public open source repository [ #3605]. 8. **Build improvements**: A PostgreSQL 15-specific command was added to improve portability [ #3630]. We dropped support for Botan without TLS support [ #3552]. 9. **Bug fixes**: We fixed an incorrect value in `option_def_data_type` [ #3631]. We fixed a problem in the shutdown procedure of the HTTP connection pool [ #3602]. We fixed all problems reported by UBSAN (Undefined Behaviour Sanitizer) [ #3616]. Kea no longer freezes during restart when using host commands and a hosts database [ #3619]. We fixed all relevant issues reported by Valgrind [ #3351]. We fixed a bug where Kea did not return the value of vendor-encapsulated-options when redefined in a client class [ #3582, #3510]. We fixed the application of `output_options` when using the `config-set` command. We deprecated `output_options`, which will be removed in future versions. Configurations should be updated by switching to using `output-options` instead [ #3594]. The code now prevents clients from declining expired or released leases; only a valid lease assigned to the declining client can now be declined. When a misbehaving client declined a lease it did not own, it could distort statistics for assigned and declined leases [ #3565]. We fixed the serialization of the `retry-on-startup` database configuration parameter as a boolean instead of a string [ #3578]. 10. **Documentation**: We fixed a typo in the `stash-agent-options` documentation [ #3529, #3629]. We provided an explanation for why `calculate-tee-times` has a different value in DHCPv4 and DHCPv6 [ #3538]. ## Incompatible Changes 1. The `only-if-required` and `require-client-classes` parameters were renamed to `only-in-additional-list` and `evaluate-additional-classes` [ #3587]. 2. Classes included in `require-client-classes` that do not have test expressions will now be unconditionally added to the client's list of matching classes; previously they were ignored [ #3588]. ## License This version of Kea is released under the Mozilla Public License, version 2.0. https://www.mozilla.org/en-US/MPL/2.0 Some Kea hook libraries are provided under the MPL 2.0; others are licensed with the [Kea Hooks Basic Commercial End User License](https://www.isc.org/kea-premium-license/). The source for each hook library includes the applicable license. ## Download Pre-built ISC packages for current versions of the most popular Linux operating systems are available at: https://cloudsmith.io/\~isc/repos/ Pre-built Docker images, as well as Docker files, are available. For details, see: https://gitlab.isc.org/isc-projects/kea-docker 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 in HTML, PDF, or EPUB 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 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 upgrades since the 2.7.3 release. 2302. [func] tmark Options may now be configured with a list of client classes for which they apply. This feature is referred to as "option class-tagging" and is supported by both kea-dhcp4 and kea-dhcp6. (GitLab #3583) 2301. [func] fdupont Added support of DHCPv4 "cablelab-client-conf" (122) option and its associated suboptions specified by RFC 3495, 3594 and 3634 in the "cablelabs-client-conf" space at the exception of the suboption 3. (Gitlab #3404) 2300. [build, func] andrei Standalone fuzz target binaries used in fuzz testing were added to the "fuzz" directory. (Gitlab #3605) 2299. [func]* fdupont Required classes are now evaluated in the same order as for option data, i.e. (pd-)pool, subnet and shared network. Before the order was reversed but this feature was not used. (Gitlab #3590) 2298. [bug] fdupont Fixed a bug where Kea did not return the value of vendor-encapsulated-options when redefined in a client class. (Gitlab #3582) 2297. [build]* fdupont Made the Botan boost TLS support mandatory. Changed the configure argument to --with-botan using the Botan pkg-config library name e.g. "botan-2". (Gitlab #3552) 2296. [func]* fdupont Classes included in 'require-client-classes' that do not have test expressions will now be unconditionally added to the client's list of matching classes. Previously they were ignored. (Gitlab #3388) 2295. [func] fdupont Relaxed the lease, host and config database backend types in the configuration syntax. This change is introduced to better handle optional backends provided in hooks, such as currently available MySQL or PostgreSQL hooks. (Gitlab #3585) 2294. [func] fdupont Added support of DHCPv6 "ntp-server" (56) option specified by RFC 5908 and its associated suboptions in the "v6-ntp-server-suboptions" space. (Gitlab #3390) 2293. [build] razvan The library version numbers have been bumped up for the Kea 2.7.4 development release. (Gitlab #3639) 2292. [doc] tmark Updated the ARM to include and an explanation for why the default values for 'calculate-tee-times' are different for kea-dhcp4 and kea-dhcp6. (Gitlab #3538) 2291. [func] fdupont Added three new API commands: subnet4-select-test and subnet4o6-select-test to kea-dhcp4, and subnet6-select-test to kea-dhcp6. These commands can be used to check which subnet the server will select based on given input parameters. (Gitlab #2974) 2290. [bug] razvan Fixed applying 'output_options' when using the 'config-set' command. Deprecated 'output_options' which will be removed in future versions. Configurations should be updated by switching to using 'output-options' instead. (Gitlab #3594) 2289. [func]* razvan Support for lease, host, and config backends for MySQL and PostgreSQL have been consolidated into a single hook library for each data base: 'libdhcp_mysql.so' and 'libdhcp_pgsql.so' respectively. (Gitlab #3536) 2288. [bug] marcin Prevent the clients from declining expired or released leases. Only a valid lease assigned to the declining client can now be declined. When a misbehaving client declined a lease it did not own it often led to inconsistent statistics of assigned and declined leases. (Gitlab #3565) Thank you again to everyone who assisted us in making this release possible. We look forward to receiving your feedback.