]> git.99rst.org Git - openwrt-packages.git/commitdiff
kea: update to 3.2.0
authorPhilip Prindeville <redacted>
Sun, 31 May 2026 19:40:17 +0000 (13:40 -0600)
committerPhilip Prindeville <redacted>
Tue, 30 Jun 2026 01:52:48 +0000 (19:52 -0600)
Update to LTS version, which includes support for NAKing unknown
class requests.

https://gitlab.isc.org/isc-projects/kea/-/issues/4110

Signed-off-by: Philip Prindeville <redacted>
net/kea/Makefile
net/kea/patches/020-boost-system.patch [deleted file]
net/kea/patches/030-cpp.patch [deleted file]
net/kea/patches/040-boost-189.patch [deleted file]
net/kea/patches/050-boost-static-assert.patch [deleted file]
net/kea/patches/100-oopenssl-deprecated.patch [deleted file]

index 6f6e8c4ad7216f26d67b18a56c357df0e5cc6f30..bf984720c972391f371e44ac95ea1f27283511ed 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=kea
-PKG_VERSION:=3.0.3
-PKG_RELEASE:=2
+PKG_VERSION:=3.2.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://ftp.isc.org/isc/kea/$(PKG_VERSION)
-PKG_HASH:=09702ddb078b637e85de9236cbedd3fb9d7af7c6e797026c538b45748ad4d631
+PKG_HASH:=14bf695d37b65b9b1bf550fea5d0adaf9806c50e5419ef2a176a4b8e9aade3df
 
 PKG_MAINTAINER:=Philip Prindeville <philipp@redfish-solutions.com>, Noah Meyerhans <frodo@morgul.net>
 PKG_LICENSE:=MPL-2.0
@@ -258,9 +258,7 @@ endef
 define Package/kea-ctrl/install
        $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/kea
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/keactrl $(1)/usr/sbin/keactrl
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kea-ctrl-agent $(1)/usr/sbin/kea-ctrl-agent
        $(CP) $(PKG_INSTALL_DIR)/etc/kea/keactrl.conf $(1)/etc/kea/
-       $(CP) $(PKG_INSTALL_DIR)/etc/kea/kea-ctrl-agent.conf $(1)/etc/kea/
 endef
 
 define Package/kea-lfc/install
diff --git a/net/kea/patches/020-boost-system.patch b/net/kea/patches/020-boost-system.patch
deleted file mode 100644 (file)
index 16273a4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/meson.build
-+++ b/meson.build
-@@ -189,7 +189,7 @@ message(f'Detected system "@SYSTEM@".')
- #### Dependencies
--boost_dep = dependency('boost', version: '>=1.66', modules: ['system'])
-+boost_dep = dependency('boost', version: '>=1.66')
- dl_dep = dependency('dl')
- threads_dep = dependency('threads')
- add_project_dependencies(boost_dep, dl_dep, threads_dep, language: ['cpp'])
diff --git a/net/kea/patches/030-cpp.patch b/net/kea/patches/030-cpp.patch
deleted file mode 100644 (file)
index c6ffafa..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
---- a/meson.build
-+++ b/meson.build
-@@ -300,7 +300,6 @@ endif
- # Google Test
- GTEST_DEP = dependency(
-     'gtest',
--    fallback: ['gtest', 'gtest_dep'],
-     required: FUZZ_OPT.enabled() or TESTS_OPT.enabled(),
- )
-@@ -363,167 +362,80 @@ conf_data.set('HAVE_PGSQL', POSTGRESQL_D
- #### Compiler Checks
--# The required keyword in cpp.run() is an 1.5.0 feature.
--result = cpp.run(
--    fs.read('compiler-checks/get-cpp-standard.cc'),
--    name: 'Get cpp standard',
--)
--if result.returncode() == 0
--    cpp_standard = result.stdout().strip()
--else
--    error('C++ standard is unknown')
--endif
--message(f'Detected C++ standard (__cplusplus value) is @cpp_standard@.')
--cpp_std_opt = get_option('cpp_std')
--no_cpp_std_opt_msg = 'Please set a C++ standard by passing the -D cpp_std argument to meson.'
--cpp_std_opt_msg = f'-D cpp_std=@cpp_std_opt@ is not enough.'
--if cpp_standard.version_compare('<201100')
--    msgs = [
--        'Kea requires at least C++11 to build.',
--        'Recommended C++ standard is C++14 but some dependencies require at least C++20',
--    ]
--    if cpp_std_opt == 'none'
--        msgs += no_cpp_std_opt_msg
--    else
--        msgs += cpp_std_opt_msg
--    endif
--    error('\n'.join(msgs))
--endif
--if cpp_standard.version_compare('<201400')
--    result = cpp.run(
--        fs.read('compiler-checks/boost-math-cpp14.cc'),
--        name: 'BOOST_MATH_REQUIRES_CPP14',
--        dependencies: [boost_dep, threads_dep],
--    )
--    if result.returncode() != 0
--        msgs = ['Boost Math requires at least C++14.']
--        if cpp_std_opt == 'none'
--            msgs += no_cpp_std_opt_msg
--        else
--            msgs += cpp_std_opt_msg
--        endif
--        error('\n'.join(msgs))
--    endif
--endif
--if NETCONF_DEP.found() and cpp_standard.version_compare('<202000')
--    msgs = ['NETCONF dependency requires at least C++20.']
--    if cpp_std_opt == 'none'
--        msgs += no_cpp_std_opt_msg
--    else
--        msgs += cpp_std_opt_msg
--    endif
--    if netconf_opt.enabled()
--        error('\n'.join(msgs))
--    else
--        msgs += 'Disabling NETCONF.'
--        warning('\n'.join(msgs))
--        NETCONF_DEP = disabler()
--    endif
--endif
--if CRYPTO_DEP.name() == botan.name() and cpp_standard.version_compare('<202000')
--    msgs = ['Botan dependency requires at least C++20.']
--    if cpp_std_opt == 'none'
--        msgs += no_cpp_std_opt_msg
--    else
--        msgs += cpp_std_opt_msg
--    endif
--    error('\n'.join(msgs))
--endif
--
--result = cpp.run(
--    fs.read('compiler-checks/boost-has-threads.cc'),
--    dependencies: [boost_dep, threads_dep],
--    name: 'BOOST_HAS_THREADS',
--)
--if result.returncode() != 0
--    error('boost is not configured to use threads')
--endif
--
--if cpp.has_header('boost/regex.h', dependencies: [boost_dep], required: false)
--    result = cpp.run(
--        fs.read('compiler-checks/boost-regex.cc'),
--        dependencies: [boost_dep, threads_dep],
--        name: 'GET_SYSTEM_VS_BOOST_REGEX_HEADER',
--    )
--    if result.returncode() != 0
--        error('boost/regex.h is used in place of system regex.h')
--    endif
--endif
--
--result = cpp.run(
-+result = cpp.compiles(
-     fs.read('compiler-checks/chrono-same-duration.cc'),
-     name: 'CHRONO_SAME_DURATION',
- )
--conf_data.set('CHRONO_SAME_DURATION', result.returncode() == 0)
-+conf_data.set('CHRONO_SAME_DURATION', result)
- if CRYPTO_DEP.name() == openssl.name()
--    result1 = cpp.run(
-+    result1 = cpp.compiles(
-         fs.read('compiler-checks/have-generic-tls-method.cc'),
-         name: 'HAVE_GENERIC_TLS_METHOD',
-         dependencies: [boost_dep, CRYPTO_DEP, threads_dep],
-     )
--    result2 = cpp.run(
-+    result2 = cpp.compiles(
-         fs.read('compiler-checks/stream-truncated-error.cc'),
-         name: 'HAVE_STREAM_TRUNCATED_ERROR',
-         dependencies: [boost_dep, CRYPTO_DEP, threads_dep],
-     )
--    if result1.returncode() != 0 or result2.returncode() != 0
-+    if not result1 or not result2
-         error('Boost TLS support broken.')
-     endif
- endif
- if CRYPTO_DEP.name() == botan.name()
--    result = cpp.run(
-+    result = cpp.compiles(
-         fs.read('compiler-checks/botan-hash.cc'),
-         name: 'CHECK_BOTAN_LIBRARY',
-         dependencies: [boost_dep, CRYPTO_DEP, threads_dep],
-     )
--    if result.returncode() != 0
-+    if not result
-         error('Botan library does not work.')
-     endif
- endif
--result = cpp.run(
-+result = cpp.compiles(
-     fs.read('compiler-checks/have-optreset.cc'),
-     name: 'HAVE_OPTRESET',
- )
--conf_data.set('HAVE_OPTRESET', result.returncode() == 0)
-+conf_data.set('HAVE_OPTRESET', result)
--result = cpp.run(fs.read('compiler-checks/have-sa-len.cc'), name: 'HAVE_SA_LEN')
--conf_data.set('HAVE_SA_LEN', result.returncode() == 0)
-+result = cpp.compiles(fs.read('compiler-checks/have-sa-len.cc'), name: 'HAVE_SA_LEN')
-+conf_data.set('HAVE_SA_LEN', result)
--result = cpp.run(
-+result = cpp.compiles(
-     fs.read('compiler-checks/log4cplus-initializer.cc'),
-     name: 'LOG4CPLUS_INITIALIZER_H',
-     dependencies: [LOG4CPLUS_DEP],
- )
--conf_data.set('LOG4CPLUS_INITIALIZER_H', result.returncode() == 0)
-+conf_data.set('LOG4CPLUS_INITIALIZER_H', result)
- if MYSQL_DEP.found()
--    result = cpp.run(
-+    result = cpp.compiles(
-         fs.read('compiler-checks/mysql-my-bool.cc'),
-         name: 'MYSQL_MY_BOOL',
-         dependencies: [MYSQL_DEP],
-     )
--    conf_data.set('HAVE_MYSQL_MY_BOOL', result.returncode() == 0)
-+    conf_data.set('HAVE_MYSQL_MY_BOOL', result)
--    result = cpp.run(
-+    result = cpp.compiles(
-         fs.read('compiler-checks/mysql-get-option.cc'),
-         name: 'HAVE_MYSQL_GET_OPTION',
-         dependencies: [MYSQL_DEP],
-     )
--    conf_data.set('HAVE_MYSQL_GET_OPTION', result.returncode() == 0)
-+    conf_data.set('HAVE_MYSQL_GET_OPTION', result)
- endif
--result = cpp.run(
-+result = cpp.compiles(
-     fs.read('compiler-checks/fuzzing-with-clusterfuzzlite.cc'),
-     name: 'FUZZING_WITH_CLUSTERFUZZLITE',
- )
--FUZZING_WITH_CLUSTERFUZZLITE = result.returncode() == 0
-+FUZZING_WITH_CLUSTERFUZZLITE = result
- have_afl = false
--result = cpp.run(fs.read('compiler-checks/have-afl.cc'), name: 'HAVE_AFL')
--if result.returncode() == 0
-+result = cpp.compiles(fs.read('compiler-checks/have-afl.cc'), name: 'HAVE_AFL')
-+if result
-     have_afl = true
- endif
- conf_data.set('HAVE_AFL', have_afl)
-@@ -534,22 +446,22 @@ if GTEST_DEP.found()
-     if GTEST_DEP.type_name() == 'internal'
-         conf_data.set('HAVE_CREATE_UNIFIED_DIFF', true)
-     else
--        result = cpp.run(
-+        result = cpp.compiles(
-             fs.read('compiler-checks/have-create-unified-diff.cc'),
-             name: 'HAVE_CREATE_UNIFIED_DIFF',
-             dependencies: [GTEST_DEP],
-         )
--        conf_data.set('HAVE_CREATE_UNIFIED_DIFF', result.returncode() == 0)
-+        conf_data.set('HAVE_CREATE_UNIFIED_DIFF', result)
-     endif
- endif
- if KRB5_DEP.found()
--    result = cpp.run(
-+    result = cpp.compiles(
-         fs.read('compiler-checks/have-gss-str-to-oid.cc'),
-         name: 'HAVE_GSS_STR_TO_OID',
-         dependencies: [KRB5_DEP],
-     )
--    conf_data.set('HAVE_GSS_STR_TO_OID', result.returncode() == 0)
-+    conf_data.set('HAVE_GSS_STR_TO_OID', result)
- endif
- #### Other checks.
-@@ -753,7 +665,7 @@ if result.returncode() == 0
- else
-     report_conf_data.set('CXX_VERSION', 'unknown')
- endif
--report_conf_data.set('CXX_STANDARD', cpp_standard)
-+report_conf_data.set('CXX_STANDARD', '20')
- compile_args += cpp_args_opt
- report_conf_data.set('CXX_ARGS', ' '.join(compile_args))
- report_conf_data.set('LD_ID', cpp.get_linker_id())
-@@ -762,29 +674,25 @@ report_conf_data.set('LD_ARGS', ' '.join
- report_conf_data.set('PYTHON_PATH', PYTHON.full_path())
- report_conf_data.set('PYTHON_VERSION', PYTHON.version())
- report_conf_data.set('PKGPYTHONDIR', PKGPYTHONDIR)
--result = cpp.run(
-+result = cpp.compiles(
-     fs.read('compiler-checks/get-boost-version.cc'),
-     dependencies: [boost_dep, threads_dep],
-     name: 'Get Boost version',
- )
--if result.returncode() == 0
--    report_conf_data.set('BOOST_VERSION', result.stdout().strip())
-+if result
-+    report_conf_data.set('BOOST_VERSION', boost_dep.version())
- else
-     report_conf_data.set('BOOST_VERSION', 'unknown version')
- endif
- if CRYPTO_DEP.name() == botan.name()
-     report_conf_data.set('CRYPTO_NAME', 'Botan')
-     report_conf_data.set('SPACES', '                ')
--    result = cpp.run(
-+    result = cpp.compiles(
-         fs.read('compiler-checks/get-botan-version.cc'),
-         name: 'Get Botan version',
-         dependencies: [CRYPTO_DEP],
-     )
--    if result.returncode() == 0
--        version = result.stdout().strip()
--    else
--        version = botan.version()
--    endif
-+    version = botan.version()
-     if version == 'unknown'
-         version = 'unknown version'
-     endif
-@@ -792,31 +700,23 @@ if CRYPTO_DEP.name() == botan.name()
- elif CRYPTO_DEP.name() == openssl.name()
-     report_conf_data.set('CRYPTO_NAME', 'OpenSSL')
-     report_conf_data.set('SPACES', '              ')
--    result = cpp.run(
-+    result = cpp.compiles(
-         fs.read('compiler-checks/get-openssl-version.cc'),
-         name: 'Get OpenSSL version',
-         dependencies: [CRYPTO_DEP],
-     )
--    if result.returncode() == 0
--        version = result.stdout().strip()
--    else
--        version = openssl.version()
--    endif
-+    version = openssl.version()
-     if version == 'unknown'
-         version = 'unknown version'
-     endif
-     report_conf_data.set('CRYPTO_VERSION', version)
- endif
--result = cpp.run(
-+result = cpp.compiles(
-     fs.read('compiler-checks/get-log4cplus-version.cc'),
-     name: 'Get Log4cplus version',
-     dependencies: [LOG4CPLUS_DEP],
- )
--if result.returncode() == 0
--    version = result.stdout().strip()
--else
--    version = log4cplus.version()
--endif
-+version = LOG4CPLUS_DEP.version()
- if version == 'unknown'
-     version = 'unknown version'
- endif
-@@ -1091,13 +991,6 @@ pkg.generate(
- #### More Custom Targets
--if TARGETS_GEN_MESSAGES.length() > 0
--    alias_target('messages', TARGETS_GEN_MESSAGES)
--else
--    error(
--        'No messages to generate. This is probably an error in the meson.build files.',
--    )
--endif
- if TARGETS_GEN_PARSER.length() > 0
-     alias_target('parser', TARGETS_GEN_PARSER)
- else
diff --git a/net/kea/patches/040-boost-189.patch b/net/kea/patches/040-boost-189.patch
deleted file mode 100644 (file)
index 20e1677..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/src/lib/asiodns/io_fetch.cc
-+++ b/src/lib/asiodns/io_fetch.cc
-@@ -67,7 +67,7 @@ struct IOFetchData : boost::noncopyable
-     OutputBufferPtr               msgbuf;            // Wire buffer for question
-     OutputBufferPtr               received;          // Received data put here
-     IOFetch::Callback*            callback;          // Called on I/O Completion
--    boost::asio::deadline_timer   timer;             // Timer to measure timeouts
-+    boost::asio::steady_timer     timer;             // Timer to measure timeouts
-     IOFetch::Protocol             protocol;          // Protocol being used
-     size_t                        cumulative;        // Cumulative received amount
-     size_t                        expected;          // Expected amount of data
-@@ -227,7 +227,7 @@ IOFetch::operator()(boost::system::error
-         // If we timeout, we stop, which cancels outstanding I/O operations and
-         // shuts down everything.
-         if (data_->timeout != -1) {
--            data_->timer.expires_from_now(boost::posix_time::milliseconds(
-+            data_->timer.expires_after(std::chrono::milliseconds(
-                 data_->timeout));
-             data_->timer.async_wait(std::bind(&IOFetch::stop, *this,
-                 TIME_OUT));
---- a/src/lib/asiolink/interval_timer.cc
-+++ b/src/lib/asiolink/interval_timer.cc
-@@ -88,7 +88,7 @@ private:
-     IOServicePtr io_service_;
-     /// @brief The asio timer.
--    boost::asio::deadline_timer timer_;
-+    boost::asio::steady_timer timer_;
-     /// @brief Controls how the timer behaves after expiration.
-     IntervalTimer::Mode mode_;
-@@ -141,7 +141,7 @@ void
- IntervalTimerImpl::update() {
-     try {
-         // Update expire time to (current time + interval_).
--        timer_.expires_from_now(boost::posix_time::millisec(long(interval_)));
-+        timer_.expires_after(std::chrono::milliseconds(interval_));
-         // Reset timer.
-         // Pass a function bound with a shared_ptr to this.
-         timer_.async_wait(std::bind(&IntervalTimerImpl::callback,
diff --git a/net/kea/patches/050-boost-static-assert.patch b/net/kea/patches/050-boost-static-assert.patch
deleted file mode 100644 (file)
index cda8328..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/src/lib/log/logger_level_impl.cc
-+++ b/src/lib/log/logger_level_impl.cc
-@@ -10,6 +10,7 @@
- #include <string.h>
- #include <iostream>
- #include <boost/lexical_cast.hpp>
-+#include <boost/static_assert.hpp>
- #include <log4cplus/logger.h>
---- a/src/lib/dns/rdataclass.cc
-+++ b/src/lib/dns/rdataclass.cc
-@@ -24,6 +24,7 @@
- #include <dns/txt_like.h>
- #include <util/buffer.h>
- #include <util/encode/encode.h>
-+#include <boost/static_assert.hpp>
- #include <cerrno>
- #include <cstring>
diff --git a/net/kea/patches/100-oopenssl-deprecated.patch b/net/kea/patches/100-oopenssl-deprecated.patch
deleted file mode 100644 (file)
index b6e23f6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-commit b664f981aff4b3a0622d63c0f955effc909a0c8f
-Author: Philip Prindeville <philipp@redfish-solutions.com>
-Date:   Thu Feb 5 14:47:50 2026 -0700
-
-    [#4338] Build with current Openssl API
-
---- a/meson.build
-+++ b/meson.build
-@@ -331,6 +331,12 @@ elif CRYPTO_DEP.name() == openssl.name()
-         required: true,
-     )
-     message('Using OpenSSL.')
-+    if cpp.has_function('SSL_get1_peer_certificate', prefix: '#include <openssl/ssl.h>', dependencies: openssl)
-+      conf_data.set('HAVE_NEW_SSL_API', 1)
-+    endif
-+    if cpp.has_function('OpenSSL_version', prefix: '#include <openssl/crypto.h>', dependencies: openssl)
-+      conf_data.set('HAVE_OPENSSL_VERSION', 1)
-+    endif
- else
-     error('Dependency not found: neither Botan nor OpenSSL.')
- endif
---- a/src/lib/asiolink/openssl_tls.h
-+++ b/src/lib/asiolink/openssl_tls.h
-@@ -171,7 +171,11 @@ public:
-     ///
-     /// @return The commonName part of the subjectName or the empty string.
-     virtual std::string getSubject() {
-+#ifdef HAVE_NEW_SSL_API
-+        ::X509* cert = ::SSL_get1_peer_certificate(this->native_handle());
-+#else
-         ::X509* cert = ::SSL_get_peer_certificate(this->native_handle());
-+#endif
-         if (!cert) {
-             return ("");
-         }
-@@ -205,7 +209,11 @@ public:
-     ///
-     /// @return The commonName part of the issuerName or the empty string.
-     virtual std::string getIssuer() {
-+#ifdef HAVE_NEW_SSL_API
-+        ::X509* cert = ::SSL_get1_peer_certificate(this->native_handle());
-+#else
-         ::X509* cert = ::SSL_get_peer_certificate(this->native_handle());
-+#endif
-         if (!cert) {
-             return ("");
-         }
---- a/src/lib/cryptolink/openssl_link.cc
-+++ b/src/lib/cryptolink/openssl_link.cc
-@@ -77,7 +77,11 @@ CryptoLink::initialize(CryptoLink& c) {
- std::string
- CryptoLink::getVersion() {
-+#ifdef HAVE_OPENSSL_VERSION
-+    return (OpenSSL_version(OPENSSL_VERSION));
-+#else
-     return (SSLeay_version(SSLEAY_VERSION));
-+#endif
- }
- } // namespace cryptolink
git clone https://git.99rst.org/PROJECT