uint32_values_));
parser = code_parser;
} else {
- isc_throw(DhcpConfigError, "invalid parameter: " << entry);
+ isc_throw(DhcpConfigError, "unsupported parameter: " << entry
+ << " (" << param.second->getPosition() << ")");
}
parser->build(param.second);
parser->commit();
}
+ // Try to obtain the pool parameters. It will throw an exception if any
+ // of the required parameters are not present or invalid.
+ std::string addr_str;
+ uint32_t prefix_len;
+ uint32_t delegated_len;
try {
- // We should now have all of the pool elements we need to create
- // the pool. Fetch them and pass them into the Pool6 constructor.
- // The constructor is expected to enforce any value validation.
- const std::string addr_str = string_values_->getParam("prefix");
- IOAddress addr(addr_str);
-
- uint32_t prefix_len = uint32_values_->getParam("prefix-len");
-
- uint32_t delegated_len = uint32_values_->getParam("delegated-len");
+ addr_str = string_values_->getParam("prefix");
+ prefix_len = uint32_values_->getParam("prefix-len");
+ delegated_len = uint32_values_->getParam("delegated-len");
// Attempt to construct the local pool.
- pool_.reset(new Pool6(Lease::TYPE_PD, addr, prefix_len,
- delegated_len));
+ pool_.reset(new Pool6(Lease::TYPE_PD, IOAddress(addr_str),
+ prefix_len, delegated_len));
} catch (const std::exception& ex) {
- isc_throw(isc::dhcp::DhcpConfigError,
- "PdPoolParser failed to build pool: " << ex.what());
+ // Some parameters don't exist or are invalid. Since we are not
+ // aware whether they don't exist or are invalid, let's append
+ // the position of the pool map element.
+ isc_throw(isc::dhcp::DhcpConfigError, ex.what()
+ << " (" << pd_pool_->getPosition() << ")");
}
}
// Make sure we have a configuration elements to parse.
if (!pd_pool_list) {
isc_throw(DhcpConfigError,
- "PdPoolListParser: list of pool definitions is empty");
+ "PdPoolListParser: list of pool definitions is NULL");
}
// Loop through the list of pd pools.
if (!sub6ptr) {
// If we hit this, it is a programming error.
isc_throw(Unexpected,
- "Invalid cast in Subnet4ConfigParser::commit");
+ "Invalid cast in Subnet6ConfigParser::commit");
}
// Set relay infomation if it was provided
global_context_,
Dhcp6OptionDataParser::factory);
} else {
- isc_throw(NotImplemented,
- "parser error: Subnet6 parameter not supported: " << config_id);
+ isc_throw(NotImplemented, "unsupported parameter: " << config_id);
}
return (parser);