Kea 3.1.5
memfile_lease_mgr.h
Go to the documentation of this file.
1// Copyright (C) 2012-2025 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 MEMFILE_LEASE_MGR_H
8#define MEMFILE_LEASE_MGR_H
9
13#include <dhcp/hwaddr.h>
20
21#include <boost/scoped_ptr.hpp>
22#include <boost/shared_ptr.hpp>
23
24#include <mutex>
25
26namespace isc {
27namespace dhcp {
28
29class LFCSetup;
30
82public:
83
94 static const int MAJOR_VERSION_V4 = 3;
95
97 static const int MINOR_VERSION_V4 = 0;
99
112 static const int MAJOR_VERSION_V6 = 5;
113
115 static const int MINOR_VERSION_V6 = 0;
117
124 enum Universe {
127 };
128
132
133
155
157 virtual ~Memfile_LeaseMgr();
158
160 static std::string getDBVersion();
161
163 static std::string getDBVersionInternal(Universe const& u);
164
170 virtual bool addLease(const Lease4Ptr& lease) override;
171
177 virtual bool addLease(const Lease6Ptr& lease) override;
178
187 virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress& addr) const override;
188
199 virtual Lease4Collection getLease4(const isc::dhcp::HWAddr& hwaddr) const override;
200
214 virtual Lease4Ptr getLease4(const HWAddr& hwaddr,
215 SubnetID subnet_id) const override;
216
222 virtual Lease4Collection getLease4(const ClientId& client_id) const override;
223
236 virtual Lease4Ptr getLease4(const ClientId& clientid,
237 SubnetID subnet_id) const override;
238
244 virtual Lease4Collection getLeases4(SubnetID subnet_id) const override;
245
251 virtual Lease4Collection getLeases4(const std::string& hostname) const override;
252
256 virtual Lease4Collection getLeases4() const override;
257
282 virtual Lease4Collection
283 getLeases4(const asiolink::IOAddress& lower_bound_address,
284 const LeasePageSize& page_size) const override;
285
292 virtual Lease4Collection getLeases4(uint32_t state,
293 SubnetID subnet_id) const override;
294
304 virtual Lease6Ptr getLease6(Lease::Type type,
305 const isc::asiolink::IOAddress& addr) const override;
306
317 virtual Lease6Collection getLease6(const isc::dhcp::HWAddr& hwaddr) const override;
318
328 const DUID& duid,
329 uint32_t iaid) const override;
330
344 const DUID& duid,
345 uint32_t iaid,
346 SubnetID subnet_id) const override;
347
353 virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
354
360 virtual Lease6Collection getLeases6(const std::string& hostname) const override;
361
365 virtual Lease6Collection getLeases6() const override;
366
370 virtual Lease6Collection getLeases6(const DUID& duid) const override;
371
396 virtual Lease6Collection
397 getLeases6(const asiolink::IOAddress& lower_bound_address,
398 const LeasePageSize& page_size) const override;
399
408 virtual Lease6Collection
409 getLeases6(SubnetID subnet_id,
410 const asiolink::IOAddress& lower_bound_address,
411 const LeasePageSize& page_size) const override;
412
419 virtual Lease6Collection getLeases6(uint32_t state,
420 SubnetID subnet_id) const override;
421
432 virtual void getExpiredLeases4(Lease4Collection& expired_leases,
433 const size_t max_leases) const override;
434
445 virtual void getExpiredLeases6(Lease6Collection& expired_leases,
446 const size_t max_leases) const override;
447
465 virtual void updateLease4(const Lease4Ptr& lease4) override;
466
484 virtual void updateLease6(const Lease6Ptr& lease6) override;
485
500 virtual bool deleteLease(const Lease4Ptr& lease) override;
501
516 virtual bool deleteLease(const Lease6Ptr& lease) override;
517
525 virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override;
526
534 virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override;
535
544 virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
545
554 virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
555
567 virtual std::string
568 checkLimits4(isc::data::ConstElementPtr const& user_context) const override;
569
581 virtual std::string
582 checkLimits6(isc::data::ConstElementPtr const& user_context) const override;
583
588 virtual bool isJsonSupported() const override;
589
590private:
591
595
601 bool addLeaseInternal(const Lease4Ptr& lease);
602
608 bool addLeaseInternal(const Lease6Ptr& lease);
609
615 Lease4Ptr getLease4Internal(const isc::asiolink::IOAddress& addr) const;
616
621 void getLease4Internal(const isc::dhcp::HWAddr& hwaddr,
622 Lease4Collection& collection) const;
623
631 Lease4Ptr getLease4Internal(const HWAddr& hwaddr,
632 SubnetID subnet_id) const;
633
638 void getLease4Internal(const ClientId& client_id,
639 Lease4Collection& collection) const;
640
648 Lease4Ptr getLease4Internal(const ClientId& clientid,
649 const HWAddr& hwaddr,
650 SubnetID subnet_id) const;
651
658 Lease4Ptr getLease4Internal(const ClientId& clientid,
659 SubnetID subnet_id) const;
660
665 void getLeases4Internal(SubnetID subnet_id,
666 Lease4Collection& collection) const;
667
672 void getLeases4Internal(const std::string& hostname,
673 Lease4Collection& collection) const;
674
678 void getLeases4Internal(Lease4Collection& collection) const;
679
686 void getLeases4Internal(const asiolink::IOAddress& lower_bound_address,
687 const LeasePageSize& page_size,
688 Lease4Collection& collection) const;
689
695 void getLeases4ByStateInternal(uint32_t state,
696 SubnetID subnet_id,
697 Lease4Collection& collection) const;
698
703 void getLeases4ByStateInternal(uint32_t state,
704 Lease4Collection& collection) const;
705
712 Lease6Ptr getLease6Internal(Lease::Type type,
713 const isc::asiolink::IOAddress& addr) const;
714
719 void getLease6Internal(const isc::dhcp::HWAddr& hwaddr,
720 Lease6Collection& collection) const;
721
727 Lease6Ptr getAnyLease6Internal(const isc::asiolink::IOAddress& addr) const;
728
736 void getLeases6Internal(Lease::Type type,
737 const DUID& duid,
738 uint32_t iaid,
739 Lease6Collection& collection) const;
740
749 void getLeases6Internal(Lease::Type type,
750 const DUID& duid,
751 uint32_t iaid,
752 SubnetID subnet_id,
753 Lease6Collection& collection) const;
754
759 void getLeases6Internal(SubnetID subnet_id,
760 Lease6Collection& collection) const;
761
766 void getLeases6Internal(const std::string& hostname,
767 Lease6Collection& collection) const;
768
772 void getLeases6Internal(Lease6Collection& collection) const;
773
778 void getLeases6Internal(const DUID& duid,
779 Lease6Collection& collection) const;
780
787 void getLeases6Internal(const asiolink::IOAddress& lower_bound_address,
788 const LeasePageSize& page_size,
789 Lease6Collection& collection) const;
790
799 virtual Lease6Collection
800 getLeases6Internal(SubnetID subnet_id,
801 const asiolink::IOAddress& lower_bound_address,
802 const LeasePageSize& page_size) const;
803
809 void getLeases6ByStateInternal(uint32_t state,
810 SubnetID subnet_id,
811 Lease6Collection& collection) const;
812
817 void getLeases6ByStateInternal(uint32_t state,
818 Lease6Collection& collection) const;
819
826 void getExpiredLeases4Internal(Lease4Collection& expired_leases,
827 const size_t max_leases) const;
828
835 void getExpiredLeases6Internal(Lease6Collection& expired_leases,
836 const size_t max_leases) const;
837
852 void updateLease4Internal(const Lease4Ptr& lease4);
853
868 void updateLease6Internal(const Lease6Ptr& lease6);
869
884 bool deleteLeaseInternal(const Lease4Ptr& addr);
885
900 bool deleteLeaseInternal(const Lease6Ptr& addr);
901
907 size_t wipeLeases4Internal(const SubnetID& subnet_id);
908
914 size_t wipeLeases6Internal(const SubnetID& subnet_id);
916
943 template<typename IndexType, typename LeaseType, typename StorageType,
944 typename LeaseFileType>
945 uint64_t deleteExpiredReclaimedLeases(const uint32_t secs,
946 const Universe& universe,
947 StorageType& storage,
948 LeaseFileType& lease_file);
949
956 int64_t getSubnetStat(const SubnetID& subnet_id, const std::string& stat_label) const;
957
968 bool getLeaseLimit(data::ConstElementPtr parent, Lease::Type ltype, size_t& limit) const;
969
970public:
971
977 virtual std::string getType() const override {
978 return (std::string("memfile"));
979 }
980
986 virtual std::string getName() const override {
987 return ("memory");
988 }
989
995 virtual std::string getDescription() const override;
996
1002 virtual std::pair<uint32_t, uint32_t> getVersion(const std::string& timer_name = std::string()) const override;
1003
1008 virtual void commit() override;
1009
1014 virtual void rollback() override;
1015
1019 static bool isLFCProcessRunning(const std::string file_name, Universe u);
1020
1027 virtual data::ElementPtr getStatus() const override;
1028
1030
1032
1033
1046
1065 static std::string appendSuffix(const std::string& file_name,
1066 const LFCFileType& file_type);
1068
1072
1073
1078 static std::string getDefaultLeaseFilePath(Universe u,
1079 const std::string filename = "");
1080
1087 std::string getLeaseFilePath(Universe u) const;
1088
1100 bool persistLeases(Universe u) const;
1101
1103
1104private:
1105
1121 std::string initLeaseFilePath(Universe u);
1122
1179 template<typename LeaseObjectType, typename LeaseFileType,
1180 typename StorageType>
1181 bool loadLeasesFromFiles(Universe u, const std::string& filename,
1182 boost::shared_ptr<LeaseFileType>& lease_file,
1183 StorageType& storage);
1184
1186 Lease4Storage storage4_;
1187
1189 Lease6Storage storage6_;
1190
1191protected:
1192
1195
1198
1200 boost::shared_ptr<CSVLeaseFile4> lease_file4_;
1201
1203 boost::shared_ptr<CSVLeaseFile6> lease_file6_;
1204
1205public:
1206
1211
1212
1216 bool isLFCRunning() const;
1217
1220 int getLFCExitStatus() const;
1221
1223 int getLFCLastPid() const;
1225
1233 virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
1234
1247
1256 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
1257
1267 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
1268 const SubnetID& last_subnet_id) override;
1269
1277 virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
1278
1291
1300 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
1301
1311 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
1312 const SubnetID& last_subnet_id) override;
1313
1317
1318
1319protected:
1320
1332 virtual void lfcCallback();
1334
1336
1337
1338private:
1339
1356 void lfcSetup(bool conversion_needed = false);
1357
1380 template<typename LeaseFileType>
1381 void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
1382
1384 boost::scoped_ptr<LFCSetup> lfc_setup_;
1385
1391
1393
1395 boost::scoped_ptr<std::mutex> mutex_;
1396
1398 ClassLeaseCounter class_lease_counter_;
1399
1400public:
1408 virtual size_t getClassLeaseCount(const ClientClass& client_class,
1409 const Lease::Type& ltype = Lease::TYPE_V4) const override;
1410
1418 virtual void recountClassLeases4() override;
1419
1427 virtual void recountClassLeases6() override;
1428
1432 virtual void clearClassLeaseCounts() override;
1433
1437
1450 virtual Lease4Collection
1451 getLeases4ByRelayId(const OptionBuffer& relay_id,
1452 const asiolink::IOAddress& lower_bound_address,
1453 const LeasePageSize& page_size,
1454 const time_t& qry_start_time = 0,
1455 const time_t& qry_end_time = 0) override;
1456
1469 virtual Lease4Collection
1470 getLeases4ByRemoteId(const OptionBuffer& remote_id,
1471 const asiolink::IOAddress& lower_bound_address,
1472 const LeasePageSize& page_size,
1473 const time_t& qry_start_time = 0,
1474 const time_t& qry_end_time = 0) override;
1475
1484 virtual Lease6Collection
1485 getLeases6ByRelayId(const DUID& relay_id,
1486 const asiolink::IOAddress& lower_bound_address,
1487 const LeasePageSize& page_size) override;
1488
1497 virtual Lease6Collection
1498 getLeases6ByRemoteId(const OptionBuffer& remote_id,
1499 const asiolink::IOAddress& lower_bound_address,
1500 const LeasePageSize& page_size) override;
1501
1511 size_t extractExtendedInfo4(bool update, bool current);
1512
1517 virtual size_t upgradeExtendedInfo6(const LeasePageSize& page_size) override;
1518
1520 virtual void wipeExtendedInfoTables6() override;
1521
1525 virtual size_t byRelayId6size() const override;
1526
1530 virtual size_t byRemoteId6size() const override;
1531
1532private:
1533
1547 getLeases4ByRelayIdInternal(const OptionBuffer& relay_id,
1548 const asiolink::IOAddress& lower_bound_address,
1549 const LeasePageSize& page_size,
1550 const time_t& qry_start_time,
1551 const time_t& qry_end_time);
1552
1566 getLeases4ByRemoteIdInternal(const OptionBuffer& remote_id,
1567 const asiolink::IOAddress& lower_bound_address,
1568 const LeasePageSize& page_size,
1569 const time_t& qry_start_time,
1570 const time_t& qry_end_time);
1571
1581 getLeases6ByRelayIdInternal(const DUID& relay_id,
1582 const asiolink::IOAddress& lower_bound_address,
1583 const LeasePageSize& page_size);
1584
1594 getLeases6ByRemoteIdInternal(const OptionBuffer& remote_id,
1595 const asiolink::IOAddress& lower_bound_address,
1596 const LeasePageSize& page_size);
1597
1598public:
1599
1603 virtual void writeLeases4(const std::string& filename) override;
1604
1608 virtual void writeLeases6(const std::string& filename) override;
1609
1614 virtual size_t upgradeExtendedInfo4(const LeasePageSize& page_size) override;
1615
1620
1621protected:
1622
1624
1627
1631 virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress& addr) override;
1632
1637 virtual void addRelayId6(const isc::asiolink::IOAddress& lease_addr,
1638 const std::vector<uint8_t>& relay_id) override;
1639
1644 virtual void addRemoteId6(const isc::asiolink::IOAddress& lease_addr,
1645 const std::vector<uint8_t>& remote_id) override;
1646
1647private:
1652 virtual void writeLeases4Internal(const std::string& filename);
1653
1658 virtual void writeLeases6Internal(const std::string& filename);
1659
1664 void handleDbLost();
1665
1666public:
1673 static TrackingLeaseMgrPtr
1675
1679 return (conn_.reconnectCtl());
1680 }
1681};
1682
1685 // Constructor registers
1692
1693 // Destructor deregisters
1697};
1698
1699} // namespace dhcp
1700} // namespace isc
1701
1702#endif // MEMFILE_LEASE_MGR_H
Common database connection class.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
Container that maintains counts of leases per class and lease type.
Holds Client identifier or client IPv4 address.
Definition duid.h:222
Holds DUID (DHCPv6 Unique Identifier)
Definition duid.h:142
Represents a configuration for Lease File Cleanup.
static bool registerFactory(const std::string &db_type, const Factory &factory, bool no_log=false, DBVersion db_version=DBVersion())
Register a lease mgr factory.
static bool deregisterFactory(const std::string &db_type, bool no_log=false)
Deregister a lease mgr factory.
Wraps value holding size of the page with leases.
Definition lease_mgr.h:46
Lease6ExtendedInfoRemoteIdTable remote_id6_
stores IPv6 by-remote-id cross-reference table
virtual void rollback() override
Rollback Transactions.
size_t extractExtendedInfo4(bool update, bool current)
Extract extended info for v4 leases.
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 void clearClassLeaseCounts() override
Clears the class-lease count map.
virtual size_t byRelayId6size() const override
Return the by-relay-id table size.
virtual data::ElementPtr getStatus() const override
Return status information.
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.
Memfile_LeaseMgr(const db::DatabaseConnection::ParameterMap &parameters)
The sole lease manager constructor.
bool isLFCRunning() const
Checks if the process performing lease file cleanup is running.
virtual void writeLeases4(const std::string &filename) override
Write V4 leases to a file.
virtual void updateLease4(const Lease4Ptr &lease4) override
Updates IPv4 lease.
virtual size_t wipeLeases4(const SubnetID &subnet_id) override
Removes specified IPv4 leases.
virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress &addr) override
Delete lease6 extended info from tables.
static bool isLFCProcessRunning(const std::string file_name, Universe u)
Check if LFC is running.
virtual bool isJsonSupported() const override
Checks if JSON support is enabled in the database.
Universe
Specifies universe (V4, V6)
static std::string getDefaultLeaseFilePath(Universe u, const std::string filename="")
Returns default path to the lease file.
virtual std::string getType() const override
Return backend type.
static TrackingLeaseMgrPtr factory(const isc::db::DatabaseConnection::ParameterMap &parameters)
Factory class method.
LFCFileType
Types of the lease files used by the Lease File Cleanup.
@ FILE_PREVIOUS
Previous Lease File.
virtual bool deleteLease(const Lease4Ptr &lease) override
Deletes an IPv4 lease.
virtual void commit() override
Commit Transactions.
virtual size_t wipeLeases6(const SubnetID &subnet_id) override
Removed specified IPv6 leases.
virtual std::pair< uint32_t, uint32_t > getVersion(const std::string &timer_name=std::string()) const override
Returns backend version.
int getLFCExitStatus() const
Returns the status code returned by the last executed LFC process.
virtual LeaseStatsQueryPtr startPoolLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query for all subnets and pools.
bool persistLeases(Universe u) const
Specifies whether or not leases are written to disk.
virtual std::string getName() const override
Returns backend name.
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.
static std::string getDBVersion()
Return extended version info.
virtual Lease4Collection getLeases4() const override
Returns all IPv4 leases.
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 isc::data::ConstElementPtr lfcStartHandler() override
Handler for kea-lfc-start command.
virtual void getExpiredLeases6(Lease6Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv6 leases.
void buildExtendedInfoTables6()
Extended information / Bulk Lease Query shared interface.
virtual bool addLease(const Lease4Ptr &lease) override
Adds an IPv4 lease.
virtual size_t byRemoteId6size() const override
Return the by-remote-id table size.
virtual void writeLeases6(const std::string &filename) override
Write V6 leases to a file.
Lease6ExtendedInfoRelayIdTable relay_id6_
stores IPv6 by-relay-id cross-reference table
virtual void recountClassLeases6() override
Recount the leases per class for V6 leases.
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 void wipeExtendedInfoTables6() override
Wipe extended info table (v6).
boost::shared_ptr< CSVLeaseFile4 > lease_file4_
Holds the pointer to the DHCPv4 lease file IO.
std::string getLeaseFilePath(Universe u) const
Returns an absolute path to the lease file.
virtual Lease6Collection getLeases6ByRemoteId(const OptionBuffer &remote_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with a given remote-id.
virtual Lease6Collection getLeases6() const override
Returns all IPv6 leases.
util::ReconnectCtlPtr reconnectCtl()
Returns the connection's ReconnectCtl object.
virtual void lfcCallback()
A callback function triggering Lease File Cleanup (LFC).
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID &subnet_id) override
Creates and runs the IPv4 lease stats query for a single subnet.
int getLFCLastPid() const
Returns the last lfc process id.
virtual Lease6Collection getLeases6ByRelayId(const DUID &relay_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with a given relay-id.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
virtual std::string getDescription() const override
Returns description of the backend.
static std::string appendSuffix(const std::string &file_name, const LFCFileType &file_type)
Appends appropriate suffix to the file name.
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 size_t upgradeExtendedInfo6(const LeasePageSize &page_size) override
Upgrade extended info (v6).
virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override
Creates and runs the IPv4 lease stats query.
virtual Lease6Ptr getLease6(Lease::Type type, const isc::asiolink::IOAddress &addr) const override
Returns existing IPv6 lease for a given IPv6 address.
virtual void recountClassLeases4() override
Recount the leases per class for V4 leases.
virtual void updateLease6(const Lease6Ptr &lease6) override
Updates IPv6 lease.
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.
virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override
Deletes all expired-reclaimed DHCPv4 leases.
static std::string getDBVersionInternal(Universe const &u)
Local version of getDBVersion() class method.
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 LeaseStatsQueryPtr startLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query.
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const override
Returns existing IPv4 lease for specified IPv4 address.
virtual ~Memfile_LeaseMgr()
Destructor (closes file)
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.
boost::shared_ptr< CSVLeaseFile6 > lease_file6_
Holds the pointer to the DHCPv6 lease file IO.
virtual size_t upgradeExtendedInfo4(const LeasePageSize &page_size) override
Upgrade extended info (v4).
virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override
Deletes all expired-reclaimed DHCPv6 leases.
virtual void getExpiredLeases4(Lease4Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv4 leases.
static const int MINOR_VERSION_V4
the minor version of the v4 memfile backend
static const int MINOR_VERSION_V6
the minor version of the v6 memfile backend
boost::shared_ptr< const Element > ConstElementPtr
Definition data.h:29
boost::shared_ptr< Element > ElementPtr
Definition data.h:28
std::string ClientClass
Defines a single class name.
Definition classify.h:44
boost::multi_index_container< Lease6ExtendedInfoPtr, boost::multi_index::indexed_by< boost::multi_index::hashed_non_unique< boost::multi_index::tag< RemoteIdIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, std::vector< uint8_t >, &Lease6ExtendedInfo::id_ > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< LeaseAddressIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > > > Lease6ExtendedInfoRemoteIdTable
A multi index container holding lease6 extended info for by remote id.
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_unique< boost::multi_index::tag< SubnetIdIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::member< Lease, isc::dhcp::SubnetID, &Lease::subnet_id_ >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > > >, 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 > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HostnameIndexTag >, boost::multi_index::member< Lease, std::string, &Lease::hostname_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdPoolIdIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ >, boost::multi_index::member< Lease, uint32_t, &Lease::pool_id_ > > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< HWAddressIndexTag >, boost::multi_index::const_mem_fun< Lease, const std::vector< uint8_t > &, &Lease::getHWAddrVector > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< StateIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::member< Lease, uint32_t, &Lease::state_ >, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ > > > > > Lease6Storage
A multi index container holding DHCPv6 leases.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition lease.h:528
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition lease.h:693
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition lease_mgr.h:233
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< 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_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HostnameIndexTag >, boost::multi_index::member< Lease, std::string, &Lease::hostname_ > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< RemoteIdIndexTag >, boost::multi_index::member< Lease4, std::vector< uint8_t >, &Lease4::remote_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< RelayIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::member< Lease4, std::vector< uint8_t >, &Lease4::relay_id_ >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdPoolIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ >, boost::multi_index::member< Lease, uint32_t, &Lease::pool_id_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< StateIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::member< Lease, uint32_t, &Lease::state_ >, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ > > > > > Lease4Storage
A multi index container holding DHCPv4 leases.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
Definition subnet_id.h:25
std::unique_ptr< TrackingLeaseMgr > TrackingLeaseMgrPtr
TrackingLeaseMgr pointer.
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:520
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition lease.h:315
boost::multi_index_container< Lease6ExtendedInfoPtr, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::tag< RelayIdIndexTag >, boost::multi_index::composite_key< Lease6ExtendedInfo, boost::multi_index::member< Lease6ExtendedInfo, std::vector< uint8_t >, &Lease6ExtendedInfo::id_ >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< LeaseAddressIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > > > Lease6ExtendedInfoRelayIdTable
A multi index container holding lease6 extended info for by relay id.
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