2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-30 13:37:55 +00:00

[#2078] Moved the factory to libd2srv

This commit is contained in:
Francis Dupont
2021-09-06 20:41:40 +02:00
committed by Razvan Becheriu
parent 8489278255
commit 9ddb97c80b
4 changed files with 21 additions and 24 deletions

View File

@@ -207,7 +207,7 @@ DNSClientImpl::doUpdate(asiolink::IOService& io_service,
// pointer. Message marshalling uses non-null context is the indicator // pointer. Message marshalling uses non-null context is the indicator
// that TSIG should be used. // that TSIG should be used.
if (tsig_key) { if (tsig_key) {
tsig_context_ = DNSClient::factory(tsig_key); tsig_context_ = tsigContextFactory(tsig_key);
tsig_key_name_ = tsig_key->getKeyName().toText(); tsig_key_name_ = tsig_key->getKeyName().toText();
} else { } else {
tsig_context_.reset(); tsig_context_.reset();
@@ -262,14 +262,6 @@ DNSClientImpl::incrStats(const std::string& stat, bool update_key) {
} }
} }
TSIGContextPtr
DNSClient::defaultFactory(D2TsigKeyPtr tsig_key) {
return (TSIGContextPtr(new TSIGContext(*tsig_key)));
}
DNSClient::TSIGContextFactory
DNSClient::factory = &DNSClient::defaultFactory;
DNSClient::DNSClient(D2UpdateMessagePtr& response_placeholder, DNSClient::DNSClient(D2UpdateMessagePtr& response_placeholder,
Callback* callback, const DNSClient::Protocol proto) Callback* callback, const DNSClient::Protocol proto)
: impl_(new DNSClientImpl(response_placeholder, callback, proto)) { : impl_(new DNSClientImpl(response_placeholder, callback, proto)) {

View File

@@ -14,12 +14,10 @@
#include <asiodns/io_fetch.h> #include <asiodns/io_fetch.h>
#include <d2srv/d2_tsig_key.h> #include <d2srv/d2_tsig_key.h>
#include <dns/tsig.h>
namespace isc { namespace isc {
namespace d2 { namespace d2 {
/// @brief Forward declaration of DNSclient class.
class DNSClient; class DNSClient;
typedef boost::shared_ptr<DNSClient> DNSClientPtr; typedef boost::shared_ptr<DNSClient> DNSClientPtr;
@@ -85,18 +83,6 @@ public:
virtual void operator()(DNSClient::Status status) = 0; virtual void operator()(DNSClient::Status status) = 0;
}; };
/// @brief TSIGContext factory type.
typedef dns::TSIGContextPtr (*TSIGContextFactory)(D2TsigKeyPtr);
/// @brief The TSIGContext factory.
static TSIGContextFactory factory;
/// @brief Default TSIGContext factory.
///
/// @param tsig_key a D2 TSIG key.
/// @return a pointer to a TSIG context.
static dns::TSIGContextPtr defaultFactory(D2TsigKeyPtr tsig_key);
/// @brief Constructor. /// @brief Constructor.
/// ///
/// @param response_placeholder Message object pointer which will be updated /// @param response_placeholder Message object pointer which will be updated

View File

@@ -58,5 +58,12 @@ D2TsigKey::resetStats() {
} }
} }
TSIGContextPtr
defaultTsigContextFactory(D2TsigKeyPtr tsig_key) {
return (TSIGContextPtr(new TSIGContext(*tsig_key)));
}
TSIGContextFactory tsigContextFactory = &defaultTsigContextFactory;
} // namespace d2 } // namespace d2
} // namespace isc } // namespace isc

View File

@@ -8,7 +8,7 @@
#define D2_TSIG_KEY_H #define D2_TSIG_KEY_H
#include <dns/name.h> #include <dns/name.h>
#include <dns/tsigkey.h> #include <dns/tsig.h>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
namespace isc { namespace isc {
@@ -60,6 +60,18 @@ private:
/// @brief Type of pointer to a D2 TSIG key. /// @brief Type of pointer to a D2 TSIG key.
typedef boost::shared_ptr<D2TsigKey> D2TsigKeyPtr; typedef boost::shared_ptr<D2TsigKey> D2TsigKeyPtr;
/// @brief TSIGContext factory type.
typedef dns::TSIGContextPtr (*TSIGContextFactory)(D2TsigKeyPtr);
/// @brief The TSIGContext factory.
extern TSIGContextFactory tsigContextFactory;
/// @brief Default TSIGContext factory.
///
/// @param tsig_key a D2 TSIG key.
/// @return a pointer to a TSIG context.
dns::TSIGContextPtr defaultTsigContextFactory(D2TsigKeyPtr tsig_key);
} // namespace d2 } // namespace d2
} // namespace isc } // namespace isc