7#ifndef HOST_CONTAINER_H
8#define HOST_CONTAINER_H
12#include <boost/multi_index_container.hpp>
13#include <boost/multi_index/composite_key.hpp>
14#include <boost/multi_index/mem_fun.hpp>
15#include <boost/multi_index/member.hpp>
16#include <boost/multi_index/ordered_index.hpp>
17#include <boost/multi_index/hashed_index.hpp>
33typedef boost::multi_index_container<
37 boost::multi_index::indexed_by<
42 boost::multi_index::ordered_non_unique<
46 boost::multi_index::composite_key<
51 boost::multi_index::const_mem_fun<
52 Host,
const std::vector<uint8_t>&,
57 boost::multi_index::const_mem_fun<
66 boost::multi_index::ordered_non_unique<
68 boost::multi_index::const_mem_fun<Host,
const asiolink::IOAddress&,
73 boost::multi_index::ordered_non_unique<
75 boost::multi_index::const_mem_fun<Host,
SubnetID,
80 boost::multi_index::ordered_non_unique<
82 boost::multi_index::const_mem_fun<Host,
SubnetID,
87 boost::multi_index::ordered_unique<
89 boost::multi_index::const_mem_fun<Host, uint64_t,
95 boost::multi_index::ordered_non_unique<
97 boost::multi_index::const_mem_fun<Host, std::string,
110typedef std::pair<HostContainerIndex0::iterator,
120typedef std::pair<HostContainerIndex1::iterator,
130typedef std::pair<HostContainerIndex2::iterator,
140typedef std::pair<HostContainerIndex3::iterator,
149typedef std::pair<HostContainerIndex4::iterator,
184 return (
resrv_.getPrefix());
189 return (
host_->getHostId());
198typedef boost::multi_index_container<
204 boost::multi_index::indexed_by<
207 boost::multi_index::ordered_non_unique<
211 boost::multi_index::const_mem_fun<
217 boost::multi_index::ordered_non_unique<
221 boost::multi_index::composite_key<
228 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
233 boost::multi_index::const_mem_fun<
241 boost::multi_index::ordered_non_unique<
243 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
248 boost::multi_index::ordered_non_unique<
250 boost::multi_index::const_mem_fun<HostResrv6Tuple, uint64_t,
255 boost::multi_index::ordered_non_unique<
256 boost::multi_index::const_mem_fun<
271typedef std::pair<HostContainer6Index0::iterator,
281typedef std::pair<HostContainer6Index1::iterator,
291typedef std::pair<HostContainer6Index2::iterator,
300typedef std::pair<HostContainer6Index3::iterator,
309typedef std::pair<HostContainer6Index4::iterator,
The IOAddress class represents an IP addresses (version agnostic)
SubnetID getIPv4SubnetID() const
Returns subnet identifier for IPv4 reservation.
IdentifierType
Type of the host identifier.
IdentifierType getIdentifierType() const
Returns the identifier type.
std::string getLowerHostname() const
Returns reserved hostname in lower case.
SubnetID getIPv6SubnetID() const
Returns subnet identifier for IPv6 reservations.
const asiolink::IOAddress & getIPv4Reservation() const
Returns reserved IPv4 address.
const std::vector< uint8_t > & getIdentifier() const
Returns the identifier in a binary form.
HostID getHostId() const
Returns Host ID (primary key in MySQL and PostgreSQL backends)
IPv6 reservation for a host.
HostContainer6::nth_index< 4 >::type HostContainer6Index4
Fifth index type in the HostContainer6.
HostContainer::nth_index< 4 >::type HostContainerIndex4
Fifth index type in the HostContainer.
std::pair< HostContainerIndex1::iterator, HostContainerIndex1::iterator > HostContainerIndex1Range
Results range returned using the HostContainerIndex1.
boost::multi_index_container< HostPtr, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::composite_key< Host, boost::multi_index::const_mem_fun< Host, const std::vector< uint8_t > &, &Host::getIdentifier >, boost::multi_index::const_mem_fun< Host, Host::IdentifierType, &Host::getIdentifierType > > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< Host, const asiolink::IOAddress &, &Host::getIPv4Reservation > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< Host, SubnetID, &Host::getIPv4SubnetID > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< Host, SubnetID, &Host::getIPv6SubnetID > >, boost::multi_index::ordered_unique< boost::multi_index::const_mem_fun< Host, uint64_t, &Host::getHostId > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< Host, std::string, &Host::getLowerHostname > > > > HostContainer
Multi-index container holding host reservations.
std::pair< HostContainer6Index1::iterator, HostContainer6Index1::iterator > HostContainer6Index1Range
Results range returned using the HostContainer6Index1.
boost::shared_ptr< Host > HostPtr
Pointer to the Host object.
HostContainer6::nth_index< 3 >::type HostContainer6Index3
Fourth index type in the HostContainer6.
std::pair< HostContainerIndex0::iterator, HostContainerIndex0::iterator > HostContainerIndex0Range
Results range returned using the HostContainerIndex0.
HostContainer6::nth_index< 0 >::type HostContainer6Index0
First index type in the HostContainer6.
std::pair< HostContainer6Index4::iterator, HostContainer6Index4::iterator > HostContainer6Index4Range
Results range returned using the HostContainer6Index4.
boost::multi_index_container< HostResrv6Tuple, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< HostResrv6Tuple, const asiolink::IOAddress &, &HostResrv6Tuple::getPrefix > >, boost::multi_index::ordered_non_unique< boost::multi_index::composite_key< HostResrv6Tuple, boost::multi_index::member< HostResrv6Tuple, const SubnetID, &HostResrv6Tuple::subnet_id_ >, boost::multi_index::const_mem_fun< HostResrv6Tuple, const asiolink::IOAddress &, &HostResrv6Tuple::getPrefix > > >, boost::multi_index::ordered_non_unique< boost::multi_index::member< HostResrv6Tuple, const SubnetID, &HostResrv6Tuple::subnet_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< HostResrv6Tuple, uint64_t, &HostResrv6Tuple::getHostId > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< HostResrv6Tuple, const asiolink::IOAddress &, &HostResrv6Tuple::getPrefix > > > > HostContainer6
Multi-index container holding IPv6 reservations.
HostContainer6::nth_index< 1 >::type HostContainer6Index1
Second index type in the HostContainer6.
std::pair< HostContainerIndex2::iterator, HostContainerIndex2::iterator > HostContainerIndex2Range
Results range returned using the HostContainerIndex2.
HostContainer::nth_index< 1 >::type HostContainerIndex1
Second index type in the HostContainer.
HostContainer6::nth_index< 2 >::type HostContainer6Index2
Third index type in the HostContainer6.
HostContainer::nth_index< 3 >::type HostContainerIndex3
Forth index type in the HostContainer.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
std::pair< HostContainerIndex3::iterator, HostContainerIndex3::iterator > HostContainerIndex3Range
Results range returned using the HostContainerIndex3.
uint64_t HostID
HostID (used only when storing in MySQL or PostgreSQL backends)
std::pair< HostContainerIndex4::iterator, HostContainerIndex4::iterator > HostContainerIndex4Range
Results range returned using the HostContainerIndex4.
std::pair< HostContainer6Index0::iterator, HostContainer6Index0::iterator > HostContainer6Index0Range
Results range returned using the HostContainer6Index0.
HostContainer::nth_index< 0 >::type HostContainerIndex0
First index type in the HostContainer.
std::pair< HostContainer6Index3::iterator, HostContainer6Index3::iterator > HostContainer6Index3Range
Results range returned using the HostContainer6Index3.
HostContainer::nth_index< 5 >::type HostContainerIndex5
Sixth index type in the HostContainer.
HostContainer::nth_index< 2 >::type HostContainerIndex2
Third index type in the HostContainer.
std::pair< HostContainer6Index2::iterator, HostContainer6Index2::iterator > HostContainer6Index2Range
Results range returned using the HostContainer6Index2.
Defines the logger used by the top-level component of kea-lfc.
Defines one entry for the Host Container for v6 hosts.
const IPv6Resrv resrv_
Address or prefix reservation.
const asiolink::IOAddress & getPrefix() const
Key extractor used in the second composite key.
HostID getHostId() const
Key extractor used in the fourth composite key.
HostResrv6Tuple(const IPv6Resrv &resrv, const HostPtr &host)
Default constructor.
HostPtr host_
Pointer to the host object.
const SubnetID subnet_id_
Value of the IPv6 Subnet-id.