From: Francis Dupont Date: Sat, 3 Jul 2021 15:12:54 +0000 (+0200) Subject: [#1957] Moved Qid and random X-Git-Tag: Kea-1.9.10~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=689566a23f4d5d53dadc3d904db41259e8d9aba0;p=thirdparty%2Fkea.git [#1957] Moved Qid and random --- diff --git a/src/bin/d2/nc_trans.cc b/src/bin/d2/nc_trans.cc index d10b5c313c..8699685947 100644 --- a/src/bin/d2/nc_trans.cc +++ b/src/bin/d2/nc_trans.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2013-2020 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2013-2021 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 @@ -8,13 +8,12 @@ #include #include +#include #include -#include #include using namespace isc::util; -using namespace isc::util::random; namespace isc { namespace d2 { @@ -324,7 +323,7 @@ NameChangeTransaction::prepNewRequest(DdnsDomainPtr domain) { D2UpdateMessagePtr request(new D2UpdateMessage(D2UpdateMessage:: OUTBOUND)); // Set the query id - request->setId(QidGenerator::getInstance().generateQid()); + request->setId(dns::QidGenerator::getInstance().generateQid()); // Construct the Zone Section. dns::Name zone_name(domain->getName()); request->setZone(zone_name, dns::RRClass::IN()); diff --git a/src/bin/perfdhcp/Makefile.am b/src/bin/perfdhcp/Makefile.am index 276f86b9b4..f07e84b9de 100644 --- a/src/bin/perfdhcp/Makefile.am +++ b/src/bin/perfdhcp/Makefile.am @@ -25,6 +25,7 @@ libperfdhcp_la_SOURCES += pkt_transform.cc pkt_transform.h libperfdhcp_la_SOURCES += rate_control.cc rate_control.h libperfdhcp_la_SOURCES += stats_mgr.cc stats_mgr.h libperfdhcp_la_SOURCES += test_control.cc test_control.h +libperfdhcp_la_SOURCES += random_number_generator.h libperfdhcp_la_SOURCES += receiver.cc receiver.h libperfdhcp_la_SOURCES += perf_socket.cc perf_socket.h libperfdhcp_la_SOURCES += abstract_scen.h diff --git a/src/lib/util/random/random_number_generator.h b/src/bin/perfdhcp/random_number_generator.h similarity index 98% rename from src/lib/util/random/random_number_generator.h rename to src/bin/perfdhcp/random_number_generator.h index 5f50ee7ccf..ce5a386364 100644 --- a/src/lib/util/random/random_number_generator.h +++ b/src/bin/perfdhcp/random_number_generator.h @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2020 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2010-2021 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 @@ -23,8 +23,7 @@ /// PLEASE DO NOT USE THIS IN CRYPTOGRAPHICALLY SENSITIVE CODE. namespace isc { -namespace util { -namespace random { +namespace perfdhcp { class InvalidLimits : public isc::BadValue { public: @@ -197,8 +196,7 @@ private: size_t min_; ///< The minimum integer that will be generated }; -} // namespace random -} // namespace util +} // namespace perfdhcp } // namespace isc #endif//NSAS_RANDOM_NUMBER_GENERATOR_H diff --git a/src/bin/perfdhcp/test_control.h b/src/bin/perfdhcp/test_control.h index a3401c8dbc..9524bc7e5f 100644 --- a/src/bin/perfdhcp/test_control.h +++ b/src/bin/perfdhcp/test_control.h @@ -13,13 +13,13 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include @@ -348,7 +348,7 @@ public: // what's followed in other classes. protected: /// Generate uniformly distributed integers in range of [min, max] - isc::util::random::UniformRandomIntegerGenerator number_generator_; + UniformRandomIntegerGenerator number_generator_; /// \brief Creates DHCPREQUEST from a DHCPACK message. /// diff --git a/src/bin/perfdhcp/tests/Makefile.am b/src/bin/perfdhcp/tests/Makefile.am index 5f79a9eb2c..72202a8c4f 100644 --- a/src/bin/perfdhcp/tests/Makefile.am +++ b/src/bin/perfdhcp/tests/Makefile.am @@ -36,6 +36,7 @@ run_unittests_SOURCES += perf_socket_unittest.cc run_unittests_SOURCES += basic_scen_unittest.cc run_unittests_SOURCES += avalanche_scen_unittest.cc run_unittests_SOURCES += command_options_helper.h +run_unittests_SOURCES += random_number_generator_unittest.cc run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES) run_unittests_LDFLAGS = $(AM_LDFLAGS) $(CRYPTO_LDFLAGS) $(GTEST_LDFLAGS) diff --git a/src/lib/util/tests/random_number_generator_unittest.cc b/src/bin/perfdhcp/tests/random_number_generator_unittest.cc similarity index 97% rename from src/lib/util/tests/random_number_generator_unittest.cc rename to src/bin/perfdhcp/tests/random_number_generator_unittest.cc index 5710c95f05..7ac8b3863c 100644 --- a/src/lib/util/tests/random_number_generator_unittest.cc +++ b/src/bin/perfdhcp/tests/random_number_generator_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2010-2021 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 @@ -6,18 +6,15 @@ #include -#include +#include "../random_number_generator.h" #include #include #include - -namespace isc { -namespace util { -namespace random { - +using namespace isc; +using namespace isc::perfdhcp; using namespace std; /// \brief Test Fixture Class for uniform random number generator @@ -297,7 +294,3 @@ TEST_F(WeightedRandomIntegerGeneratorTest, ResetProbabilities) { ASSERT_TRUE(fabs(c1 - mu1) < 4*sigma1); ASSERT_TRUE(fabs(c2 - mu2) < 4*sigma2); } - -} // namespace random -} // namespace util -} // namespace isc diff --git a/src/lib/asiodns/io_fetch.cc b/src/lib/asiodns/io_fetch.cc index 5ad10dfdb7..7cad6b1ce1 100644 --- a/src/lib/asiodns/io_fetch.cc +++ b/src/lib/asiodns/io_fetch.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2011-2020 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2011-2021 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 @@ -18,9 +18,9 @@ #include #include #include +#include #include #include -#include #include #include @@ -35,7 +35,6 @@ using namespace boost::asio; using namespace isc::asiolink; using namespace isc::dns; using namespace isc::util; -using namespace isc::util::random; using namespace isc::log; using namespace std; diff --git a/src/lib/dns/Makefile.am b/src/lib/dns/Makefile.am index b6dd3bbf75..0ce0ef53f0 100644 --- a/src/lib/dns/Makefile.am +++ b/src/lib/dns/Makefile.am @@ -133,6 +133,7 @@ libkea_dns___la_SOURCES += rrset.h rrset.cc libkea_dns___la_SOURCES += rrttl.h rrttl.cc libkea_dns___la_SOURCES += rrtype.cc libkea_dns___la_SOURCES += rrcollator.h rrcollator.cc +libkea_dns___la_SOURCES += qid_gen.h qid_gen.cc libkea_dns___la_SOURCES += question.h question.cc libkea_dns___la_SOURCES += serial.h serial.cc libkea_dns___la_SOURCES += tsig.h tsig.cc @@ -197,6 +198,7 @@ libdns___include_HEADERS = \ name.h \ nsec3hash.h \ opcode.h \ + qid_gen.h \ question.h \ rcode.h \ rdata.h \ diff --git a/src/lib/util/random/qid_gen.cc b/src/lib/dns/qid_gen.cc similarity index 57% rename from src/lib/util/random/qid_gen.cc rename to src/lib/dns/qid_gen.cc index a635c1818a..dad2b6ff5a 100644 --- a/src/lib/util/random/qid_gen.cc +++ b/src/lib/dns/qid_gen.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2011-2015 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2011-2021 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 @@ -12,13 +12,12 @@ #include -#include - -#include +#include +#include +#include namespace isc { -namespace util { -namespace random { +namespace dns { QidGenerator qid_generator_instance; @@ -27,25 +26,17 @@ QidGenerator::getInstance() { return (qid_generator_instance); } -QidGenerator::QidGenerator() : dist_(0, 65535), - vgen_(generator_, dist_) +QidGenerator::QidGenerator() { - seed(); -} - -void -QidGenerator::seed() { - struct timeval tv; - gettimeofday(&tv, 0); - generator_.seed((tv.tv_sec * 1000000) + tv.tv_usec); } uint16_t QidGenerator::generateQid() { - return (vgen_()); + uint16_t val; + std::vector rnd = isc::cryptolink::random(sizeof(uint16_t)); + memmove(&val, &rnd[0], sizeof(uint16_t)); + return (val); } - -} // namespace random -} // namespace util +} // namespace dns } // namespace isc diff --git a/src/lib/util/random/qid_gen.h b/src/lib/dns/qid_gen.h similarity index 56% rename from src/lib/util/random/qid_gen.h rename to src/lib/dns/qid_gen.h index ad65b39a28..732dd9a3bc 100644 --- a/src/lib/util/random/qid_gen.h +++ b/src/lib/dns/qid_gen.h @@ -1,4 +1,4 @@ -// Copyright (C) 2011-2015 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2011-2021 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 @@ -13,15 +13,11 @@ #ifndef QID_GEN_H #define QID_GEN_H -#include -#include -#include - +#include #include namespace isc { -namespace util { -namespace random { +namespace dns { /// This class generates Qids for outgoing queries /// @@ -50,32 +46,9 @@ public: /// /// \return A random Qid uint16_t generateQid(); - - /// \brief Seeds the QidGenerator (based on the current time) - /// - /// This is automatically called by the constructor - void seed(); - -private: - // "Mersenne Twister: A 623-dimensionally equidistributed - // uniform pseudo-random number generator", Makoto Matsumoto and - // Takuji Nishimura, ACM Transactions on Modeling and Computer - // Simulation: Special Issue on Uniform Random Number Generation, - // Vol. 8, No. 1, January 1998, pp. 3-30. - // - // mt19937 is an implementation of one of the pseudo random - // generators described in this paper. - boost::mt19937 generator_; - - // For qid's we want a uniform distribution - boost::uniform_int<> dist_; - - boost::variate_generator > vgen_; }; - -} // namespace random -} // namespace util +} // namespace dns } // namespace isc #endif // QID_GEN_H diff --git a/src/lib/dns/tests/Makefile.am b/src/lib/dns/tests/Makefile.am index 80ff1fb582..9b2e0fadc3 100644 --- a/src/lib/dns/tests/Makefile.am +++ b/src/lib/dns/tests/Makefile.am @@ -68,6 +68,7 @@ run_unittests_SOURCES += rdata_hinfo_unittest.cc run_unittests_SOURCES += rdata_caa_unittest.cc run_unittests_SOURCES += rdata_tkey_unittest.cc run_unittests_SOURCES += rrset_unittest.cc +run_unittests_SOURCES += qid_gen_unittest.cc run_unittests_SOURCES += question_unittest.cc run_unittests_SOURCES += rrparamregistry_unittest.cc run_unittests_SOURCES += masterload_unittest.cc diff --git a/src/lib/util/tests/qid_gen_unittest.cc b/src/lib/dns/tests/qid_gen_unittest.cc similarity index 88% rename from src/lib/util/tests/qid_gen_unittest.cc rename to src/lib/dns/tests/qid_gen_unittest.cc index 889a98d9de..20a2dfa131 100644 --- a/src/lib/util/tests/qid_gen_unittest.cc +++ b/src/lib/dns/tests/qid_gen_unittest.cc @@ -11,9 +11,9 @@ #include -#include +#include -using namespace isc::util::random; +using namespace isc::dns; // Tests the operation of the Qid generator @@ -26,7 +26,7 @@ TEST(QidGenerator, singleton) { } TEST(QidGenerator, generate) { - // We'll assume that boost's generator is 'good enough', and won't + // We'll assume that cryptolink's generator is 'good enough', and won't // do full statistical checking here. Let's just call it the xkcd // test (http://xkcd.com/221/), and check if three consecutive // generates are not all the same. diff --git a/src/lib/util/Makefile.am b/src/lib/util/Makefile.am index e18089a4ad..bf4c177a05 100644 --- a/src/lib/util/Makefile.am +++ b/src/lib/util/Makefile.am @@ -41,8 +41,6 @@ libkea_util_la_SOURCES += encode/base_n.cc encode/hex.h libkea_util_la_SOURCES += encode/binary_from_base32hex.h libkea_util_la_SOURCES += encode/binary_from_base16.h libkea_util_la_SOURCES += encode/utf8.cc encode/utf8.h -libkea_util_la_SOURCES += random/qid_gen.h random/qid_gen.cc -libkea_util_la_SOURCES += random/random_number_generator.h libkea_util_la_LIBADD = $(top_builddir)/src/lib/exceptions/libkea-exceptions.la @@ -100,8 +98,3 @@ libkea_util_io_include_HEADERS = \ io/fd_share.h \ io/pktinfo_utilities.h \ io/sockaddr_util.h - -libkea_util_random_includedir = $(pkgincludedir)/util/random -libkea_util_random_include_HEADERS = \ - random/qid_gen.h \ - random/random_number_generator.h diff --git a/src/lib/util/random/.gitignore b/src/lib/util/random/.gitignore deleted file mode 100644 index c83c0130e8..0000000000 --- a/src/lib/util/random/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.dirstamp diff --git a/src/lib/util/tests/Makefile.am b/src/lib/util/tests/Makefile.am index d8354e967b..3ddb57616d 100644 --- a/src/lib/util/tests/Makefile.am +++ b/src/lib/util/tests/Makefile.am @@ -44,8 +44,6 @@ run_unittests_SOURCES += memory_segment_common_unittest.cc run_unittests_SOURCES += multi_threading_mgr_unittest.cc run_unittests_SOURCES += optional_unittest.cc run_unittests_SOURCES += pid_file_unittest.cc -run_unittests_SOURCES += qid_gen_unittest.cc -run_unittests_SOURCES += random_number_generator_unittest.cc run_unittests_SOURCES += staged_value_unittest.cc run_unittests_SOURCES += state_model_unittest.cc run_unittests_SOURCES += strutil_unittest.cc