28 const uint8_t* identifier_begin,
29 const size_t identifier_len)
const {
33 getAllInternal<ConstHostCollection>(identifier_type, identifier_begin,
34 identifier_len, collection);
40 const uint8_t* identifier_begin,
const size_t identifier_len) {
44 getAllInternal<HostCollection>(identifier_type, identifier_begin,
45 identifier_len, collection);
54 getAllInternal4<ConstHostCollection>(subnet_id, collection);
63 getAllInternal4<HostCollection>(subnet_id, collection);
72 getAllInternal6<ConstHostCollection>(subnet_id, collection);
81 getAllInternal6<HostCollection>(subnet_id, collection);
90 getAllbyHostnameInternal<ConstHostCollection>(hostname, collection);
99 getAllbyHostnameInternal<HostCollection>(hostname, collection);
109 getAllbyHostnameInternal4<ConstHostCollection>(hostname, subnet_id, collection);
119 getAllbyHostnameInternal4<HostCollection>(hostname, subnet_id, collection);
129 getAllbyHostnameInternal6<ConstHostCollection>(hostname, subnet_id, collection);
139 getAllbyHostnameInternal6<HostCollection>(hostname, subnet_id, collection);
146 uint64_t lower_host_id,
151 getPageInternal4<ConstHostCollection>(subnet_id,
161 uint64_t lower_host_id,
166 getPageInternal4<HostCollection>(subnet_id,
176 uint64_t lower_host_id,
181 getPageInternal6<ConstHostCollection>(subnet_id,
191 uint64_t lower_host_id,
196 getPageInternal6<HostCollection>(subnet_id,
205 uint64_t lower_host_id,
210 getPageInternal<ConstHostCollection>(lower_host_id,
218 uint64_t lower_host_id,
223 getPageInternal<HostCollection>(lower_host_id,
231 uint64_t lower_host_id,
236 getPageInternal<ConstHostCollection>(lower_host_id,
244 uint64_t lower_host_id,
249 getPageInternal<HostCollection>(lower_host_id,
260 getAllInternal4<ConstHostCollection>(address, collection);
269 getAllInternal4<HostCollection>(address, collection);
278 getAllInternal6<ConstHostCollection>(address, collection);
287 getAllInternal6<HostCollection>(address, collection);
291template<
typename Storage>
294 const uint8_t* identifier,
295 const size_t identifier_len,
296 Storage& storage)
const {
304 .arg(identifier_text);
309 boost::make_tuple(std::vector<uint8_t>(identifier,
310 identifier + identifier_len),
314 for (HostContainerIndex0::iterator host = idx.lower_bound(t);
315 host != idx.upper_bound(t);
319 .arg(identifier_text)
320 .arg((*host)->toText());
321 storage.push_back(*host);
326 .arg(identifier_text)
327 .arg(storage.size());
330template<
typename Storage>
332CfgHosts::getAllInternal4(
const SubnetID& subnet_id,
333 Storage& storage)
const {
342 for (HostContainerIndex2::iterator host = idx.lower_bound(subnet_id);
343 host != idx.upper_bound(subnet_id);
348 .arg((*host)->toText());
349 storage.push_back(*host);
355 .arg(storage.size());
358template<
typename Storage>
360CfgHosts::getAllInternal6(
const SubnetID& subnet_id,
361 Storage& storage)
const {
370 for (HostContainerIndex3::iterator host = idx.lower_bound(subnet_id);
371 host != idx.upper_bound(subnet_id);
376 .arg((*host)->toText());
377 storage.push_back(*host);
383 .arg(storage.size());
386template<
typename Storage>
388CfgHosts::getAllbyHostnameInternal(
const std::string& hostname,
389 Storage& storage)
const {
398 for (HostContainerIndex5::iterator host = idx.lower_bound(hostname);
399 host != idx.upper_bound(hostname);
404 .arg((*host)->toText());
405 storage.push_back(*host);
411 .arg(storage.size());
414template<
typename Storage>
416CfgHosts::getAllbyHostnameInternal4(
const std::string& hostname,
418 Storage& storage)
const {
429 for (HostContainerIndex5::iterator host = idx.lower_bound(hostname);
430 host != idx.upper_bound(hostname);
432 if ((*host)->getIPv4SubnetID() != subnet_id) {
439 .arg((*host)->toText());
440 storage.push_back(*host);
448 .arg(storage.size());
451template<
typename Storage>
453CfgHosts::getAllbyHostnameInternal6(
const std::string& hostname,
455 Storage& storage)
const {
466 for (HostContainerIndex5::iterator host = idx.lower_bound(hostname);
467 host != idx.upper_bound(hostname);
469 if ((*host)->getIPv6SubnetID() != subnet_id) {
476 .arg((*host)->toText());
477 storage.push_back(*host);
485 .arg(storage.size());
488template<
typename Storage>
490CfgHosts::getPageInternal(uint64_t lower_host_id,
491 const HostPageSize& page_size,
492 Storage& storage)
const {
498 HostContainerIndex4::const_iterator host = idx.lower_bound(lower_host_id);
502 (host != idx.end()) && ((*host)->getHostId() == lower_host_id)) {
507 for (; host != idx.end(); ++host) {
510 .arg((*host)->toText());
511 storage.push_back(*host);
512 if (storage.size() >= page_size.page_size_) {
519 .arg(storage.size());
522template<
typename Storage>
524CfgHosts::getPageInternal4(
const SubnetID& subnet_id,
525 uint64_t lower_host_id,
526 const HostPageSize& page_size,
527 Storage& storage)
const {
534 HostContainerIndex4::const_iterator host = idx.lower_bound(lower_host_id);
538 (host != idx.end()) && ((*host)->getHostId() == lower_host_id)) {
543 for (; host != idx.end(); ++host) {
544 if ((*host)->getIPv4SubnetID() != subnet_id) {
550 .arg((*host)->toText());
551 storage.push_back(*host);
552 if (storage.size() >= page_size.page_size_) {
560 .arg(storage.size());
563template<
typename Storage>
565CfgHosts::getPageInternal6(
const SubnetID& subnet_id,
566 uint64_t lower_host_id,
567 const HostPageSize& page_size,
568 Storage& storage)
const {
575 HostContainerIndex4::const_iterator host = idx.lower_bound(lower_host_id);
579 (host != idx.end()) && ((*host)->getHostId() == lower_host_id)) {
584 for (; host != idx.end(); ++host) {
585 if ((*host)->getIPv6SubnetID() != subnet_id) {
591 .arg((*host)->toText());
592 storage.push_back(*host);
593 if (storage.size() >= page_size.page_size_) {
601 .arg(storage.size());
605template<
typename Storage>
607CfgHosts::getAllInternal4(
const IOAddress& address, Storage& storage)
const {
612 if (!address.
isV4()) {
613 isc_throw(BadHostAddress,
"must specify an IPv4 address when searching"
614 " for a host, specified address was " << address);
620 for (HostContainerIndex1::iterator host = r.first; host != r.second;
625 .arg((*host)->toText());
626 storage.push_back(*host);
631 .arg(storage.size());
634template<
typename Storage>
636CfgHosts::getAllInternal6(
const IOAddress& address, Storage& storage)
const {
641 if (!address.
isV6()) {
642 isc_throw(BadHostAddress,
"must specify an IPv6 address when searching"
643 " for a host, specified address was " << address);
649 for (HostContainerIndex1::iterator host = r.first; host != r.second;
654 .arg((*host)->toText());
655 storage.push_back(*host);
660 .arg(storage.size());
666 const uint8_t* identifier_begin,
667 const size_t identifier_len)
const {
668 return (getHostInternal(subnet_id,
false, identifier_type, identifier_begin,
675 const uint8_t* identifier_begin,
676 const size_t identifier_len) {
677 return (getHostInternal(subnet_id,
false, identifier_type, identifier_begin,
684 .arg(subnet_id).arg(address.
toText());
687 for (ConstHostCollection::const_iterator host = hosts.begin();
688 host != hosts.end(); ++host) {
689 if ((*host)->getIPv4SubnetID() == subnet_id) {
694 .arg((*host)->toText());
700 .arg(subnet_id).arg(address.
toText());
708 .arg(subnet_id).arg(address.
toText());
711 for (
auto host :
getAll4(address)) {
712 if (host->getIPv4SubnetID() == subnet_id) {
717 .arg(host->toText());
718 hosts.push_back(host);
732 const uint8_t* identifier_begin,
733 const size_t identifier_len)
const {
734 return (getHostInternal(subnet_id,
true, identifier_type, identifier_begin,
741 const uint8_t* identifier_begin,
742 const size_t identifier_len) {
743 return (getHostInternal(subnet_id,
true, identifier_type, identifier_begin,
749 return (getHostInternal6<ConstHostPtr>(prefix, prefix_len));
754 return (getHostInternal6<HostPtr>(prefix, prefix_len));
761 return (getHostInternal6<ConstHostPtr, ConstHostCollection>(subnet_id, address));
768 return (getHostInternal6<HostPtr, HostCollection>(subnet_id, address));
775 getAllInternal6(subnet_id, address, hosts);
779template<
typename ReturnType,
typename Storage>
781CfgHosts::getHostInternal6(
const SubnetID& subnet_id,
784 .arg(subnet_id).arg(address.
toText());
787 getAllInternal6<Storage>(subnet_id, address, storage);
788 switch (storage.size()) {
801 .arg((*storage.begin())->toText());
802 return (*storage.begin());
806 " for the host belonging to the subnet with id '"
807 << subnet_id <<
"' and using the address '"
808 << address.
toText() <<
"'");
813template<
typename ReturnType>
815CfgHosts::getHostInternal6(
const asiolink::IOAddress& prefix,
816 const uint8_t prefix_len)
const {
818 .arg(prefix.toText()).arg(
static_cast<int>(prefix_len));
823 idx.upper_bound(prefix));
824 for (HostContainer6Index0::iterator resrv = r.first; resrv != r.second;
826 if (resrv->resrv_.getPrefixLen() == prefix_len) {
829 .arg(prefix.toText())
830 .arg(
static_cast<int>(prefix_len))
831 .arg(resrv->host_->toText());
832 return (resrv->host_);
838 .arg(prefix.toText())
839 .arg(
static_cast<int>(prefix_len));
840 return (ReturnType());
843template<
typename Storage>
845CfgHosts::getAllInternal6(
const SubnetID& subnet_id,
846 const asiolink::IOAddress& address,
847 Storage& storage)
const {
849 .arg(subnet_id).arg(address.toText());
852 if (!address.isV6()) {
853 isc_throw(BadHostAddress,
"must specify an IPv6 address when searching"
854 " for a host, specified address was " << address);
860 idx.upper_bound(boost::make_tuple(subnet_id, address)));
866 for(HostContainer6Index1::iterator resrv = r.first; resrv != r.second; ++resrv) {
870 .arg(address.toText())
871 .arg(resrv->host_->toText());
872 storage.push_back(resrv->host_);
878 .arg(address.toText())
879 .arg(storage.size());
883CfgHosts::getHostInternal(
const SubnetID& subnet_id,
const bool subnet6,
885 const uint8_t* identifier,
886 const size_t identifier_len)
const {
889 .arg(subnet6 ?
"IPv6" :
"IPv4")
897 getAllInternal<HostCollection>(identifier_type, identifier, identifier_len,
903 for (HostCollection::const_iterator host_it = hosts.begin();
904 host_it != hosts.end(); ++host_it) {
906 SubnetID host_subnet_id = subnet6 ? (*host_it)->getIPv6SubnetID() :
907 (*host_it)->getIPv4SubnetID();
909 if (subnet_id == host_subnet_id) {
921 isc_throw(DuplicateHost,
"more than one reservation found"
922 " for the host belonging to the subnet with id '"
923 << subnet_id <<
"' and using the identifier '"
938 .arg(host->toText());
954 .arg(host ? host->toText() :
"(no-host)");
959 " is added to the configuration");
963 if (host->getIPv4SubnetID() == SUBNET_ID_UNUSED &&
964 host->getIPv6SubnetID() == SUBNET_ID_UNUSED) {
966 " 0 when adding new host reservation");
975CfgHosts::add4(
const HostPtr& host) {
978 DuidPtr duid = host->getDuid();
983 if (host->getHostname().empty() &&
984 (host->getIPv4Reservation().isV4Zero()) &&
985 !host->hasIPv6Reservation() &&
986 host->getNextServer().isV4Zero() &&
987 host->getServerHostname().empty() &&
988 host->getBootFileName().empty() &&
989 host->getCfgOption4()->empty() &&
990 host->getCfgOption6()->empty() &&
991 host->getClientClasses4().empty() &&
992 host->getClientClasses6().empty()) {
993 std::ostringstream s;
995 s <<
"for DUID: " << hwaddr->toText();
997 s <<
"for HW address: " << duid->toText();
999 isc_throw(BadValue,
"specified reservation " << s.str()
1000 <<
" must include at least one resource, i.e. "
1001 "hostname, IPv4 address, IPv6 address/prefix, "
1006 if (host->getIPv4SubnetID() != SUBNET_ID_UNUSED) {
1007 if (hwaddr && !hwaddr->hwaddr_.empty() &&
1009 &hwaddr->hwaddr_[0], hwaddr->hwaddr_.size())) {
1010 isc_throw(DuplicateHost,
"failed to add new host using the HW"
1011 <<
" address '" << hwaddr->toText(
false)
1012 <<
"' to the IPv4 subnet id '" << host->getIPv4SubnetID()
1013 <<
"' as this host has already been added");
1015 if (duid && !duid->getDuid().empty() &&
1017 &duid->getDuid()[0], duid->getDuid().size())) {
1018 isc_throw(DuplicateHost,
"failed to add new host using the "
1019 <<
"DUID '" << duid->toText()
1020 <<
"' to the IPv4 subnet id '" << host->getIPv4SubnetID()
1021 <<
"' as this host has already been added");
1024 }
else if (host->getIPv6SubnetID() != SUBNET_ID_UNUSED) {
1025 if (duid && !duid->getDuid().empty() &&
1027 &duid->getDuid()[0], duid->getDuid().size())) {
1028 isc_throw(DuplicateHost,
"failed to add new host using the "
1029 <<
"DUID '" << duid->toText()
1030 <<
"' to the IPv6 subnet id '" << host->getIPv6SubnetID()
1031 <<
"' as this host has already been added");
1033 if (hwaddr && !hwaddr->hwaddr_.empty() &&
1035 &hwaddr->hwaddr_[0], hwaddr->hwaddr_.size())) {
1036 isc_throw(DuplicateHost,
"failed to add new host using the HW"
1037 <<
" address '" << hwaddr->toText(
false)
1038 <<
"' to the IPv6 subnet id '" << host->getIPv6SubnetID()
1039 <<
"' as this host has already been added");
1044 if (ip_reservations_unique_ && !host->getIPv4Reservation().isV4Zero() &&
1045 (host->getIPv4SubnetID() != SUBNET_ID_UNUSED) &&
1046 get4(host->getIPv4SubnetID(), host->getIPv4Reservation())) {
1047 isc_throw(ReservedAddress,
"failed to add new host using the HW"
1048 " address '" << (hwaddr ? hwaddr->toText(
false) :
"(null)")
1049 <<
" and DUID '" << (duid ? duid->toText() :
"(null)")
1050 <<
"' to the IPv4 subnet id '" << host->getIPv4SubnetID()
1051 <<
"' for the address " << host->getIPv4Reservation()
1052 <<
": There's already a reservation for this address");
1056 const std::vector<uint8_t>&
id = host->getIdentifier();
1057 if ((host->getIPv4SubnetID() != SUBNET_ID_UNUSED) && !
id.empty()) {
1058 if (
get4(host->getIPv4SubnetID(), host->getIdentifierType(), &
id[0],
1060 isc_throw(DuplicateHost,
"failed to add duplicate IPv4 host using identifier: "
1062 &
id[0],
id.size()));
1067 host->setHostId(++next_host_id_);
1068 hosts_.insert(host);
1072CfgHosts::add6(
const HostPtr& host) {
1074 if (host->getIPv6SubnetID() == SUBNET_ID_UNUSED) {
1079 HWAddrPtr hwaddr = host->getHWAddress();
1080 DuidPtr duid = host->getDuid();
1086 if (std::distance(reservations.first, reservations.second) == 0) {
1096 if (ip_reservations_unique_) {
1098 if (
get6(host->getIPv6SubnetID(), it->second.getPrefix())) {
1099 isc_throw(DuplicateHost,
"failed to add address reservation for "
1100 <<
"host using the HW address '"
1101 << (hwaddr ? hwaddr->toText(
false) :
"(null)")
1102 <<
" and DUID '" << (duid ? duid->toText() :
"(null)")
1103 <<
"' to the IPv6 subnet id '" << host->getIPv6SubnetID()
1104 <<
"' for address/prefix " << it->second.getPrefix()
1105 <<
": There's already reservation for this address/prefix");
1108 hosts6_.insert(HostResrv6Tuple(it->second, host));
1122 size_t erased = idx.erase(subnet_id);
1145 size_t erased_addresses = idx6.erase(subnet_id);
1149 size_t erased_hosts = idx.erase(subnet_id);
1153 .arg(erased_addresses)
1156 return (erased_hosts);
1171 ip_reservations_unique_ = unique;
1179 if (family == AF_INET) {
1180 return (toElement4());
1181 }
else if (family == AF_INET6) {
1182 return (toElement6());
1185 "address family: " << family);
1190CfgHosts::toElement4()
const {
1194 for (HostContainerIndex0::const_iterator host = idx.begin();
1195 host != idx.end(); ++host) {
1201 SubnetID subnet_id = (*host)->getIPv4SubnetID();
1202 result.
add(subnet_id, map);
1208CfgHosts::toElement6()
const {
1209 CfgHostsList result;
1212 for (HostContainerIndex0::const_iterator host = idx.begin();
1213 host != idx.end(); ++host) {
1219 SubnetID subnet_id = (*host)->getIPv6SubnetID();
1220 result.add(subnet_id, map);
1222 return (result.externalize());
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
A generic exception that is thrown when a function is not implemented.
The IOAddress class represents an IP addresses (version agnostic)
std::string toText() const
Convert the address to a string.
bool isV6() const
Convenience function to check for an IPv6 address.
bool isV4() const
Convenience function to check for an IPv4 address.
Utility class to represent host reservation configurations internally as a map keyed by subnet IDs,...
void add(SubnetID id, isc::data::ElementPtr resv)
Add a host reservation to the map.
isc::data::ElementPtr externalize() const
Externalize the map to a list Element.
virtual size_t delAll4(const SubnetID &subnet_id)
Attempts to delete all hosts for a given IPv4 subnet.
virtual void add(const HostPtr &host)
Adds a new host to the collection.
virtual ConstHostCollection getPage6(const SubnetID &subnet_id, size_t &source_index, uint64_t lower_host_id, const HostPageSize &page_size) const
Returns range of hosts in a DHCPv6 subnet.
virtual bool del4(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
Attempts to delete a host by (subnet4-id, identifier, identifier-type)
virtual bool del(const SubnetID &subnet_id, const asiolink::IOAddress &addr)
Attempts to delete a hosts by address.
virtual bool setIPReservationsUnique(const bool unique)
Controls whether IP reservations are unique or non-unique.
virtual size_t delAll6(const SubnetID &subnet_id)
Attempts to delete all hosts for a given IPv6 subnet.
virtual ConstHostPtr get6(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const
Returns a host connected to the IPv6 subnet.
virtual ConstHostCollection getAllbyHostname(const std::string &hostname) const
Return all hosts with a hostname.
virtual bool del6(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
Attempts to delete a host by (subnet6-id, identifier, identifier-type)
virtual ConstHostCollection getPage4(const SubnetID &subnet_id, size_t &source_index, uint64_t lower_host_id, const HostPageSize &page_size) const
Returns range of hosts in a DHCPv4 subnet.
virtual ConstHostCollection getAll4(const SubnetID &subnet_id) const
Return all hosts in a DHCPv4 subnet.
virtual ConstHostPtr get4(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const
Returns a host connected to the IPv4 subnet.
virtual ConstHostCollection getAll6(const SubnetID &subnet_id) const
Return all hosts in a DHCPv6 subnet.
virtual ConstHostCollection getAllbyHostname6(const std::string &hostname, const SubnetID &subnet_id) const
Return all hosts with a hostname in a DHCPv6 subnet.
isc::data::ElementPtr toElement() const
Unparse a configuration object.
virtual ConstHostCollection getAllbyHostname4(const std::string &hostname, const SubnetID &subnet_id) const
Return all hosts with a hostname in a DHCPv4 subnet.
virtual ConstHostCollection getAll(const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const
Return all hosts connected to any subnet for which reservations have been made using a specified iden...
uint16_t getFamily() const
Returns address family.
static CfgMgr & instance()
returns a single instance of Configuration Manager
Exception thrown when the duplicate Host object is detected.
Wraps value holding size of the page with host reservations.
IdentifierType
Type of the host identifier.
std::string getIdentifierAsText() const
Returns host identifier in a textual form.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
#define LOG_DEBUG(LOGGER, LEVEL, MESSAGE)
Macro to conveniently test debug output and log it.
boost::shared_ptr< Element > ElementPtr
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS6_COUNT
IPv6ResrvCollection::const_iterator IPv6ResrvIterator
HostContainer::nth_index< 4 >::type HostContainerIndex4
Fifth index type in the HostContainer.
const isc::log::MessageID HOSTS_CFG_GET_ALL_ADDRESS4_HOST
const isc::log::MessageID HOSTS_CFG_GET_ALL_ADDRESS6_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ALL
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID6
std::pair< HostContainerIndex1::iterator, HostContainerIndex1::iterator > HostContainerIndex1Range
Results range returned using the HostContainerIndex1.
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_SUBNET_ID4_HOST
isc::log::Logger hosts_logger("hosts")
Logger for the HostMgr and the code it calls.
const isc::log::MessageID HOSTS_CFG_GET_ALL_IDENTIFIER_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOST
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_ADDRESS4
const isc::log::MessageID HOSTS_CFG_GET_ALL_IDENTIFIER
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS4_HOST
const isc::log::MessageID HOSTS_CFG_ADD_HOST
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS4
std::pair< HostContainer6Index1::iterator, HostContainer6Index1::iterator > HostContainer6Index1Range
Results range returned using the HostContainer6Index1.
boost::shared_ptr< Host > HostPtr
Pointer to the Host object.
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_ADDRESS4_NULL
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS6
std::vector< ConstHostPtr > ConstHostCollection
Collection of the const Host objects.
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID6_HOST
boost::shared_ptr< DUID > DuidPtr
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_SUBNET_ID6_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_SUBNET_ID6
HostContainer6::nth_index< 0 >::type HostContainer6Index0
First index type in the HostContainer6.
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID4
const isc::log::MessageID HOSTS_CFG_GET_ONE_PREFIX_NULL
const isc::log::MessageID HOSTS_CFG_GET_ALL_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID4_HOST
const isc::log::MessageID HOSTS_CFG_GET_ALL_ADDRESS6
std::pair< IPv6ResrvIterator, IPv6ResrvIterator > IPv6ResrvRange
const isc::log::MessageID HOSTS_CFG_GET_ALL_IDENTIFIER_HOST
HostContainer6::nth_index< 1 >::type HostContainer6Index1
Second index type in the HostContainer6.
std::vector< HostPtr > HostCollection
Collection of the Host objects.
boost::shared_ptr< HWAddr > HWAddrPtr
Shared pointer to a hardware address structure.
const isc::log::MessageID HOSTS_CFG_GET_ONE_PREFIX_HOST
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_HOST
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_SUBNET_ID6_HOST
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER_HOST
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.
const int HOSTS_DBG_TRACE
Logging levels for the host reservations management.
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_ADDRESS6
const isc::log::MessageID HOSTS_CFG_GET_ALL_ADDRESS4
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER_NULL
std::pair< HostContainer6Index0::iterator, HostContainer6Index0::iterator > HostContainer6Index0Range
Results range returned using the HostContainer6Index0.
const isc::log::MessageID HOSTS_CFG_GET_ONE_PREFIX
boost::shared_ptr< const Host > ConstHostPtr
Const pointer to the Host object.
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_ADDRESS4_HOST
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_ADDRESS6_HOST
HostContainer::nth_index< 0 >::type HostContainerIndex0
First index type in the HostContainer.
const isc::log::MessageID HOSTS_CFG_GET_ALL_ADDRESS4_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS6_HOST
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID4_COUNT
const int HOSTS_DBG_TRACE_DETAIL_DATA
Records detailed results of lookups.
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_SUBNET_ID4
const isc::log::MessageID HOSTS_CFG_DEL_ALL_SUBNET6
const int HOSTS_DBG_RESULTS
Records the results of the lookups.
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID6_COUNT
const isc::log::MessageID HOSTS_CFG_DEL_ALL_SUBNET4
HostContainer::nth_index< 5 >::type HostContainerIndex5
Sixth index type in the HostContainer.
const isc::log::MessageID HOSTS_CFG_GET_ALL_ADDRESS6_HOST
HostContainer::nth_index< 2 >::type HostContainerIndex2
Third index type in the HostContainer.
const isc::log::MessageID HOSTS_CFG_GET_ONE_SUBNET_ID_ADDRESS6_NULL
const isc::log::MessageID HOSTS_CFG_GET_ALL_HOSTNAME_SUBNET_ID4_COUNT
const isc::log::MessageID HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS4_COUNT
Defines the logger used by the top-level component of kea-lfc.