7 #ifndef PGSQL_LEASE_MGR_H 8 #define PGSQL_LEASE_MGR_H 17 #include <boost/scoped_ptr.hpp> 18 #include <boost/utility.hpp> 28 class PgSqlLease4Exchange;
29 class PgSqlLease6Exchange;
76 std::vector<PgSqlLeaseContextPtr>
pool_;
126 PgSqlLeaseContextPtr createContext()
const;
153 static std::string getDBVersion();
164 virtual bool addLease(
const Lease4Ptr& lease)
override;
175 virtual bool addLease(
const Lease6Ptr& lease)
override;
267 virtual Lease4Collection getLeases4(
const std::string& hostname)
const override;
338 uint32_t iaid)
const override;
354 uint32_t iaid,
SubnetID subnet_id)
const override;
368 virtual Lease6Collection getLeases6(
const std::string& hostname)
const override;
421 const size_t max_leases)
const override;
434 const size_t max_leases)
const override;
456 virtual void updateLease4(
const Lease4Ptr& lease4)
override;
478 virtual void updateLease6(
const Lease6Ptr& lease6)
override;
494 virtual bool deleteLease(
const Lease4Ptr& lease)
override;
510 virtual bool deleteLease(
const Lease6Ptr& lease)
override;
519 virtual uint64_t deleteExpiredReclaimedLeases4(
const uint32_t secs)
override;
528 virtual uint64_t deleteExpiredReclaimedLeases6(
const uint32_t secs)
override;
560 const SubnetID& last_subnet_id)
override;
592 const SubnetID& last_subnet_id)
override;
603 virtual size_t wipeLeases4(
const SubnetID& subnet_id)
override;
614 virtual size_t wipeLeases6(
const SubnetID& subnet_id)
override;
621 virtual std::string
getType()
const override {
622 return (std::string(
"postgresql"));
630 virtual std::string getName()
const override;
637 virtual std::string getDescription()
const override;
646 virtual std::pair<uint32_t, uint32_t> getVersion()
const override;
654 virtual void commit()
override;
662 virtual void rollback()
override;
728 bool addLeaseCommon(PgSqlLeaseContextPtr& ctx,
753 template <
typename Exchange,
typename LeaseCollection>
754 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
757 Exchange& exchange, LeaseCollection& result,
758 bool single =
false)
const;
777 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
781 getLeaseCollection(ctx, stindex, bind_array, ctx->exchange4_, result);
800 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
804 getLeaseCollection(ctx, stindex, bind_array, ctx->exchange6_, result);
817 void getLease(PgSqlLeaseContextPtr& ctx,
832 void getLease(PgSqlLeaseContextPtr& ctx,
851 template<
typename LeaseCollection>
852 void getExpiredLeasesCommon(LeaseCollection& expired_leases,
853 const size_t max_leases,
872 template <
typename LeasePtr>
873 void updateLeaseCommon(PgSqlLeaseContextPtr& ctx,
904 uint64_t deleteExpiredReclaimedLeasesCommon(
const uint32_t secs,
953 virtual bool isJsonSupported()
const override;
962 virtual size_t getClassLeaseCount(
const ClientClass& client_class,
966 virtual void recountClassLeases4()
override;
969 virtual void recountClassLeases6()
override;
972 virtual void clearClassLeaseCounts()
override;
994 const time_t& qry_start_time = 0,
995 const time_t& qry_end_time = 0)
override;
1013 const time_t& qry_start_time = 0,
1014 const time_t& qry_end_time = 0)
override;
1027 getLeases6ByRelayId(
const DUID& relay_id,
1071 virtual size_t buildExtendedInfoTables6(
bool update,
bool current)
override;
1074 virtual void writeLeases4(
const std::string& )
override;
1077 virtual void writeLeases6(
const std::string& )
override;
1080 class PgSqlLeaseContextAlloc {
1094 ~PgSqlLeaseContextAlloc();
1097 PgSqlLeaseContextPtr ctx_;
1117 "extended info tables are not yet supported by postgresql");
1139 const std::vector<uint8_t>& relay_id)
override;
1146 const std::vector<uint8_t>& remote_id)
override;
1156 PgSqlLeaseContextPoolPtr pool_;
1159 std::string timer_name_;
1165 #endif // PGSQL_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.
PostgreSQL Lease Context.
A generic exception that is thrown when a function is not implemented.
virtual void setExtendedInfoTablesEnabled(const bool enabled) override
Extended information / Bulk Lease Query shared interface.
PostgreSQL Lease Manager.
boost::shared_ptr< ReconnectCtl > ReconnectCtlPtr
Pointer to an instance of ReconnectCtl.
An abstract API for lease database.
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
PgSqlLeaseContext(const db::DatabaseConnection::ParameterMap ¶meters, db::IOServiceAccessorPtr io_service_accessor, db::DbCallback db_reconnect_callback)
Constructor.
boost::scoped_ptr< PgSqlLease4Exchange > exchange4_
The exchange objects are used for transfer of data to/from the database.
std::mutex mutex_
The mutex to protect pool access.
boost::shared_ptr< Lease > LeasePtr
Pointer to the lease object.
std::vector< PgSqlLeaseContextPtr > pool_
The vector of available contexts.
std::vector< uint8_t > OptionBuffer
buffer types used in DHCP code.
Holds DUID (DHCPv6 Unique Identifier)
virtual std::string getType() const override
Return backend type.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
PostgreSQL Lease Context Pool.
boost::scoped_ptr< PgSqlLease6Exchange > exchange6_
Exchange object.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
db::PgSqlConnection conn_
PostgreSQL connection.
boost::shared_ptr< const Element > ConstElementPtr
Common PgSql Connector Pool.
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Defines the logger used by the top-level component of kea-lfc.
boost::shared_ptr< PgSqlLeaseContext > PgSqlLeaseContextPtr
Type of pointers to contexts.
Type
Type of lease or pool.
Holds Client identifier or client IPv4 address.
StatementIndex
Statement Tags.
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.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
The IOAddress class represents an IP addresses (version agnostic)
boost::shared_ptr< PgSqlLeaseContextPool > PgSqlLeaseContextPoolPtr
Type of pointers to context pools.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
boost::shared_ptr< IOServiceAccessor > IOServiceAccessorPtr
Pointer to an instance of IOServiceAccessor.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.