[kea-dev] Missing boost header file in 3.0.2

Philip Prindeville philipp_subx at redfish-solutions.com
Wed Dec 31 22:55:19 UTC 2025


That’s much bigger than my patch was.

But I was trying to have a point-fix.

--- 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>
 



> On Dec 31, 2025, at 3:52 PM, Francis Dupont <fdupont at isc.org> wrote:
> 
> diff --git a/src/hooks/d2/gss_tsig/gss_tsig_cfg.cc b/src/hooks/d2/gss_tsig/gss_tsig_cfg.cc
> index 2edabfe207..78c5a8c05b 100644
> --- a/src/hooks/d2/gss_tsig/gss_tsig_cfg.cc
> +++ b/src/hooks/d2/gss_tsig/gss_tsig_cfg.cc
> @@ -59,8 +59,10 @@ DnsServer::DnsServer(const string& id, const set<string>& domains,
>       rekey_interval_(DEFAULT_REKEY_INTERVAL),
>       retry_interval_(DEFAULT_RETRY_INTERVAL), tkey_proto_(IOFetch::TCP),
>       fallback_(false), exchange_timeout_(DEFAULT_EXCHANGE_TIMEOUT), timer_() {
> -    BOOST_STATIC_ASSERT(DEFAULT_REKEY_INTERVAL < DEFAULT_KEY_LIFETIME);
> -    BOOST_STATIC_ASSERT(DEFAULT_RETRY_INTERVAL < DEFAULT_REKEY_INTERVAL);
> +    static_assert(DEFAULT_REKEY_INTERVAL < DEFAULT_KEY_LIFETIME,
> +                  "DEFAULT_REKEY_INTERVAL < DEFAULT_KEY_LIFETIME");
> +    static_assert(DEFAULT_RETRY_INTERVAL < DEFAULT_REKEY_INTERVAL,
> +                  "DEFAULT_RETRY_INTERVAL < DEFAULT_REKEY_INTERVAL");
>     initStats();
> }
> 
> diff --git a/src/hooks/dhcp/mysql/mysql_host_data_source.cc b/src/hooks/dhcp/mysql/mysql_host_data_source.cc
> index ae0fa1db9a..6d5aca4fdf 100644
> --- a/src/hooks/dhcp/mysql/mysql_host_data_source.cc
> +++ b/src/hooks/dhcp/mysql/mysql_host_data_source.cc
> @@ -31,7 +31,6 @@
> #include <boost/array.hpp>
> #include <boost/foreach.hpp>
> #include <boost/pointer_cast.hpp>
> -#include <boost/static_assert.hpp>
> 
> #include <mysql.h>
> #include <mysqld_error.h>
> @@ -170,7 +169,7 @@ public:
>         columns_[DHCP4_BOOT_FILE_NAME_COL] = "dhcp4_boot_file_name";
>         columns_[AUTH_KEY_COL] = "auth_key";
> 
> -        BOOST_STATIC_ASSERT(13 < HOST_COLUMNS);
> +        static_assert(13 < HOST_COLUMNS, "13 < HOST_COLUMNS");
>     }
> 
>     /// @brief Virtual destructor.
> @@ -1761,7 +1760,7 @@ public:
>         columns_[5] = "excluded_prefix";
>         columns_[6] = "excluded_prefix_len";
> 
> -        BOOST_STATIC_ASSERT(6 < RESRV_COLUMNS);
> +        static_assert(6 < RESRV_COLUMNS, "6 < RESRV_COLUMNS");
>     }
> 
>     /// @brief Create MYSQL_BIND objects for IPv6 Reservation.
> @@ -1945,7 +1944,7 @@ public:
>           subnet_id_(SUBNET_ID_UNUSED),
>           host_id_(0), option_() {
> 
> -        BOOST_STATIC_ASSERT(11 <= OPTION_COLUMNS);
> +        static_assert(11 <= OPTION_COLUMNS, "11 <= OPTION_COLUMNS");
>     }
> 
>     /// @brief Creates binding array to insert option data into database.
> diff --git a/src/hooks/dhcp/mysql/mysql_lease_mgr.cc b/src/hooks/dhcp/mysql/mysql_lease_mgr.cc
> index e7d4d81725..7021efe728 100644
> --- a/src/hooks/dhcp/mysql/mysql_lease_mgr.cc
> +++ b/src/hooks/dhcp/mysql/mysql_lease_mgr.cc
> @@ -22,7 +22,6 @@
> 
> #include <boost/array.hpp>
> #include <boost/make_shared.hpp>
> -#include <boost/static_assert.hpp>
> #include <mysqld_error.h>
> 
> #include <ctime>
> @@ -700,7 +699,7 @@ public:
>         columns_[RELAY_ID_COL] = "relay_id";
>         columns_[REMOTE_ID_COL] = "remote_id";
>         columns_[POOL_ID_COL] = "pool_id";
> -        BOOST_STATIC_ASSERT(13 < LEASE_COLUMNS);
> +        static_assert(13 < LEASE_COLUMNS, "13 < LEASE_COLUMNS");
>     }
> 
>     /// @brief Create MYSQL_BIND objects for Lease4 Pointer
> @@ -923,7 +922,7 @@ public:
>             setErrorIndicators(bind_, error_, LEASE_COLUMNS);
> 
>             // .. and check that we have the numbers correct at compile time.
> -            BOOST_STATIC_ASSERT(13 < LEASE_COLUMNS);
> +            static_assert(13 < LEASE_COLUMNS, "13 < LEASE_COLUMNS");
> 
>         } catch (const std::exception& ex) {
>             isc_throw(DbOperationError,
> @@ -1066,7 +1065,7 @@ public:
>         setErrorIndicators(bind_, error_, LEASE_COLUMNS);
> 
>         // .. and check that we have the numbers correct at compile time.
> -        BOOST_STATIC_ASSERT(13 < LEASE_COLUMNS);
> +        static_assert(13 < LEASE_COLUMNS, "13 < LEASE_COLUMNS");
> 
>         // Add the data to the vector.  Note the end element is one after the
>         // end of the array.
> @@ -1292,7 +1291,7 @@ public:
>         columns_[STATE_COL] = "state";
>         columns_[USER_CONTEXT_COL] = "user_context";
>         columns_[POOL_ID_COL] = "pool_id";
> -        BOOST_STATIC_ASSERT(17 < LEASE_COLUMNS);
> +        static_assert(17 < LEASE_COLUMNS, "17 < LEASE_COLUMNS");
>     }
> 
>     /// @brief Create MYSQL_BIND objects for Lease6 Pointer
> @@ -1536,7 +1535,7 @@ public:
>             setErrorIndicators(bind_, error_, LEASE_COLUMNS);
> 
>             // .. and check that we have the numbers correct at compile time.
> -            BOOST_STATIC_ASSERT(17 < LEASE_COLUMNS);
> +            static_assert(17 < LEASE_COLUMNS, "17 < LEASE_COLUMNS");
> 
>         } catch (const std::exception& ex) {
>             isc_throw(DbOperationError,
> @@ -1702,7 +1701,7 @@ public:
>         setErrorIndicators(bind_, error_, LEASE_COLUMNS);
> 
>         // .. and check that we have the numbers correct at compile time.
> -        BOOST_STATIC_ASSERT(17 < LEASE_COLUMNS);
> +        static_assert(17 < LEASE_COLUMNS, "17 < LEASE_COLUMNS");
> 
>         // Add the data to the vector.  Note the end element is one after the
>         // end of the array.
> diff --git a/src/hooks/dhcp/mysql/mysql_legal_log.cc b/src/hooks/dhcp/mysql/mysql_legal_log.cc
> index 559e36a247..d7e4720127 100644
> --- a/src/hooks/dhcp/mysql/mysql_legal_log.cc
> +++ b/src/hooks/dhcp/mysql/mysql_legal_log.cc
> @@ -15,7 +15,6 @@
> #include <util/multi_threading_mgr.h>
> 
> #include <boost/array.hpp>
> -#include <boost/static_assert.hpp>
> #include <mysqld_error.h>
> 
> #include <iomanip>
> @@ -62,7 +61,7 @@ public:
>         // Set the column names (for error messages)
>         columns_[0] = "address";
>         columns_[1] = "log";
> -        BOOST_STATIC_ASSERT(1 < LOG_COLUMNS);
> +        static_assert(1 < LOG_COLUMNS, "1 < LOG_COLUMNS");
>     }
> 
>     /// @brief Destructor
> @@ -183,7 +182,7 @@ public:
>             setErrorIndicators(bind_, error_, LOG_COLUMNS);
> 
>             // .. and check that we have the numbers correct at compile time.
> -            BOOST_STATIC_ASSERT(1 < LOG_COLUMNS);
> +            static_assert(1 < LOG_COLUMNS, "1 < LOG_COLUMNS");
> 
>         } catch (const std::exception& ex) {
>             isc_throw(DbOperationError,
> diff --git a/src/hooks/dhcp/pgsql/pgsql_host_data_source.cc b/src/hooks/dhcp/pgsql/pgsql_host_data_source.cc
> index 12fc2d05a6..22e3a4c22e 100644
> --- a/src/hooks/dhcp/pgsql/pgsql_host_data_source.cc
> +++ b/src/hooks/dhcp/pgsql/pgsql_host_data_source.cc
> @@ -30,7 +30,6 @@
> #include <boost/array.hpp>
> #include <boost/foreach.hpp>
> #include <boost/pointer_cast.hpp>
> -#include <boost/static_assert.hpp>
> 
> #include <stdint.h>
> 
> @@ -140,7 +139,7 @@ public:
>         columns_[DHCP4_BOOT_FILE_NAME_COL] = "dhcp4_boot_file_name";
>         columns_[AUTH_KEY_COL] = "auth_key";
> 
> -        BOOST_STATIC_ASSERT(12 < HOST_COLUMNS);
> +        static_assert(12 < HOST_COLUMNS, "12 < HOST_COLUMNS");
>     };
> 
>     /// @brief Virtual destructor.
> @@ -966,7 +965,7 @@ public:
>         columns_[excluded_prefix_index_] = "excluded_prefix";
>         columns_[excluded_prefix_len_index_] = "excluded_prefix_len";
> 
> -        BOOST_STATIC_ASSERT(6 < RESERVATION_COLUMNS);
> +        static_assert(6 < RESERVATION_COLUMNS, "6 < RESERVATION_COLUMNS");
>     }
> 
>     /// @brief Reinitializes state information
> @@ -1150,7 +1149,7 @@ public:
>         columns_[5] = "excluded_prefix";
>         columns_[6] = "excluded_prefix_len";
> 
> -        BOOST_STATIC_ASSERT(7 < RESRV_COLUMNS);
> +        static_assert(7 < RESRV_COLUMNS, "7 < RESRV_COLUMNS");
>     }
> 
>     /// @brief Populate a bind array representing an IPv6 reservation
> @@ -1268,7 +1267,7 @@ public:
>         columns_[DHCP_SUBNET_ID_COL] = "dhcp_subnet_id";
>         columns_[HOST_ID_COL] = "host_id";
> 
> -        BOOST_STATIC_ASSERT(11 <= OPTION_COLUMNS);
> +        static_assert(11 <= OPTION_COLUMNS, "11 <= OPTION_COLUMNS");
>     }
> 
>     /// @brief Creates binding array to insert option data into database.
> diff --git a/src/hooks/dhcp/pgsql/pgsql_lease_mgr.cc b/src/hooks/dhcp/pgsql/pgsql_lease_mgr.cc
> index 02c8e7aab2..887029e10a 100644
> --- a/src/hooks/dhcp/pgsql/pgsql_lease_mgr.cc
> +++ b/src/hooks/dhcp/pgsql/pgsql_lease_mgr.cc
> @@ -21,7 +21,6 @@
> #include <util/multi_threading_mgr.h>
> 
> #include <boost/make_shared.hpp>
> -#include <boost/static_assert.hpp>
> 
> #include <iomanip>
> #include <limits>
> @@ -780,7 +779,7 @@ public:
>         : lease_(), addr4_(0), client_id_length_(0),
>           relay_id_length_(0), remote_id_length_(0) {
> 
> -        BOOST_STATIC_ASSERT(13 < LEASE_COLUMNS);
> +        static_assert(13 < LEASE_COLUMNS, "13 < LEASE_COLUMNS");
> 
>         memset(hwaddr_buffer_, 0, sizeof(hwaddr_buffer_));
>         memset(client_id_buffer_, 0, sizeof(client_id_buffer_));
> @@ -1082,7 +1081,7 @@ public:
>           preferred_lifetime_str_(""), hwtype_(0), hwtype_str_(""),
>           hwaddr_source_(0), hwaddr_source_str_("") {
> 
> -        BOOST_STATIC_ASSERT(17 < LEASE_COLUMNS);
> +        static_assert(17 < LEASE_COLUMNS, "17 < LEASE_COLUMNS");
> 
>         memset(duid_buffer_, 0, sizeof(duid_buffer_));
> 
> diff --git a/src/hooks/dhcp/pgsql/pgsql_legal_log.cc b/src/hooks/dhcp/pgsql/pgsql_legal_log.cc
> index 5b4aef5cdf..2599cff069 100644
> --- a/src/hooks/dhcp/pgsql/pgsql_legal_log.cc
> +++ b/src/hooks/dhcp/pgsql/pgsql_legal_log.cc
> @@ -14,8 +14,6 @@
> #include <dhcpsrv/timer_mgr.h>
> #include <util/multi_threading_mgr.h>
> 
> -#include <boost/static_assert.hpp>
> -
> #include <iomanip>
> #include <limits>
> #include <sstream>
> @@ -65,7 +63,7 @@ public:
>     /// @brief Constructor
>     PgSqlLegLExchange() : address_(""), log_("") {
> 
> -        BOOST_STATIC_ASSERT(0 < LOG_COLUMNS);
> +        static_assert(0 < LOG_COLUMNS, "0 < LOG_COLUMNS");
> 
>         // Set the column names (for error messages)
>         columns_.push_back("log");
> diff --git a/src/lib/asiodns/io_fetch.cc b/src/lib/asiodns/io_fetch.cc
> index c140676f66..24b1761d7b 100644
> --- a/src/lib/asiodns/io_fetch.cc
> +++ b/src/lib/asiodns/io_fetch.cc
> @@ -25,6 +25,7 @@
> #include <boost/scoped_ptr.hpp>
> #include <boost/date_time/posix_time/posix_time_types.hpp>
> 
> +#include <chrono>
> #include <functional>
> #include <unistd.h>             // for some IPC/network system calls
> #include <netinet/in.h>
> @@ -67,7 +68,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::system_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 +228,7 @@ IOFetch::operator()(boost::system::error_code ec, size_t length) {
>         // 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));
> diff --git a/src/lib/asiodns/io_fetch.h b/src/lib/asiodns/io_fetch.h
> index e9c85b58c5..bd5fc1d9ad 100644
> --- a/src/lib/asiodns/io_fetch.h
> +++ b/src/lib/asiodns/io_fetch.h
> @@ -16,7 +16,7 @@
> #include <util/buffer.h>
> 
> #include <boost/asio/coroutine.hpp>
> -#include <boost/asio/deadline_timer.hpp>
> +#include <boost/asio/system_timer.hpp>
> #include <boost/date_time/posix_time/posix_time_types.hpp>
> #include <boost/shared_array.hpp>
> #include <boost/shared_ptr.hpp>
> diff --git a/src/lib/asiodns/tests/io_fetch_unittest.cc b/src/lib/asiodns/tests/io_fetch_unittest.cc
> index 7b4cd0568e..045678f51b 100644
> --- a/src/lib/asiodns/tests/io_fetch_unittest.cc
> +++ b/src/lib/asiodns/tests/io_fetch_unittest.cc
> @@ -23,6 +23,7 @@
> #include <boost/date_time/posix_time/posix_time_types.hpp>
> 
> #include <algorithm>
> +#include <chrono>
> #include <cstdlib>
> #include <functional>
> #include <string>
> @@ -66,7 +67,7 @@ public:
>     IOFetch                          tcp_fetch_;                ///< For TCP query test
>     IOFetch::Protocol                protocol_;                 ///< Protocol being tested
>     size_t                           cumulative_;               ///< Cumulative data received by "server".
> -    deadline_timer                   timer_;                    ///< Timer to measure timeouts
> +    system_timer                     timer_;                    ///< Timer to measure timeouts
> 
>     // The next member is the buffer in which the "server" (implemented by the
>     // response handler methods in this class) receives the question sent by the
> @@ -431,7 +432,7 @@ public:
>             // tcpSendData, which will then send the next chunk.  We pass the
>             // socket over which data should be sent as an argument to that
>             // function.
> -            timer_.expires_from_now(boost::posix_time::milliseconds(SEND_INTERVAL));
> +            timer_.expires_after(std::chrono::milliseconds(SEND_INTERVAL));
>             timer_.async_wait(std::bind(&IOFetchTest::tcpSendData, this,
>                                         socket));
>         }
> diff --git a/src/lib/asiolink/interval_timer.cc b/src/lib/asiolink/interval_timer.cc
> index fa0d9e1b67..4c5902b8d2 100644
> --- a/src/lib/asiolink/interval_timer.cc
> +++ b/src/lib/asiolink/interval_timer.cc
> @@ -16,6 +16,7 @@
> #include <exceptions/exceptions.h>
> 
> #include <atomic>
> +#include <chrono>
> #include <functional>
> #include <mutex>
> 
> @@ -88,7 +89,7 @@ private:
>     IOServicePtr io_service_;
> 
>     /// @brief The asio timer.
> -    boost::asio::deadline_timer timer_;
> +    boost::asio::system_timer timer_;
> 
>     /// @brief Controls how the timer behaves after expiration.
>     IntervalTimer::Mode mode_;
> @@ -141,7 +142,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/src/lib/asiolink/interval_timer.h b/src/lib/asiolink/interval_timer.h
> index d340481e94..24f735deb8 100644
> --- a/src/lib/asiolink/interval_timer.h
> +++ b/src/lib/asiolink/interval_timer.h
> @@ -11,7 +11,7 @@
> #pragma GCC diagnostic push
> #pragma GCC diagnostic ignored "-Woverloaded-virtual"
> #endif
> -#include <boost/asio/deadline_timer.hpp>
> +#include <boost/asio/system_timer.hpp>
> #ifdef __GNUC__
> #pragma GCC diagnostic pop
> #endif
> @@ -27,9 +27,9 @@ namespace asiolink {
> class IntervalTimerImpl;
> 
> /// \brief The \c IntervalTimer class is a wrapper for the ASIO
> -/// \c boost::asio::deadline_timer class.
> +/// \c boost::asio::system_timer class.
> ///
> -/// This class is implemented to use \c boost::asio::deadline_timer as interval
> +/// This class is implemented to use \c boost::asio::system_timer as interval
> /// timer.
> ///
> /// \c setup() sets a timer to expire on (now + interval), a call back
> @@ -96,7 +96,7 @@ public:
>     /// This destructor never throws an exception.
>     ///
>     /// On the destruction of this class the timer will be canceled
> -    /// inside \c boost::asio::deadline_timer.
> +    /// inside \c boost::asio::system_timer.
>     ~IntervalTimer();
>     //@}
> 
> diff --git a/src/lib/asiolink/io_address.cc b/src/lib/asiolink/io_address.cc
> index e912f0f398..bbc96b15cd 100644
> --- a/src/lib/asiolink/io_address.cc
> +++ b/src/lib/asiolink/io_address.cc
> @@ -10,7 +10,6 @@
> #include <asiolink/io_error.h>
> #include <exceptions/exceptions.h>
> 
> -#include <boost/static_assert.hpp>
> // moved to container_hash on recent boost versions (backward compatible)
> #include <boost/functional/hash.hpp>
> 
> @@ -71,7 +70,8 @@ IOAddress::fromBytes(short family, const uint8_t* data) {
>                   << "are supported");
>     }
> 
> -    BOOST_STATIC_ASSERT(INET6_ADDRSTRLEN >= INET_ADDRSTRLEN);
> +    static_assert(INET6_ADDRSTRLEN >= INET_ADDRSTRLEN,
> +                  "INET6_ADDRSTRLEN >= INET_ADDRSTRLEN");
>     char addr_str[INET6_ADDRSTRLEN];
>     inet_ntop(family, data, addr_str, INET6_ADDRSTRLEN);
>     return IOAddress(string(addr_str));
> diff --git a/src/lib/dhcp/iface_mgr_linux.cc b/src/lib/dhcp/iface_mgr_linux.cc
> index d49518c7fb..89dd65d6ff 100644
> --- a/src/lib/dhcp/iface_mgr_linux.cc
> +++ b/src/lib/dhcp/iface_mgr_linux.cc
> @@ -32,7 +32,6 @@
> #include <util/io/sockaddr_util.h>
> 
> #include <boost/array.hpp>
> -#include <boost/static_assert.hpp>
> 
> #include <fcntl.h>
> #include <stdint.h>
> @@ -45,7 +44,7 @@ using namespace isc::asiolink;
> using namespace isc::dhcp;
> using namespace isc::util::io::internal;
> 
> -BOOST_STATIC_ASSERT(IFLA_MAX>=IFA_MAX);
> +static_assert(IFLA_MAX>=IFA_MAX, "IFLA_MAX>=IFA_MAX");
> 
> namespace {
> 
> @@ -180,7 +179,8 @@ void Netlink::rtnl_send_request(int family, int type) {
>     struct sockaddr_nl nladdr;
> 
>     // do a sanity check. Verify that Req structure is aligned properly
> -    BOOST_STATIC_ASSERT(sizeof(nlmsghdr) == offsetof(Req, generic));
> +    static_assert(sizeof(nlmsghdr) == offsetof(Req, generic),
> +                  "sizeof(nlmsghdr) == offsetof(Req, generic)");
> 
>     memset(&nladdr, 0, sizeof(nladdr));
>     nladdr.nl_family = AF_NETLINK;
> diff --git a/src/lib/dhcp/protocol_util.cc b/src/lib/dhcp/protocol_util.cc
> index da701045c8..f3bc355fa8 100644
> --- a/src/lib/dhcp/protocol_util.cc
> +++ b/src/lib/dhcp/protocol_util.cc
> @@ -8,7 +8,6 @@
> #include <asiolink/io_address.h>
> #include <dhcp/dhcp6.h>
> #include <dhcp/protocol_util.h>
> -#include <boost/static_assert.hpp>
> // in_systm.h is required on some some BSD systems
> // complaining that n_time is undefined but used
> // in ip.h.
> @@ -41,7 +40,8 @@ decodeEthernetHeader(InputBuffer& buf, Pkt4Ptr& pkt) {
>     // The size of the single address is always lower then the size of
>     // the header that holds this address. Otherwise, it is a programming
>     // error that we want to detect in the compilation time.
> -    BOOST_STATIC_ASSERT(ETHERNET_HEADER_LEN > HWAddr::ETHERNET_HWADDR_LEN);
> +    static_assert(ETHERNET_HEADER_LEN > HWAddr::ETHERNET_HWADDR_LEN,
> +                  "ETHERNET_HEADER_LEN > HWAddr::ETHERNET_HWADDR_LEN");
> 
>     // Remember initial position.
>     size_t start_pos = buf.getPosition();
> @@ -76,7 +76,8 @@ decodeIpUdpHeader(InputBuffer& buf, Pkt4Ptr& pkt) {
>                   " packet headers");
>     }
> 
> -    BOOST_STATIC_ASSERT(IP_SRC_ADDR_OFFSET < MIN_IP_HEADER_LEN);
> +    static_assert(IP_SRC_ADDR_OFFSET < MIN_IP_HEADER_LEN,
> +                  "IP_SRC_ADDR_OFFSET < MIN_IP_HEADER_LEN");
> 
>     // Remember initial position of the read pointer.
>     size_t start_pos = buf.getPosition();
> diff --git a/src/lib/dhcp/tests/pkt4_unittest.cc b/src/lib/dhcp/tests/pkt4_unittest.cc
> index 72f0da76a7..49d1f11153 100644
> --- a/src/lib/dhcp/tests/pkt4_unittest.cc
> +++ b/src/lib/dhcp/tests/pkt4_unittest.cc
> @@ -25,7 +25,6 @@
> #include <boost/shared_array.hpp>
> #include <boost/shared_ptr.hpp>
> #include <boost/scoped_ptr.hpp>
> -#include <boost/static_assert.hpp>
> #include <gtest/gtest.h>
> 
> #include <iostream>
> @@ -87,9 +86,10 @@ const uint8_t dummyFile[] = "Lorem ipsum dolor sit amet, consectetur "
> const uint8_t dummySname[] = "Lorem ipsum dolor sit amet, consectetur "
>     "adipiscing elit posuere.";
> 
> -BOOST_STATIC_ASSERT(sizeof(dummyFile)  == Pkt4::MAX_FILE_LEN + 1);
> -BOOST_STATIC_ASSERT(sizeof(dummySname) == Pkt4::MAX_SNAME_LEN + 1);
> -
> +static_assert(sizeof(dummyFile)  == Pkt4::MAX_FILE_LEN + 1,
> +              "sizeof(dummyFile)  == Pkt4::MAX_FILE_LEN + 1");
> +static_assert(sizeof(dummySname) == Pkt4::MAX_SNAME_LEN + 1,
> +              "sizeof(dummySname) == Pkt4::MAX_SNAME_LEN + 1");
> 
> class Pkt4Test : public ::testing::Test {
> public:
> diff --git a/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
> index 231266c50b..ea1d4d36cb 100644
> --- a/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
> +++ b/src/lib/dhcpsrv/tests/alloc_engine_expiration_unittest.cc
> @@ -13,7 +13,6 @@
> #include <hooks/hooks_manager.h>
> #include <stats/stats_mgr.h>
> #include <gtest/gtest.h>
> -#include <boost/static_assert.hpp>
> #include <functional>
> #include <iomanip>
> #include <sstream>
> @@ -701,7 +700,8 @@ public:
>         // Hence, it is convenient if the number of test leases is a
>         // multiple of 10.
>         const size_t reclamation_group_size = 10;
> -        BOOST_STATIC_ASSERT(TEST_LEASES_NUM % reclamation_group_size == 0);
> +        static_assert(TEST_LEASES_NUM % reclamation_group_size == 0,
> +                      "TEST_LEASES_NUM % reclamation_group_size == 0");
> 
>         // Leases will be reclaimed in groups of 10.
>         for (unsigned int i = reclamation_group_size; i < TEST_LEASES_NUM;
> @@ -770,7 +770,8 @@ public:
>         }
> 
>         const size_t reclamation_group_size = 10;
> -        BOOST_STATIC_ASSERT(TEST_LEASES_NUM % reclamation_group_size == 0);
> +        static_assert(TEST_LEASES_NUM % reclamation_group_size == 0,
> +                      "TEST_LEASES_NUM % reclamation_group_size == 0");
> 
>         // Leases will be reclaimed in groups of 10
>         for (unsigned int i = 10; i < TEST_LEASES_NUM;  i += reclamation_group_size) {
> @@ -1457,7 +1458,7 @@ ExpirationAllocEngine6Test::setLeaseType(const uint16_t lease_index,
> void
> ExpirationAllocEngine6Test::testReclaimExpiredLeasesStats() {
>     // This test requires that the number of leases is an even number.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM % 2 == 0);
> +    static_assert(TEST_LEASES_NUM % 2 == 0, "TEST_LEASES_NUM % 2 == 0");
> 
>     for (unsigned int i = 0; i < TEST_LEASES_NUM; ++i) {
>         // Mark all leases as expired. The higher the index the less
> @@ -1496,7 +1497,7 @@ ExpirationAllocEngine6Test::testReclaimExpiredLeasesStats() {
> void
> ExpirationAllocEngine6Test::testReclaimReusedLeases(const uint16_t msg_type,
>                                                     const bool use_reclaimed) {
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM < 1000);
> +    static_assert(TEST_LEASES_NUM < 1000, "TEST_LEASES_NUM < 1000");
> 
>     for (unsigned int i = 0; i < TEST_LEASES_NUM; ++i) {
>         // Depending on the parameter, mark leases 'expired-reclaimed' or
> @@ -1604,7 +1605,7 @@ ExpirationAllocEngine6Test::testReclaimDeclinedHook(bool skip) {
> void
> ExpirationAllocEngine6Test::testReclaimExpiredLeasesRegisteredStats() {
>     // This test requires that the number of leases is an even number.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM % 2 == 0);
> +    static_assert(TEST_LEASES_NUM % 2 == 0, "TEST_LEASES_NUM % 2 == 0");
> 
>     for (unsigned int i = 0; i < TEST_LEASES_NUM; ++i) {
>         // Mark all leases as expired. The higher the index the less
> @@ -1700,7 +1701,8 @@ TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesHooksWithSkip) {
> // execution of the lease reclamation routine.
> TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesTimeout) {
>     // This test needs at least 40 leases to make sense.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 40);
> +    static_assert(TEST_LEASES_NUM >= 40, "TEST_LEASES_NUM >= 40");
> +
>     // Run with timeout of 1.2s.
>     testReclaimExpiredLeasesTimeout(1200);
> }
> @@ -1712,7 +1714,7 @@ TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesTimeout) {
> // reclamation.
> TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesShortTimeout) {
>     // We will most likely reclaim just one lease, so 5 is more than enough.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 5);
> +    static_assert(TEST_LEASES_NUM >= 5, "TEST_LEASES_NUM >= 5");
>     // Reclaim leases with the 1ms timeout.
>     testReclaimExpiredLeasesTimeout(1);
> }
> @@ -1720,7 +1722,7 @@ TEST_F(ExpirationAllocEngine6Test, reclaimExpiredLeasesShortTimeout) {
> // This test verifies that expired-reclaimed leases are removed from the
> // lease database.
> TEST_F(ExpirationAllocEngine6Test, deleteExpiredReclaimedLeases) {
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 10);
> +    static_assert(TEST_LEASES_NUM >= 10, "TEST_LEASES_NUM >= 10");
>     testDeleteExpiredReclaimedLeases();
> }
> 
> @@ -2178,7 +2180,7 @@ ExpirationAllocEngine4Test::testReclaimExpiredLeasesWithDDNSAndClientId() {
> void
> ExpirationAllocEngine4Test::testReclaimExpiredLeasesStats() {
>     // This test requires that the number of leases is an even number.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM % 2 == 0);
> +    static_assert(TEST_LEASES_NUM % 2 == 0, "TEST_LEASES_NUM % 2 == 0");
> 
>     for (unsigned int i = 0; i < TEST_LEASES_NUM; ++i) {
>         // Mark all leases as expired. The higher the index the less
> @@ -2217,7 +2219,7 @@ ExpirationAllocEngine4Test::testReclaimReusedLeases(const uint8_t msg_type,
>                                                     const bool client_renews,
>                                                     const bool use_reclaimed) {
>     // Let's restrict the number of leases.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM < 1000);
> +    static_assert(TEST_LEASES_NUM < 1000, "TEST_LEASES_NUM < 1000");
> 
>     for (unsigned int i = 0; i < TEST_LEASES_NUM; ++i) {
>         // Depending on the parameter, mark leases 'expired-reclaimed' or
> @@ -2391,7 +2393,7 @@ TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesHooksWithSkip) {
> // execution of the lease reclamation routine.
> TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesTimeout) {
>     // This test needs at least 40 leases to make sense.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 40);
> +    static_assert(TEST_LEASES_NUM >= 40, "TEST_LEASES_NUM >= 40");
>     // Run with timeout of 1.2s.
>     testReclaimExpiredLeasesTimeout(1200);
> }
> @@ -2403,7 +2405,7 @@ TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesTimeout) {
> // reclamation.
> TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesShortTimeout) {
>     // We will most likely reclaim just one lease, so 5 is more than enough.
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 5);
> +    static_assert(TEST_LEASES_NUM >= 5, "TEST_LEASES_NUM >= 5");
>     // Reclaim leases with the 1ms timeout.
>     testReclaimExpiredLeasesTimeout(1);
> }
> @@ -2411,7 +2413,7 @@ TEST_F(ExpirationAllocEngine4Test, reclaimExpiredLeasesShortTimeout) {
> // This test verifies that expired-reclaimed leases are removed from the
> // lease database.
> TEST_F(ExpirationAllocEngine4Test, deleteExpiredReclaimedLeases) {
> -    BOOST_STATIC_ASSERT(TEST_LEASES_NUM >= 10);
> +    static_assert(TEST_LEASES_NUM >= 10, "TEST_LEASES_NUM >= 10");
>     testDeleteExpiredReclaimedLeases();
> }
> 
> diff --git a/src/lib/dns/messagerenderer.cc b/src/lib/dns/messagerenderer.cc
> index 4e1dfeaa8b..5c9cc3674f 100644
> --- a/src/lib/dns/messagerenderer.cc
> +++ b/src/lib/dns/messagerenderer.cc
> @@ -15,7 +15,6 @@
> #include <util/buffer.h>
> 
> #include <boost/array.hpp>
> -#include <boost/static_assert.hpp>
> #include <limits>
> #include <cassert>
> #include <vector>
> diff --git a/src/lib/dns/rdataclass.cc b/src/lib/dns/rdataclass.cc
> index 1bf515cb0d..79dc09466d 100644
> --- a/src/lib/dns/rdataclass.cc
> +++ b/src/lib/dns/rdataclass.cc
> @@ -1398,8 +1398,9 @@ SOA::getSerial() const {
> uint32_t
> SOA::getMinimum() const {
>     // Make sure the buffer access is safe.
> -    BOOST_STATIC_ASSERT(sizeof(numdata_) ==
> -                        sizeof(uint32_t) * 4 + sizeof(uint32_t));
> +    static_assert(
> +        sizeof(numdata_) == sizeof(uint32_t) * 4 + sizeof(uint32_t),
> +        "sizeof(numdata_) == sizeof(uint32_t) * 4 + sizeof(uint32_t)");
> 
>     InputBuffer b(&numdata_[sizeof(uint32_t) * 4], sizeof(uint32_t));
>     return (b.readUint32());
> diff --git a/src/lib/hooks/callout_manager.cc b/src/lib/hooks/callout_manager.cc
> index fbf4b90a19..7c30b08097 100644
> --- a/src/lib/hooks/callout_manager.cc
> +++ b/src/lib/hooks/callout_manager.cc
> @@ -12,8 +12,6 @@
> #include <hooks/pointer_converter.h>
> #include <util/stopwatch.h>
> 
> -#include <boost/static_assert.hpp>
> -
> #include <algorithm>
> #include <climits>
> #include <functional>
> diff --git a/src/lib/log/logger_impl.cc b/src/lib/log/logger_impl.cc
> index 1718f303c9..fe2c3afe56 100644
> --- a/src/lib/log/logger_impl.cc
> +++ b/src/lib/log/logger_impl.cc
> @@ -17,7 +17,6 @@
> 
> #include <boost/make_shared.hpp>
> #include <boost/lexical_cast.hpp>
> -#include <boost/static_assert.hpp>
> #include <boost/algorithm/string.hpp>
> 
> #include <log4cplus/configurator.h>
> diff --git a/src/lib/log/logger_level_impl.cc b/src/lib/log/logger_level_impl.cc
> index a4aba73a20..a6a4fdd40d 100644
> --- a/src/lib/log/logger_level_impl.cc
> +++ b/src/lib/log/logger_level_impl.cc
> @@ -44,13 +44,20 @@ LoggerLevelImpl::convertFromBindLevel(const Level& level) {
>     };
> 
>     // ... with compile-time checks to ensure that table indexes are correct.
> -    BOOST_STATIC_ASSERT(static_cast<int>(DEFAULT) == 0);
> -    BOOST_STATIC_ASSERT(static_cast<int>(DEBUG) == 1);
> -    BOOST_STATIC_ASSERT(static_cast<int>(INFO) == 2);
> -    BOOST_STATIC_ASSERT(static_cast<int>(WARN) == 3);
> -    BOOST_STATIC_ASSERT(static_cast<int>(ERROR) == 4);
> -    BOOST_STATIC_ASSERT(static_cast<int>(FATAL) == 5);
> -    BOOST_STATIC_ASSERT(static_cast<int>(NONE) == 6);
> +    static_assert(static_cast<int>(DEFAULT) == 0,
> +                  "static_cast<int>(DEFAULT) == 0");
> +    static_assert(static_cast<int>(DEBUG) == 1,
> +                  "static_cast<int>(DEBUG) == 1");
> +    static_assert(static_cast<int>(INFO) == 2,
> +                  "static_cast<int>(INFO) == 2");
> +    static_assert(static_cast<int>(WARN) == 3,
> +                  "static_cast<int>(WARN) == 3");
> +    static_assert(static_cast<int>(ERROR) == 4,
> +                  "static_cast<int>(ERROR) == 4");
> +    static_assert(static_cast<int>(FATAL) == 5,
> +                  "static_cast<int>(FATAL) == 5");
> +    static_assert(static_cast<int>(NONE) == 6,
> +                  "static_cast<int>(NONE) == 6");
> 
>     // Do the conversion
>     if (level.severity == DEBUG) {
> diff --git a/src/lib/log/tests/logger_level_impl_unittest.cc b/src/lib/log/tests/logger_level_impl_unittest.cc
> index c82be69b17..d9375ee09c 100644
> --- a/src/lib/log/tests/logger_level_impl_unittest.cc
> +++ b/src/lib/log/tests/logger_level_impl_unittest.cc
> @@ -10,7 +10,6 @@
> #include <string>
> 
> #include <gtest/gtest.h>
> -#include <boost/static_assert.hpp>
> #include <boost/lexical_cast.hpp>
> 
> #include <log/logger_level_impl.h>
> @@ -109,7 +108,7 @@ TEST_F(LoggerLevelImplTest, ConversionToBind) {
>     // ... and some invalid valid values
>     test_convert_to("DEBUG-1",  INFO, MIN_DEBUG_LEVEL,
>             (log4cplus::DEBUG_LOG_LEVEL + 1));
> -    BOOST_STATIC_ASSERT(MAX_DEBUG_LEVEL == 99);
> +    static_assert(MAX_DEBUG_LEVEL == 99, "MAX_DEBUG_LEVEL == 99");
>     test_convert_to("DEBUG+100",  DEFAULT, 0,
>             (log4cplus::DEBUG_LOG_LEVEL - MAX_DEBUG_LEVEL - 1));
> }
> 



More information about the kea-dev mailing list