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>
33 typedef 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,
110 typedef std::pair<HostContainerIndex0::iterator,
120 typedef std::pair<HostContainerIndex1::iterator,
130 typedef std::pair<HostContainerIndex2::iterator,
140 typedef std::pair<HostContainerIndex3::iterator,
149 typedef std::pair<HostContainerIndex4::iterator,
183 const asiolink::IOAddress&
getKey()
const {
193 typedef 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<
229 HostResrv6Tuple,
const asiolink::IOAddress&,
230 &HostResrv6Tuple::getKey
236 boost::multi_index::ordered_non_unique<
238 boost::multi_index::member<HostResrv6Tuple,
const SubnetID,
239 &HostResrv6Tuple::subnet_id_>
251 typedef std::pair<HostContainer6Index0::iterator,
261 typedef std::pair<HostContainer6Index1::iterator,
271 typedef std::pair<HostContainer6Index2::iterator,
277 #endif // HOST_CONTAINER_H
std::pair< HostContainer6Index2::iterator, HostContainer6Index2::iterator > HostContainer6Index2Range
Results range returned using the HostContainer6Index2.
std::pair< HostContainer6Index0::iterator, HostContainer6Index0::iterator > HostContainer6Index0Range
Results range returned using the HostContainer6Index0.
HostContainer6::nth_index< 1 >::type HostContainer6Index1
Second index type in the HostContainer6.
Defines one entry for the Host Container for v6 hosts.
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.
std::string getLowerHostname() const
Returns reserved hostname in lower case.
const IPv6Resrv resrv_
Address or prefix reservation.
boost::shared_ptr< Host > HostPtr
Pointer to the Host object.
HostResrv6Tuple(const IPv6Resrv &resrv, const HostPtr &host)
Default constructor.
const asiolink::IOAddress & getPrefix() const
Returns prefix for the reservation.
std::pair< HostContainerIndex1::iterator, HostContainerIndex1::iterator > HostContainerIndex1Range
Results range returned using the HostContainerIndex1.
HostContainer6::nth_index< 2 >::type HostContainer6Index2
Third index type in the HostContainer6.
HostContainer::nth_index< 0 >::type HostContainerIndex0
First index type in the HostContainer.
std::pair< HostContainerIndex0::iterator, HostContainerIndex0::iterator > HostContainerIndex0Range
Results range returned using the HostContainerIndex0.
IPv6 reservation for a host.
HostContainer::nth_index< 3 >::type HostContainerIndex3
Forth index type in the HostContainer.
const asiolink::IOAddress & getKey() const
Key extractor (used in the second composite key)
std::pair< HostContainerIndex4::iterator, HostContainerIndex4::iterator > HostContainerIndex4Range
Results range returned using the HostContainerIndex4.
const asiolink::IOAddress & getIPv4Reservation() const
Returns reserved IPv4 address.
const std::vector< uint8_t > & getIdentifier() const
Returns the identifier in a binary form.
IdentifierType getIdentifierType() const
Returns the identifier type.
HostContainer::nth_index< 1 >::type HostContainerIndex1
Second index type in the HostContainer.
HostID getHostId() const
Returns Host ID (primary key in MySQL, PostgreSQL and Cassandra backends)
HostContainer6::nth_index< 0 >::type HostContainer6Index0
First index type in the HostContainer6.
HostPtr host_
Pointer to the host object.
SubnetID getIPv6SubnetID() const
Returns subnet identifier for IPv6 reservations.
Defines the logger used by the top-level component of kea-dhcp-ddns.
std::pair< HostContainerIndex2::iterator, HostContainerIndex2::iterator > HostContainerIndex2Range
Results range returned using the HostContainerIndex2.
HostContainer::nth_index< 4 >::type HostContainerIndex4
Fifth index type in the HostContainer.
const SubnetID subnet_id_
Value of the IPv6 Subnet-id.
std::pair< HostContainerIndex3::iterator, HostContainerIndex3::iterator > HostContainerIndex3Range
Results range returned using the HostContainerIndex3.
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.
HostContainer::nth_index< 5 >::type HostContainerIndex5
Sixth index type in the HostContainer.
IdentifierType
Type of the host identifier.
SubnetID getIPv4SubnetID() const
Returns subnet identifier for IPv4 reservation.
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)