]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1976] Do the real initialization of the datasrc configurator
authorMichal 'vorner' Vaner <michal.vaner@nic.cz>
Thu, 21 Jun 2012 12:52:24 +0000 (14:52 +0200)
committerMichal 'vorner' Vaner <michal.vaner@nic.cz>
Thu, 21 Jun 2012 12:52:24 +0000 (14:52 +0200)
The type of lists had to be changed to the Configurable ones,
unfortunately. It doesn't work otherwise. Therefore, it may be possible
to fold the ClientList hierarchy, but I'm postponing that work.

src/bin/auth/auth_srv.cc
src/bin/auth/auth_srv.h
src/bin/auth/main.cc

index 5458316564e0080cd1e5a7c02d370f00acbc8985..c4e69202d2098d2c7cac6e6997b0b0940e3b57a5 100644 (file)
@@ -267,7 +267,7 @@ public:
     const boost::shared_ptr<TSIGKeyRing>* keyring_;
 
     /// The client list
-    map<RRClass, boost::shared_ptr<ClientList> > client_lists_;
+    map<RRClass, boost::shared_ptr<ConfigurableClientList> > client_lists_;
 
     /// Bind the ModuleSpec object in config_session_ with
     /// isc:config::ModuleSpec::validateStatistics.
@@ -1030,7 +1030,7 @@ AuthSrv::setTSIGKeyRing(const boost::shared_ptr<TSIGKeyRing>* keyring) {
 
 void
 AuthSrv::setClientList(const RRClass& rrclass,
-                       const boost::shared_ptr<ClientList>& list) {
+                       const boost::shared_ptr<ConfigurableClientList>& list) {
     if (list) {
         impl_->client_lists_[rrclass] = list;
     } else {
@@ -1038,12 +1038,12 @@ AuthSrv::setClientList(const RRClass& rrclass,
     }
 }
 
-boost::shared_ptr<ClientList>
+boost::shared_ptr<ConfigurableClientList>
 AuthSrv::getClientList(const RRClass& rrclass) {
-    const map<RRClass, boost::shared_ptr<ClientList> >::const_iterator
-        it(impl_->client_lists_.find(rrclass));
+    const map<RRClass, boost::shared_ptr<ConfigurableClientList> >::
+        const_iterator it(impl_->client_lists_.find(rrclass));
     if (it == impl_->client_lists_.end()) {
-        return (boost::shared_ptr<ClientList>());
+        return (boost::shared_ptr<ConfigurableClientList>());
     } else {
         return (it->second);
     }
@@ -1052,9 +1052,9 @@ AuthSrv::getClientList(const RRClass& rrclass) {
 vector<RRClass>
 AuthSrv::getClientListClasses() const {
     vector<RRClass> result;
-    for (map<RRClass, boost::shared_ptr<ClientList> >::const_iterator
-         it(impl_->client_lists_.begin()); it != impl_->client_lists_.end();
-         ++ it) {
+    for (map<RRClass, boost::shared_ptr<ConfigurableClientList> >::
+         const_iterator it(impl_->client_lists_.begin());
+         it != impl_->client_lists_.end(); ++it) {
         result.push_back(it->first);
     }
     return (result);
index ff0ed5b84c2f4134d2661c8d49b771ec72098333..ee8edc98e915a400c1916944dad37f16297429a8 100644 (file)
@@ -44,7 +44,7 @@ class BaseSocketSessionForwarder;
 }
 namespace datasrc {
 class InMemoryClient;
-class ClientList;
+class ConfigurableClientList;
 }
 namespace xfr {
 class AbstractXfroutClient;
@@ -428,15 +428,15 @@ public:
     /// \param rrclass The class to modify.
     /// \param list Shared pointer to the client list. If it is NULL,
     ///     the list is removed instead.
-    void setClientList(const isc::dns::RRClass& rrclass,
-                       const boost::shared_ptr<isc::datasrc::ClientList>&
+    void setClientList(const isc::dns::RRClass& rrclass, const
+                       boost::shared_ptr<isc::datasrc::ConfigurableClientList>&
                        list);
 
     /// \brief Returns the currently used client list for the class.
     ///
     /// \param rrclass The class for which to get the list.
     /// \return The list, or NULL if no list is set for the class.
-    boost::shared_ptr<isc::datasrc::ClientList>
+    boost::shared_ptr<isc::datasrc::ConfigurableClientList>
         getClientList(const isc::dns::RRClass& rrclass);
 
     /// \brief Returns a list of classes that have a client list.
index 67d0f3dcf641be7861b7fba7b012f008b79f6916..f6b330e0902f11040446c6ee0442f9097e3c983d 100644 (file)
@@ -45,6 +45,7 @@
 #include <auth/command.h>
 #include <auth/auth_srv.h>
 #include <auth/auth_log.h>
+#include <auth/datasrc_configurator.h>
 #include <asiodns/asiodns.h>
 #include <asiolink/asiolink.h>
 #include <log/logger_support.h>
@@ -204,6 +205,9 @@ main(int argc, char* argv[]) {
         isc::server_common::initKeyring(*config_session);
         auth_server->setTSIGKeyRing(&isc::server_common::keyring);
 
+        // Start the data source configuration
+        DataSourceConfigurator::init(config_session, auth_server);
+
         // Now start asynchronous read.
         config_session->start();
         LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_CONFIG_CHANNEL_STARTED);
@@ -211,7 +215,6 @@ main(int argc, char* argv[]) {
         // Successfully initialized.
         LOG_INFO(auth_logger, AUTH_SERVER_STARTED);
         io_service.run();
-
     } catch (const std::exception& ex) {
         LOG_FATAL(auth_logger, AUTH_SERVER_FAILED).arg(ex.what());
         ret = 1;
@@ -225,6 +228,7 @@ main(int argc, char* argv[]) {
         xfrin_session->disconnect();
     }
 
+    DataSourceConfigurator::deinit();
     delete statistics_session;
     delete xfrin_session;
     delete config_session;