A debug message indicating that the IPv6 DHCP server has received an
updated configuration from the BIND 10 configuration system.
-% DHCP6_DB_BACKEND_STARTED Lease database started (backend type: %1)
+% DHCP6_DB_BACKEND_STARTED lease database started (type: %1, name: %2)
This informational message is printed every time DHCPv6 is started.
It indicates what database backend type is being to store lease and
other information.
A debug message issued during startup, this indicates that the IPv6 DHCP
server is about to open sockets on the specified port.
-% DHCP6_LEASE_ADVERT Lease %1 advertised (client duid=%2, iaid=%3)
+% DHCP6_LEASE_ADVERT lease %1 advertised (client duid=%2, iaid=%3)
This debug message indicates that the server successfully advertised
a lease. It is up to the client to choose one server out of othe advertised
and continue allocation with that server. This is a normal behavior and
addresses or prefixes.
% DHCP6_NO_SUBNET_DEF_OPT failed to find subnet for address %1 when adding default options
-This warning message indicates that when attempting to add default options to a response,
-the server found that it was not configured to support the subnet from which the DHCPv6
-request was received. The packet has been ignored.
+This warning message indicates that when attempting to add default options
+to a response, the server found that it was not configured to support
+the subnet from which the DHCPv6 request was received. The packet has
+been ignored.
% DHCP6_NO_SUBNET_REQ_OPT failed to find subnet for address %1 when adding requested options
-This warning message indicates that when attempting to add requested options to a response,
-the server found that it was not configured to support the subnet from which the DHCPv6
-request was received. The packet has been ignored.
+This warning message indicates that when attempting to add requested
+options to a response, the server found that it was not configured
+to support the subnet from which the DHCPv6 request was received.
+The packet has been ignored.
% DHCP6_CONFIG_LOAD_FAIL failed to load configuration: %1
This critical error message indicates that the initial DHCPv6
// Instantiate LeaseMgr
LeaseMgrFactory::create(dbconfig);
LOG_INFO(dhcp6_logger, DHCP6_DB_BACKEND_STARTED)
+ .arg(LeaseMgrFactory::instance().getType())
.arg(LeaseMgrFactory::instance().getName());
// Instantiate allocation engine
/// @return true if deletion was successful, false if no such lease exists
virtual bool deleteLease6(const isc::asiolink::IOAddress& addr) = 0;
+ /// @brief Return backend type
+ ///
+ /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)
+ ///
+ /// @return Type of the backend.
+ virtual std::string getType() const = 0;
+
/// @brief Returns backend name.
///
- /// Each backend have specific name, e.g. "mysql" or "sqlite".
+ /// If the backend is a database, this is the name of the database or the
+ /// file. Otherwise it is just the same as the type.
+ ///
+ /// @return Name of the backend.
virtual std::string getName() const = 0;
/// @brief Returns description of the backend.
///
/// This description may be multiline text that describes the backend.
+ ///
+ /// @return Description of the backend.
virtual std::string getDescription() const = 0;
/// @brief Returns backend version.
/// is currently postponed.
/// @brief returns value of the parameter
- std::string getParameter(const std::string& name) const;
+ virtual std::string getParameter(const std::string& name) const;
private:
/// @brief list of parameters passed in dbconfig
/// @return true if deletion was successful, false if no such lease exists
bool deleteLease6(const isc::asiolink::IOAddress& addr);
+ /// @brief Return backend type
+ ///
+ /// Returns the type of the backend.
+ ///
+ /// @return Type of the backend.
+ virtual std::string getType() const {
+ return (std::string("memfile"));
+ }
+
/// @brief Returns backend name.
///
- /// Each backend have specific name, e.g. "mysql" or "sqlite".
- std::string getName() const { return ("memfile"); }
+ /// As there is no variation, in this case we return the type of the
+ /// backend.
+ ///
+ /// @return Name of the backend.
+ virtual std::string getName() const {
+ return ("memfile");
+ }
/// @brief Returns description of the backend.
///
/// This description may be multiline text that describes the backend.
- std::string getDescription() const;
+ ///
+ /// @return Description of the backend.
+ virtual std::string getDescription() const;
/// @brief Returns backend version.
virtual std::pair<uint32_t, uint32_t> getVersion() const {
/// failed.
virtual bool deleteLease6(const isc::asiolink::IOAddress& addr);
+ /// @brief Return backend type
+ ///
+ /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)
+ ///
+ /// @return Type of the backend.
+ virtual std::string getType() const {
+ return (std::string("mysql"));
+ }
+
/// @brief Returns backend name.
///
/// Each backend have specific name, e.g. "mysql" or "sqlite".
+ ///
+ /// @return Name of the backend.
virtual std::string getName() const;
/// @brief Returns description of the backend.
///
/// This description may be multiline text that describes the backend.
+ ///
+ /// @return Description of the backend.
virtual std::string getDescription() const;
/// @brief Returns backend version.
/// @param addr address of the searched lease
///
/// @return smart pointer to the lease (or NULL if a lease is not found)
- Lease6Ptr getLease6(const isc::asiolink::IOAddress&) const {
+ virtual Lease6Ptr getLease6(const isc::asiolink::IOAddress&) const {
return (Lease6Ptr());
}
/// @param iaid IA identifier
///
/// @return collection of IPv6 leases
- Lease6Collection getLease6(const DUID&, uint32_t) const {
+ virtual Lease6Collection getLease6(const DUID&, uint32_t) const {
return (Lease6Collection());
}
/// @param subnet_id identifier of the subnet the lease must belong to
///
/// @return smart pointer to the lease (or NULL if a lease is not found)
- Lease6Ptr getLease6(const DUID&, uint32_t, SubnetID) const {
+ virtual Lease6Ptr getLease6(const DUID&, uint32_t, SubnetID) const {
return (Lease6Ptr());
}
/// @param lease4 The lease to be updated.
///
/// If no such lease is present, an exception will be thrown.
- void updateLease4(const Lease4Ptr&) {}
+ virtual void updateLease4(const Lease4Ptr&) {}
/// @brief Updates IPv4 lease.
///
/// @param lease4 The lease to be updated.
///
/// If no such lease is present, an exception will be thrown.
- void updateLease6(const Lease6Ptr&) {}
+ virtual void updateLease6(const Lease6Ptr&) {}
/// @brief Deletes a lease.
///
/// @param addr IPv4 address of the lease to be deleted.
///
/// @return true if deletion was successful, false if no such lease exists
- bool deleteLease4(const isc::asiolink::IOAddress&) {
+ virtual bool deleteLease4(const isc::asiolink::IOAddress&) {
return (false);
}
/// @param addr IPv4 address of the lease to be deleted.
///
/// @return true if deletion was successful, false if no such lease exists
- bool deleteLease6(const isc::asiolink::IOAddress&) {
+ virtual bool deleteLease6(const isc::asiolink::IOAddress&) {
return (false);
}
+ /// @brief Returns backend type.
+ ///
+ /// Returns the type of the backend (e.g. "mysql", "memfile" etc.)
+ ///
+ /// @return Type of the backend.
+ virtual std::string getType() const {
+ return (std::string("concrete"));
+ }
+
/// @brief Returns backend name.
///
- /// Each backend have specific name, e.g. "mysql" or "sqlite".
- std::string getName() const {
+ /// If the backend is a database, this is the name of the database or the
+ /// file. Otherwise it is just the same as the type.
+ ///
+ /// @return Name of the backend.
+ virtual std::string getName() const {
return (std::string("concrete"));
}
/// @brief Returns description of the backend.
///
/// This description may be multiline text that describes the backend.
- std::string getDescription() const {
+ ///
+ /// @return Description of the backend.
+ virtual std::string getDescription() const {
return (std::string("This is a dummy concrete backend implementation."));
}
/// @brief Returns backend version.
- std::pair<uint32_t, uint32_t> getVersion() const {
+ virtual std::pair<uint32_t, uint32_t> getVersion() const {
return (make_pair(uint32_t(0), uint32_t(0)));
}
/// @brief Commit transactions
- void commit() {
+ virtual void commit() {
}
/// @brief Rollback transactions
- void rollback() {
+ virtual void rollback() {
}
};
ASSERT_NO_THROW(lease_mgr.reset(new Memfile_LeaseMgr(pmap)));
}
+TEST_F(MemfileLeaseMgrTest, GetTypeAndName) {
+ const LeaseMgr::ParameterMap pmap; // Empty parameter map
+ boost::scoped_ptr<Memfile_LeaseMgr> lease_mgr(new Memfile_LeaseMgr(pmap));
+
+ EXPECT_EQ(std::string("memfile"), lease_mgr->getType());
+ EXPECT_EQ(std::string("memfile"), lease_mgr->getName());
+}
+
// There's no point in calling any other methods in LeaseMgr, as they
// are purely virtual, so we would only call Memfile_LeaseMgr methods.
// Those methods are just stubs that does not return anything.
destroySchema();
}
+TEST_F(MySqlLeaseMgrTest, GetType) {
+ EXPECT_EQ(std::string("mysql"), lmptr_->getType());
+}
+
// @brief Check conversion functions
TEST_F(MySqlLeaseMgrTest, CheckTimeConversion) {
const time_t cltt = time(NULL);