Kea  2.3.7
memfile_lease_mgr.h
Go to the documentation of this file.
1 // Copyright (C) 2012-2023 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 
11 #include <asiolink/process_spawn.h>
13 #include <dhcp/hwaddr.h>
19 
20 #include <boost/scoped_ptr.hpp>
21 #include <boost/shared_ptr.hpp>
22 
23 #include <mutex>
24 
25 namespace isc {
26 namespace dhcp {
27 
28 class LFCSetup;
29 
81 public:
82 
92  static const int MAJOR_VERSION_V4 = 2;
93 
95  static const int MINOR_VERSION_V4 = 1;
97 
109  static const int MAJOR_VERSION_V6 = 4;
110 
112  static const int MINOR_VERSION_V6 = 0;
114 
115 
122  enum Universe {
123  V4,
124  V6
125  };
126 
130 
131 
153 
155  virtual ~Memfile_LeaseMgr();
156 
158  static std::string getDBVersion(Universe const& u);
159 
165  virtual bool addLease(const Lease4Ptr& lease) override;
166 
172  virtual bool addLease(const Lease6Ptr& lease) override;
173 
182  virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress& addr) const override;
183 
194  virtual Lease4Collection getLease4(const isc::dhcp::HWAddr& hwaddr) const override;
195 
209  virtual Lease4Ptr getLease4(const HWAddr& hwaddr,
210  SubnetID subnet_id) const override;
211 
217  virtual Lease4Collection getLease4(const ClientId& client_id) const override;
218 
231  virtual Lease4Ptr getLease4(const ClientId& clientid,
232  SubnetID subnet_id) const override;
233 
239  virtual Lease4Collection getLeases4(SubnetID subnet_id) const override;
240 
246  virtual Lease4Collection getLeases4(const std::string& hostname) const override;
247 
251  virtual Lease4Collection getLeases4() const override;
252 
277  virtual Lease4Collection
278  getLeases4(const asiolink::IOAddress& lower_bound_address,
279  const LeasePageSize& page_size) const override;
280 
290  virtual Lease6Ptr getLease6(Lease::Type type,
291  const isc::asiolink::IOAddress& addr) const override;
292 
302  const DUID& duid,
303  uint32_t iaid) const override;
304 
318  const DUID& duid,
319  uint32_t iaid,
320  SubnetID subnet_id) const override;
321 
327  virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
328 
334  virtual Lease6Collection getLeases6(const std::string& hostname) const override;
335 
339  virtual Lease6Collection getLeases6() const override;
340 
344  virtual Lease6Collection getLeases6(const DUID& duid) const override;
345 
370  virtual Lease6Collection
371  getLeases6(const asiolink::IOAddress& lower_bound_address,
372  const LeasePageSize& page_size) const override;
373 
384  virtual void getExpiredLeases4(Lease4Collection& expired_leases,
385  const size_t max_leases) const override;
386 
397  virtual void getExpiredLeases6(Lease6Collection& expired_leases,
398  const size_t max_leases) const override;
399 
417  virtual void updateLease4(const Lease4Ptr& lease4) override;
418 
436  virtual void updateLease6(const Lease6Ptr& lease6) override;
437 
452  virtual bool deleteLease(const Lease4Ptr& lease) override;
453 
468  virtual bool deleteLease(const Lease6Ptr& lease) override;
469 
477  virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override;
478 
486  virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override;
487 
496  virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
497 
506  virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
507 
519  virtual std::string
520  checkLimits4(isc::data::ConstElementPtr const& user_context) const override;
521 
533  virtual std::string
534  checkLimits6(isc::data::ConstElementPtr const& user_context) const override;
535 
540  virtual bool isJsonSupported() const override;
541 
542 private:
543 
547 
553  bool addLeaseInternal(const Lease4Ptr& lease);
554 
560  bool addLeaseInternal(const Lease6Ptr& lease);
561 
567  Lease4Ptr getLease4Internal(const isc::asiolink::IOAddress& addr) const;
568 
573  void getLease4Internal(const isc::dhcp::HWAddr& hwaddr,
574  Lease4Collection& collection) const;
575 
583  Lease4Ptr getLease4Internal(const HWAddr& hwaddr,
584  SubnetID subnet_id) const;
585 
590  void getLease4Internal(const ClientId& client_id,
591  Lease4Collection& collection) const;
592 
600  Lease4Ptr getLease4Internal(const ClientId& clientid,
601  const HWAddr& hwaddr,
602  SubnetID subnet_id) const;
603 
610  Lease4Ptr getLease4Internal(const ClientId& clientid,
611  SubnetID subnet_id) const;
612 
617  void getLeases4Internal(SubnetID subnet_id,
618  Lease4Collection& collection) const;
619 
624  void getLeases4Internal(const std::string& hostname,
625  Lease4Collection& collection) const;
626 
630  void getLeases4Internal(Lease4Collection& collection) const;
631 
638  void getLeases4Internal(const asiolink::IOAddress& lower_bound_address,
639  const LeasePageSize& page_size,
640  Lease4Collection& collection) const;
641 
648  Lease6Ptr getLease6Internal(Lease::Type type,
649  const isc::asiolink::IOAddress& addr) const;
650 
656  Lease6Ptr getAnyLease6Internal(const isc::asiolink::IOAddress& addr) const;
657 
665  void getLeases6Internal(Lease::Type type,
666  const DUID& duid,
667  uint32_t iaid,
668  Lease6Collection& collection) const;
669 
678  void getLeases6Internal(Lease::Type type,
679  const DUID& duid,
680  uint32_t iaid,
681  SubnetID subnet_id,
682  Lease6Collection& collection) const;
683 
688  void getLeases6Internal(SubnetID subnet_id,
689  Lease6Collection& collection) const;
690 
695  void getLeases6Internal(const std::string& hostname,
696  Lease6Collection& collection) const;
697 
701  void getLeases6Internal(Lease6Collection& collection) const;
702 
707  void getLeases6Internal(const DUID& duid,
708  Lease6Collection& collection) const;
709 
716  void getLeases6Internal(const asiolink::IOAddress& lower_bound_address,
717  const LeasePageSize& page_size,
718  Lease6Collection& collection) const;
719 
726  void getExpiredLeases4Internal(Lease4Collection& expired_leases,
727  const size_t max_leases) const;
728 
735  void getExpiredLeases6Internal(Lease6Collection& expired_leases,
736  const size_t max_leases) const;
737 
752  void updateLease4Internal(const Lease4Ptr& lease4);
753 
768  void updateLease6Internal(const Lease6Ptr& lease6);
769 
784  bool deleteLeaseInternal(const Lease4Ptr& addr);
785 
800  bool deleteLeaseInternal(const Lease6Ptr& addr);
801 
807  size_t wipeLeases4Internal(const SubnetID& subnet_id);
808 
814  size_t wipeLeases6Internal(const SubnetID& subnet_id);
816 
843  template<typename IndexType, typename LeaseType, typename StorageType,
844  typename LeaseFileType>
845  uint64_t deleteExpiredReclaimedLeases(const uint32_t secs,
846  const Universe& universe,
847  StorageType& storage,
848  LeaseFileType& lease_file);
849 
856  int64_t getSubnetStat(const SubnetID& subnet_id, const std::string& stat_label) const;
857 
868  bool getLeaseLimit(data::ConstElementPtr parent, Lease::Type ltype, size_t& limit) const;
869 
870 public:
871 
877  virtual std::string getType() const override {
878  return (std::string("memfile"));
879  }
880 
886  virtual std::string getName() const override {
887  return ("memory");
888  }
889 
895  virtual std::string getDescription() const override;
896 
901  virtual std::pair<uint32_t, uint32_t> getVersion() const override;
902 
907  virtual void commit() override;
908 
913  virtual void rollback() override;
914 
916 
918 
919 
924  enum LFCFileType {
930  FILE_PID
931  };
932 
951  static std::string appendSuffix(const std::string& file_name,
952  const LFCFileType& file_type);
954 
955 
959 
960 
964  std::string getDefaultLeaseFilePath(Universe u) const;
965 
972  std::string getLeaseFilePath(Universe u) const;
973 
985  bool persistLeases(Universe u) const;
986 
988 
989 private:
990 
1006  std::string initLeaseFilePath(Universe u);
1007 
1063  template<typename LeaseObjectType, typename LeaseFileType,
1064  typename StorageType>
1065  bool loadLeasesFromFiles(const std::string& filename,
1066  boost::shared_ptr<LeaseFileType>& lease_file,
1067  StorageType& storage);
1068 
1070  Lease4Storage storage4_;
1071 
1073  Lease6Storage storage6_;
1074 
1075 protected:
1076 
1079 
1082 
1084  boost::shared_ptr<CSVLeaseFile4> lease_file4_;
1085 
1087  boost::shared_ptr<CSVLeaseFile6> lease_file6_;
1088 
1089 public:
1090 
1095 
1096 
1100  bool isLFCRunning() const;
1101 
1104  int getLFCExitStatus() const;
1106 
1114  virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
1115 
1124  virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
1125 
1135  virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
1136  const SubnetID& last_subnet_id) override;
1137 
1145  virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
1146 
1155  virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
1156 
1166  virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
1167  const SubnetID& last_subnet_id) override;
1168 
1172 
1173 
1174 protected:
1175 
1187  virtual void lfcCallback();
1189 
1191 
1192 
1193 private:
1194 
1211  void lfcSetup(bool conversion_needed = false);
1212 
1235  template<typename LeaseFileType>
1236  void lfcExecute(boost::shared_ptr<LeaseFileType>& lease_file);
1237 
1239  boost::scoped_ptr<LFCSetup> lfc_setup_;
1240 
1245  db::DatabaseConnection conn_;
1246 
1248 
1250  boost::scoped_ptr<std::mutex> mutex_;
1251 
1253  ClassLeaseCounter class_lease_counter_;
1254 
1255 public:
1263  virtual size_t getClassLeaseCount(const ClientClass& client_class,
1264  const Lease::Type& ltype = Lease::TYPE_V4) const override;
1265 
1273  virtual void recountClassLeases4() override;
1274 
1282  virtual void recountClassLeases6() override;
1283 
1287  virtual void clearClassLeaseCounts() override;
1288 
1292 
1305  virtual Lease4Collection
1306  getLeases4ByRelayId(const OptionBuffer& relay_id,
1307  const asiolink::IOAddress& lower_bound_address,
1308  const LeasePageSize& page_size,
1309  const time_t& qry_start_time = 0,
1310  const time_t& qry_end_time = 0) override;
1311 
1324  virtual Lease4Collection
1325  getLeases4ByRemoteId(const OptionBuffer& remote_id,
1326  const asiolink::IOAddress& lower_bound_address,
1327  const LeasePageSize& page_size,
1328  const time_t& qry_start_time = 0,
1329  const time_t& qry_end_time = 0) override;
1330 
1341  virtual Lease6Collection
1342  getLeases6ByRelayId(const DUID& relay_id,
1343  const asiolink::IOAddress& link_addr,
1344  uint8_t link_len,
1345  const asiolink::IOAddress& lower_bound_address,
1346  const LeasePageSize& page_size) override;
1347 
1358  virtual Lease6Collection
1359  getLeases6ByRemoteId(const OptionBuffer& remote_id,
1360  const asiolink::IOAddress& link_addr,
1361  uint8_t link_len,
1362  const asiolink::IOAddress& lower_bound_address,
1363  const LeasePageSize& page_size) override;
1364 
1374  virtual Lease6Collection
1375  getLeases6ByLink(const asiolink::IOAddress& link_addr,
1376  uint8_t link_len,
1377  const asiolink::IOAddress& lower_bound_address,
1378  const LeasePageSize& page_size) override;
1379 
1389  size_t extractExtendedInfo4(bool update, bool current);
1390 
1400  virtual size_t buildExtendedInfoTables6(bool update, bool current) override;
1401 
1402 private:
1403 
1417  getLeases4ByRelayIdInternal(const OptionBuffer& relay_id,
1418  const asiolink::IOAddress& lower_bound_address,
1419  const LeasePageSize& page_size,
1420  const time_t& qry_start_time,
1421  const time_t& qry_end_time);
1422 
1436  getLeases4ByRemoteIdInternal(const OptionBuffer& remote_id,
1437  const asiolink::IOAddress& lower_bound_address,
1438  const LeasePageSize& page_size,
1439  const time_t& qry_start_time,
1440  const time_t& qry_end_time);
1441 
1453  getLeases6ByRelayIdInternal(const DUID& relay_id,
1454  const asiolink::IOAddress& link_addr,
1455  uint8_t link_len,
1456  const asiolink::IOAddress& lower_bound_address,
1457  const LeasePageSize& page_size);
1458 
1470  getLeases6ByRemoteIdInternal(const OptionBuffer& remote_id,
1471  const asiolink::IOAddress& link_addr,
1472  uint8_t link_len,
1473  const asiolink::IOAddress& lower_bound_address,
1474  const LeasePageSize& page_size);
1475 
1486  getLeases6ByLinkInternal(const asiolink::IOAddress& link_addr,
1487  uint8_t link_len,
1488  const asiolink::IOAddress& lower_bound_address,
1489  const LeasePageSize& page_size);
1490 
1497  size_t buildExtendedInfoTables6Internal(bool update, bool current);
1498 
1499 public:
1500 
1504  virtual void writeLeases4(const std::string& filename) override;
1505 
1509  virtual void writeLeases6(const std::string& filename) override;
1510 
1511 protected:
1512 
1514 
1518  virtual void deleteExtendedInfo6(const isc::asiolink::IOAddress& addr) override;
1519 
1524  virtual void addRelayId6(const isc::asiolink::IOAddress& lease_addr,
1525  const std::vector<uint8_t>& relay_id) override;
1526 
1531  virtual void addRemoteId6(const isc::asiolink::IOAddress& lease_addr,
1532  const std::vector<uint8_t>& remote_id) override;
1533 
1534 private:
1539  virtual void writeLeases4Internal(const std::string& filename);
1540 
1545  virtual void writeLeases6Internal(const std::string& filename);
1546 };
1547 
1548 } // namespace dhcp
1549 } // namespace isc
1550 
1551 #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:111
Holds DUID (DHCPv6 Unique Identifier)
Definition: duid.h:27
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:360
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.
virtual Lease6Collection getLeases6ByRemoteId(const OptionBuffer &remote_id, const asiolink::IOAddress &link_addr, uint8_t link_len, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with a given remote-id.
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 Lease6Collection getLeases6ByLink(const asiolink::IOAddress &link_addr, uint8_t link_len, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with on a given link.
virtual void clearClassLeaseCounts() override
Clears the class-lease count map.
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
Extended information / Bulk Lease Query shared interface.
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 buildExtendedInfoTables6(bool update, bool current) override
Build extended info v6 tables.
virtual size_t wipeLeases6(const SubnetID &subnet_id) override
Removed specified IPv6 leases.
int getLFCExitStatus() const
Returns the status code returned by the last executed LFC process.
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.
virtual bool addLease(const Lease4Ptr &lease) override
Adds an IPv4 lease.
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 std::pair< uint32_t, uint32_t > getVersion() const override
Returns backend version.
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 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 LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
virtual Lease6Collection getLeases6ByRelayId(const DUID &relay_id, const asiolink::IOAddress &link_addr, uint8_t link_len, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override
Returns existing IPv6 leases with a given relay-id.
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 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 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 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:27
std::string ClientClass
Defines a single class name.
Definition: classify.h:42
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:509
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:677
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition: lease_mgr.h:210
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_ > > > >> Lease4Storage
A multi index container holding DHCPv4 leases.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
Definition: subnet_id.h:25
boost::multi_index_container< Lease6Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< AddressIndexTag >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< DuidIaidTypeIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::const_mem_fun< Lease6, const std::vector< uint8_t > &, &Lease6::getDuidVector >, boost::multi_index::member< Lease6, uint32_t, &Lease6::iaid_ >, boost::multi_index::member< Lease6, Lease::Type, &Lease6::type_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ExpirationIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::const_mem_fun< Lease, bool, &Lease::stateExpiredReclaimed >, boost::multi_index::const_mem_fun< Lease, int64_t, &Lease::getExpirationTime > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdIndexTag >, boost::multi_index::member< Lease, isc::dhcp::SubnetID, &Lease::subnet_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< DuidIndexTag >, boost::multi_index::const_mem_fun< Lease6, const std::vector< uint8_t > &, &Lease6::getDuidVector > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HostnameIndexTag >, boost::multi_index::member< Lease, std::string, &Lease::hostname_ > > >> Lease6Storage
A multi index container holding DHCPv6 leases.
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:504
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:284
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