Kea 2.5.5
pgsql_lease_mgr.h
Go to the documentation of this file.
1// Copyright (C) 2013-2023 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef PGSQL_LEASE_MGR_H
8#define PGSQL_LEASE_MGR_H
9
10#include <asiolink/io_service.h>
11#include <dhcp/hwaddr.h>
13#include <dhcpsrv/lease_mgr.h>
17
18#include <boost/scoped_ptr.hpp>
19#include <boost/utility.hpp>
20
21#include <vector>
22#include <mutex>
23
24namespace isc {
25namespace dhcp {
26
27// Forward declaration of the Lease exchange objects. These classes are defined
28// in the .cc file.
29class PgSqlLease4Exchange;
30class PgSqlLease6Exchange;
31
42public:
43
50 db::IOServiceAccessorPtr io_service_accessor,
51 db::DbCallback db_reconnect_callback);
52
57 boost::scoped_ptr<PgSqlLease4Exchange> exchange4_;
58 boost::scoped_ptr<PgSqlLease6Exchange> exchange6_;
59
62};
63
65typedef boost::shared_ptr<PgSqlLeaseContext> PgSqlLeaseContextPtr;
66
74public:
75
77 std::vector<PgSqlLeaseContextPtr> pool_;
78
80 std::mutex mutex_;
81};
82
84typedef boost::shared_ptr<PgSqlLeaseContextPool> PgSqlLeaseContextPoolPtr;
85
91
93public:
94
115
117 virtual ~PgSqlLeaseMgr();
118
128
151 static bool dbReconnect(util::ReconnectCtlPtr db_reconnect_ctl);
152
154 static std::string getDBVersion();
155
165 virtual bool addLease(const Lease4Ptr& lease) override;
166
176 virtual bool addLease(const Lease6Ptr& lease) override;
177
193 virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress& addr) const override;
194
208 virtual Lease4Collection getLease4(const isc::dhcp::HWAddr& hwaddr) const override;
209
223 virtual Lease4Ptr getLease4(const isc::dhcp::HWAddr& hwaddr,
224 SubnetID subnet_id) const override;
225
239 virtual Lease4Collection getLease4(const ClientId& clientid) const override;
240
253 virtual Lease4Ptr getLease4(const ClientId& clientid,
254 SubnetID subnet_id) const override;
255
261 virtual Lease4Collection getLeases4(SubnetID subnet_id) const override;
262
268 virtual Lease4Collection getLeases4(const std::string& hostname) const override;
269
273 virtual Lease4Collection getLeases4() const override;
274
299 virtual Lease4Collection
300 getLeases4(const asiolink::IOAddress& lower_bound_address,
301 const LeasePageSize& page_size) const override;
302
318 virtual Lease6Ptr getLease6(Lease::Type type,
319 const isc::asiolink::IOAddress& addr) const override;
320
338 virtual Lease6Collection getLeases6(Lease::Type type, const DUID& duid,
339 uint32_t iaid) const override;
340
354 virtual Lease6Collection getLeases6(Lease::Type type, const DUID& duid,
355 uint32_t iaid, SubnetID subnet_id) const override;
356
362 virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
363
369 virtual Lease6Collection getLeases6(const std::string& hostname) const override;
370
374 virtual Lease6Collection getLeases6() const override;
375
381 virtual Lease6Collection getLeases6(const DUID& duid) const override;
382
407 virtual Lease6Collection
408 getLeases6(const asiolink::IOAddress& lower_bound_address,
409 const LeasePageSize& page_size) const override;
410
421 virtual void getExpiredLeases4(Lease4Collection& expired_leases,
422 const size_t max_leases) const override;
423
434 virtual void getExpiredLeases6(Lease6Collection& expired_leases,
435 const size_t max_leases) const override;
436
457 virtual void updateLease4(const Lease4Ptr& lease4) override;
458
479 virtual void updateLease6(const Lease6Ptr& lease6) override;
480
495 virtual bool deleteLease(const Lease4Ptr& lease) override;
496
511 virtual bool deleteLease(const Lease6Ptr& lease) override;
512
520 virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override;
521
529 virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override;
530
539 virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
540
553
562 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
563
573 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
574 const SubnetID& last_subnet_id) override;
575
584 virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
585
598
607 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
608
618 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
619 const SubnetID& last_subnet_id) override;
620
630 virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
631
641 virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
642
648 virtual std::string getType() const override {
649 return (std::string("postgresql"));
650 }
651
657 virtual std::string getName() const override;
658
664 virtual std::string getDescription() const override;
665
673 virtual std::pair<uint32_t, uint32_t> getVersion() const override;
674
681 virtual void commit() override;
682
689 virtual void rollback() override;
690
696 DELETE_LEASE4, // Delete from lease4 by address
697 DELETE_LEASE4_STATE_EXPIRED, // Delete expired lease4 in a given state
698 DELETE_LEASE6, // Delete from lease6 by address
699 DELETE_LEASE6_STATE_EXPIRED, // Delete expired lease6 in a given state
700 GET_LEASE4, // Get all IPv4 leases
701 GET_LEASE4_ADDR, // Get lease4 by address
702 GET_LEASE4_CLIENTID, // Get lease4 by client ID
703 GET_LEASE4_CLIENTID_SUBID, // Get lease4 by client ID & subnet ID
704 GET_LEASE4_HWADDR, // Get lease4 by HW address
705 GET_LEASE4_HWADDR_SUBID, // Get lease4 by HW address & subnet ID
706 GET_LEASE4_PAGE, // Get page of leases beginning with an address
707 GET_LEASE4_UCTX_PAGE, // Get page of leases with user context
708 GET_LEASE4_SUBID, // Get IPv4 leases by subnet ID
709 GET_LEASE4_HOSTNAME, // Get IPv4 leases by hostname
710 GET_LEASE4_EXPIRE, // Get lease4 by expiration.
711 GET_LEASE4_RELAYID, // Get page of lease by relay ID.
712 GET_LEASE4_RELAYID_QST, // Get page of leases by relay ID and query start time.
713 GET_LEASE4_RELAYID_QSET, // Get page of leases by relay ID and query start and end times.
714 GET_LEASE4_RELAYID_QET, // Get page of leases by relay ID and query end time.
715 GET_LEASE4_REMOTEID, // Get page of lease by remote ID.
716 GET_LEASE4_REMOTEID_QST, // Get page of leases by remote ID and query start time.
717 GET_LEASE4_REMOTEID_QSET, // Get page of leases by remote ID and query start and end times.
718 GET_LEASE4_REMOTEID_QET, // Get page of leases by remote ID and query end time.
719 GET_LEASE6, // Get all IPv6 leases
720 GET_LEASE6_ADDR, // Get lease6 by address and type
721 GET_LEASE6_DUID_IAID, // Get lease6 by DUID and IAID
722 GET_LEASE6_DUID_IAID_SUBID, // Get lease6 by DUID, IAID and subnet ID
723 GET_LEASE6_PAGE, // Get page of leases beginning with an address
724 GET_LEASE6_UCTX_PAGE, // Get page of leases with user context
725 GET_LEASE6_SUBID, // Get IPv6 leases by subnet ID
726 GET_LEASE6_DUID, // Get IPv6 leases by DUID
727 GET_LEASE6_HOSTNAME, // Get IPv6 leases by hostname
728 GET_LEASE6_EXPIRE, // Get lease6 by expiration.
729 GET_LEASE6_LINK, // Get page of lease6 by link
730 INSERT_LEASE4, // Add entry to lease4 table
731 INSERT_LEASE6, // Add entry to lease6 table
732 UPDATE_LEASE4, // Update a Lease4 entry
733 UPDATE_LEASE6, // Update a Lease6 entry
734 ALL_LEASE4_STATS, // Fetches IPv4 lease statistics
735 SUBNET_LEASE4_STATS, // Fetched IPv4 lease stats for a single subnet.
736 SUBNET_RANGE_LEASE4_STATS, // Fetched IPv4 lease stats for a subnet range.
737 ALL_POOL_LEASE4_STATS, // Fetches IPv4 lease pool statistics
738 ALL_LEASE6_STATS, // Fetches IPv6 lease statistics
739 SUBNET_LEASE6_STATS, // Fetched IPv6 lease stats for a single subnet.
740 SUBNET_RANGE_LEASE6_STATS, // Fetched IPv6 lease stats for a subnet range.
741 ALL_POOL_LEASE6_STATS, // Fetches IPv6 lease pool statistics
742 CHECK_LEASE4_LIMITS, // Check if allocated IPv4 leases are inside the set limits.
743 CHECK_LEASE6_LIMITS, // Check if allocated IPv6 leases are inside the set limits.
744 IS_JSON_SUPPORTED, // Checks if JSON support is enabled in the database.
745 GET_LEASE4_COUNT_BY_CLASS, // Fetches the IPv4 lease count for a given class.
746 GET_LEASE6_COUNT_BY_CLASS, // Fetches the IPv6 lease count for given class and lease type.
747 WIPE_RELAY_ID6, // Wipe the lease6_relay_id table
748 WIPE_REMOTE_ID6, // Wipe the lease6_remote_id table
749 DELETE_RELAY_ID6, // Delete a lease6_relay_id entry by address
750 DELETE_REMOTE_ID6, // Delete a lease6_remote_id entry by address
751 ADD_RELAY_ID6, // Add a lease6_relay_id entry
752 ADD_REMOTE_ID6, // Add a lease6_remote_id entry
753 GET_RELAY_ID6, // Get lease6_relay_id entries
754 GET_REMOTE_ID6, // Get lease6_remote_id entries
755 GET_RELAY_ID6_LINK, // Get lease6_relay_id entries by link
756 GET_REMOTE_ID6_LINK, // Get lease6_remote_id entries by link
757 COUNT_RELAY_ID6, // Count the lease6_relay_id number of entries
758 COUNT_REMOTE_ID6, // Count the lease6_remote_id number of entries
759 NUM_STATEMENTS // Number of statements
760 };
761
762private:
763
780 bool addLeaseCommon(PgSqlLeaseContextPtr& ctx,
781 StatementIndex stindex,
782 db::PsqlBindArray& bind_array);
783
805 template <typename Exchange, typename LeaseCollection>
806 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
807 StatementIndex stindex,
808 db::PsqlBindArray& bind_array,
809 Exchange& exchange, LeaseCollection& result,
810 bool single = false) const;
811
829 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
830 StatementIndex stindex,
831 db::PsqlBindArray& bind_array,
832 Lease4Collection& result) const {
833 getLeaseCollection(ctx, stindex, bind_array, ctx->exchange4_, result);
834 }
835
852 void getLeaseCollection(PgSqlLeaseContextPtr& ctx,
853 StatementIndex stindex,
854 db::PsqlBindArray& bind_array,
855 Lease6Collection& result) const {
856 getLeaseCollection(ctx, stindex, bind_array, ctx->exchange6_, result);
857 }
858
869 void getLease(PgSqlLeaseContextPtr& ctx,
870 StatementIndex stindex,
871 db::PsqlBindArray& bind_array,
872 Lease4Ptr& result) const;
873
884 void getLease(PgSqlLeaseContextPtr& ctx,
885 StatementIndex stindex,
886 db::PsqlBindArray& bind_array,
887 Lease6Ptr& result) const;
888
903 template<typename LeaseCollection>
904 void getExpiredLeasesCommon(LeaseCollection& expired_leases,
905 const size_t max_leases,
906 StatementIndex statement_index) const;
907
924 template <typename LeasePtr>
925 void updateLeaseCommon(PgSqlLeaseContextPtr& ctx,
926 StatementIndex stindex,
927 db::PsqlBindArray& bind_array,
928 const LeasePtr& lease);
929
945 uint64_t deleteLeaseCommon(PgSqlLeaseContextPtr& ctx,
946 StatementIndex stindex,
947 db::PsqlBindArray& bind_array);
948
958 uint64_t deleteExpiredReclaimedLeasesCommon(const uint32_t secs,
959 StatementIndex statement_index);
960
972 std::string
973 checkLimits(isc::data::ConstElementPtr const& user_context, StatementIndex const stindex) const;
974
975public:
987 virtual std::string
988 checkLimits4(isc::data::ConstElementPtr const& user_context) const override;
989
1001 virtual std::string
1002 checkLimits6(isc::data::ConstElementPtr const& user_context) const override;
1003
1008 virtual bool isJsonSupported() const override;
1009
1017 virtual size_t getClassLeaseCount(const ClientClass& client_class,
1018 const Lease::Type& ltype = Lease::TYPE_V4) const override;
1019
1021 virtual void recountClassLeases4() override;
1022
1024 virtual void recountClassLeases6() override;
1025
1027 virtual void clearClassLeaseCounts() override;
1028
1032
1045 virtual Lease4Collection
1046 getLeases4ByRelayId(const OptionBuffer& relay_id,
1047 const asiolink::IOAddress& lower_bound_address,
1048 const LeasePageSize& page_size,
1049 const time_t& qry_start_time = 0,
1050 const time_t& qry_end_time = 0) override;
1051
1064 virtual Lease4Collection
1065 getLeases4ByRemoteId(const OptionBuffer& remote_id,
1066 const asiolink::IOAddress& lower_bound_address,
1067 const LeasePageSize& page_size,
1068 const time_t& qry_start_time = 0,
1069 const time_t& qry_end_time = 0) override;
1070
1081 virtual Lease6Collection
1082 getLeases6ByRelayId(const DUID& relay_id,
1083 const asiolink::IOAddress& link_addr,
1084 uint8_t link_len,
1085 const asiolink::IOAddress& lower_bound_address,
1086 const LeasePageSize& page_size) override;
1087
1098 virtual Lease6Collection
1099 getLeases6ByRemoteId(const OptionBuffer& remote_id,
1100 const asiolink::IOAddress& link_addr,
1101 uint8_t link_len,
1102 const asiolink::IOAddress& lower_bound_address,
1103 const LeasePageSize& page_size) override;
1104
1114 virtual Lease6Collection
1115 getLeases6ByLink(const asiolink::IOAddress& link_addr,
1116 uint8_t link_len,
1117 const asiolink::IOAddress& lower_bound_address,
1118 const LeasePageSize& page_size) override;
1119
1131 virtual size_t upgradeExtendedInfo4(const LeasePageSize& page_size) override;
1132
1144 virtual size_t upgradeExtendedInfo6(const LeasePageSize& page_size) override;
1145
1147 virtual void wipeExtendedInfoTables6() override;
1148
1152 virtual size_t byRelayId6size() const override;
1153
1157 virtual size_t byRemoteId6size() const override;
1158
1160 virtual void writeLeases4(const std::string& /*filename*/) override;
1161
1163 virtual void writeLeases6(const std::string& /*filename*/) override;
1164
1165private:
1167 class PgSqlLeaseContextAlloc {
1168 public:
1169
1176 PgSqlLeaseContextAlloc(const PgSqlLeaseMgr& mgr);
1177
1181 ~PgSqlLeaseContextAlloc();
1182
1185
1186 private:
1187
1189 const PgSqlLeaseMgr& mgr_;
1190 };
1191
1196 class PgSqlLeaseTrackingContextAlloc {
1197 public:
1198
1206 PgSqlLeaseTrackingContextAlloc(PgSqlLeaseMgr& mgr, const LeasePtr& lease);
1207
1211 ~PgSqlLeaseTrackingContextAlloc();
1212
1215
1216 private:
1217
1219 PgSqlLeaseMgr& mgr_;
1220
1222 LeasePtr lease_;
1223 };
1224
1225protected:
1226
1228
1232 virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress& addr) override;
1233
1238 virtual void addRelayId6(const isc::asiolink::IOAddress& lease_addr,
1239 const std::vector<uint8_t>& relay_id) override;
1240
1245 virtual void addRemoteId6(const isc::asiolink::IOAddress& lease_addr,
1246 const std::vector<uint8_t>& remote_id) override;
1247
1248private:
1252 void deleteRelayId6(const isc::asiolink::IOAddress& addr);
1253
1257 void deleteRemoteId6(const isc::asiolink::IOAddress& addr);
1258
1259 // Members
1260
1263
1266
1268 std::string timer_name_;
1269};
1270
1271} // namespace dhcp
1272} // namespace isc
1273
1274#endif // PGSQL_LEASE_MGR_H
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
Common PgSql Connector Pool.
Holds Client identifier or client IPv4 address.
Definition: duid.h:218
Holds DUID (DHCPv6 Unique Identifier)
Definition: duid.h:138
Wraps value holding size of the page with leases.
Definition: lease_mgr.h:46
PostgreSQL Lease Context Pool.
std::vector< PgSqlLeaseContextPtr > pool_
The vector of available contexts.
std::mutex mutex_
The mutex to protect pool access.
PostgreSQL Lease Context.
PgSqlLeaseContext(const db::DatabaseConnection::ParameterMap &parameters, 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.
db::PgSqlConnection conn_
PostgreSQL connection.
boost::scoped_ptr< PgSqlLease6Exchange > exchange6_
Exchange object.
PostgreSQL Lease Manager.
virtual Lease6Collection getLeases6ByRelayId(const DUID &relay_id, const asiolink::IOAddress &link_addr, uint8_t link_len, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with a given relay-id.
virtual void recountClassLeases6() override
Recount the leases per class for V6 leases.
virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override
Creates and runs the IPv4 lease stats query.
virtual size_t wipeLeases4(const SubnetID &subnet_id) override
Removes specified IPv4 leases.
PgSqlLeaseContextPtr createContext() const
Create a new context.
virtual Lease4Collection getLeases4() const override
Returns all IPv4 leases.
virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query.
virtual Lease4Collection getLeases4ByRemoteId(const OptionBuffer &remote_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size, const time_t &qry_start_time=0, const time_t &qry_end_time=0) override
Returns existing IPv4 leases with a given remote-id.
virtual LeaseStatsQueryPtr startPoolLeaseStatsQuery4() override
Creates and runs the IPv4 lease stats query for all subnets and pools.
virtual std::string checkLimits6(isc::data::ConstElementPtr const &user_context) const override
Checks if the IPv6 lease limits set in the given user context are exceeded.
virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override
Deletes all expired-reclaimed DHCPv4 leases.
virtual Lease6Collection getLeases6ByRemoteId(const OptionBuffer &remote_id, const asiolink::IOAddress &link_addr, uint8_t link_len, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with a given remote-id.
static std::string getDBVersion()
Local version of getDBVersion() class method.
virtual std::string checkLimits4(isc::data::ConstElementPtr const &user_context) const override
Checks if the IPv4 lease limits set in the given user context are exceeded.
virtual size_t byRemoteId6size() const override
Return the by-remote-id table size.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID &subnet_id) override
Creates and runs the IPv4 lease stats query for a single subnet.
virtual void addRelayId6(const isc::asiolink::IOAddress &lease_addr, const std::vector< uint8_t > &relay_id) override
Add lease6 extended info into by-relay-id table.
virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override
Deletes all expired-reclaimed DHCPv6 leases.
virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress &addr) override
Extended information / Bulk Lease Query shared interface.
virtual void recountClassLeases4() override
Recount the leases per class for V4 leases.
virtual size_t upgradeExtendedInfo4(const LeasePageSize &page_size) override
Upgrade extended info (v4).
virtual size_t wipeLeases6(const SubnetID &subnet_id) override
Removed specified IPv6 leases.
virtual void getExpiredLeases4(Lease4Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv4 leases.
virtual void updateLease6(const Lease6Ptr &lease6) override
Updates IPv6 lease.
virtual std::pair< uint32_t, uint32_t > getVersion() const override
Returns backend version.
virtual std::string getDescription() const override
Returns description of the backend.
virtual void wipeExtendedInfoTables6() override
Wipe extended info table (v6).
virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID &first_subnet_id, const SubnetID &last_subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
virtual size_t upgradeExtendedInfo6(const LeasePageSize &page_size) override
Upgrade extended info (v6).
virtual std::string getType() const override
Return backend type.
virtual size_t byRelayId6size() const override
Return the by-relay-id table size.
virtual Lease4Collection getLeases4ByRelayId(const OptionBuffer &relay_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size, const time_t &qry_start_time=0, const time_t &qry_end_time=0) override
The following queries are used to fulfill Bulk Lease Query queries.
virtual void commit() override
Commit Transactions.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
virtual Lease6Ptr getLease6(Lease::Type type, const isc::asiolink::IOAddress &addr) const override
Returns existing IPv6 lease for a given IPv6 address.
virtual Lease6Collection getLeases6() const override
Returns all IPv6 leases.
virtual void addRemoteId6(const isc::asiolink::IOAddress &lease_addr, const std::vector< uint8_t > &remote_id) override
Add lease6 extended info into by-remote-id table.
StatementIndex
Statement Tags.
virtual void rollback() override
Rollback Transactions.
virtual void updateLease4(const Lease4Ptr &lease4) override
Updates IPv4 lease.
virtual LeaseStatsQueryPtr startPoolLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query for all subnets and pools.
virtual void writeLeases6(const std::string &) override
Write V6 leases to a file.
virtual void getExpiredLeases6(Lease6Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv6 leases.
virtual std::string getName() const override
Returns backend name.
PgSqlLeaseMgr(const db::DatabaseConnection::ParameterMap &parameters)
Constructor.
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const override
Returns an IPv4 lease for specified IPv4 address.
virtual void clearClassLeaseCounts() override
Clears the class-lease count map.
virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID &first_subnet_id, const SubnetID &last_subnet_id) override
Creates and runs the IPv4 lease stats query for a single subnet.
static bool dbReconnect(util::ReconnectCtlPtr db_reconnect_ctl)
Attempts to reconnect the server to the lease DB backend manager.
virtual ~PgSqlLeaseMgr()
Destructor (closes database)
virtual bool isJsonSupported() const override
Checks if JSON support is enabled in the database.
virtual size_t getClassLeaseCount(const ClientClass &client_class, const Lease::Type &ltype=Lease::TYPE_V4) const override
Returns the class lease count for a given class and lease type.
virtual Lease6Collection getLeases6ByLink(const asiolink::IOAddress &link_addr, uint8_t link_len, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with on a given link.
virtual bool addLease(const Lease4Ptr &lease) override
Adds an IPv4 lease.
virtual void writeLeases4(const std::string &) override
Write V4 leases to a file.
virtual bool deleteLease(const Lease4Ptr &lease) override
Deletes an IPv4 lease.
Introduces callbacks into the LeaseMgr.
An abstract API for lease database.
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:29
boost::shared_ptr< IOServiceAccessor > IOServiceAccessorPtr
Pointer to an instance of IOServiceAccessor.
std::function< bool(util::ReconnectCtlPtr db_reconnect_ctl)> DbCallback
Defines a callback prototype for propagating events upward.
std::string ClientClass
Defines a single class name.
Definition: classify.h:42
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition: lease.h:505
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:670
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition: lease_mgr.h:233
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
Definition: subnet_id.h:25
boost::shared_ptr< Lease > LeasePtr
Pointer to the lease object.
Definition: lease.h:25
boost::shared_ptr< PgSqlLeaseContext > PgSqlLeaseContextPtr
Type of pointers to contexts.
std::vector< uint8_t > OptionBuffer
buffer types used in DHCP code.
Definition: option.h:24
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
Definition: lease.h:497
boost::shared_ptr< PgSqlLeaseContextPool > PgSqlLeaseContextPoolPtr
Type of pointers to context pools.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:292
boost::shared_ptr< ReconnectCtl > ReconnectCtlPtr
Pointer to an instance of ReconnectCtl.
Defines the logger used by the top-level component of kea-lfc.
Hardware type that represents information from DHCPv4 packet.
Definition: hwaddr.h:20
Type
Type of lease or pool.
Definition: lease.h:46
@ TYPE_V4
IPv4 lease.
Definition: lease.h:50