]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2472] Move choice of DHCP6 lease manager to main
authorStephen Morris <stephen@isc.org>
Wed, 14 Nov 2012 12:43:15 +0000 (12:43 +0000)
committerStephen Morris <stephen@isc.org>
Wed, 14 Nov 2012 12:43:15 +0000 (12:43 +0000)
Before this change, the choice of lease manager was set in
ControlledDhcpv6Srv.  This means that unit tests for that code
always used the MySQL lease manager (if present).  This change
ensures that unit tests always use the Memfile manager.

src/bin/dhcp6/ctrl_dhcp6_srv.cc
src/bin/dhcp6/ctrl_dhcp6_srv.h
src/bin/dhcp6/main.cc

index 555c9ec7547ab37679b76da5b3d1b99ecb5fa781..5bcd69e9384f06970755296a7203de0c6cb03181 100644 (file)
@@ -39,19 +39,6 @@ using namespace isc::log;
 using namespace isc::util;
 using namespace std;
 
-namespace {
-// @todo: Replace the next line by extraction from configuration parameters
-// This is the "dbconfig" string for the MySQL database.  It is likely
-// that a long-term solution will be to create the instance of the lease manager
-// somewhere other than the Dhcpv6Srv constructor, to give time to extract
-// the connection string from the configuration database.
-#ifdef HAVE_MYSQL
-const char* DBCONFIG = "type=mysql name=kea user=kea password=kea host=localhost";
-#else
-const char* DBCONFIG = "type=memfile";
-#endif
-};
-
 namespace isc {
 namespace dhcp {
 
@@ -163,8 +150,8 @@ void ControlledDhcpv6Srv::disconnectSession() {
     IfaceMgr::instance().set_session_socket(IfaceMgr::INVALID_SOCKET, NULL);
 }
 
-ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port)
-    : Dhcpv6Srv(port, DBCONFIG), cc_session_(NULL), config_session_(NULL) {
+ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port, const char* dbconfig)
+    : Dhcpv6Srv(port, dbconfig), cc_session_(NULL), config_session_(NULL) {
     server_ = this; // remember this instance for use in callback
 }
 
index 91fc80acb2a17a5824d0354f119cf79024f209cd..df3b85172beca681b20210a5bf2a519678afafb3 100644 (file)
@@ -41,7 +41,9 @@ public:
     /// @brief Constructor
     ///
     /// @param port UDP port to be opened for DHCP traffic
-    ControlledDhcpv6Srv(uint16_t port = DHCP6_SERVER_PORT);
+    /// @param dbconfig Lease manager database configuration string
+    ControlledDhcpv6Srv(uint16_t port = DHCP6_SERVER_PORT,
+                        const char* dbconfig = "type=memfile");
 
     /// @brief Destructor.
     ~ControlledDhcpv6Srv();
index 8eaf60cb9723392defdd1dc6a4747880d9bdb155..c21692485911a045455090b3c1cad8f9083e18b3 100644 (file)
@@ -34,6 +34,16 @@ using namespace std;
 /// Dhcpv6Srv and other classes, see \ref dhcpv6Session.
 
 namespace {
+// @todo: Replace the next line by extraction from configuration parameters
+// This is the "dbconfig" string for the MySQL database.  It is likely
+// that a long-term solution will be to create the instance of the lease manager
+// somewhere other than the Dhcpv6Srv constructor, to give time to extract
+// the connection string from the configuration database.
+#ifdef HAVE_MYSQL
+const char* DBCONFIG = "type=mysql name=kea user=kea password=kea host=localhost";
+#else
+const char* DBCONFIG = "type=memfile";
+#endif
 
 const char* const DHCP6_NAME = "b10-dhcp6";
 
@@ -102,7 +112,7 @@ main(int argc, char* argv[]) {
 
     int ret = EXIT_SUCCESS;
     try {
-        ControlledDhcpv6Srv server(port_number);
+        ControlledDhcpv6Srv server(port_number, DBCONFIG);
         if (!stand_alone) {
             try {
                 server.establishSession();