 |
Kea
1.5.0
|
Go to the documentation of this file.
7 #ifndef MEMFILE_LEASE_MGR_H
8 #define MEMFILE_LEASE_MGR_H
19 #include <boost/scoped_ptr.hpp>
20 #include <boost/shared_ptr.hpp>
286 const DUID& duid, uint32_t iaid)
const;
362 const size_t max_leases)
const;
375 const size_t max_leases)
const;
469 template<
typename IndexType,
typename LeaseType,
typename StorageType,
470 typename LeaseFileType>
471 uint64_t deleteExpiredReclaimedLeases(
const uint32_t secs,
473 StorageType& storage,
474 LeaseFileType& lease_file)
const;
484 return (std::string(
"memfile"));
559 static std::string
appendSuffix(
const std::string& file_name,
615 std::string initLeaseFilePath(
Universe u);
672 template<
typename LeaseObjectType,
typename LeaseFileType,
673 typename StorageType>
674 bool loadLeasesFromFiles(
const std::string& filename,
675 boost::shared_ptr<LeaseFileType>& lease_file,
676 StorageType& storage);
685 boost::shared_ptr<CSVLeaseFile4> lease_file4_;
688 boost::shared_ptr<CSVLeaseFile6> lease_file6_;
812 void lfcSetup(
bool conversion_needed =
false);
836 template<
typename LeaseFileType>
837 void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
840 boost::scoped_ptr<LFCSetup> lfc_setup_;
854 #endif // MEMFILE_LEASE_MGR_H
virtual size_t wipeLeases6(const SubnetID &subnet_id)
Removed specified IPv6 leases.
Wraps value holding size of the page with leases.
virtual void commit()
Commit Transactions.
virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs)
Deletes all expired-reclaimed DHCPv6 leases.
static std::string getDBVersion()
Local version of getDBVersion() class method.
virtual ~Memfile_LeaseMgr()
Destructor (closes file)
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID &subnet_id)
Creates and runs the IPv4 lease stats query for a single subnet.
virtual void updateLease6(const Lease6Ptr &lease6)
Updates IPv6 lease.
@ FILE_FINISH
LFC Finish File.
virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID &first_subnet_id, const SubnetID &last_subnet_id)
Creates and runs the IPv6 lease stats query for a single subnet.
virtual void rollback()
Rollback Transactions.
virtual std::string getName() const
Returns backend name.
std::string getLeaseFilePath(Universe u) const
Returns an absolute path to the lease file.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
bool persistLeases(Universe u) const
Specifies whether or not leases are written to disk.
The IOAddress class represents an IP addresses (version agnostic)
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const
Returns existing IPv4 lease for specified IPv4 address.
std::string getDefaultLeaseFilePath(Universe u) const
Returns default path to the lease file.
Type
Type of lease or pool.
Universe
Specifies universe (V4, V6)
Hardware type that represents information from DHCPv4 packet.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id)
Creates and runs the IPv6 lease stats query for a single subnet.
boost::multi_index_container< Lease6Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< AddressIndexTag >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< DuidIaidTypeIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::const_mem_fun< Lease6, const std::vector< uint8_t > &, &Lease6::getDuidVector >, boost::multi_index::member< Lease6, uint32_t, &Lease6::iaid_ >, boost::multi_index::member< Lease6, Lease::Type, &Lease6::type_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ExpirationIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::const_mem_fun< Lease, bool, &Lease::stateExpiredReclaimed >, boost::multi_index::const_mem_fun< Lease, int64_t, &Lease::getExpirationTime > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdIndexTag >, boost::multi_index::member< Lease, isc::dhcp::SubnetID, &Lease::subnet_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< DuidIndexTag >, boost::multi_index::const_mem_fun< Lease6, const std::vector< uint8_t > &, &Lease6::getDuidVector > > >> Lease6Storage
A multi index container holding DHCPv6 leases.
@ FILE_PREVIOUS
Previous Lease File.
static const int MAJOR_VERSION
@ FILE_OUTPUT
LFC Output File.
An abstract API for lease database.
virtual LeaseStatsQueryPtr startLeaseStatsQuery6()
Creates and runs the IPv6 lease stats query.
Defines the logger used by the top-level component of kea-dhcp-ddns.
virtual bool addLease(const Lease4Ptr &lease)
Adds an IPv4 lease.
static std::string appendSuffix(const std::string &file_name, const LFCFileType &file_type)
Appends appropriate suffix to the file name.
boost::multi_index_container< Lease4Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< AddressIndexTag >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HWAddressSubnetIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease, const std::vector< uint8_t > &, &Lease::getHWAddrVector >, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ClientIdSubnetIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease4, const std::vector< uint8_t > &, &Lease4::getClientIdVector >, boost::multi_index::member< Lease, uint32_t, &Lease::subnet_id_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ClientIdHWAddressSubnetIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease4, const std::vector< uint8_t > &, &Lease4::getClientIdVector >, boost::multi_index::const_mem_fun< Lease, const std::vector< uint8_t > &, &Lease::getHWAddrVector >, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ExpirationIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease, bool, &Lease::stateExpiredReclaimed >, boost::multi_index::const_mem_fun< Lease, int64_t, &Lease::getExpirationTime > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdIndexTag >, boost::multi_index::member< Lease, isc::dhcp::SubnetID, &Lease::subnet_id_ > > >> Lease4Storage
A multi index container holding DHCPv4 leases.
virtual Lease6Ptr getLease6(Lease::Type type, const isc::asiolink::IOAddress &addr) const
Returns existing IPv6 lease for a given IPv6 address.
virtual Lease4Collection getLeases4() const
Returns all IPv4 leases.
virtual void getExpiredLeases6(Lease6Collection &expired_leases, const size_t max_leases) const
Returns a collection of expired DHCPv6 leases.
Holds Client identifier or client IPv4 address.
virtual void getExpiredLeases4(Lease4Collection &expired_leases, const size_t max_leases) const
Returns a collection of expired DHCPv4 leases.
virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID &first_subnet_id, const SubnetID &last_subnet_id)
Creates and runs the IPv4 lease stats query for a single subnet.
virtual size_t wipeLeases4(const SubnetID &subnet_id)
Removes specified IPv4 leases.
static const int MINOR_VERSION
Defines minor version of the memfile backend.
@ FILE_INPUT
Lease File Copy
virtual LeaseStatsQueryPtr startLeaseStatsQuery4()
Creates and runs the IPv4 lease stats query.
virtual void lfcCallback()
A callback function triggering Lease File Cleanup (LFC).
virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs)
Deletes all expired-reclaimed DHCPv4 leases.
Memfile_LeaseMgr(const db::DatabaseConnection::ParameterMap ¶meters)
The sole lease manager constructor.
Concrete implementation of a lease database backend using flat file.
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
Common database connection class.
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Holds DUID (DHCPv6 Unique Identifier)
virtual std::string getType() const
Return backend type.
int getLFCExitStatus() const
Returns the status code returned by the last executed LFC process.
LFCFileType
Types of the lease files used by the Lease File Cleanup.
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
virtual std::pair< uint32_t, uint32_t > getVersion() const
Returns backend version.
bool isLFCRunning() const
Checks if the process performing lease file cleanup is running.
virtual void updateLease4(const Lease4Ptr &lease4)
Updates IPv4 lease.
virtual bool deleteLease(const isc::asiolink::IOAddress &addr)
Deletes a lease.
virtual std::string getDescription() const
Returns description of the backend.
virtual Lease6Collection getLeases6() const
Returns all IPv6 leases.