22 #include <boost/noncopyable.hpp> 23 #include <boost/shared_ptr.hpp> 67 subnet_id_(0), lease_type_(
Lease::TYPE_NA),
68 lease_state_(
Lease::STATE_DEFAULT), state_count_(0) {
79 const int64_t state_count)
80 : subnet_id_(subnet_id), lease_type_(
Lease::TYPE_NA),
81 lease_state_(lease_state), state_count_(state_count) {
91 const uint32_t lease_state,
const int64_t state_count)
92 : subnet_id_(subnet_id), lease_type_(lease_type),
93 lease_state_(lease_state), state_count_(state_count) {
182 return (first_subnet_id_);
187 return (last_subnet_id_);
194 return (select_mode_);
206 SelectMode select_mode_;
238 static std::string getDBVersion();
251 virtual bool addLease(
const Lease4Ptr& lease) = 0;
264 virtual bool addLease(
const Lease6Ptr& lease) = 0;
402 uint32_t iaid)
const = 0;
416 uint32_t iaid,
SubnetID subnet_id)
const = 0;
442 uint32_t iaid,
SubnetID subnet_id)
const;
508 const size_t max_leases)
const = 0;
521 const size_t max_leases)
const = 0;
528 virtual void updateLease4(
const Lease4Ptr& lease4) = 0;
533 virtual void updateLease6(
const Lease6Ptr& lease6) = 0;
543 virtual bool deleteLease(
const Lease4Ptr& lease) = 0;
553 virtual bool deleteLease(
const Lease6Ptr& lease) = 0;
562 virtual uint64_t deleteExpiredReclaimedLeases4(
const uint32_t secs) = 0;
571 virtual uint64_t deleteExpiredReclaimedLeases6(
const uint32_t secs) = 0;
590 void recountLeaseStats4();
601 virtual LeaseStatsQueryPtr startLeaseStatsQuery4();
612 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(
const SubnetID& subnet_id);
625 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(
const SubnetID& first_subnet_id,
647 void recountLeaseStats6();
658 virtual LeaseStatsQueryPtr startLeaseStatsQuery6();
669 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(
const SubnetID& subnet_id);
682 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(
const SubnetID& first_subnet_id,
692 virtual size_t wipeLeases4(
const SubnetID& subnet_id) = 0;
701 virtual size_t wipeLeases6(
const SubnetID& subnet_id) = 0;
733 virtual bool isJsonSupported()
const = 0;
740 virtual std::string getType()
const = 0;
748 virtual std::string getName()
const = 0;
755 virtual std::string getDescription()
const = 0;
771 virtual VersionPair getVersion()
const = 0;
777 virtual void commit() = 0;
783 virtual void rollback() = 0;
789 io_service_ = io_service;
794 return (io_service_);
806 virtual size_t getClassLeaseCount(
const ClientClass& client_class,
810 virtual void recountClassLeases4() = 0;
813 virtual void recountClassLeases6() = 0;
816 virtual void clearClassLeaseCounts() = 0;
837 upgradeLease4ExtendedInfo(
const Lease4Ptr& lease,
854 upgradeLease6ExtendedInfo(
const Lease6Ptr& lease,
874 const time_t& qry_start_time = 0,
875 const time_t& qry_end_time = 0) = 0;
893 const time_t& qry_start_time = 0,
894 const time_t& qry_end_time = 0) = 0;
907 getLeases6ByRelayId(
const DUID& relay_id,
948 virtual void writeLeases4(
const std::string& filename) = 0;
953 virtual void writeLeases6(
const std::string& filename) = 0;
961 return (extended_info_tables_enabled_);
970 virtual size_t buildExtendedInfoTables6(
bool update,
bool current) = 0;
984 extended_info_tables_enabled_ = enabled;
999 virtual bool addExtendedInfo6(
const Lease6Ptr& lease);
1011 const std::vector<uint8_t>& relay_id) = 0;
1018 const std::vector<uint8_t>& remote_id) = 0;
1026 bool extended_info_tables_enabled_;
1032 #endif // LEASE_MGR_H bool operator<(Element const &a, Element const &b)
std::pair< uint32_t, uint32_t > VersionPair
Pair containing major and minor versions.
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
virtual void setExtendedInfoTablesEnabled(const bool enabled)
Extended information / Bulk Lease Query shared interface.
LeasePageSize(const size_t page_size)
Constructor.
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
LeaseStatsRow()
Default constructor.
boost::shared_ptr< IOService > IOServicePtr
Defines a smart pointer to an IOService instance.
Base class for fulfilling a statistical lease data query.
std::vector< uint8_t > OptionBuffer
buffer types used in DHCP code.
Holds DUID (DHCPv6 Unique Identifier)
static isc::asiolink::IOServicePtr & getIOService()
Returns pointer to the IO service.
virtual ~LeaseStatsQuery()
virtual destructor
const size_t page_size_
Holds page size.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
SubnetID last_subnet_id_
Last subnet_id in the selection criteria when a range is given.
LeaseStatsRow(const SubnetID &subnet_id, const uint32_t lease_state, const int64_t state_count)
Constructor.
SelectMode
Defines the types of selection criteria supported.
SubnetID subnet_id_
The subnet ID to which this data applies.
SelectMode getSelectMode() const
Returns the selection criteria mode The value returned is based upon the constructor variant used and...
boost::shared_ptr< const Element > ConstElementPtr
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
bool getExtendedInfoTablesEnabled() const
Returns the setting indicating if lease extended info tables are enabled.
virtual ~LeaseMgr()
Destructor.
SubnetID getLastSubnetID() const
Returns the value of last subnet ID specified (or zero)
boost::shared_ptr< LeaseStatsRow > LeaseStatsRowPtr
Defines a pointer to a LeaseStatsRow.
Defines the logger used by the top-level component of kea-lfc.
LeaseStatsRow(const SubnetID &subnet_id, const Lease::Type &lease_type, const uint32_t lease_state, const int64_t state_count)
Constructor.
ExtendedInfoSanity
Values for extended info sanity checks done for leases.
SubnetID getFirstSubnetID() const
Returns the value of first subnet ID specified (or zero)
virtual void start()
Executes the query.
a common structure for IPv4 and IPv6 leases
uint32_t lease_state_
The lease_state to which the count applies.
Type
Type of lease or pool.
Holds Client identifier or client IPv4 address.
Hardware type that represents information from DHCPv4 packet.
SubnetID first_subnet_id_
First (or only) subnet_id in the selection criteria.
int64_t state_count_
state_count The count of leases in the lease state
static void setIOService(const isc::asiolink::IOServicePtr &io_service)
Sets IO service to be used by the Lease Manager.
Contains a single row of lease statistical data.
Wraps value holding size of the page with leases.
Lease::Type lease_type_
The lease_type to which the count applies.
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< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.