Commit baa0e92e authored by Thomas Markwalder's avatar Thomas Markwalder
Browse files

[4202] Replaced underscore with hypen in src/bin/d2 for kea-ddns parameters

    Updated D2 server code, spec file, and tests with hypenated
    configuration elements names
parent 2e47244a
......@@ -33,8 +33,8 @@ typedef std::vector<uint8_t> ByteAddress;
D2CfgContext::D2CfgContext()
: d2_params_(new D2Params()),
forward_mgr_(new DdnsDomainListMgr("forward_mgr")),
reverse_mgr_(new DdnsDomainListMgr("reverse_mgr")),
forward_mgr_(new DdnsDomainListMgr("forward-ddns")),
reverse_mgr_(new DdnsDomainListMgr("reverse-ddns")),
keys_(new TSIGKeyInfoMap()) {
}
......@@ -65,9 +65,9 @@ const char* D2CfgMgr::IPV6_REV_ZONE_SUFFIX = "ip6.arpa.";
D2CfgMgr::D2CfgMgr() : DCfgMgrBase(DCfgContextBasePtr(new D2CfgContext())) {
// TSIG keys need to parse before the Domains, so we can catch Domains
// that specify undefined keys. Create the necessary parsing order now.
addToParseOrder("tsig_keys");
addToParseOrder("forward_ddns");
addToParseOrder("reverse_ddns");
addToParseOrder("tsig-keys");
addToParseOrder("forward-ddns");
addToParseOrder("reverse-ddns");
}
D2CfgMgr::~D2CfgMgr() {
......@@ -218,7 +218,7 @@ D2CfgMgr::buildParams(isc::data::ConstElementPtr params_config) {
isc::dhcp::StringStoragePtr strings = context->getStringStorage();
asiolink::IOAddress ip_address(D2Params::DFT_IP_ADDRESS);
std::string ip_address_str = strings->getOptionalParam("ip_address",
std::string ip_address_str = strings->getOptionalParam("ip-address",
D2Params::
DFT_IP_ADDRESS);
try {
......@@ -226,12 +226,12 @@ D2CfgMgr::buildParams(isc::data::ConstElementPtr params_config) {
} catch (const std::exception& ex) {
isc_throw(D2CfgError, "IP address invalid : \""
<< ip_address_str << "\" ("
<< strings->getPosition("ip_address") << ")");
<< strings->getPosition("ip-address") << ")");
}
if ((ip_address.toText() == "0.0.0.0") || (ip_address.toText() == "::")) {
isc_throw(D2CfgError, "IP address cannot be \"" << ip_address << "\" ("
<< strings->getPosition("ip_address") << ")");
<< strings->getPosition("ip-address") << ")");
}
// Fetch and validate port.
......@@ -245,12 +245,12 @@ D2CfgMgr::buildParams(isc::data::ConstElementPtr params_config) {
// Fetch and validate dns_server_timeout.
uint32_t dns_server_timeout
= ints->getOptionalParam("dns_server_timeout",
= ints->getOptionalParam("dns-server-timeout",
D2Params::DFT_DNS_SERVER_TIMEOUT);
if (dns_server_timeout < 1) {
isc_throw(D2CfgError, "DNS server timeout must be larger than 0 ("
<< ints->getPosition("dns_server_timeout") << ")");
<< ints->getPosition("dns-server-timeout") << ")");
}
// Fetch and validate ncr_protocol.
......@@ -258,20 +258,20 @@ D2CfgMgr::buildParams(isc::data::ConstElementPtr params_config) {
try {
ncr_protocol = dhcp_ddns::
stringToNcrProtocol(strings->
getOptionalParam("ncr_protocol",
getOptionalParam("ncr-protocol",
D2Params::
DFT_NCR_PROTOCOL));
} catch (const std::exception& ex) {
isc_throw(D2CfgError, "ncr_protocol : "
isc_throw(D2CfgError, "ncr-protocol : "
<< ex.what() << " ("
<< strings->getPosition("ncr_protocol") << ")");
<< strings->getPosition("ncr-protocol") << ")");
}
if (ncr_protocol != dhcp_ddns::NCR_UDP) {
isc_throw(D2CfgError, "ncr_protocol : "
isc_throw(D2CfgError, "ncr-protocol : "
<< dhcp_ddns::ncrProtocolToString(ncr_protocol)
<< " is not yet supported ("
<< strings->getPosition("ncr_protocol") << ")");
<< strings->getPosition("ncr-protocol") << ")");
}
// Fetch and validate ncr_format.
......@@ -279,20 +279,20 @@ D2CfgMgr::buildParams(isc::data::ConstElementPtr params_config) {
try {
ncr_format = dhcp_ddns::
stringToNcrFormat(strings->
getOptionalParam("ncr_format",
getOptionalParam("ncr-format",
D2Params::
DFT_NCR_FORMAT));
} catch (const std::exception& ex) {
isc_throw(D2CfgError, "ncr_format : "
isc_throw(D2CfgError, "ncr-format : "
<< ex.what() << " ("
<< strings->getPosition("ncr_format") << ")");
<< strings->getPosition("ncr-format") << ")");
}
if (ncr_format != dhcp_ddns::FMT_JSON) {
isc_throw(D2CfgError, "NCR Format:"
<< dhcp_ddns::ncrFormatToString(ncr_format)
<< " is not yet supported ("
<< strings->getPosition("ncr_format") << ")");
<< strings->getPosition("ncr-format") << ")");
}
// Attempt to create the new client config. This ought to fly as
......@@ -312,24 +312,24 @@ D2CfgMgr::createConfigParser(const std::string& config_id,
// Create parser instance based on element_id.
isc::dhcp::ParserPtr parser;
if ((config_id.compare("port") == 0) ||
(config_id.compare("dns_server_timeout") == 0)) {
(config_id.compare("dns-server-timeout") == 0)) {
parser.reset(new isc::dhcp::Uint32Parser(config_id,
context->getUint32Storage()));
} else if ((config_id.compare("ip_address") == 0) ||
(config_id.compare("ncr_protocol") == 0) ||
(config_id.compare("ncr_format") == 0)) {
} else if ((config_id.compare("ip-address") == 0) ||
(config_id.compare("ncr-protocol") == 0) ||
(config_id.compare("ncr-format") == 0)) {
parser.reset(new isc::dhcp::StringParser(config_id,
context->getStringStorage()));
} else if (config_id == "forward_ddns") {
parser.reset(new DdnsDomainListMgrParser("forward_mgr",
} else if (config_id == "forward-ddns") {
parser.reset(new DdnsDomainListMgrParser("forward-ddns",
context->getForwardMgr(),
context->getKeys()));
} else if (config_id == "reverse_ddns") {
parser.reset(new DdnsDomainListMgrParser("reverse_mgr",
} else if (config_id == "reverse-ddns") {
parser.reset(new DdnsDomainListMgrParser("reverse-ddns",
context->getReverseMgr(),
context->getKeys()));
} else if (config_id == "tsig_keys") {
parser.reset(new TSIGKeyInfoListParser("tsig_key_list",
} else if (config_id == "tsig-keys") {
parser.reset(new TSIGKeyInfoListParser("tsig-key-list",
context->getKeys()));
} else {
isc_throw(NotImplemented,
......
......@@ -118,12 +118,12 @@ std::string
D2Params::toText() const {
std::ostringstream stream;
stream << ", ip_address: " << ip_address_.toText()
stream << ", ip-address: " << ip_address_.toText()
<< ", port: " << port_
<< ", dns_server_timeout_: " << dns_server_timeout_
<< ", ncr_protocol: "
<< ", dns-server-timeout_: " << dns_server_timeout_
<< ", ncr-protocol: "
<< dhcp_ddns::ncrProtocolToString(ncr_protocol_)
<< ", ncr_format: " << ncr_format_
<< ", ncr-format: " << ncr_format_
<< dhcp_ddns::ncrFormatToString(ncr_format_);
return (stream.str());
......@@ -382,7 +382,7 @@ TSIGKeyInfoParser::build(isc::data::ConstElementPtr key_config) {
try {
pos["name"] = local_scalars_.getParam("name", name);
pos["algorithm"] = local_scalars_.getParam("algorithm", algorithm);
pos["digest_bits"] = local_scalars_.getParam("digest_bits", digestbits,
pos["digest-bits"] = local_scalars_.getParam("digest-bits", digestbits,
DCfgContextBase::OPTIONAL);
pos["secret"] = local_scalars_.getParam("secret", secret);
} catch (const std::exception& ex) {
......@@ -415,34 +415,34 @@ TSIGKeyInfoParser::build(isc::data::ConstElementPtr key_config) {
if (digestbits > 0) {
if ((digestbits % 8) != 0) {
isc_throw(D2CfgError, "Invalid TSIG key digest_bits specified : " <<
digestbits << " (" << pos["digest_bits"] << ")");
digestbits << " (" << pos["digest-bits"] << ")");
}
if (digestbits < 80) {
isc_throw(D2CfgError, "TSIG key digest_bits too small : " <<
digestbits << " (" << pos["digest_bits"] << ")");
digestbits << " (" << pos["digest-bits"] << ")");
}
if (boost::iequals(algorithm, TSIGKeyInfo::HMAC_SHA224_STR)) {
if (digestbits < 112) {
isc_throw(D2CfgError, "TSIG key digest_bits too small : " <<
digestbits << " (" << pos["digest_bits"]
digestbits << " (" << pos["digest-bits"]
<< ")");
}
} else if (boost::iequals(algorithm, TSIGKeyInfo::HMAC_SHA256_STR)) {
if (digestbits < 128) {
isc_throw(D2CfgError, "TSIG key digest_bits too small : " <<
digestbits << " (" << pos["digest_bits"]
digestbits << " (" << pos["digest-bits"]
<< ")");
}
} else if (boost::iequals(algorithm, TSIGKeyInfo::HMAC_SHA384_STR)) {
if (digestbits < 192) {
isc_throw(D2CfgError, "TSIG key digest_bits too small : " <<
digestbits << " (" << pos["digest_bits"]
digestbits << " (" << pos["digest-bits"]
<< ")");
}
} else if (boost::iequals(algorithm, TSIGKeyInfo::HMAC_SHA512_STR)) {
if (digestbits < 256) {
isc_throw(D2CfgError, "TSIG key digest_bits too small : " <<
digestbits << " (" << pos["digest_bits"]
digestbits << " (" << pos["digest-bits"]
<< ")");
}
}
......@@ -483,7 +483,7 @@ TSIGKeyInfoParser::createConfigParser(const std::string& config_id,
(config_id == "secret")) {
parser = new isc::dhcp::StringParser(config_id,
local_scalars_.getStringStorage());
} else if (config_id == "digest_bits") {
} else if (config_id == "digest-bits") {
parser = new isc::dhcp::Uint32Parser(config_id,
local_scalars_.getUint32Storage());
} else {
......@@ -588,7 +588,7 @@ DnsServerInfoParser::build(isc::data::ConstElementPtr server_config) {
// local storage. They're all optional, so no try-catch here.
pos["hostname"] = local_scalars_.getParam("hostname", hostname,
DCfgContextBase::OPTIONAL);
pos["ip_address"] = local_scalars_.getParam("ip_address", ip_address,
pos["ip-address"] = local_scalars_.getParam("ip-address", ip_address,
DCfgContextBase::OPTIONAL);
pos["port"] = local_scalars_.getParam("port", port,
DCfgContextBase::OPTIONAL);
......@@ -632,7 +632,7 @@ DnsServerInfoParser::build(isc::data::ConstElementPtr server_config) {
serverInfo.reset(new DnsServerInfo(hostname, io_addr, port));
} catch (const isc::asiolink::IOError& ex) {
isc_throw(D2CfgError, "Dns Server : invalid IP address : "
<< ip_address << " (" << pos["ip_address"] << ")");
<< ip_address << " (" << pos["ip-address"] << ")");
}
}
......@@ -648,7 +648,7 @@ DnsServerInfoParser::createConfigParser(const std::string& config_id,
// Based on the configuration id of the element, create the appropriate
// parser. Scalars are set to use the parser's local scalar storage.
if ((config_id == "hostname") ||
(config_id == "ip_address")) {
(config_id == "ip-address")) {
parser = new isc::dhcp::StringParser(config_id,
local_scalars_.getStringStorage());
} else if (config_id == "port") {
......@@ -760,7 +760,7 @@ DdnsDomainParser::build(isc::data::ConstElementPtr domain_config) {
// Any required that are missing will throw.
try {
pos["name"] = local_scalars_.getParam("name", name);
pos["key_name"] = local_scalars_.getParam("key_name", key_name,
pos["key-name"] = local_scalars_.getParam("key-name", key_name,
DCfgContextBase::OPTIONAL);
} catch (const std::exception& ex) {
isc_throw(D2CfgError, "DdnsDomain incomplete : " << ex.what()
......@@ -796,7 +796,7 @@ DdnsDomainParser::build(isc::data::ConstElementPtr domain_config) {
if (!tsig_key_info) {
isc_throw(D2CfgError, "DdnsDomain : " << name
<< " specifies an undefined key: " << key_name
<< " (" << pos["key_name"] << ")");
<< " (" << pos["key-name"] << ")");
}
}
......@@ -814,10 +814,10 @@ DdnsDomainParser::createConfigParser(const std::string& config_id,
// Based on the configuration id of the element, create the appropriate
// parser. Scalars are set to use the parser's local scalar storage.
if ((config_id == "name") ||
(config_id == "key_name")) {
(config_id == "key-name")) {
parser = new isc::dhcp::StringParser(config_id,
local_scalars_.getStringStorage());
} else if (config_id == "dns_servers") {
} else if (config_id == "dns-servers") {
// Server list parser is given in our local server storage. It will pass
// this down to its server parsers and is where they will write their
// server instances upon commit.
......@@ -918,7 +918,7 @@ DdnsDomainListMgrParser::createConfigParser(const std::string& config_id,
const isc::data::Element::
Position& pos) {
DhcpConfigParser* parser = NULL;
if (config_id == "ddns_domains") {
if (config_id == "ddns-domains") {
// Domain list parser is given our local domain storage. It will pass
// this down to its domain parsers and is where they will write their
// domain instances upon commit.
......
......@@ -87,9 +87,9 @@ namespace d2 {
/// @code
/// {
/// "interface" : "eth1" ,
/// "ip_address" : "192.168.1.33" ,
/// "ip-address" : "192.168.1.33" ,
/// "port" : 88 ,
/// "tsig_keys":
/// "tsig-keys":
//// [
/// {
/// "name": "d2_key.tmark.org" ,
......@@ -97,14 +97,14 @@ namespace d2 {
/// "secret": "0123456989"
/// }
/// ],
/// "forward_ddns" :
/// "forward-ddns" :
/// {
/// "ddns_domains":
/// "ddns-domains":
/// [
/// {
/// "name": "tmark.org." ,
/// "key_name": "d2_key.tmark.org" ,
/// "dns_servers" :
/// "key-name": "d2_key.tmark.org" ,
/// "dns-servers" :
/// [
/// { "hostname": "fserver.tmark.org" },
/// { "hostname": "f2server.tmark.org" }
......@@ -112,24 +112,24 @@ namespace d2 {
/// },
/// {
/// "name": "pub.tmark.org." ,
/// "key_name": "d2_key.tmark.org" ,
/// "dns_servers" :
/// "key-name": "d2_key.tmark.org" ,
/// "dns-servers" :
/// [
/// { "hostname": "f3server.tmark.org" }
/// ]
/// }
/// ]
/// },
/// "reverse_ddns" :
/// "reverse-ddns" :
/// {
/// "ddns_domains":
/// "ddns-domains":
/// [
/// {
/// "name": " 0.168.192.in.addr.arpa." ,
/// "key_name": "d2_key.tmark.org" ,
/// "dns_servers" :
/// "key-name": "d2_key.tmark.org" ,
/// "dns-servers" :
/// [
/// { "ip_address": "127.0.0.101" , "port": 100 }
/// { "ip-address": "127.0.0.101" , "port": 100 }
/// ]
/// }
/// ]
......@@ -742,7 +742,7 @@ typedef boost::shared_ptr<DScalarContext> DScalarContextPtr;
/// @brief Parser for TSIGKeyInfo
///
/// This class parses the configuration element "tsig_key" defined in
/// This class parses the configuration element "tsig-key" defined in
/// src/bin/d2/dhcp-ddns.spec and creates an instance of a TSIGKeyInfo.
class TSIGKeyInfoParser : public isc::dhcp::DhcpConfigParser {
public:
......@@ -758,16 +758,16 @@ public:
/// @brief Destructor
virtual ~TSIGKeyInfoParser();
/// @brief Performs the actual parsing of the given "tsig_key" element.
/// @brief Performs the actual parsing of the given "tsig-key" element.
///
/// Parses a configuration for the elements needed to instantiate a
/// TSIGKeyInfo, validates those entries, creates a TSIGKeyInfo instance
/// then attempts to add to a list of keys
///
/// @param key_config is the "tsig_key" configuration to parse
/// @param key_config is the "tsig-key" configuration to parse
virtual void build(isc::data::ConstElementPtr key_config);
/// @brief Creates a parser for the given "tsig_key" member element id.
/// @brief Creates a parser for the given "tsig-key" member element id.
///
/// The key elements currently supported are(see dhcp-ddns.spec):
/// 1. name
......@@ -776,7 +776,7 @@ public:
/// 4. secret
///
/// @param config_id is the "item_name" for a specific member element of
/// the "tsig_key" specification.
/// the "tsig-key" specification.
/// @param pos position within the configuration text (or file) of element
/// to be parsed. This is passed for error messaging.
///
......@@ -811,7 +811,7 @@ private:
/// @brief Parser for a list of TSIGKeyInfos
///
/// This class parses a list of "tsig_key" configuration elements.
/// This class parses a list of "tsig-key" configuration elements.
/// (see src/bin/d2/dhcp-ddns.spec). The TSIGKeyInfo instances are added
/// to the given storage upon commit.
class TSIGKeyInfoListParser : public isc::dhcp::DhcpConfigParser {
......@@ -827,7 +827,7 @@ public:
/// @brief Destructor
virtual ~TSIGKeyInfoListParser();
/// @brief Performs the parsing of the given list "tsig_key" elements.
/// @brief Performs the parsing of the given list "tsig-key" elements.
///
/// It iterates over each key entry in the list:
/// 1. Instantiate a TSIGKeyInfoParser for the entry
......@@ -865,7 +865,7 @@ private:
/// @brief Parser for DnsServerInfo
///
/// This class parses the configuration element "dns_server" defined in
/// This class parses the configuration element "dns-server" defined in
/// src/bin/d2/dhcp-ddns.spec and creates an instance of a DnsServerInfo.
class DnsServerInfoParser : public isc::dhcp::DhcpConfigParser {
public:
......@@ -882,13 +882,13 @@ public:
/// @brief Destructor
virtual ~DnsServerInfoParser();
/// @brief Performs the actual parsing of the given "dns_server" element.
/// @brief Performs the actual parsing of the given "dns-server" element.
///
/// Parses a configuration for the elements needed to instantiate a
/// DnsServerInfo, validates those entries, creates a DnsServerInfo instance
/// then attempts to add to a list of servers.
///
/// @param server_config is the "dns_server" configuration to parse
/// @param server_config is the "dns-server" configuration to parse
///
/// @throw D2CfgError if:
/// -# hostname is not blank, hostname is not yet supported
......@@ -896,7 +896,7 @@ public:
/// -# port is 0
virtual void build(isc::data::ConstElementPtr server_config);
/// @brief Creates a parser for the given "dns_server" member element id.
/// @brief Creates a parser for the given "dns-server" member element id.
///
/// The server elements currently supported are(see dhcp-ddns.spec):
/// 1. hostname
......@@ -904,7 +904,7 @@ public:
/// 3. port
///
/// @param config_id is the "item_name" for a specific member element of
/// the "dns_server" specification.
/// the "dns-server" specification.
/// @param pos position within the configuration text (or file) of element
/// to be parsed. This is passed for error messaging.
///
......@@ -939,7 +939,7 @@ private:
/// @brief Parser for a list of DnsServerInfos
///
/// This class parses a list of "dns_server" configuration elements.
/// This class parses a list of "dns-server" configuration elements.
/// (see src/bin/d2/dhcp-ddns.spec). The DnsServerInfo instances are added
/// to the given storage upon commit.
class DnsServerInfoListParser : public isc::dhcp::DhcpConfigParser {
......@@ -956,7 +956,7 @@ public:
/// @brief Destructor
virtual ~DnsServerInfoListParser();
/// @brief Performs the actual parsing of the given list "dns_server"
/// @brief Performs the actual parsing of the given list "dns-server"
/// elements.
/// It iterates over each server entry in the list:
/// 1. Instantiate a DnsServerInfoParser for the entry
......@@ -966,7 +966,7 @@ public:
/// The net effect is to parse all of the server entries in the list
/// prepping them for commit.
///
/// @param server_list_config is the list of "dns_server" elements to parse.
/// @param server_list_config is the list of "dns-server" elements to parse.
virtual void build(isc::data::ConstElementPtr server_list_config);
/// @brief Commits the list of DnsServerInfos
......@@ -990,7 +990,7 @@ private:
/// @brief Parser for DdnsDomain
///
/// This class parses the configuration element "ddns_domain" defined in
/// This class parses the configuration element "ddns-domain" defined in
/// src/bin/d2/dhcp-ddns.spec and creates an instance of a DdnsDomain.
class DdnsDomainParser : public isc::dhcp::DhcpConfigParser {
public:
......@@ -998,7 +998,7 @@ public:
///
/// @param entry_name is an arbitrary label assigned to this configuration
/// definition. Since domains are specified in a list this value is likely
/// be something akin to "forward_ddns:0", set during parsing.
/// be something akin to "forward-ddns:0", set during parsing.
/// @param domains is a pointer to the storage area to which the parser
/// @param keys is a pointer to a map of the defined TSIG keys.
/// should commit the newly created DdnsDomain instance.
......@@ -1008,16 +1008,16 @@ public:
/// @brief Destructor
virtual ~DdnsDomainParser();
/// @brief Performs the actual parsing of the given "ddns_domain" element.
/// @brief Performs the actual parsing of the given "ddns-domain" element.
///
/// Parses a configuration for the elements needed to instantiate a
/// DdnsDomain, validates those entries, creates a DdnsDomain instance
/// then attempts to add it to a list of domains.
///
/// @param domain_config is the "ddns_domain" configuration to parse
/// @param domain_config is the "ddns-domain" configuration to parse
virtual void build(isc::data::ConstElementPtr domain_config);
/// @brief Creates a parser for the given "ddns_domain" member element id.
/// @brief Creates a parser for the given "ddns-domain" member element id.
///
/// The domain elements currently supported are(see dhcp-ddns.spec):
/// 1. name
......@@ -1025,7 +1025,7 @@ public:
/// 3. dns_servers
///
/// @param config_id is the "item_name" for a specific member element of
/// the "ddns_domain" specification.
/// the "ddns-domain" specification.
/// @param pos position within the configuration text (or file) of element
/// to be parsed. This is passed for error messaging.
///
......@@ -1071,7 +1071,7 @@ private:
/// @brief Parser for a list of DdnsDomains
///
/// This class parses a list of "ddns_domain" configuration elements.
/// This class parses a list of "ddns-domain" configuration elements.
/// (see src/bin/d2/dhcp-ddns.spec). The DdnsDomain instances are added
/// to the given storage upon commit.
class DdnsDomainListParser : public isc::dhcp::DhcpConfigParser {
......@@ -1089,7 +1089,7 @@ public:
/// @brief Destructor
virtual ~DdnsDomainListParser();
/// @brief Performs the actual parsing of the given list "ddns_domain"
/// @brief Performs the actual parsing of the given list "ddns-domain"
/// elements.
/// It iterates over each domain entry in the list:
/// 1. Instantiate a DdnsDomainParser for the entry
......@@ -1099,7 +1099,7 @@ public:
/// The net effect is to parse all of the domain entries in the list
/// prepping them for commit.
///
/// @param domain_list_config is the list of "ddns_domain" elements to
/// @param domain_list_config is the list of "ddns-domain" elements to
/// parse.
virtual void build(isc::data::ConstElementPtr domain_list_config);
......@@ -1130,8 +1130,8 @@ private:
/// @brief Parser for DdnsDomainListMgr
///
/// This class parses the configuration elements "forward_ddns" and
/// "reverse_ddns" as defined in src/bin/d2/dhcp-ddns.spec. It populates the
/// This class parses the configuration elements "forward-ddns" and
/// "reverse-ddns" as defined in src/bin/d2/dhcp-ddns.spec. It populates the
/// given DdnsDomainListMgr with parsed information upon commit. Note that
/// unlike other parsers, this parser does NOT instantiate the final object
/// during the commit phase, it populates it. It must pre-exist.
......
......@@ -5,7 +5,7 @@
"module_description": "DHPC-DDNS Service",
"config_data": [
{
"item_name": "ip_address",
"item_name": "ip-address",
"item_type": "string",
"item_optional": false,
"item_default": "127.0.0.1"
......@@ -17,31 +17,31 @@
"item_default": 53001
},
{
"item_name": "dns_server_timeout",
"item_name": "dns-server-timeout",
"item_type": "integer",
"item_optional": true,
"item_default": 100
},
{
"item_name": "ncr_protocol",
"item_name": "ncr-protocol",
"item_type": "string",
"item_optional": true,
"item_default": "UDP"
},
{
"item_name": "ncr_format",
"item_name": "ncr-format",
"item_type": "string",
"item_optional": true,
"item_default": "JSON"
},
{
"item_name": "tsig_keys",
"item_name": "tsig-keys",
"item_type": "list",
"item_optional": true,
"item_default": [],
"list_item_spec":
{
"item_name": "tsig_key",
"item_name": "tsig-key",
"item_type": "map",
"item_optional": false,
"item_default": {"algorithm" : "HMAC-MD5"},
......@@ -59,7 +59,7 @@
"item_default": ""
},
{
"item_name": "digest_bits",
"item_name": "digest-bits",
"item_type": "integer",
"item_optional": true,
"item_default": 0
......@@ -73,19 +73,19 @@
}
},
{
"item_name": "forward_ddns",
"item_name": "forward-ddns",
"item_type": "map",
"item_optional": true,
"item_default": {},
"map_item_spec": [
{
"item_name": "ddns_domains",
"item_name": "ddns-domains",
"item_type": "list",
"item_optional": false,
"item_default": [],
"list_item_spec":
{
"item_name": "ddns_domain",
"item_name": "ddns-domain",
"item_type": "map",
"item_optional": false,
"item_default": {},
......@@ -98,20 +98,20 @@
},
{
"item_name": "key_name",
"item_name": "key-name",
"item_type": "string",
"item_optional": true,
"item_default": ""