7#ifndef MEMFILE_LEASE_STORAGE_H 
    8#define MEMFILE_LEASE_STORAGE_H 
   14#include <boost/multi_index/indexed_by.hpp> 
   15#include <boost/multi_index/member.hpp> 
   16#include <boost/multi_index/mem_fun.hpp> 
   17#include <boost/multi_index/hashed_index.hpp> 
   18#include <boost/multi_index/ordered_index.hpp> 
   19#include <boost/multi_index_container.hpp> 
   20#include <boost/multi_index/composite_key.hpp> 
   78typedef boost::multi_index_container<
 
   81    boost::multi_index::indexed_by<
 
   85        boost::multi_index::ordered_unique<
 
   86            boost::multi_index::tag<AddressIndexTag>,
 
   87            boost::multi_index::member<Lease, isc::asiolink::IOAddress, &Lease::addr_>
 
   91        boost::multi_index::ordered_non_unique<
 
   92            boost::multi_index::tag<DuidIaidTypeIndexTag>,
 
   95            boost::multi_index::composite_key<
 
   99                boost::multi_index::const_mem_fun<Lease6, const std::vector<uint8_t>&,
 
  103                boost::multi_index::member<Lease6, uint32_t, &Lease6::iaid_>,
 
  104                boost::multi_index::member<Lease6, Lease::Type, &Lease6::type_>
 
  109        boost::multi_index::ordered_non_unique<
 
  110            boost::multi_index::tag<ExpirationIndexTag>,
 
  115            boost::multi_index::composite_key<
 
  118                boost::multi_index::const_mem_fun<
Lease, bool,
 
  121                boost::multi_index::const_mem_fun<
Lease, int64_t,
 
  128        boost::multi_index::ordered_unique<
 
  129            boost::multi_index::tag<SubnetIdIndexTag>,
 
  130            boost::multi_index::composite_key<
 
  133                boost::multi_index::member<
Lease,
 
  137                boost::multi_index::member<
Lease,
 
  145        boost::multi_index::ordered_non_unique<
 
  146            boost::multi_index::tag<DuidIndexTag>,
 
  147            boost::multi_index::const_mem_fun<
Lease6,
 
  148                                              const std::vector<uint8_t>&,
 
  154        boost::multi_index::ordered_non_unique<
 
  155            boost::multi_index::tag<HostnameIndexTag>,
 
  156            boost::multi_index::member<Lease, std::string, &Lease::hostname_>
 
  160        boost::multi_index::ordered_non_unique<
 
  161            boost::multi_index::tag<SubnetIdPoolIdIndexTag>,
 
  164            boost::multi_index::composite_key<
 
  170                boost::multi_index::member<Lease, SubnetID, &Lease::subnet_id_>,
 
  175                boost::multi_index::member<Lease, uint32_t, &Lease::pool_id_>
 
  197typedef boost::multi_index_container<
 
  201    boost::multi_index::indexed_by<
 
  205        boost::multi_index::ordered_unique<
 
  206            boost::multi_index::tag<AddressIndexTag>,
 
  209            boost::multi_index::member<Lease, isc::asiolink::IOAddress, &Lease::addr_>
 
  213        boost::multi_index::ordered_non_unique<
 
  214            boost::multi_index::tag<HWAddressSubnetIdIndexTag>,
 
  217            boost::multi_index::composite_key<
 
  223                boost::multi_index::const_mem_fun<Lease, const std::vector<uint8_t>&,
 
  229                boost::multi_index::member<Lease, SubnetID, &Lease::subnet_id_>
 
  234        boost::multi_index::ordered_non_unique<
 
  235            boost::multi_index::tag<ClientIdSubnetIdIndexTag>,
 
  238            boost::multi_index::composite_key<
 
  242                boost::multi_index::const_mem_fun<Lease4, const std::vector<uint8_t>&,
 
  245                boost::multi_index::member<Lease, uint32_t, &Lease::subnet_id_>
 
  250        boost::multi_index::ordered_non_unique<
 
  251            boost::multi_index::tag<ExpirationIndexTag>,
 
  256            boost::multi_index::composite_key<
 
  259                boost::multi_index::const_mem_fun<
Lease, bool,
 
  262                boost::multi_index::const_mem_fun<
Lease, int64_t,
 
  269        boost::multi_index::ordered_non_unique<
 
  270            boost::multi_index::tag<SubnetIdIndexTag>,
 
  271            boost::multi_index::member<Lease, isc::dhcp::SubnetID, &Lease::subnet_id_>
 
  276        boost::multi_index::ordered_non_unique<
 
  277            boost::multi_index::tag<HostnameIndexTag>,
 
  278            boost::multi_index::member<Lease, std::string, &Lease::hostname_>
 
  284        boost::multi_index::hashed_non_unique<
 
  285            boost::multi_index::tag<RemoteIdIndexTag>,
 
  286            boost::multi_index::member<
Lease4,
 
  287                                       std::vector<uint8_t>,
 
  294        boost::multi_index::ordered_non_unique<
 
  295            boost::multi_index::tag<RelayIdIndexTag>,
 
  296            boost::multi_index::composite_key<
 
  299                boost::multi_index::member<
Lease4,
 
  300                                           std::vector<uint8_t>,
 
  303                boost::multi_index::member<
Lease,
 
  310        boost::multi_index::ordered_non_unique<
 
  311            boost::multi_index::tag<SubnetIdPoolIdIndexTag>,
 
  314            boost::multi_index::composite_key<
 
  320                boost::multi_index::member<Lease, SubnetID, &Lease::subnet_id_>,
 
  325                boost::multi_index::member<Lease, uint32_t, &Lease::pool_id_>
 
  365typedef Lease4Storage::index<HWAddressSubnetIdIndexTag>::type
 
  369typedef Lease4Storage::index<ClientIdSubnetIdIndexTag>::type
 
  385typedef std::pair<Lease4StorageRemoteIdIndex::const_iterator,
 
  405                       const std::vector<uint8_t>& 
id)
 
 
 
  434typedef boost::multi_index_container<
 
  437    boost::multi_index::indexed_by<
 
  439        boost::multi_index::ordered_non_unique<
 
  440            boost::multi_index::tag<RelayIdIndexTag>,
 
  441            boost::multi_index::composite_key<
 
  444                                           std::vector<uint8_t>,
 
  453        boost::multi_index::hashed_non_unique<
 
  454            boost::multi_index::tag<LeaseAddressIndexTag>,
 
  475typedef boost::multi_index_container<
 
  478    boost::multi_index::indexed_by<
 
  480        boost::multi_index::hashed_non_unique<
 
  481            boost::multi_index::tag<RemoteIdIndexTag>,
 
  483                                       std::vector<uint8_t>,
 
  488        boost::multi_index::hashed_non_unique<
 
  489            boost::multi_index::tag<LeaseAddressIndexTag>,
 
  498typedef Lease6ExtendedInfoRelayIdTable::index<RelayIdIndexTag>::type
 
  502typedef Lease6ExtendedInfoRelayIdTable::index<LeaseAddressIndexTag>::type
 
  506typedef Lease6ExtendedInfoRemoteIdTable::index<RemoteIdIndexTag>::type
 
  510typedef std::pair<RemoteIdIndex::const_iterator, RemoteIdIndex::const_iterator>
 
  514typedef Lease6ExtendedInfoRemoteIdTable::index<LeaseAddressIndexTag>::type
 
The IOAddress class represents an IP addresses (version agnostic)
Lease6 extended informations for Bulk Lease Query.
Lease6ExtendedInfo(const isc::asiolink::IOAddress &lease_addr, const std::vector< uint8_t > &id)
Constructor.
std::vector< uint8_t > id_
Remote or relay opaque identifier.
isc::asiolink::IOAddress lease_addr_
Lease address.
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.
Lease6Storage::index< ExpirationIndexTag >::type Lease6StorageExpirationIndex
DHCPv6 lease storage index by expiration time.
Lease6Storage::index< DuidIndexTag >::type Lease6StorageDuidIndex
DHCPv6 lease storage index by DUID.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Lease6Storage::index< SubnetIdPoolIdIndexTag >::type Lease6StorageSubnetIdPoolIdIndex
DHCPv6 lease storage index subnet-id and pool-id.
Lease6Storage::index< DuidIaidTypeIndexTag >::type Lease6StorageDuidIaidTypeIndex
DHCPv6 lease storage index by DUID, IAID, lease type.
Lease4Storage::index< ExpirationIndexTag >::type Lease4StorageExpirationIndex
DHCPv4 lease storage index by expiration time.
Lease6Storage::index< AddressIndexTag >::type Lease6StorageAddressIndex
DHCPv6 lease storage index by address.
Lease4Storage::index< HostnameIndexTag >::type Lease4StorageHostnameIndex
DHCPv4 lease storage index by hostname.
std::pair< Lease4StorageRemoteIdIndex::const_iterator, Lease4StorageRemoteIdIndex::const_iterator > Lease4StorageRemoteIdRange
DHCPv4 lease storage range by remote-id.
Lease6Storage::index< HostnameIndexTag >::type Lease6StorageHostnameIndex
DHCPv6 lease storage index by hostname.
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.
Lease4Storage::index< ClientIdSubnetIdIndexTag >::type Lease4StorageClientIdSubnetIdIndex
DHCPv4 lease storage index by client-id and subnet-id.
Lease4Storage::index< HWAddressSubnetIdIndexTag >::type Lease4StorageHWAddressSubnetIdIndex
DHCPv4 lease storage index by HW address and subnet-id.
Lease6ExtendedInfoRelayIdTable::index< LeaseAddressIndexTag >::type LeaseAddressRelayIdIndex
Lease6 extended information by lease address index of by relay id table.
Lease6ExtendedInfoRelayIdTable::index< RelayIdIndexTag >::type RelayIdIndex
Lease6 extended information by relay id index.
Lease4Storage::index< RemoteIdIndexTag >::type Lease4StorageRemoteIdIndex
DHCPv4 lease storage index by remote-id.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
std::pair< RemoteIdIndex::const_iterator, RemoteIdIndex::const_iterator > RemoteIdIndexRange
Lease6 extended information by remote id range.
Lease4Storage::index< SubnetIdIndexTag >::type Lease4StorageSubnetIdIndex
DHCPv4 lease storage index subnet-id.
Lease4Storage::index< AddressIndexTag >::type Lease4StorageAddressIndex
DHCPv4 lease storage index by address.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Lease6ExtendedInfoRemoteIdTable::index< LeaseAddressIndexTag >::type LeaseAddressRemoteIdIndex
Lease6 extended information by lease address index of by remote id table.
Lease6Storage::index< SubnetIdIndexTag >::type Lease6StorageSubnetIdIndex
DHCPv6 lease storage index by subnet-id.
boost::multi_index_container< Lease6ExtendedInfoPtr, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::tag< RelayIdIndexTag >, boost::multi_index::composite_key< Lease6ExtendedInfo, boost::multi_index::member< Lease6ExtendedInfo, std::vector< uint8_t >, &Lease6ExtendedInfo::id_ >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< LeaseAddressIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > > > Lease6ExtendedInfoRelayIdTable
A multi index container holding lease6 extended info for by relay id.
boost::shared_ptr< Lease6ExtendedInfo > Lease6ExtendedInfoPtr
Pointer to a Lease6ExtendedInfo object.
Lease6ExtendedInfoRemoteIdTable::index< RemoteIdIndexTag >::type RemoteIdIndex
Lease6 extended information by remote id index.
Lease4Storage::index< SubnetIdPoolIdIndexTag >::type Lease4StorageSubnetIdPoolIdIndex
DHCPv4 lease storage index subnet-id and pool-id.
Lease4Storage::index< RelayIdIndexTag >::type Lease4StorageRelayIdIndex
DHCPv4 lease storage index by relay-id.
Defines the logger used by the top-level component of kea-lfc.
Tag for indexes by address.
Tag for indexes by client-id, subnet-id tuple.
Tag for indexes by DUID, IAID, lease type tuple.
Tag for index using DUID.
Tag for indexes by expiration time.
Tag for indexes by HW address, subnet-id tuple.
Tag for index using hostname.
Structure that holds a lease for IPv4 address.
std::vector< uint8_t > remote_id_
Remote identifier for Bulk Lease Query.
std::vector< uint8_t > relay_id_
Relay identifier for Bulk Lease Query.
const std::vector< uint8_t > & getClientIdVector() const
Returns a client identifier.
Structure that holds a lease for IPv6 address and/or prefix.
const std::vector< uint8_t > & getDuidVector() const
Returns a reference to a vector representing a DUID.
Tag for indexes by lease address.
a common structure for IPv4 and IPv6 leases
bool stateExpiredReclaimed() const
Indicates if the lease is in the "expired-reclaimed" state.
SubnetID subnet_id_
Subnet identifier.
const std::vector< uint8_t > & getHWAddrVector() const
Returns raw (as vector) hardware address.
int64_t getExpirationTime() const
Returns lease expiration time.
isc::asiolink::IOAddress addr_
IPv4 ot IPv6 address.
Tag for index using relay-id.
Tag for index using remote-id.
Tag for indexes by subnet-id (and address for v6).
Tag for indexes by subnet-id and pool-id.