7 #ifndef MYSQL_LEASE_MGR_H 8 #define MYSQL_LEASE_MGR_H 16 #include <boost/scoped_ptr.hpp> 17 #include <boost/utility.hpp> 29 class MySqlLease4Exchange;
30 class MySqlLease6Exchange;
77 std::vector<MySqlLeaseContextPtr>
pool_;
127 MySqlLeaseContextPtr createContext()
const;
154 static std::string getDBVersion();
165 virtual bool addLease(
const Lease4Ptr& lease)
override;
176 virtual bool addLease(
const Lease6Ptr& lease)
override;
283 virtual Lease4Collection getLeases4(
const std::string& hostname)
const override;
360 uint32_t iaid)
const override;
379 uint32_t iaid,
SubnetID subnet_id)
const override;
393 virtual Lease6Collection getLeases6(
const std::string& hostname)
const override;
446 const size_t max_leases)
const override;
459 const size_t max_leases)
const override;
481 virtual void updateLease4(
const Lease4Ptr& lease4)
override;
503 virtual void updateLease6(
const Lease6Ptr& lease6)
override;
519 virtual bool deleteLease(
const Lease4Ptr& lease)
override;
535 virtual bool deleteLease(
const Lease6Ptr& lease)
override;
544 virtual uint64_t deleteExpiredReclaimedLeases4(
const uint32_t secs)
override;
553 virtual uint64_t deleteExpiredReclaimedLeases6(
const uint32_t secs)
override;
585 const SubnetID& last_subnet_id)
override;
617 const SubnetID& last_subnet_id)
override;
628 virtual size_t wipeLeases4(
const SubnetID& subnet_id)
override;
639 virtual size_t wipeLeases6(
const SubnetID& subnet_id)
override;
646 virtual std::string
getType()
const override {
647 return (std::string(
"mysql"));
655 virtual std::string getName()
const override;
662 virtual std::string getDescription()
const override;
671 virtual std::pair<uint32_t, uint32_t> getVersion()
const override;
679 virtual void commit()
override;
687 virtual void rollback()
override;
753 bool addLeaseCommon(MySqlLeaseContextPtr& ctx,
777 template <
typename Exchange,
typename LeaseCollection>
778 void getLeaseCollection(MySqlLeaseContextPtr& ctx,
781 Exchange& exchange, LeaseCollection& result,
782 bool single =
false)
const;
801 void getLeaseCollection(MySqlLeaseContextPtr& ctx,
805 getLeaseCollection(ctx, stindex, bind, ctx->exchange4_, result);
824 void getLeaseCollection(MySqlLeaseContextPtr& ctx,
828 getLeaseCollection(ctx, stindex, bind, ctx->exchange6_, result);
841 void getLease(MySqlLeaseContextPtr& ctx,
856 void getLease(MySqlLeaseContextPtr& ctx,
875 template<
typename LeaseCollection>
876 void getExpiredLeasesCommon(LeaseCollection& expired_leases,
877 const size_t max_leases,
897 template <
typename LeasePtr>
898 void updateLeaseCommon(MySqlLeaseContextPtr& ctx,
930 uint64_t deleteExpiredReclaimedLeasesCommon(
const uint32_t secs,
979 virtual bool isJsonSupported()
const override;
988 virtual size_t getClassLeaseCount(
const ClientClass& client_class,
992 virtual void recountClassLeases4()
override;
995 virtual void recountClassLeases6()
override;
998 virtual void clearClassLeaseCounts()
override;
1001 virtual void writeLeases4(
const std::string& )
override;
1004 virtual void writeLeases6(
const std::string& )
override;
1017 void checkError(MySqlLeaseContextPtr& ctx,
1019 const char* what)
const;
1041 const time_t& qry_start_time = 0,
1042 const time_t& qry_end_time = 0)
override;
1060 const time_t& qry_start_time = 0,
1061 const time_t& qry_end_time = 0)
override;
1074 getLeases6ByRelayId(
const DUID& relay_id,
1118 virtual size_t buildExtendedInfoTables6(
bool update,
bool current)
override;
1121 class MySqlLeaseContextAlloc {
1135 ~MySqlLeaseContextAlloc();
1138 MySqlLeaseContextPtr ctx_;
1158 "extended info tables are not yet supported by mysql");
1180 const std::vector<uint8_t>& relay_id)
override;
1187 const std::vector<uint8_t>& remote_id)
override;
1197 MySqlLeaseContextPoolPtr pool_;
1200 std::string timer_name_;
1206 #endif // MYSQL_LEASE_MGR_H
std::function< bool(util::ReconnectCtlPtr db_reconnect_ctl)> DbCallback
Defines a callback prototype for propagating events upward.
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
A generic exception that is thrown when a function is not implemented.
std::vector< MySqlLeaseContextPtr > pool_
The vector of available contexts.
boost::shared_ptr< ReconnectCtl > ReconnectCtlPtr
Pointer to an instance of ReconnectCtl.
MySQL Lease Context Pool.
An abstract API for lease database.
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
boost::shared_ptr< Lease > LeasePtr
Pointer to the lease object.
std::vector< uint8_t > OptionBuffer
buffer types used in DHCP code.
Holds DUID (DHCPv6 Unique Identifier)
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
StatementIndex
Statement Tags.
boost::shared_ptr< MySqlLeaseContext > MySqlLeaseContextPtr
Type of pointers to contexts.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
virtual void setExtendedInfoTablesEnabled(const bool enabled) override
Extended information / Bulk Lease Query shared interface.
boost::shared_ptr< const Element > ConstElementPtr
virtual std::string getType() const override
Return backend type.
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
boost::scoped_ptr< MySqlLease6Exchange > exchange6_
Exchange object.
Defines the logger used by the top-level component of kea-lfc.
db::MySqlConnection conn_
MySQL connection.
Type
Type of lease or pool.
Holds Client identifier or client IPv4 address.
Hardware type that represents information from DHCPv4 packet.
Wraps value holding size of the page with leases.
std::string ClientClass
Defines a single class name.
boost::shared_ptr< MySqlLeaseContextPool > MySqlLeaseContextPoolPtr
Type of pointers to context pools.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
The IOAddress class represents an IP addresses (version agnostic)
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
boost::scoped_ptr< MySqlLease4Exchange > exchange4_
The exchange objects are used for transfer of data to/from the database.
MySqlLeaseContext(const db::DatabaseConnection::ParameterMap ¶meters, db::IOServiceAccessorPtr io_service_accessor, db::DbCallback db_reconnect_callback)
Constructor.
std::mutex mutex_
The mutex to protect pool access.
boost::shared_ptr< IOServiceAccessor > IOServiceAccessorPtr
Pointer to an instance of IOServiceAccessor.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
Common MySQL Connector Pool.