7 Commits

Author SHA256 Message Date
46ac77e042 Revert "Dummy commit to test scmsync"
This reverts commit 59f1a3766a.
2025-03-27 11:30:28 +01:00
59f1a3766a Dummy commit to test scmsync 2025-03-27 11:18:09 +01:00
Jorik Cronenberg
08da159db5 Update to version 2.6.2 2025-03-26 17:11:07 +01:00
Jorik Cronenberg
f28bceea66 Fix for latest boost version 1.87 and sphinx changes 2025-03-13 14:53:30 +01:00
Jorik Cronenberg
9912ef67c7 Remove leading zeros from %if %{with ...} 2024-10-08 16:47:30 +02:00
Jorik Cronenberg
c3078ecd5f Update to release 2.6.1 2024-10-08 15:12:23 +02:00
ddf20505c7 kea 2.6.0 (synchronize with OBS) 2024-07-23 05:09:58 +02:00
7 changed files with 343 additions and 93 deletions

BIN
kea-2.4.1.tar.gz (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEE2mo1COZypJ3Tgq/ZW49NkbiO2QkFAmVlt28ACgkQW49NkbiO
2QmI3g/8DRsJRa85qqDuWNcfE5qv3Aj0BWZwqv2pM60vGBHCcXRbsfIEMOd7boww
OvehccLJ5ybpBAFWEh6LyKfllX8xbnY8u4Hio8RiwyFgycKASLn9xYoQisq30wxW
iNNS7Ep+mCrkjNXvVP7W3bvcwMPpRrkVaTGFva/4zeTv+8hKU62y3ltxKL6BZG+4
2vCqBQ2g4jfecHzigQJx2fV1epJ2XyG6hjXtoMqziEZ7nvhyG7sZowhLK/QZXl2u
ja4EdmRAZBXcsCXzBN7W42K5P2damH+mde4W0b71WlrHZQVouNvLDyMIsn3CTU7q
84qfUNpz0i1hnofLRAMIoLUepXZiwcMdX6MCL7R8u0HIcNy4xj7giPIRndVUORCf
r2be7vr8MFkOZ/em2t5vv8FaJkq/9AK4b7qISyOvYoRB0GKyWcdbex0l+yJAhc1K
tFX6lyLOUIBToJ7xNE5W1xBCUoblVqZ2eLLUV844HPFNRzVb33+Pl+oL2h7MVpTs
KY5frHIH1sV+SK/oxEcrfjXsTQwFImmzuTwJK5/ucZtnl97TEikq6lwI6QG/DbiL
KhDJXouJP4yMAN7z59PXZKXMSH+iscqiNGlN+XXGm/fUwNt4Ennosj+ElRh7bk+H
AwGTjUh6ZtoMgSCAPcn5yvfXB6Fn2ZpmLBiu6Vhl91kb1/qdxsw=
=C/w0
-----END PGP SIGNATURE-----

View File

@@ -0,0 +1,191 @@
From 81edc181f85395c39964104ef049a195bafb9737 Mon Sep 17 00:00:00 2001
From: q66 <q66@chimera-linux.org>
Date: Sun, 15 Dec 2024 03:04:53 +0100
Subject: [PATCH] [#3696] Update asiolink for boost 1.87
---
src/lib/asiolink/io_address.cc | 4 ++--
src/lib/asiolink/io_service.cc | 8 ++++----
src/lib/asiolink/tcp_endpoint.h | 2 +-
src/lib/asiolink/udp_endpoint.h | 2 +-
src/lib/asiolink/unix_domain_socket.cc | 16 ++++++++--------
src/lib/dhcp/iface_mgr.cc | 2 +-
6 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/src/lib/asiolink/io_address.cc b/src/lib/asiolink/io_address.cc
index 43459bfe5ab..06b7d3d990c 100644
--- a/src/lib/asiolink/io_address.cc
+++ b/src/lib/asiolink/io_address.cc
@@ -37,7 +37,7 @@ IOAddress::Hash::operator()(const IOAddress &io_address) const {
// because we'd like to throw our own exception on failure.
IOAddress::IOAddress(const std::string& address_str) {
boost::system::error_code err;
- asio_address_ = ip::address::from_string(address_str, err);
+ asio_address_ = ip::make_address(address_str, err);
if (err) {
isc_throw(IOError, "Failed to convert string to address '"
<< address_str << "': " << err.message());
@@ -116,7 +116,7 @@ IOAddress::isV6Multicast() const {
uint32_t
IOAddress::toUint32() const {
if (asio_address_.is_v4()) {
- return (asio_address_.to_v4().to_ulong());
+ return (asio_address_.to_v4().to_uint());
} else {
isc_throw(BadValue, "Can't convert " << toText()
<< " address to IPv4.");
diff --git a/src/lib/asiolink/io_service.cc b/src/lib/asiolink/io_service.cc
index 411de641915..cc28d24c19f 100644
--- a/src/lib/asiolink/io_service.cc
+++ b/src/lib/asiolink/io_service.cc
@@ -30,7 +30,7 @@ public:
/// @brief The constructor.
IOServiceImpl() :
io_service_(),
- work_(new boost::asio::io_service::work(io_service_)) {
+ work_(boost::asio::make_work_guard(io_service_)) {
};
/// @brief The destructor.
@@ -92,7 +92,7 @@ public:
/// @brief Restarts the IOService in preparation for a subsequent @ref run() invocation.
void restart() {
- io_service_.reset();
+ io_service_.restart();
}
/// @brief Removes IO service work object to let it finish running
@@ -115,12 +115,12 @@ public:
///
/// @param callback The callback to be run on the IO service.
void post(const std::function<void ()>& callback) {
- io_service_.post(callback);
+ boost::asio::post(io_service_, callback);
}
private:
boost::asio::io_service io_service_;
- boost::shared_ptr<boost::asio::io_service::work> work_;
+ boost::asio::executor_work_guard<boost::asio::io_service::executor_type> work_;
};
IOService::IOService() : io_impl_(new IOServiceImpl()) {
diff --git a/src/lib/asiolink/tcp_endpoint.h b/src/lib/asiolink/tcp_endpoint.h
index 8ebd57551db..7c8cb35535d 100644
--- a/src/lib/asiolink/tcp_endpoint.h
+++ b/src/lib/asiolink/tcp_endpoint.h
@@ -42,7 +42,7 @@ public:
/// \param port The TCP port number of the endpoint.
TCPEndpoint(const IOAddress& address, const unsigned short port) :
asio_endpoint_placeholder_(
- new boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string(address.toText()),
+ new boost::asio::ip::tcp::endpoint(boost::asio::ip::make_address(address.toText()),
port)),
asio_endpoint_(*asio_endpoint_placeholder_)
{}
diff --git a/src/lib/asiolink/udp_endpoint.h b/src/lib/asiolink/udp_endpoint.h
index f960bf3ce9f..2a3da9f0464 100644
--- a/src/lib/asiolink/udp_endpoint.h
+++ b/src/lib/asiolink/udp_endpoint.h
@@ -42,7 +42,7 @@ public:
/// \param port The UDP port number of the endpoint.
UDPEndpoint(const IOAddress& address, const unsigned short port) :
asio_endpoint_placeholder_(
- new boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string(address.toText()),
+ new boost::asio::ip::udp::endpoint(boost::asio::ip::make_address(address.toText()),
port)),
asio_endpoint_(*asio_endpoint_placeholder_)
{}
diff --git a/src/lib/asiolink/unix_domain_socket.cc b/src/lib/asiolink/unix_domain_socket.cc
index f43e1c9e9bb..43ff3c8f241 100644
--- a/src/lib/asiolink/unix_domain_socket.cc
+++ b/src/lib/asiolink/unix_domain_socket.cc
@@ -83,7 +83,7 @@ public:
/// @param buffer Buffers holding the data to be sent.
/// @param handler User supplied callback to be invoked when data have
/// been sent or sending error is signalled.
- void doSend(const boost::asio::const_buffers_1& buffer,
+ void doSend(const boost::asio::const_buffer& buffer,
const UnixDomainSocket::Handler& handler);
@@ -103,7 +103,7 @@ public:
/// @param ec Error code returned as a result of sending the data.
/// @param length Length of the data sent.
void sendHandler(const UnixDomainSocket::Handler& remote_handler,
- const boost::asio::const_buffers_1& buffer,
+ const boost::asio::const_buffer& buffer,
const boost::system::error_code& ec,
size_t length);
@@ -127,7 +127,7 @@ public:
/// @param buffer A buffer into which the data should be received.
/// @param handler User supplied callback invoked when data have been
/// received on an error is signalled.
- void doReceive(const boost::asio::mutable_buffers_1& buffer,
+ void doReceive(const boost::asio::mutable_buffer& buffer,
const UnixDomainSocket::Handler& handler);
/// @brief Local handler invoked as a result of asynchronous receive.
@@ -146,7 +146,7 @@ public:
/// @param ec Error code returned as a result of asynchronous receive.
/// @param length Size of the received data.
void receiveHandler(const UnixDomainSocket::Handler& remote_handler,
- const boost::asio::mutable_buffers_1& buffer,
+ const boost::asio::mutable_buffer& buffer,
const boost::system::error_code& ec,
size_t length);
@@ -197,7 +197,7 @@ UnixDomainSocketImpl::asyncSend(const void* data, const size_t length,
}
void
-UnixDomainSocketImpl::doSend(const boost::asio::const_buffers_1& buffer,
+UnixDomainSocketImpl::doSend(const boost::asio::const_buffer& buffer,
const UnixDomainSocket::Handler& handler) {
auto local_handler = std::bind(&UnixDomainSocketImpl::sendHandler,
shared_from_this(),
@@ -207,7 +207,7 @@ UnixDomainSocketImpl::doSend(const boost::asio::const_buffers_1& buffer,
void
UnixDomainSocketImpl::sendHandler(const UnixDomainSocket::Handler& remote_handler,
- const boost::asio::const_buffers_1& buffer,
+ const boost::asio::const_buffer& buffer,
const boost::system::error_code& ec,
size_t length) {
// The asynchronous send may return EWOULDBLOCK or EAGAIN on some
@@ -230,7 +230,7 @@ UnixDomainSocketImpl::asyncReceive(void* data, const size_t length,
}
void
-UnixDomainSocketImpl::doReceive(const boost::asio::mutable_buffers_1& buffer,
+UnixDomainSocketImpl::doReceive(const boost::asio::mutable_buffer& buffer,
const UnixDomainSocket::Handler& handler) {
auto local_handler = std::bind(&UnixDomainSocketImpl::receiveHandler,
shared_from_this(),
@@ -240,7 +240,7 @@ UnixDomainSocketImpl::doReceive(const boost::asio::mutable_buffers_1& buffer,
void
UnixDomainSocketImpl::receiveHandler(const UnixDomainSocket::Handler& remote_handler,
- const boost::asio::mutable_buffers_1& buffer,
+ const boost::asio::mutable_buffer& buffer,
const boost::system::error_code& ec,
size_t length) {
// The asynchronous receive may return EWOULDBLOCK or EAGAIN on some
diff --git a/src/lib/dhcp/iface_mgr.cc b/src/lib/dhcp/iface_mgr.cc
index 01a1d63da5d..419268bfe5c 100644
--- a/src/lib/dhcp/iface_mgr.cc
+++ b/src/lib/dhcp/iface_mgr.cc
@@ -1034,7 +1034,7 @@ IfaceMgr::getLocalAddress(const IOAddress& remote_addr, const uint16_t port) {
}
// Create socket that will be used to connect to remote endpoint.
- boost::asio::io_service io_service;
+ boost::asio::io_context io_service;
boost::asio::ip::udp::socket sock(io_service);
boost::system::error_code err_code;
--
GitLab

BIN
kea-2.6.2.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

16
kea-2.6.2.tar.gz.asc Normal file
View File

@@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEECQoqB5I/kltXZ4A6QuXfeMgycdsFAmfdcgEACgkQQuXfeMgy
cdtrbA/+MjIYfXn9nu1CoHtX4pxqh35uFYYU6WxDLgeGdHrUIBZe2xGbsZU44n01
UEJ4u0SJXKpktmnt6R0XZ3R0q5KjQJ1RuOj2nGl/+FupxSYwxZl4ZmT6xivqrPyF
q5XU/Vp3JQLhxbLo2w4uxcCGV00O4BGXc5SWPwiVUhf3IXElZuLryvjeU39FgfBf
0y/PkhugUh/PNavkeHuCALbKD4NH4uhDXlbABWJ3GH4rq1gKpl1NAiHFuah2QWtx
WAstxrR9W0o1SftIrCp2pbmjTXLKEZ2fPxJ4y0hf1ByGrgyN8MIS9JdLQKQdAhDd
LOe59KxYxYF7lpgfbX4bSQU7XsXkYfETlfC0WvfyoEvl+Eg/LeZuUc1PlG5+u3BG
RTep9g0WdkPf3SdmdIKGF6/AOvAo1ovms64KVr9mbKGLrGtkiv/mFCKc59EHkl4Y
MH51YFfE34TB27zi7veGyfsQrKNESnRjVrlnewhWX7WeXkuHkR+Y2cqiYxSCx7Tb
F2K+qOP2m+ICTWS0APxaUfJyETUyuNFTnfaWj+izYbIkE3vv11hAGuG5t7ef/tXF
JY68doC9RFc5bF9q89xt93ePL3qls5ADBo4fZI67fpXFnywENiQGwUhBB5sxsYYs
puVNNq7/nT+05IwpSr1TEpCtPHWDOFHG/lvAjcBYb2AGEnVGdpM=
=h8nL
-----END PGP SIGNATURE-----

View File

@@ -1,3 +1,83 @@
-------------------------------------------------------------------
Wed Mar 26 16:01:54 UTC 2025 - Jorik Cronenberg <jorik.cronenberg@suse.com>
- Update to release 2.6.2
Bug fixes:
* Fix for inaccurate statistics: Kea was miscalculating
declined and assigned leases.
* Fix for lease conflicts and NAK: Conflicting entries were
created when two relayed HA instances tried to update a shared
lease DB at the same time.
* Fix for `subnetX-del` not removing subnets completely:
`subnetX-del` was not correctly deleting the subnet declaration
from the shared network configuration section.
* Fix for `config-write` and `retry-on-startup` parameter:
`config-write` was improperly storing the `retry-on-startup`
parameter in the config file, causing Kea to fail when
restarting.
* Fix for incorrect DB schema entry: A typo prevented the
upgrade script from working in certain circumstances.
* Fix for mishandling malformed DISCOVER packets:
* Fix for excessive memory utilization when receiving frequent
SIGHUP: Kea was storing a history of configs in memory with
each restart.
* Fix for `config-set` with `output_options`: `config-set` was
omitting the `output_options` section when spelled with "_".
* Fix for store-extended-info breaking lease limits: A specific
combination of vendor classes and storing extended info caused
limits to not be applied.
* Fix for DB connection recovery
* DB upgrade scripts: DB upgrade could fail on some
distributions.
-------------------------------------------------------------------
Thu Mar 13 13:26:28 UTC 2025 - Jorik Cronenberg <jorik.cronenberg@suse.com>
- Add patch to fix build with boost 1.87
(kea-2.6.1-boost_1.87-compat.patch)
- Add BuildRequires for python3-sphinx_rtd_theme to fix docs build
-------------------------------------------------------------------
Tue Oct 8 11:47:33 UTC 2024 - Jorik Cronenberg <jorik.cronenberg@suse.com>
- Update to release 2.6.1
Bug fixes:
* Corrected an issue in MySQL config back end that causes
preferred life time values to be overwritten when updating
client classes via remote-set-class6. command.
* Corrected an issue with overlapping enum values for option
definition data type. This was causing option definitions of
type "record", created via config backend commands, to not load
properly when fetched from the back end.
* Corrected a bug in storing and fetching the encapsulated DHCP
options from the configuration backend. These options were
sometimes not returned when they were specified at the subnet,
shared network or client class level.
* Fixed a file descriptor leak in the High Availability hook
library.
- Only require bison for build and enable regen_files on Tumbleweed
and SLFO, because bison is too old in SLES/Leap
- Remove leading zeros from %if %{with ...}
-------------------------------------------------------------------
Tue Jun 18 09:37:04 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.6.0
* New features:
* Hub-and-spoke model in High Availability (HA)
* Ping Check hook, RADIUS hook, Performance Monitoring hook
* Database connection retry on startup
* Classless static route option
* Discovery of Network-designated Resolvers (DNR) options
* Stash Agent options: ISC DHCP provided a
`stash-agent-options` mechanism that, when enabled, caused
the server to remember options inserted by a relay agent
during the initial exchange with a client.
* Removals/Changes:
* Removed autogeneration of subnet-ids
* `output_options` was renamed to `output-options`
------------------------------------------------------------------- -------------------------------------------------------------------
Sat Feb 3 12:40:17 UTC 2024 - Jan Engelhardt <jengelh@inai.de> Sat Feb 3 12:40:17 UTC 2024 - Jan Engelhardt <jengelh@inai.de>

127
kea.spec
View File

@@ -16,36 +16,36 @@
# #
%define asiodns_sover 35 %define asiodns_sover 48
%define asiolink_sover 56 %define asiolink_sover 71
%define cc_sover 54 %define cc_sover 68
%define cfgclient_sover 51 %define cfgclient_sover 65
%define cryptolink_sover 38 %define cryptolink_sover 50
%define d2srv_sover 30 %define d2srv_sover 46
%define database_sover 48 %define database_sover 62
%define dhcppp_sover 74 %define dhcppp_sover 91
%define dhcp_ddns_sover 41 %define dhcp_ddns_sover 56
%define dhcpsrv_sover 90 %define dhcpsrv_sover 110
%define dnspp_sover 42 %define dnspp_sover 56
%define eval_sover 52 %define eval_sover 69
%define exceptions_sover 23 %define exceptions_sover 33
%define hooks_sover 78 %define hooks_sover 99
%define http_sover 56 %define http_sover 71
%define log_sover 48 %define log_sover 61
%define mysql_sover 53 %define mysql_sover 71
%define pgsql_sover 53 %define pgsql_sover 71
%define process_sover 57 %define process_sover 73
%define stats_sover 29 %define stats_sover 41
%define tcp_sover 5 %define tcp_sover 18
%define util_io_sover 0 %define util_io_sover 0
%define util_sover 68 %define util_sover 85
%if 0%{?suse_version} >= 1500 %if 0%{?suse_version} >= 1600
%bcond_without regen_files %bcond_without regen_files
%else %else
%bcond_with regen_files %bcond_with regen_files
%endif %endif
Name: kea Name: kea
Version: 2.4.1 Version: 2.6.2
Release: 0 Release: 0
Summary: Dynamic Host Configuration Protocol daemon Summary: Dynamic Host Configuration Protocol daemon
License: MPL-2.0 License: MPL-2.0
@@ -57,9 +57,12 @@ Source: https://ftp.isc.org/isc/kea/%version/kea-%version.tar.gz
Source2: https://ftp.isc.org/isc/kea/%version/kea-%version.tar.gz.asc Source2: https://ftp.isc.org/isc/kea/%version/kea-%version.tar.gz.asc
# https://www.isc.org/pgpkey/ # https://www.isc.org/pgpkey/
Source3: kea.keyring Source3: kea.keyring
Patch0: kea-2.6.1-boost_1.87-compat.patch
BuildRequires: autoconf >= 2.59 BuildRequires: autoconf >= 2.59
BuildRequires: automake BuildRequires: automake
%if %{with regen_files}
BuildRequires: bison >= 3.3 BuildRequires: bison >= 3.3
%endif
BuildRequires: freeradius-server-devel BuildRequires: freeradius-server-devel
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: libmysqlclient-devel BuildRequires: libmysqlclient-devel
@@ -70,12 +73,13 @@ BuildRequires: postgresql-server-devel
BuildRequires: python-rpm-macros BuildRequires: python-rpm-macros
BuildRequires: python3 BuildRequires: python3
BuildRequires: python3-Sphinx BuildRequires: python3-Sphinx
BuildRequires: python3-sphinx_rtd_theme
BuildRequires: sysuser-tools BuildRequires: sysuser-tools
BuildRequires: xz BuildRequires: xz
BuildRequires: pkgconfig(libcrypto) BuildRequires: pkgconfig(libcrypto)
%sysusers_requires %sysusers_requires
Suggests: %name-hooks = %version Suggests: %name-hooks = %version
%if 0%{with regen_files} %if %{with regen_files}
BuildRequires: flex BuildRequires: flex
%endif %endif
%if 0%{?suse_version} >= 1500 %if 0%{?suse_version} >= 1500
@@ -357,7 +361,7 @@ export FREERADIUS_DICTIONARY=""
autoreconf -fi autoreconf -fi
%configure \ %configure \
--disable-rpath --disable-static \ --disable-rpath --disable-static \
%if 0%{with regen_files} %if %{with regen_files}
--enable-generate-docs --enable-generate-parser \ --enable-generate-docs --enable-generate-parser \
%endif %endif
--enable-logger-checks \ --enable-logger-checks \
@@ -397,7 +401,6 @@ perl -i -pe 's{%_localstatedir/log/kea-}{%_localstatedir/log/kea/}' \
"$b/%_sysconfdir/kea"/*.conf "$b/%_sysconfdir/kea"/*.conf
mkdir -p "$b%_localstatedir/log/kea" mkdir -p "$b%_localstatedir/log/kea"
ln -s "%_sbindir/service" "%buildroot/%_sbindir/rc%name"
# Remove unnecessary files # Remove unnecessary files
find "%buildroot/%_libdir" -name "*.so.*" -type l -delete find "%buildroot/%_libdir" -name "*.so.*" -type l -delete
@@ -416,58 +419,34 @@ systemd-tmpfiles --create kea.conf || :
%postun %postun
%service_del_postun kea.service %service_del_postun kea.service
%post -n libkea-asiodns%asiodns_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-asiodns%asiodns_sover
%postun -n libkea-asiodns%asiodns_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-asiolink%asiolink_sover
%post -n libkea-asiolink%asiolink_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-cc%cc_sover
%postun -n libkea-asiolink%asiolink_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-cfgclient%cfgclient_sover
%post -n libkea-cc%cc_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-cryptolink%cryptolink_sover
%postun -n libkea-cc%cc_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-d2srv%d2srv_sover
%post -n libkea-cfgclient%cfgclient_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-database%database_sover
%postun -n libkea-cfgclient%cfgclient_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-dhcp++%dhcppp_sover
%post -n libkea-cryptolink%cryptolink_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-dhcp_ddns%dhcp_ddns_sover
%postun -n libkea-cryptolink%cryptolink_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-dhcpsrv%dhcpsrv_sover
%post -n libkea-d2srv%d2srv_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-dns++%dnspp_sover
%postun -n libkea-d2srv%d2srv_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-eval%eval_sover
%post -n libkea-database%database_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-exceptions%exceptions_sover
%postun -n libkea-database%database_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-hooks%hooks_sover
%post -n libkea-dhcp++%dhcppp_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-http%http_sover
%postun -n libkea-dhcp++%dhcppp_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-log%log_sover
%post -n libkea-dhcp_ddns%dhcp_ddns_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-mysql%mysql_sover
%postun -n libkea-dhcp_ddns%dhcp_ddns_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-pgsql%pgsql_sover
%post -n libkea-dhcpsrv%dhcpsrv_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-process%process_sover
%postun -n libkea-dhcpsrv%dhcpsrv_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-stats%stats_sover
%post -n libkea-dns++%dnspp_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-tcp%tcp_sover
%postun -n libkea-dns++%dnspp_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-util-io%util_io_sover
%post -n libkea-eval%eval_sover -p /sbin/ldconfig %ldconfig_scriptlets -n libkea-util%util_sover
%postun -n libkea-eval%eval_sover -p /sbin/ldconfig
%post -n libkea-exceptions%exceptions_sover -p /sbin/ldconfig
%postun -n libkea-exceptions%exceptions_sover -p /sbin/ldconfig
%post -n libkea-hooks%hooks_sover -p /sbin/ldconfig
%postun -n libkea-hooks%hooks_sover -p /sbin/ldconfig
%post -n libkea-http%http_sover -p /sbin/ldconfig
%postun -n libkea-http%http_sover -p /sbin/ldconfig
%post -n libkea-log%log_sover -p /sbin/ldconfig
%postun -n libkea-log%log_sover -p /sbin/ldconfig
%post -n libkea-mysql%mysql_sover -p /sbin/ldconfig
%postun -n libkea-mysql%mysql_sover -p /sbin/ldconfig
%post -n libkea-pgsql%pgsql_sover -p /sbin/ldconfig
%postun -n libkea-pgsql%pgsql_sover -p /sbin/ldconfig
%post -n libkea-process%process_sover -p /sbin/ldconfig
%postun -n libkea-process%process_sover -p /sbin/ldconfig
%post -n libkea-stats%stats_sover -p /sbin/ldconfig
%postun -n libkea-stats%stats_sover -p /sbin/ldconfig
%post -n libkea-tcp%tcp_sover -p /sbin/ldconfig
%postun -n libkea-tcp%tcp_sover -p /sbin/ldconfig
%post -n libkea-util-io%util_io_sover -p /sbin/ldconfig
%postun -n libkea-util-io%util_io_sover -p /sbin/ldconfig
%post -n libkea-util%util_sover -p /sbin/ldconfig
%postun -n libkea-util%util_sover -p /sbin/ldconfig
%files %files
%dir %_sysconfdir/kea %dir %_sysconfdir/kea
%config(noreplace) %_sysconfdir/kea/*.conf %config(noreplace) %_sysconfdir/kea/*.conf
%_mandir/man8/*.8%{?ext_man} %_mandir/man8/*.8%{?ext_man}
%_sbindir/rckea
%_sbindir/kea* %_sbindir/kea*
%_sbindir/perfdhcp %_sbindir/perfdhcp
%_datadir/kea/ %_datadir/kea/