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,
95typedef std::pair<HostContainerIndex0::iterator,
105typedef std::pair<HostContainerIndex1::iterator,
115typedef std::pair<HostContainerIndex2::iterator,
125typedef std::pair<HostContainerIndex3::iterator,
164typedef boost::multi_index_container<
170 boost::multi_index::indexed_by<
173 boost::multi_index::ordered_non_unique<
177 boost::multi_index::const_mem_fun<
183 boost::multi_index::ordered_unique<
187 boost::multi_index::composite_key<
194 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
199 boost::multi_index::const_mem_fun<
207 boost::multi_index::ordered_non_unique<
209 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
222typedef std::pair<HostContainer6Index0::iterator,
232typedef std::pair<HostContainer6Index1::iterator,
242typedef 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.
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.
IPv6 reservation for a host.
const asiolink::IOAddress & getPrefix() const
Returns prefix for the reservation.
std::pair< HostContainerIndex1::iterator, HostContainerIndex1::iterator > HostContainerIndex1Range
Results range returned using the HostContainerIndex1.
std::pair< HostContainer6Index1::iterator, HostContainer6Index1::iterator > HostContainer6Index1Range
Results range returned using the HostContainer6Index1.
boost::shared_ptr< Host > HostPtr
Pointer to the Host object.
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 > > > > HostContainer
Multi-index container holding host reservations.
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
Unique identifier for a subnet (both v4 and v6)
std::pair< HostContainerIndex3::iterator, HostContainerIndex3::iterator > HostContainerIndex3Range
Results range returned using the HostContainerIndex3.
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.
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_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-dhcp-ddns.
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.