Kea 2.7.5
memfile_lease_mgr.h
Go to the documentation of this file.
1// Copyright (C) 2012-2024 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 {
126 V6
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
307 const DUID& duid,
308 uint32_t iaid) const override;
309
323 const DUID& duid,
324 uint32_t iaid,
325 SubnetID subnet_id) const override;
326
332 virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
333
339 virtual Lease6Collection getLeases6(const std::string& hostname) const override;
340
344 virtual Lease6Collection getLeases6() const override;
345
349 virtual Lease6Collection getLeases6(const DUID& duid) const override;
350
375 virtual Lease6Collection
376 getLeases6(const asiolink::IOAddress& lower_bound_address,
377 const LeasePageSize& page_size) const override;
378
387 virtual Lease6Collection
388 getLeases6(SubnetID subnet_id,
389 const asiolink::IOAddress& lower_bound_address,
390 const LeasePageSize& page_size) const override;
391
402 virtual void getExpiredLeases4(Lease4Collection& expired_leases,
403 const size_t max_leases) const override;
404
415 virtual void getExpiredLeases6(Lease6Collection& expired_leases,
416 const size_t max_leases) const override;
417
435 virtual void updateLease4(const Lease4Ptr& lease4) override;
436
454 virtual void updateLease6(const Lease6Ptr& lease6) override;
455
470 virtual bool deleteLease(const Lease4Ptr& lease) override;
471
486 virtual bool deleteLease(const Lease6Ptr& lease) override;
487
495 virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override;
496
504 virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override;
505
514 virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
515
524 virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
525
537 virtual std::string
538 checkLimits4(isc::data::ConstElementPtr const& user_context) const override;
539
551 virtual std::string
552 checkLimits6(isc::data::ConstElementPtr const& user_context) const override;
553
558 virtual bool isJsonSupported() const override;
559
560private:
561
565
571 bool addLeaseInternal(const Lease4Ptr& lease);
572
578 bool addLeaseInternal(const Lease6Ptr& lease);
579
585 Lease4Ptr getLease4Internal(const isc::asiolink::IOAddress& addr) const;
586
591 void getLease4Internal(const isc::dhcp::HWAddr& hwaddr,
592 Lease4Collection& collection) const;
593
601 Lease4Ptr getLease4Internal(const HWAddr& hwaddr,
602 SubnetID subnet_id) const;
603
608 void getLease4Internal(const ClientId& client_id,
609 Lease4Collection& collection) const;
610
618 Lease4Ptr getLease4Internal(const ClientId& clientid,
619 const HWAddr& hwaddr,
620 SubnetID subnet_id) const;
621
628 Lease4Ptr getLease4Internal(const ClientId& clientid,
629 SubnetID subnet_id) const;
630
635 void getLeases4Internal(SubnetID subnet_id,
636 Lease4Collection& collection) const;
637
642 void getLeases4Internal(const std::string& hostname,
643 Lease4Collection& collection) const;
644
648 void getLeases4Internal(Lease4Collection& collection) const;
649
656 void getLeases4Internal(const asiolink::IOAddress& lower_bound_address,
657 const LeasePageSize& page_size,
658 Lease4Collection& collection) const;
659
666 Lease6Ptr getLease6Internal(Lease::Type type,
667 const isc::asiolink::IOAddress& addr) const;
668
674 Lease6Ptr getAnyLease6Internal(const isc::asiolink::IOAddress& addr) const;
675
683 void getLeases6Internal(Lease::Type type,
684 const DUID& duid,
685 uint32_t iaid,
686 Lease6Collection& collection) const;
687
696 void getLeases6Internal(Lease::Type type,
697 const DUID& duid,
698 uint32_t iaid,
699 SubnetID subnet_id,
700 Lease6Collection& collection) const;
701
706 void getLeases6Internal(SubnetID subnet_id,
707 Lease6Collection& collection) const;
708
713 void getLeases6Internal(const std::string& hostname,
714 Lease6Collection& collection) const;
715
719 void getLeases6Internal(Lease6Collection& collection) const;
720
725 void getLeases6Internal(const DUID& duid,
726 Lease6Collection& collection) const;
727
734 void getLeases6Internal(const asiolink::IOAddress& lower_bound_address,
735 const LeasePageSize& page_size,
736 Lease6Collection& collection) const;
737
746 virtual Lease6Collection
747 getLeases6Internal(SubnetID subnet_id,
748 const asiolink::IOAddress& lower_bound_address,
749 const LeasePageSize& page_size) const;
750
757 void getExpiredLeases4Internal(Lease4Collection& expired_leases,
758 const size_t max_leases) const;
759
766 void getExpiredLeases6Internal(Lease6Collection& expired_leases,
767 const size_t max_leases) const;
768
783 void updateLease4Internal(const Lease4Ptr& lease4);
784
799 void updateLease6Internal(const Lease6Ptr& lease6);
800
815 bool deleteLeaseInternal(const Lease4Ptr& addr);
816
831 bool deleteLeaseInternal(const Lease6Ptr& addr);
832
838 size_t wipeLeases4Internal(const SubnetID& subnet_id);
839
845 size_t wipeLeases6Internal(const SubnetID& subnet_id);
847
874 template<typename IndexType, typename LeaseType, typename StorageType,
875 typename LeaseFileType>
876 uint64_t deleteExpiredReclaimedLeases(const uint32_t secs,
877 const Universe& universe,
878 StorageType& storage,
879 LeaseFileType& lease_file);
880
887 int64_t getSubnetStat(const SubnetID& subnet_id, const std::string& stat_label) const;
888
899 bool getLeaseLimit(data::ConstElementPtr parent, Lease::Type ltype, size_t& limit) const;
900
901public:
902
908 virtual std::string getType() const override {
909 return (std::string("memfile"));
910 }
911
917 virtual std::string getName() const override {
918 return ("memory");
919 }
920
926 virtual std::string getDescription() const override;
927
933 virtual std::pair<uint32_t, uint32_t> getVersion(const std::string& timer_name = std::string()) const override;
934
939 virtual void commit() override;
940
945 virtual void rollback() override;
946
948
950
951
964
983 static std::string appendSuffix(const std::string& file_name,
984 const LFCFileType& file_type);
986
990
991
995 std::string getDefaultLeaseFilePath(Universe u) const;
996
1003 std::string getLeaseFilePath(Universe u) const;
1004
1016 bool persistLeases(Universe u) const;
1017
1019
1020private:
1021
1037 std::string initLeaseFilePath(Universe u);
1038
1094 template<typename LeaseObjectType, typename LeaseFileType,
1095 typename StorageType>
1096 bool loadLeasesFromFiles(const std::string& filename,
1097 boost::shared_ptr<LeaseFileType>& lease_file,
1098 StorageType& storage);
1099
1101 Lease4Storage storage4_;
1102
1104 Lease6Storage storage6_;
1105
1106protected:
1107
1110
1113
1115 boost::shared_ptr<CSVLeaseFile4> lease_file4_;
1116
1118 boost::shared_ptr<CSVLeaseFile6> lease_file6_;
1119
1120public:
1121
1126
1127
1131 bool isLFCRunning() const;
1132
1135 int getLFCExitStatus() const;
1137
1145 virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
1146
1159
1168 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
1169
1179 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
1180 const SubnetID& last_subnet_id) override;
1181
1189 virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
1190
1203
1212 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
1213
1223 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
1224 const SubnetID& last_subnet_id) override;
1225
1229
1230
1231protected:
1232
1244 virtual void lfcCallback();
1246
1248
1249
1250private:
1251
1268 void lfcSetup(bool conversion_needed = false);
1269
1292 template<typename LeaseFileType>
1293 void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
1294
1296 boost::scoped_ptr<LFCSetup> lfc_setup_;
1297
1303
1305
1307 boost::scoped_ptr<std::mutex> mutex_;
1308
1310 ClassLeaseCounter class_lease_counter_;
1311
1312public:
1320 virtual size_t getClassLeaseCount(const ClientClass& client_class,
1321 const Lease::Type& ltype = Lease::TYPE_V4) const override;
1322
1330 virtual void recountClassLeases4() override;
1331
1339 virtual void recountClassLeases6() override;
1340
1344 virtual void clearClassLeaseCounts() override;
1345
1349
1362 virtual Lease4Collection
1363 getLeases4ByRelayId(const OptionBuffer& relay_id,
1364 const asiolink::IOAddress& lower_bound_address,
1365 const LeasePageSize& page_size,
1366 const time_t& qry_start_time = 0,
1367 const time_t& qry_end_time = 0) override;
1368
1381 virtual Lease4Collection
1382 getLeases4ByRemoteId(const OptionBuffer& remote_id,
1383 const asiolink::IOAddress& lower_bound_address,
1384 const LeasePageSize& page_size,
1385 const time_t& qry_start_time = 0,
1386 const time_t& qry_end_time = 0) override;
1387
1396 virtual Lease6Collection
1397 getLeases6ByRelayId(const DUID& relay_id,
1398 const asiolink::IOAddress& lower_bound_address,
1399 const LeasePageSize& page_size) override;
1400
1409 virtual Lease6Collection
1410 getLeases6ByRemoteId(const OptionBuffer& remote_id,
1411 const asiolink::IOAddress& lower_bound_address,
1412 const LeasePageSize& page_size) override;
1413
1423 size_t extractExtendedInfo4(bool update, bool current);
1424
1429 virtual size_t upgradeExtendedInfo6(const LeasePageSize& page_size) override;
1430
1432 virtual void wipeExtendedInfoTables6() override;
1433
1437 virtual size_t byRelayId6size() const override;
1438
1442 virtual size_t byRemoteId6size() const override;
1443
1444private:
1445
1459 getLeases4ByRelayIdInternal(const OptionBuffer& relay_id,
1460 const asiolink::IOAddress& lower_bound_address,
1461 const LeasePageSize& page_size,
1462 const time_t& qry_start_time,
1463 const time_t& qry_end_time);
1464
1478 getLeases4ByRemoteIdInternal(const OptionBuffer& remote_id,
1479 const asiolink::IOAddress& lower_bound_address,
1480 const LeasePageSize& page_size,
1481 const time_t& qry_start_time,
1482 const time_t& qry_end_time);
1483
1493 getLeases6ByRelayIdInternal(const DUID& relay_id,
1494 const asiolink::IOAddress& lower_bound_address,
1495 const LeasePageSize& page_size);
1496
1506 getLeases6ByRemoteIdInternal(const OptionBuffer& remote_id,
1507 const asiolink::IOAddress& lower_bound_address,
1508 const LeasePageSize& page_size);
1509
1510public:
1511
1515 virtual void writeLeases4(const std::string& filename) override;
1516
1520 virtual void writeLeases6(const std::string& filename) override;
1521
1526 virtual size_t upgradeExtendedInfo4(const LeasePageSize& page_size) override;
1527
1528protected:
1529
1531
1534
1538 virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress& addr) override;
1539
1544 virtual void addRelayId6(const isc::asiolink::IOAddress& lease_addr,
1545 const std::vector<uint8_t>& relay_id) override;
1546
1551 virtual void addRemoteId6(const isc::asiolink::IOAddress& lease_addr,
1552 const std::vector<uint8_t>& remote_id) override;
1553
1554private:
1559 virtual void writeLeases4Internal(const std::string& filename);
1560
1565 virtual void writeLeases6Internal(const std::string& filename);
1566
1567public:
1574 static TrackingLeaseMgrPtr
1576};
1577
1580 // Constructor registers
1587
1588 // Destructor deregisters
1592};
1593
1594} // namespace dhcp
1595} // namespace isc
1596
1597#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
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
Concrete implementation of a lease database backend using flat file.
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 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.
virtual bool isJsonSupported() const override
Checks if JSON support is enabled in the database.
Universe
Specifies universe (V4, V6)
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 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.
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.
std::string getDefaultLeaseFilePath(Universe u) const
Returns default path to the lease file.
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.
Introduces callbacks into the LeaseMgr.
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
std::string ClientClass
Defines a single class name.
Definition classify.h:42
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< 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:508
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition lease.h:673
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition lease_mgr.h:233
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_ > > > > > Lease6Storage
A multi index container holding DHCPv6 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:500
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition lease.h:295
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
Initialization structure used to register and deregister Memfile Lease Mgr.