14#include <boost/foreach.hpp>
27 <<
" not found (" << map->getPosition() <<
")");
29 std::string str = value->stringValue();
32 }
catch (
const std::exception& ex) {
34 "invalid NameChangeRequest protocol (" << str
35 <<
") specified for parameter '" << name
36 <<
"' (" << value->getPosition() <<
")");
45 <<
" not found (" << map->getPosition() <<
")");
47 std::string str = value->stringValue();
50 }
catch (
const std::exception& ex) {
52 "invalid NameChangeRequest format (" << str
53 <<
") specified for parameter '" << name
54 <<
"' (" << value->getPosition() <<
")");
83 {
"ip-address", Element::string,
"127.0.0.1" },
84 {
"port", Element::integer,
"53001" },
85 {
"dns-server-timeout", Element::integer,
"500" },
86 {
"ncr-protocol", Element::string,
"UDP" },
87 {
"ncr-format", Element::string,
"JSON" }
92 {
"digest-bits", Element::integer,
"0" }
106 {
"key-name", Element::string,
"" }
111 {
"hostname", Element::string,
"" },
112 {
"port", Element::integer,
"53" },
113 {
"key-name", Element::string,
"" }
129 if (global->find(
"tsig-keys")) {
135 global->set(
"tsig-keys", list);
154 if (domain->find(
"dns-servers")) {
166 const std::string& mgr_name,
170 if (!global->find(mgr_name)) {
173 global->set(mgr_name, map);
178 boost::const_pointer_cast<Element>(global->get(mgr_name));
186 if (mgr->find(
"ddns-domains")) {
188 BOOST_FOREACH(
ElementPtr domain, domains->listValue()) {
212 ctx->setKeys(parser.
parse(keys));
220 ctx->setForwardMgr(mgr);
228 ctx->setReverseMgr(mgr);
235 uint32_t dns_server_timeout = 0;
239 ip_address = SimpleParser::getAddress(config,
"ip-address");
240 port = SimpleParser::getUint32(config,
"port");
241 dns_server_timeout = SimpleParser::getUint32(config,
"dns-server-timeout");
243 ncr_protocol = getProtocol(config,
"ncr-protocol");
247 <<
" is not yet supported ("
248 << config->get(
"ncr-protocol")->getPosition() <<
")");
251 ncr_format = getFormat(config,
"ncr-format");
255 <<
" is not yet supported"
256 <<
" (" << config->get(
"ncr-format")->getPosition() <<
")");
261 ctx->setContext(user);
266 if (socket->getType() != Element::map) {
268 ", i.e. a structure defined within { }");
270 ctx->setControlSocketInfo(socket);
279 hooks_parser.
parse(libraries, hooks);
286 ncr_protocol, ncr_format));
288 ctx->getD2Params() = params;
294 HooksManager::prepareUnloadLibraries();
295 static_cast<void>(HooksManager::unloadLibraries());
The IOAddress class represents an IP addresses (version agnostic)
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 size_t setListDefaults(isc::data::ConstElementPtr list, const SimpleDefaults &default_values)
Sets the default values for all entries in a list.
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.
void verifyLibraries(const isc::data::Element::Position &position, bool multi_threading_enabled) const
Verifies that libraries stored in libraries_ are valid.
void loadLibraries(bool multi_threading_enabled) const
Commits hooks libraries configuration.
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< 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.