Kea 3.1.3
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
295 virtual Lease6Ptr getLease6(Lease::Type type,
296 const isc::asiolink::IOAddress& addr) const override;
297
308 virtual Lease6Collection getLease6(const isc::dhcp::HWAddr& hwaddr) const override;
309
319 const DUID& duid,
320 uint32_t iaid) const override;
321
335 const DUID& duid,
336 uint32_t iaid,
337 SubnetID subnet_id) const override;
338
344 virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
345
351 virtual Lease6Collection getLeases6(const std::string& hostname) const override;
352
356 virtual Lease6Collection getLeases6() const override;
357
361 virtual Lease6Collection getLeases6(const DUID& duid) const override;
362
387 virtual Lease6Collection
388 getLeases6(const asiolink::IOAddress& lower_bound_address,
389 const LeasePageSize& page_size) const override;
390
399 virtual Lease6Collection
400 getLeases6(SubnetID subnet_id,
401 const asiolink::IOAddress& lower_bound_address,
402 const LeasePageSize& page_size) const override;
403
414 virtual void getExpiredLeases4(Lease4Collection& expired_leases,
415 const size_t max_leases) const override;
416
427 virtual void getExpiredLeases6(Lease6Collection& expired_leases,
428 const size_t max_leases) const override;
429
447 virtual void updateLease4(const Lease4Ptr& lease4) override;
448
466 virtual void updateLease6(const Lease6Ptr& lease6) override;
467
482 virtual bool deleteLease(const Lease4Ptr& lease) override;
483
498 virtual bool deleteLease(const Lease6Ptr& lease) override;
499
507 virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override;
508
516 virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override;
517
526 virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
527
536 virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
537
549 virtual std::string
550 checkLimits4(isc::data::ConstElementPtr const& user_context) const override;
551
563 virtual std::string
564 checkLimits6(isc::data::ConstElementPtr const& user_context) const override;
565
570 virtual bool isJsonSupported() const override;
571
572private:
573
577
583 bool addLeaseInternal(const Lease4Ptr& lease);
584
590 bool addLeaseInternal(const Lease6Ptr& lease);
591
597 Lease4Ptr getLease4Internal(const isc::asiolink::IOAddress& addr) const;
598
603 void getLease4Internal(const isc::dhcp::HWAddr& hwaddr,
604 Lease4Collection& collection) const;
605
613 Lease4Ptr getLease4Internal(const HWAddr& hwaddr,
614 SubnetID subnet_id) const;
615
620 void getLease4Internal(const ClientId& client_id,
621 Lease4Collection& collection) const;
622
630 Lease4Ptr getLease4Internal(const ClientId& clientid,
631 const HWAddr& hwaddr,
632 SubnetID subnet_id) const;
633
640 Lease4Ptr getLease4Internal(const ClientId& clientid,
641 SubnetID subnet_id) const;
642
647 void getLeases4Internal(SubnetID subnet_id,
648 Lease4Collection& collection) const;
649
654 void getLeases4Internal(const std::string& hostname,
655 Lease4Collection& collection) const;
656
660 void getLeases4Internal(Lease4Collection& collection) const;
661
668 void getLeases4Internal(const asiolink::IOAddress& lower_bound_address,
669 const LeasePageSize& page_size,
670 Lease4Collection& collection) const;
671
678 Lease6Ptr getLease6Internal(Lease::Type type,
679 const isc::asiolink::IOAddress& addr) const;
680
685 void getLease6Internal(const isc::dhcp::HWAddr& hwaddr,
686 Lease6Collection& collection) const;
687
693 Lease6Ptr getAnyLease6Internal(const isc::asiolink::IOAddress& addr) const;
694
702 void getLeases6Internal(Lease::Type type,
703 const DUID& duid,
704 uint32_t iaid,
705 Lease6Collection& collection) const;
706
715 void getLeases6Internal(Lease::Type type,
716 const DUID& duid,
717 uint32_t iaid,
718 SubnetID subnet_id,
719 Lease6Collection& collection) const;
720
725 void getLeases6Internal(SubnetID subnet_id,
726 Lease6Collection& collection) const;
727
732 void getLeases6Internal(const std::string& hostname,
733 Lease6Collection& collection) const;
734
738 void getLeases6Internal(Lease6Collection& collection) const;
739
744 void getLeases6Internal(const DUID& duid,
745 Lease6Collection& collection) const;
746
753 void getLeases6Internal(const asiolink::IOAddress& lower_bound_address,
754 const LeasePageSize& page_size,
755 Lease6Collection& collection) const;
756
765 virtual Lease6Collection
766 getLeases6Internal(SubnetID subnet_id,
767 const asiolink::IOAddress& lower_bound_address,
768 const LeasePageSize& page_size) const;
769
776 void getExpiredLeases4Internal(Lease4Collection& expired_leases,
777 const size_t max_leases) const;
778
785 void getExpiredLeases6Internal(Lease6Collection& expired_leases,
786 const size_t max_leases) const;
787
802 void updateLease4Internal(const Lease4Ptr& lease4);
803
818 void updateLease6Internal(const Lease6Ptr& lease6);
819
834 bool deleteLeaseInternal(const Lease4Ptr& addr);
835
850 bool deleteLeaseInternal(const Lease6Ptr& addr);
851
857 size_t wipeLeases4Internal(const SubnetID& subnet_id);
858
864 size_t wipeLeases6Internal(const SubnetID& subnet_id);
866
893 template<typename IndexType, typename LeaseType, typename StorageType,
894 typename LeaseFileType>
895 uint64_t deleteExpiredReclaimedLeases(const uint32_t secs,
896 const Universe& universe,
897 StorageType& storage,
898 LeaseFileType& lease_file);
899
906 int64_t getSubnetStat(const SubnetID& subnet_id, const std::string& stat_label) const;
907
918 bool getLeaseLimit(data::ConstElementPtr parent, Lease::Type ltype, size_t& limit) const;
919
920public:
921
927 virtual std::string getType() const override {
928 return (std::string("memfile"));
929 }
930
936 virtual std::string getName() const override {
937 return ("memory");
938 }
939
945 virtual std::string getDescription() const override;
946
952 virtual std::pair<uint32_t, uint32_t> getVersion(const std::string& timer_name = std::string()) const override;
953
958 virtual void commit() override;
959
964 virtual void rollback() override;
965
969 static bool isLFCProcessRunning(const std::string file_name, Universe u);
970
977 virtual data::ElementPtr getStatus() const override;
978
980
982
983
996
1015 static std::string appendSuffix(const std::string& file_name,
1016 const LFCFileType& file_type);
1018
1022
1023
1028 static std::string getDefaultLeaseFilePath(Universe u,
1029 const std::string filename = "");
1030
1037 std::string getLeaseFilePath(Universe u) const;
1038
1050 bool persistLeases(Universe u) const;
1051
1053
1054private:
1055
1071 std::string initLeaseFilePath(Universe u);
1072
1129 template<typename LeaseObjectType, typename LeaseFileType,
1130 typename StorageType>
1131 bool loadLeasesFromFiles(Universe u, const std::string& filename,
1132 boost::shared_ptr<LeaseFileType>& lease_file,
1133 StorageType& storage);
1134
1136 Lease4Storage storage4_;
1137
1139 Lease6Storage storage6_;
1140
1141protected:
1142
1145
1148
1150 boost::shared_ptr<CSVLeaseFile4> lease_file4_;
1151
1153 boost::shared_ptr<CSVLeaseFile6> lease_file6_;
1154
1155public:
1156
1161
1162
1166 bool isLFCRunning() const;
1167
1170 int getLFCExitStatus() const;
1171
1173 int getLFCLastPid() const;
1175
1183 virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
1184
1197
1206 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
1207
1217 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
1218 const SubnetID& last_subnet_id) override;
1219
1227 virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
1228
1241
1250 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
1251
1261 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
1262 const SubnetID& last_subnet_id) override;
1263
1267
1268
1269protected:
1270
1282 virtual void lfcCallback();
1284
1286
1287
1288private:
1289
1306 void lfcSetup(bool conversion_needed = false);
1307
1330 template<typename LeaseFileType>
1331 void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
1332
1334 boost::scoped_ptr<LFCSetup> lfc_setup_;
1335
1341
1343
1345 boost::scoped_ptr<std::mutex> mutex_;
1346
1348 ClassLeaseCounter class_lease_counter_;
1349
1350public:
1358 virtual size_t getClassLeaseCount(const ClientClass& client_class,
1359 const Lease::Type& ltype = Lease::TYPE_V4) const override;
1360
1368 virtual void recountClassLeases4() override;
1369
1377 virtual void recountClassLeases6() override;
1378
1382 virtual void clearClassLeaseCounts() override;
1383
1387
1400 virtual Lease4Collection
1401 getLeases4ByRelayId(const OptionBuffer& relay_id,
1402 const asiolink::IOAddress& lower_bound_address,
1403 const LeasePageSize& page_size,
1404 const time_t& qry_start_time = 0,
1405 const time_t& qry_end_time = 0) override;
1406
1419 virtual Lease4Collection
1420 getLeases4ByRemoteId(const OptionBuffer& remote_id,
1421 const asiolink::IOAddress& lower_bound_address,
1422 const LeasePageSize& page_size,
1423 const time_t& qry_start_time = 0,
1424 const time_t& qry_end_time = 0) override;
1425
1434 virtual Lease6Collection
1435 getLeases6ByRelayId(const DUID& relay_id,
1436 const asiolink::IOAddress& lower_bound_address,
1437 const LeasePageSize& page_size) override;
1438
1447 virtual Lease6Collection
1448 getLeases6ByRemoteId(const OptionBuffer& remote_id,
1449 const asiolink::IOAddress& lower_bound_address,
1450 const LeasePageSize& page_size) override;
1451
1461 size_t extractExtendedInfo4(bool update, bool current);
1462
1467 virtual size_t upgradeExtendedInfo6(const LeasePageSize& page_size) override;
1468
1470 virtual void wipeExtendedInfoTables6() override;
1471
1475 virtual size_t byRelayId6size() const override;
1476
1480 virtual size_t byRemoteId6size() const override;
1481
1482private:
1483
1497 getLeases4ByRelayIdInternal(const OptionBuffer& relay_id,
1498 const asiolink::IOAddress& lower_bound_address,
1499 const LeasePageSize& page_size,
1500 const time_t& qry_start_time,
1501 const time_t& qry_end_time);
1502
1516 getLeases4ByRemoteIdInternal(const OptionBuffer& remote_id,
1517 const asiolink::IOAddress& lower_bound_address,
1518 const LeasePageSize& page_size,
1519 const time_t& qry_start_time,
1520 const time_t& qry_end_time);
1521
1531 getLeases6ByRelayIdInternal(const DUID& relay_id,
1532 const asiolink::IOAddress& lower_bound_address,
1533 const LeasePageSize& page_size);
1534
1544 getLeases6ByRemoteIdInternal(const OptionBuffer& remote_id,
1545 const asiolink::IOAddress& lower_bound_address,
1546 const LeasePageSize& page_size);
1547
1548public:
1549
1553 virtual void writeLeases4(const std::string& filename) override;
1554
1558 virtual void writeLeases6(const std::string& filename) override;
1559
1564 virtual size_t upgradeExtendedInfo4(const LeasePageSize& page_size) override;
1565
1570
1571protected:
1572
1574
1577
1581 virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress& addr) override;
1582
1587 virtual void addRelayId6(const isc::asiolink::IOAddress& lease_addr,
1588 const std::vector<uint8_t>& relay_id) override;
1589
1594 virtual void addRemoteId6(const isc::asiolink::IOAddress& lease_addr,
1595 const std::vector<uint8_t>& remote_id) override;
1596
1597private:
1602 virtual void writeLeases4Internal(const std::string& filename);
1603
1608 virtual void writeLeases6Internal(const std::string& filename);
1609
1610public:
1617 static TrackingLeaseMgrPtr
1619};
1620
1623 // Constructor registers
1630
1631 // Destructor deregisters
1635};
1636
1637} // namespace dhcp
1638} // namespace isc
1639
1640#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.
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< 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_ > > > > > Lease4Storage
A multi index container holding DHCPv4 leases.
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 > > > > Lease6Storage
A multi index container holding DHCPv6 leases.
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::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
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.
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