28 <<
" not found (" << map->getPosition() <<
")");
30 std::string str = value->stringValue();
33 }
catch (
const std::exception& ex) {
35 "invalid NameChangeRequest protocol (" << str
36 <<
") specified for parameter '" << name
37 <<
"' (" << value->getPosition() <<
")");
46 <<
" not found (" << map->getPosition() <<
")");
48 std::string str = value->stringValue();
51 }
catch (
const std::exception& ex) {
53 "invalid NameChangeRequest format (" << str
54 <<
") specified for parameter '" << name
55 <<
"' (" << value->getPosition() <<
")");
130 if (global->find(
"tsig-keys")) {
136 global->set(
"tsig-keys", list);
155 if (domain->find(
"dns-servers")) {
167 const std::string& mgr_name,
171 if (!global->find(mgr_name)) {
174 global->set(mgr_name, map);
179 boost::const_pointer_cast<Element>(global->get(mgr_name));
187 if (mgr->find(
"ddns-domains")) {
189 for (
auto const& domain : domains->listValue()) {
213 ctx->setKeys(parser.
parse(keys));
221 ctx->setForwardMgr(mgr);
229 ctx->setReverseMgr(mgr);
236 uint32_t dns_server_timeout = 0;
244 ncr_protocol = getProtocol(config,
"ncr-protocol");
248 <<
" is not yet supported ("
249 << config->get(
"ncr-protocol")->getPosition() <<
")");
252 ncr_format = getFormat(config,
"ncr-format");
256 <<
" is not yet supported"
257 <<
" (" << config->get(
"ncr-format")->getPosition() <<
")");
262 ctx->setContext(user);
268 if (control_socket) {
273 if (control_sockets) {
277 "Specified control-sockets is expected to be a list");
279 bool seen_unix(
false);
280 bool seen_http(
false);
285 "Specified control-sockets is expected to be a list of maps");
290 "'socket-type' parameter is mandatory in control-sockets items");
295 "'socket-type' parameter is expected to be a string");
297 std::string type = socket_type->stringValue();
298 if (type ==
"unix") {
301 "control socket of type 'unix' already configured");
304 ctx->setUnixControlSocketInfo(socket);
305 }
else if ((type ==
"http") || (type ==
"https")) {
308 "control socket of type 'http' or 'https'"
309 " already configured");
314 ctx->setHttpControlSocketInfo(http_config);
318 "unsupported 'socket-type': '" << type
319 <<
"' not 'unix', 'http' or 'https'");
330 hooks_parser.
parse(libraries, hooks);
331 libraries.verifyLibraries(hooks->getPosition(),
false);
337 ncr_protocol, ncr_format));
339 ctx->getD2Params() = params;
345 HooksManager::prepareUnloadLibraries();
346 static_cast<void>(HooksManager::unloadLibraries());
348 libraries.loadLibraries(
false);
The IOAddress class represents an IP addresses (version agnostic)
static IOServiceMgr & instance()
Access the IOServiceMgr singleton instance.
HTTP command config aka HTTP control socket info class.
Exception thrown when the error during configuration handling occurs.
Acts as a storage vault for D2 global scalar parameters.
static const data::SimpleDefaults D2_GLOBAL_DEFAULTS
This table defines default global values for D2.
static size_t setManagerDefaults(data::ElementPtr global, const std::string &mgr_name, const data::SimpleDefaults &mgr_defaults)
Adds default values to a DDNS Domain List Manager.
static const data::SimpleDefaults TSIG_KEY_DEFAULTS
Supplies defaults for ddns-domains list elements (i.e. DdnsDomains)
static size_t setDdnsDomainDefaults(data::ElementPtr domain, const data::SimpleDefaults &domain_defaults)
Adds default values to a DDNS Domain element.
void parse(const D2CfgContextPtr &ctx, const isc::data::ConstElementPtr &config, bool check_only)
Parses the whole D2 configuration.
static size_t setAllDefaults(data::ElementPtr global)
Sets all defaults for D2 configuration.
static const data::SimpleDefaults DNS_SERVER_DEFAULTS
Supplies defaults for optional values DdnsDomain entries.
static const data::SimpleDefaults DDNS_DOMAIN_MGR_DEFAULTS
Supplies defaults for optional values in DDNS domain managers (e.g.
static const data::SimpleDefaults DDNS_DOMAIN_DEFAULTS
Supplies defaults for ddns-domains list elements (i.e. DdnsDomains)
Parser for DdnsDomainListMgr.
DdnsDomainListMgrPtr parse(data::ConstElementPtr mgr_config, const std::string &mgr_name, const TSIGKeyInfoMapPtr keys)
Performs the actual parsing of the given manager element.
Parser for a list of TSIGKeyInfos.
TSIGKeyInfoMapPtr parse(data::ConstElementPtr key_list_config)
Performs the parsing of the given list "tsig-key" elements.
static ElementPtr createList(const Position &pos=ZERO_POSITION())
Creates an empty ListElement type ElementPtr.
static size_t setListDefaults(isc::data::ConstElementPtr list, const SimpleDefaults &default_values)
Sets the default values for all entries in a list.
static isc::asiolink::IOAddress getAddress(const ConstElementPtr &scope, const std::string &name)
Returns a IOAddress parameter from a scope.
uint32_t getUint32(isc::data::ConstElementPtr scope, const std::string &name)
Returns a value converted to uint32_t.
static size_t setDefaults(isc::data::ElementPtr scope, const SimpleDefaults &default_values)
Sets the default values.
Wrapper class that holds hooks libraries configuration.
const isc::hooks::HookLibsCollection & get() const
Provides access to the configured hooks libraries.
Parser for hooks library list.
void parse(HooksConfig &libraries, isc::data::ConstElementPtr value)
Parses parameters value.
A collection of classes for housing and parsing the application configuration necessary for the DHCP-...
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< HttpCommandConfig > HttpCommandConfigPtr
Pointer to a HttpCommandConfig object.
boost::shared_ptr< DdnsDomainListMgr > DdnsDomainListMgrPtr
Defines a pointer for DdnsDomain instances.
boost::shared_ptr< D2CfgContext > D2CfgContextPtr
Pointer to a configuration context.
boost::shared_ptr< D2Params > D2ParamsPtr
Defines a pointer for D2Params instances.
boost::shared_ptr< const Element > ConstElementPtr
std::vector< SimpleDefault > SimpleDefaults
This specifies all default values in a given scope (e.g. a subnet).
boost::shared_ptr< Element > ElementPtr
NameChangeProtocol stringToNcrProtocol(const std::string &protocol_str)
Function which converts text labels to NameChangeProtocol enums.
NameChangeFormat
Defines the list of data wire formats supported.
NameChangeProtocol
Defines the list of socket protocols supported.
std::string ncrProtocolToString(NameChangeProtocol protocol)
Function which converts NameChangeProtocol enums to text labels.
NameChangeFormat stringToNcrFormat(const std::string &fmt_str)
Function which converts labels to NameChangeFormat enum values.
std::string ncrFormatToString(NameChangeFormat format)
Function which converts NameChangeFormat enums to text labels.
Defines the logger used by the top-level component of kea-lfc.
static data::ElementPtr toElement(data::ConstElementPtr map)
Copy an Element map.