CfgHosts::getAllInternal(const std::vector<uint8_t>& identifier,
const Host::IdentifierType& identifier_type,
Storage& storage) const {
- // HOST_RESRV_GET_ALL_IDENTIFIER
+ // We will need to transform the identifier into the textual format.
+ // Until we do it, we mark it as invalid.
+ std::string identifier_text = "(invalid)";
+ if (!identifier.empty()) {
+ try {
+ // Use Host object to find the textual form of the identifier.
+ // This may throw exception if the identifier is invalid.
+ Host host(&identifier[0], identifier.size(), identifier_type,
+ SubnetID(0), SubnetID(0), IOAddress::IPV4_ZERO_ADDRESS());
+ identifier_text = host.getIdentifierAsText();
+
+ } catch (...) {
+ // Suppress exception and keep using (invalid) as an
+ // identifier. We will log that the identifier is
+ // invalid and return.
+ }
+
+ }
+ // This will log that we're invoking this function with the specified
+ // identifier. The identifier may also be marked as (invalid) if it
+ // had 0 length or its type is unsupported.
+ LOG_DEBUG(hosts_logger, HOSTS_DBG_TRACE, HOSTS_CFG_GET_ALL_IDENTIFIER)
+ .arg(identifier_text);
+
+ // Do nothing if the identifier specified is invalid.
+ if (identifier_text == "(invalid)") {
+ return;
+ }
// Use the identifier and identifier type as a composite key.
const HostContainerIndex0& idx = hosts_.get<0>();
return (IDENT_DUID);
}
+std::string
+Host::getIdentifierAsText() const {
+ std::string txt;
+ if (hw_address_) {
+ txt = "hwaddr=" + hw_address_->toText(false);
+ } else {
+ txt = "duid=";
+ if (duid_) {
+ txt += duid_->toText();
+ } else {
+ txt += "(none)";
+ }
+ }
+
+ return (txt);
+
+}
+
void
Host::setIdentifier(const uint8_t* identifier, const size_t len,
const IdentifierType& type) {
}
}
-std::string
-Host::getIdentifierAsText() const {
- std::string txt;
- if (hw_address_) {
- txt = "hwaddr=" + hw_address_->toText(false);
- } else {
- txt = "duid=";
- if (duid_) {
- txt += duid_->toText();
- } else {
- txt += "(none)";
- }
- }
-
- return (txt);
-}
-
std::string
Host::toText() const {
std::ostringstream s;
using specific HW address or DUID. The arguments specify the HW address and
DUID respectively. The argument specify the HW address and DUID respectively.
+% HOSTS_CFG_GET_ALL_IDENTIFIER get all hosts with reservations using identifier: %1
+This debug message is issued when retrieving reservations for all hosts
+identified by HW address or DUID. The argument holds both the identifier
+type and the value.
+
% HOSTS_CFG_GET_ALL_SUBNET_ID_ADDRESS6 get all hosts with reservations for subnet id %1 and IPv6 address %2
This debug message is issued when retrieving all hosts connected to
the specific subnet and having the specific IPv6 address reserved.