+Kea 3.1.6 (development) released on February 25, 2026
+
+2446. [sec]* fdupont
+ Added the 'use-message-authenticator' parameter to the RADIUS
+ hook library. When true (the default when the transport
+ protocol is not TLS) a Message-Authenticator is added to
+ messages sent by Kea, and required in received messages.
+ (Gitlab #4333)
+
+2445. [doc] fdupont
+ Added supported RADIUS standards to the RADIUS hook library
+ documentation in the ARM.
+ (Gitlab #4285)
+
+2444. [func] fdupont
+ Implemented RADIUS/TLS in the RADIUS hook library.
+ (Gitlab #4274)
+
+2443. [bug] tmark
+ Fixed an issue in kea-dhcp6 that caused the server to
+ not use a reserved host name or recognize a change to
+ the selected subnet for subnet-level reservations
+ within a shared-network when a lease exists for the
+ reservation but is in either the RELEASED or
+ EXPIRED-RECLAIMED states.
+ (Gitlab #4262)
+
+2442. [func] razvan
+ Removed "Lease Expires On" information from the kea-dhcp-ddns
+ log messages.
+ (Gitlab #4280)
+
+2441. [func] tmark
+ Template classes template-test expressions may
+ now test for membership in 'KNOWN'/'UNKNOWN'.
+ (Gitlab #4256)
+
2440. [build] razvan
The library version numbers have been bumped up for the Kea 3.1.6
development release.
+++ /dev/null
-[func] tmark
- Template classes template-test expressions may
- now test for membership in 'KNOWN'/'UNKNOWN'.
- (Gitlab #4256)
+++ /dev/null
-[bug] tmark
- Fixed an issue in kea-dhcp6 that caused the server to
- not use a reserved host name or recognize a change to
- the selected subnet for subnet-level reservations
- within a shared-network when a lease exists for the
- reservation but is in either the RELEASED or
- EXPIRED-RECLAIMED states.
- (Gitlab #4262)
+++ /dev/null
-[func] fdupont
- Implemented RADIUS/TLS in the RADIUS hook library.
- (Gitlab #4274)
+++ /dev/null
-[func] razvan
- Removed "Lease Expires On" information from the kea-dhcp-ddns
- log messages.
- (Gitlab #4280)
+++ /dev/null
-[doc] fdupont
- Added supported RADIUS standards to the RADIUS hook library
- documentation in the ARM.
- (Gitlab #4285)
+++ /dev/null
-[sec]* fdupont
- Added the 'use-message-authenticator' parameter to the RADIUS
- hook library. When true (the default when the transport
- protocol is not TLS) a Message-Authenticator is added to
- messages sent by Kea, and required in received messages.
- (Gitlab #4333)
- RADIUS_BACKEND_GET6
- RADIUS_DECODE_MESSAGE
- RADIUS_ENCODE_MESSAGE
-- RADIUS_EXCHANGE_RECEIVED
- RADIUS_EXCHANGE_RECEIVED_ACCESS_ACCEPT
- RADIUS_EXCHANGE_RECEIVED_ACCESS_REJECT
- RADIUS_EXCHANGE_RECEIVED_ACCOUNTING_RESPONSE
- RADIUS_EXCHANGE_RECEIVED_RESPONSE
-- RADIUS_EXCHANGE_SEND_NEW
-- RADIUS_EXCHANGE_SEND_RETRY
-- RADIUS_EXCHANGE_SENT
-- RADIUS_EXCHANGE_START
-- RADIUS_EXCHANGE_SYNC_RETURN
-- RADIUS_EXCHANGE_TERMINATE
+- RADIUS_TCP_EXCHANGE_RECEIVED
+- RADIUS_TCP_EXCHANGE_SEND
+- RADIUS_TCP_EXCHANGE_START
+- RADIUS_TCP_EXCHANGE_SUCCESS
+- RADIUS_TLS_STATUS
+- RADIUS_TLS_STATUS_FAILED
+- RADIUS_TLS_STATUS_SUCCEED
+- RADIUS_UDP_EXCHANGE_RECEIVED
+- RADIUS_UDP_EXCHANGE_SEND_NEW
+- RADIUS_UDP_EXCHANGE_SEND_RETRY
+- RADIUS_UDP_EXCHANGE_SENT
+- RADIUS_UDP_EXCHANGE_START
+- RADIUS_UDP_EXCHANGE_SYNC_RETURN
+- RADIUS_UDP_EXCHANGE_TERMINATE
- RBAC_CONFIGURED_ACLS
- RBAC_CONFIGURED_COMMANDS
- RBAC_CONFIGURED_ROLES
and value, the identifier, the length and the number of attributes are
displayed.
-RADIUS_EXCHANGE_FAILED
-======================
-
-.. code-block:: text
-
- Exchange %1 failed: %2
-
-This error message is issued when an exchange terminates with an error.
-The exchange identifier and the error message are displayed.
-
-RADIUS_EXCHANGE_OPEN_FAILED
-===========================
-
-.. code-block:: text
-
- Open socket for exchange %1 failed: %2
-
-This error message is issued when an exchange failed to open a new socket.
-The exchange identifier and the error message are displayed.
-
-RADIUS_EXCHANGE_RECEIVED
-========================
-
-.. code-block:: text
-
- Exchange %1 received %2 bytes.
-
-Logged at debug log level 40.
-This debug message is issued when an exchange received a response.
-The exchange identifier and the response size are displayed.
-
RADIUS_EXCHANGE_RECEIVED_ACCESS_ACCEPT
======================================
do not match. The exchange identifier and the two RADIUS message codes are
displayed.
-RADIUS_EXCHANGE_RECEIVE_FAILED
-==============================
-
-.. code-block:: text
-
- Receive for exchange %1 failed: %2
-
-This error message is issued when an exchange failed to receive a message.
-The exchange identifier and the error message are displayed.
-
-RADIUS_EXCHANGE_SEND_FAILED
-===========================
-
-.. code-block:: text
-
- Send for exchange %1 failed: %2
-
-This error message is issued when an exchange failed to send a message.
-The exchange identifier and the error message are displayed.
-
-RADIUS_EXCHANGE_SEND_NEW
-========================
-
-.. code-block:: text
-
- Exchange %1 sends %2 bytes to new server[%3] %4 on port %5
-
-Logged at debug log level 40.
-This debug message is issued when an exchange sends a message to a new server.
-The exchange identifier, message size, server index, address and port
-are displayed.
-
-RADIUS_EXCHANGE_SEND_RETRY
-==========================
-
-.. code-block:: text
-
- Exchange %1 sends %2 bytes for the %3 try.
-
-Logged at debug log level 40.
-This debug message is issued when an exchange sends a message to a new server.
-The exchange identifier, message size and retry counter are displayed.
-
-RADIUS_EXCHANGE_SENT
-====================
-
-.. code-block:: text
-
- Exchange %1 sent %2 bytes.
-
-Logged at debug log level 40.
-This debug message is issued when an exchange sent a request and is ready
-to receive the response. The exchange identifier and request size are
-displayed.
-
-RADIUS_EXCHANGE_START
-=====================
-
-.. code-block:: text
-
- Start exchange %1
-
-Logged at debug log level 40.
-This debug message is issued when an exchange starts. The exchange identifier
-is displayed.
-
-RADIUS_EXCHANGE_SYNC_RETURN
-===========================
-
-.. code-block:: text
-
- Synchronous exchange %1 returns with %2
-
-Logged at debug log level 40.
-This debug message is issued when a synchronous exchange returns.
-The exchange identifier and the error/return code are displayed.
-
-RADIUS_EXCHANGE_TERMINATE
-=========================
-
-.. code-block:: text
-
- Exchange %1 terminates with %2
-
-Logged at debug log level 40.
-This debug message is issued when an exchange terminates with success.
-The exchange identifier and the return code are displayed.
-
-RADIUS_EXCHANGE_TIMEOUT
-=======================
-
-.. code-block:: text
-
- Exchange %1 timeout
-
-This error message is issued when an exchange failed on timeout.
-The exchange identifier is displayed.
-
RADIUS_HOOK_FAILED
==================
of stored records before the failure and the expected number of records
are displayed.
+RADIUS_TCP_EXCHANGE_FAILURE
+===========================
+
+.. code-block:: text
+
+ TCP exchange %1 failed: %2
+
+This error message is issued when a TCP exchange terminates with an error.
+The exchange identifier and the error return code are displayed.
+
+RADIUS_TCP_EXCHANGE_RECEIVED
+============================
+
+.. code-block:: text
+
+ TCP exchange %1 received %2 bytes.
+
+Logged at debug log level 40.
+This debug message is issued when a TCP exchange received a response.
+The exchange identifier and the response size are displayed.
+
+RADIUS_TCP_EXCHANGE_RECEIVE_FAILED
+==================================
+
+.. code-block:: text
+
+ Receive for TCP exchange %1 failed: %2
+
+This error message is issued when a TCP exchange failed to receive a message.
+The exchange identifier and the error message are displayed.
+
+RADIUS_TCP_EXCHANGE_SEND
+========================
+
+.. code-block:: text
+
+ TCP exchange %1 sends %2 bytes to server %3 on port %4%5
+
+Logged at debug log level 40.
+This debug message is issued when a TCP exchange sends a message to a
+server. The exchange identifier, message size, server address and port,
+and usage of TLS are displayed.
+
+RADIUS_TCP_EXCHANGE_START
+=========================
+
+.. code-block:: text
+
+ Start TCP exchange %1
+
+Logged at debug log level 40.
+This debug message is issued when a TCP exchange starts. The exchange
+identifier is displayed.
+
+RADIUS_TCP_EXCHANGE_START_ERROR
+===============================
+
+.. code-block:: text
+
+ TCP exchange %1 failed: %2
+
+This error message is issued when a TCP exchange failed to start.
+The exchange identifier and the error message are displayed.
+
+RADIUS_TCP_EXCHANGE_SUCCESS
+===========================
+
+.. code-block:: text
+
+ TCP exchange %1 succeeded: %2
+
+Logged at debug log level 40.
+This debug message is issued when a TCP exchange terminates with success.
+The exchange identifier and the return code are displayed.
+
RADIUS_THREAD_POOL_STARTED
==========================
This informational message is issued when the thread pool is started.
The number of threads is displayed.
+RADIUS_TLS_STATUS
+=================
+
+.. code-block:: text
+
+ send Status-Server with %1
+
+Logged at debug log level 40.
+This debug message is issued when starting to send a Status-Server message
+to TLS servers. The message attributes are logged.
+
+RADIUS_TLS_STATUS_ERROR
+=======================
+
+.. code-block:: text
+
+ received error response to Status-Server: %1 (%2) with %3
+
+This error message indicates that a valid response to Status-Server message
+was received from TLS servers but with an unexpected code or an
+Error-Cause attribute. The response details are logged.
+
+RADIUS_TLS_STATUS_FAILED
+========================
+
+.. code-block:: text
+
+ Status-Server failed: return code %1 (%2)
+
+Logged at debug log level 40.
+This debug message is issued when no valid response to Status-Server message
+was received from TLS servers.
+
+RADIUS_TLS_STATUS_SUCCEED
+=========================
+
+.. code-block:: text
+
+ received valid response to Status-Server
+
+Logged at debug log level 40.
+This debug message indicates that a valid response to Status-Server message
+was received from TLS servers.
+
+RADIUS_UDP_EXCHANGE_FAILED
+==========================
+
+.. code-block:: text
+
+ UDP exchange %1 failed: %2
+
+This error message is issued when an UDP exchange terminates with an error.
+The exchange identifier and the error return code are displayed.
+
+RADIUS_UDP_EXCHANGE_OPEN_FAILED
+===============================
+
+.. code-block:: text
+
+ Open socket for UDP exchange %1 failed: %2
+
+This error message is issued when an UDP exchange failed to open a new socket.
+The exchange identifier and the error message are displayed.
+
+RADIUS_UDP_EXCHANGE_RECEIVED
+============================
+
+.. code-block:: text
+
+ UDP exchange %1 received %2 bytes.
+
+Logged at debug log level 40.
+This debug message is issued when an UDP exchange received a response.
+The exchange identifier and the response size are displayed.
+
+RADIUS_UDP_EXCHANGE_RECEIVE_FAILED
+==================================
+
+.. code-block:: text
+
+ Receive for UDP exchange %1 failed: %2
+
+This error message is issued when an UDP exchange failed to receive a message.
+The exchange identifier and the error message are displayed.
+
+RADIUS_UDP_EXCHANGE_SEND_FAILED
+===============================
+
+.. code-block:: text
+
+ Send for UDP exchange %1 failed: %2
+
+This error message is issued when an UDP exchange failed to send a message.
+The exchange identifier and the error message are displayed.
+
+RADIUS_UDP_EXCHANGE_SEND_NEW
+============================
+
+.. code-block:: text
+
+ UDP exchange %1 sends %2 bytes to new server[%3] %4 on port %5
+
+Logged at debug log level 40.
+This debug message is issued when an UDP exchange sends a message to a
+new server. The exchange identifier, message size, server index,
+address and port are displayed.
+
+RADIUS_UDP_EXCHANGE_SEND_RETRY
+==============================
+
+.. code-block:: text
+
+ UDP exchange %1 sends %2 bytes for the %3 try.
+
+Logged at debug log level 40.
+This debug message is issued when an UDP exchange sends a message to a
+new server. The exchange identifier, message size and retry counter
+are displayed.
+
+RADIUS_UDP_EXCHANGE_SENT
+========================
+
+.. code-block:: text
+
+ UDP exchange %1 sent %2 bytes.
+
+Logged at debug log level 40.
+This debug message is issued when an UDP exchange sent a request and is ready
+to receive the response. The exchange identifier and request size are
+displayed.
+
+RADIUS_UDP_EXCHANGE_START
+=========================
+
+.. code-block:: text
+
+ Start UDP exchange %1
+
+Logged at debug log level 40.
+This debug message is issued when an UDP exchange starts. The exchange
+identifier is displayed.
+
+RADIUS_UDP_EXCHANGE_SYNC_RETURN
+===============================
+
+.. code-block:: text
+
+ Synchronous UDP exchange %1 returns with %2
+
+Logged at debug log level 40.
+This debug message is issued when a synchronous UDP exchange returns.
+The exchange identifier and the error/return code are displayed.
+
+RADIUS_UDP_EXCHANGE_TERMINATE
+=============================
+
+.. code-block:: text
+
+ UDP exchange %1 terminates with %2
+
+Logged at debug log level 40.
+This debug message is issued when an UDP exchange terminates with success.
+The exchange identifier and the return code are displayed.
+
+RADIUS_UDP_EXCHANGE_TIMEOUT
+===========================
+
+.. code-block:: text
+
+ UDP exchange %1 timeout
+
+This error message is issued when an UDP exchange failed on timeout.
+The exchange identifier is displayed.
+
****
RBAC
****
project(
'kea',
'cpp',
- version: '3.1.5-git',
+ version: '3.1.6-git',
meson_version: '>=1.1.0',
license: 'MPL-2.0',
license_files: ['COPYING'],
-// Copyright (C) 2023 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2023 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2023 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2014-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2011-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2011-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2016-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2016-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2014-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2017-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2017-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2020-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2020-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2023-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2023-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2020 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2013-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2013-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2014-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2014-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2015-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2015-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2015-2024 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2014-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2015-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2015-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
-# Copyright (C) 2022-2024 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2022-2026 Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
-// Copyright (C) 2012-2025 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2026 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this