From f5f56e1a1c4d9e9496fcb9d81131066a964ccd23 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 14:15:43 +0200 Subject: Adding upstream version 2.4.1. Signed-off-by: Daniel Baumann --- src/lib/d2srv/d2_simple_parser.h | 96 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/lib/d2srv/d2_simple_parser.h (limited to 'src/lib/d2srv/d2_simple_parser.h') diff --git a/src/lib/d2srv/d2_simple_parser.h b/src/lib/d2srv/d2_simple_parser.h new file mode 100644 index 0000000..49f0d8a --- /dev/null +++ b/src/lib/d2srv/d2_simple_parser.h @@ -0,0 +1,96 @@ +// Copyright (C) 2017-2021 Internet Systems Consortium, Inc. ("ISC") +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#ifndef D2_SIMPLE_PARSER_H +#define D2_SIMPLE_PARSER_H + +#include +#include + +namespace isc { +namespace d2 { + +/// @brief SimpleParser specialized for D2 +/// +/// This class is a @ref isc::data::SimpleParser dedicated to D2. +/// In particular, it contains all the default values and names of the +/// parameters that are to be derived (inherited) between scopes. +/// For the actual values, see @file d2_simple_parser.cc +class D2SimpleParser : public data::SimpleParser { +public: + + /// @brief Sets all defaults for D2 configuration + /// + /// This method sets global and element defaults. + /// + /// @param global scope to be filled in with defaults. + /// @return number of default values added + static size_t setAllDefaults(data::ElementPtr global); + + // see d2_simple_parser.cc for comments for those parameters + static const data::SimpleDefaults D2_GLOBAL_DEFAULTS; + + // Defaults for tsig-keys list elements, TSIGKeyInfos + static const data::SimpleDefaults TSIG_KEY_DEFAULTS; + + // Defaults for -ddns elements, DdnsDomainListMgrs + static const data::SimpleDefaults DDNS_DOMAIN_MGR_DEFAULTS; + + // Defaults for ddns-domains list elements, DdnsDomains + static const data::SimpleDefaults DDNS_DOMAIN_DEFAULTS; + + // Defaults for dns-servers list elements, DnsServerInfos + static const data::SimpleDefaults DNS_SERVER_DEFAULTS; + + /// @brief Adds default values to a DDNS Domain element + /// + /// Adds the scalar default values to the given DDNS domain + /// element, and then adds the DNS Server defaults to the domain's + /// server list, "dns-servers". + /// + /// @param domain DDNS domain element to which defaults should be added + /// @param domain_defaults list of default values from which to add + /// @return returns the number of default values added + static size_t setDdnsDomainDefaults(data::ElementPtr domain, + const data::SimpleDefaults& + domain_defaults); + + /// @brief Adds default values to a DDNS Domain List Manager + /// + /// This function looks for the named DDNS domain manager element within + /// the given element tree. If it is found, it adds the scalar default + /// values to the manager element and then adds the DDNS Domain defaults + /// to its domain list, "ddns-domains". If the manager element is not + /// found, then an empty map entry is added for it, thus defaulting the + /// manager to "disabled". + /// + /// @param global element tree containing the DDNS domain manager element + /// to which defaults should be + /// added + /// @param mgr_name name of the manager element within the element tree + /// (e.g. "forward-ddns", "reverse-ddns") + /// @param mgr_defaults list of default values from which to add + /// @return returns the number of default values added + static size_t setManagerDefaults(data::ElementPtr global, + const std::string& mgr_name, + const data::SimpleDefaults& mgr_defaults); + + /// @brief Parses the whole D2 configuration + /// + /// @param ctx - parsed information will be stored here + /// @param config - Element tree structure that holds configuration + /// @param check_only - if true the configuration is verified only, not applied + /// + /// @throw ConfigError if any issues are encountered. + void parse(const D2CfgContextPtr& ctx, + const isc::data::ConstElementPtr& config, + bool check_only); +}; + +}; +}; + +#endif -- cgit v1.2.3