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,
193typedef boost::multi_index_container<
199 boost::multi_index::indexed_by<
202 boost::multi_index::ordered_non_unique<
206 boost::multi_index::const_mem_fun<
212 boost::multi_index::ordered_non_unique<
216 boost::multi_index::composite_key<
223 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
228 boost::multi_index::const_mem_fun<
236 boost::multi_index::ordered_non_unique<
238 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
251typedef std::pair<HostContainer6Index0::iterator,
261typedef std::pair<HostContainer6Index1::iterator,
271typedef std::pair<HostContainer6Index2::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.
const asiolink::IOAddress & getPrefix() const
Returns prefix for the reservation.
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.
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.
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.
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.
HostContainer::nth_index< 5 >::type HostContainerIndex5
Sixth index type in the HostContainer.
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::getKey > >, 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::getKey > > >, boost::multi_index::ordered_non_unique< boost::multi_index::member< HostResrv6Tuple, const SubnetID, &HostResrv6Tuple::subnet_id_ > > > > HostContainer6
Multi-index container holding IPv6 reservations.
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.
HostResrv6Tuple(const IPv6Resrv &resrv, const HostPtr &host)
Default constructor.
const asiolink::IOAddress & getKey() const
Key extractor (used in the second composite key)
HostPtr host_
Pointer to the host object.
const SubnetID subnet_id_
Value of the IPv6 Subnet-id.