Kea 2.5.8
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>
19
20#include <boost/scoped_ptr.hpp>
21#include <boost/shared_ptr.hpp>
22
23#include <mutex>
24
25namespace isc {
26namespace dhcp {
27
28class LFCSetup;
29
81public:
82
93 static const int MAJOR_VERSION_V4 = 3;
94
96 static const int MINOR_VERSION_V4 = 0;
98
111 static const int MAJOR_VERSION_V6 = 5;
112
114 static const int MINOR_VERSION_V6 = 0;
116
117
124 enum Universe {
126 V6
127 };
128
132
133
155
157 virtual ~Memfile_LeaseMgr();
158
160 static std::string getDBVersion(Universe const& u);
161
167 virtual bool addLease(const Lease4Ptr& lease) override;
168
174 virtual bool addLease(const Lease6Ptr& lease) override;
175
184 virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress& addr) const override;
185
196 virtual Lease4Collection getLease4(const isc::dhcp::HWAddr& hwaddr) const override;
197
211 virtual Lease4Ptr getLease4(const HWAddr& hwaddr,
212 SubnetID subnet_id) const override;
213
219 virtual Lease4Collection getLease4(const ClientId& client_id) const override;
220
233 virtual Lease4Ptr getLease4(const ClientId& clientid,
234 SubnetID subnet_id) const override;
235
241 virtual Lease4Collection getLeases4(SubnetID subnet_id) const override;
242
248 virtual Lease4Collection getLeases4(const std::string& hostname) const override;
249
253 virtual Lease4Collection getLeases4() const override;
254
279 virtual Lease4Collection
280 getLeases4(const asiolink::IOAddress& lower_bound_address,
281 const LeasePageSize& page_size) const override;
282
292 virtual Lease6Ptr getLease6(Lease::Type type,
293 const isc::asiolink::IOAddress& addr) const override;
294
304 const DUID& duid,
305 uint32_t iaid) const override;
306
320 const DUID& duid,
321 uint32_t iaid,
322 SubnetID subnet_id) const override;
323
329 virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
330
336 virtual Lease6Collection getLeases6(const std::string& hostname) const override;
337
341 virtual Lease6Collection getLeases6() const override;
342
346 virtual Lease6Collection getLeases6(const DUID& duid) const override;
347
372 virtual Lease6Collection
373 getLeases6(const asiolink::IOAddress& lower_bound_address,
374 const LeasePageSize& page_size) const override;
375
384 virtual Lease6Collection
385 getLeases6(SubnetID subnet_id,
386 const asiolink::IOAddress& lower_bound_address,
387 const LeasePageSize& page_size) const override;
388
399 virtual void getExpiredLeases4(Lease4Collection& expired_leases,
400 const size_t max_leases) const override;
401
412 virtual void getExpiredLeases6(Lease6Collection& expired_leases,
413 const size_t max_leases) const override;
414
432 virtual void updateLease4(const Lease4Ptr& lease4) override;
433
451 virtual void updateLease6(const Lease6Ptr& lease6) override;
452
467 virtual bool deleteLease(const Lease4Ptr& lease) override;
468
483 virtual bool deleteLease(const Lease6Ptr& lease) override;
484
492 virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override;
493
501 virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override;
502
511 virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
512
521 virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
522
534 virtual std::string
535 checkLimits4(isc::data::ConstElementPtr const& user_context) const override;
536
548 virtual std::string
549 checkLimits6(isc::data::ConstElementPtr const& user_context) const override;
550
555 virtual bool isJsonSupported() const override;
556
557private:
558
562
568 bool addLeaseInternal(const Lease4Ptr& lease);
569
575 bool addLeaseInternal(const Lease6Ptr& lease);
576
582 Lease4Ptr getLease4Internal(const isc::asiolink::IOAddress& addr) const;
583
588 void getLease4Internal(const isc::dhcp::HWAddr& hwaddr,
589 Lease4Collection& collection) const;
590
598 Lease4Ptr getLease4Internal(const HWAddr& hwaddr,
599 SubnetID subnet_id) const;
600
605 void getLease4Internal(const ClientId& client_id,
606 Lease4Collection& collection) const;
607
615 Lease4Ptr getLease4Internal(const ClientId& clientid,
616 const HWAddr& hwaddr,
617 SubnetID subnet_id) const;
618
625 Lease4Ptr getLease4Internal(const ClientId& clientid,
626 SubnetID subnet_id) const;
627
632 void getLeases4Internal(SubnetID subnet_id,
633 Lease4Collection& collection) const;
634
639 void getLeases4Internal(const std::string& hostname,
640 Lease4Collection& collection) const;
641
645 void getLeases4Internal(Lease4Collection& collection) const;
646
653 void getLeases4Internal(const asiolink::IOAddress& lower_bound_address,
654 const LeasePageSize& page_size,
655 Lease4Collection& collection) const;
656
663 Lease6Ptr getLease6Internal(Lease::Type type,
664 const isc::asiolink::IOAddress& addr) const;
665
671 Lease6Ptr getAnyLease6Internal(const isc::asiolink::IOAddress& addr) const;
672
680 void getLeases6Internal(Lease::Type type,
681 const DUID& duid,
682 uint32_t iaid,
683 Lease6Collection& collection) const;
684
693 void getLeases6Internal(Lease::Type type,
694 const DUID& duid,
695 uint32_t iaid,
696 SubnetID subnet_id,
697 Lease6Collection& collection) const;
698
703 void getLeases6Internal(SubnetID subnet_id,
704 Lease6Collection& collection) const;
705
710 void getLeases6Internal(const std::string& hostname,
711 Lease6Collection& collection) const;
712
716 void getLeases6Internal(Lease6Collection& collection) const;
717
722 void getLeases6Internal(const DUID& duid,
723 Lease6Collection& collection) const;
724
731 void getLeases6Internal(const asiolink::IOAddress& lower_bound_address,
732 const LeasePageSize& page_size,
733 Lease6Collection& collection) const;
734
743 virtual Lease6Collection
744 getLeases6Internal(SubnetID subnet_id,
745 const asiolink::IOAddress& lower_bound_address,
746 const LeasePageSize& page_size) const;
747
754 void getExpiredLeases4Internal(Lease4Collection& expired_leases,
755 const size_t max_leases) const;
756
763 void getExpiredLeases6Internal(Lease6Collection& expired_leases,
764 const size_t max_leases) const;
765
780 void updateLease4Internal(const Lease4Ptr& lease4);
781
796 void updateLease6Internal(const Lease6Ptr& lease6);
797
812 bool deleteLeaseInternal(const Lease4Ptr& addr);
813
828 bool deleteLeaseInternal(const Lease6Ptr& addr);
829
835 size_t wipeLeases4Internal(const SubnetID& subnet_id);
836
842 size_t wipeLeases6Internal(const SubnetID& subnet_id);
844
871 template<typename IndexType, typename LeaseType, typename StorageType,
872 typename LeaseFileType>
873 uint64_t deleteExpiredReclaimedLeases(const uint32_t secs,
874 const Universe& universe,
875 StorageType& storage,
876 LeaseFileType& lease_file);
877
884 int64_t getSubnetStat(const SubnetID& subnet_id, const std::string& stat_label) const;
885
896 bool getLeaseLimit(data::ConstElementPtr parent, Lease::Type ltype, size_t& limit) const;
897
898public:
899
905 virtual std::string getType() const override {
906 return (std::string("memfile"));
907 }
908
914 virtual std::string getName() const override {
915 return ("memory");
916 }
917
923 virtual std::string getDescription() const override;
924
930 virtual std::pair<uint32_t, uint32_t> getVersion(const std::string& timer_name = std::string()) const override;
931
936 virtual void commit() override;
937
942 virtual void rollback() override;
943
945
947
948
959 FILE_PID
960 };
961
980 static std::string appendSuffix(const std::string& file_name,
981 const LFCFileType& file_type);
983
984
988
989
993 std::string getDefaultLeaseFilePath(Universe u) const;
994
1001 std::string getLeaseFilePath(Universe u) const;
1002
1014 bool persistLeases(Universe u) const;
1015
1017
1018private:
1019
1035 std::string initLeaseFilePath(Universe u);
1036
1092 template<typename LeaseObjectType, typename LeaseFileType,
1093 typename StorageType>
1094 bool loadLeasesFromFiles(const std::string& filename,
1095 boost::shared_ptr<LeaseFileType>& lease_file,
1096 StorageType& storage);
1097
1099 Lease4Storage storage4_;
1100
1102 Lease6Storage storage6_;
1103
1104protected:
1105
1108
1111
1113 boost::shared_ptr<CSVLeaseFile4> lease_file4_;
1114
1116 boost::shared_ptr<CSVLeaseFile6> lease_file6_;
1117
1118public:
1119
1124
1125
1129 bool isLFCRunning() const;
1130
1133 int getLFCExitStatus() const;
1135
1143 virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
1144
1157
1166 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
1167
1177 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
1178 const SubnetID& last_subnet_id) override;
1179
1187 virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
1188
1201
1210 virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
1211
1221 virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
1222 const SubnetID& last_subnet_id) override;
1223
1227
1228
1229protected:
1230
1242 virtual void lfcCallback();
1244
1246
1247
1248private:
1249
1266 void lfcSetup(bool conversion_needed = false);
1267
1290 template<typename LeaseFileType>
1291 void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
1292
1294 boost::scoped_ptr<LFCSetup> lfc_setup_;
1295
1301
1303
1305 boost::scoped_ptr<std::mutex> mutex_;
1306
1308 ClassLeaseCounter class_lease_counter_;
1309
1310public:
1318 virtual size_t getClassLeaseCount(const ClientClass& client_class,
1319 const Lease::Type& ltype = Lease::TYPE_V4) const override;
1320
1328 virtual void recountClassLeases4() override;
1329
1337 virtual void recountClassLeases6() override;
1338
1342 virtual void clearClassLeaseCounts() override;
1343
1347
1360 virtual Lease4Collection
1361 getLeases4ByRelayId(const OptionBuffer& relay_id,
1362 const asiolink::IOAddress& lower_bound_address,
1363 const LeasePageSize& page_size,
1364 const time_t& qry_start_time = 0,
1365 const time_t& qry_end_time = 0) override;
1366
1379 virtual Lease4Collection
1380 getLeases4ByRemoteId(const OptionBuffer& remote_id,
1381 const asiolink::IOAddress& lower_bound_address,
1382 const LeasePageSize& page_size,
1383 const time_t& qry_start_time = 0,
1384 const time_t& qry_end_time = 0) override;
1385
1394 virtual Lease6Collection
1395 getLeases6ByRelayId(const DUID& relay_id,
1396 const asiolink::IOAddress& lower_bound_address,
1397 const LeasePageSize& page_size) override;
1398
1407 virtual Lease6Collection
1408 getLeases6ByRemoteId(const OptionBuffer& remote_id,
1409 const asiolink::IOAddress& lower_bound_address,
1410 const LeasePageSize& page_size) override;
1411
1421 size_t extractExtendedInfo4(bool update, bool current);
1422
1427 virtual size_t upgradeExtendedInfo6(const LeasePageSize& page_size) override;
1428
1430 virtual void wipeExtendedInfoTables6() override;
1431
1435 virtual size_t byRelayId6size() const override;
1436
1440 virtual size_t byRemoteId6size() const override;
1441
1442private:
1443
1457 getLeases4ByRelayIdInternal(const OptionBuffer& relay_id,
1458 const asiolink::IOAddress& lower_bound_address,
1459 const LeasePageSize& page_size,
1460 const time_t& qry_start_time,
1461 const time_t& qry_end_time);
1462
1476 getLeases4ByRemoteIdInternal(const OptionBuffer& remote_id,
1477 const asiolink::IOAddress& lower_bound_address,
1478 const LeasePageSize& page_size,
1479 const time_t& qry_start_time,
1480 const time_t& qry_end_time);
1481
1491 getLeases6ByRelayIdInternal(const DUID& relay_id,
1492 const asiolink::IOAddress& lower_bound_address,
1493 const LeasePageSize& page_size);
1494
1504 getLeases6ByRemoteIdInternal(const OptionBuffer& remote_id,
1505 const asiolink::IOAddress& lower_bound_address,
1506 const LeasePageSize& page_size);
1507
1508public:
1509
1513 virtual void writeLeases4(const std::string& filename) override;
1514
1518 virtual void writeLeases6(const std::string& filename) override;
1519
1524 virtual size_t upgradeExtendedInfo4(const LeasePageSize& page_size) override;
1525
1526protected:
1527
1529
1530
1533
1537 virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress& addr) override;
1538
1543 virtual void addRelayId6(const isc::asiolink::IOAddress& lease_addr,
1544 const std::vector<uint8_t>& relay_id) override;
1545
1550 virtual void addRemoteId6(const isc::asiolink::IOAddress& lease_addr,
1551 const std::vector<uint8_t>& remote_id) override;
1552
1553private:
1558 virtual void writeLeases4Internal(const std::string& filename);
1559
1564 virtual void writeLeases6Internal(const std::string& filename);
1565};
1566
1567} // namespace dhcp
1568} // namespace isc
1569
1570#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 std::string getDBVersion()
Class method to return extended version info This class method must be redeclared and redefined in de...
Definition: lease_mgr.cc:516
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.
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.
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.
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.
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 MAJOR_VERSION_V4
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:505
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:670
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::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:497
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:292
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