summaryrefslogtreecommitdiffstats
path: root/src/lib/dhcpsrv/parsers/base_network_parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dhcpsrv/parsers/base_network_parser.h')
-rw-r--r--src/lib/dhcpsrv/parsers/base_network_parser.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/src/lib/dhcpsrv/parsers/base_network_parser.h b/src/lib/dhcpsrv/parsers/base_network_parser.h
new file mode 100644
index 0000000..ee4bef3
--- /dev/null
+++ b/src/lib/dhcpsrv/parsers/base_network_parser.h
@@ -0,0 +1,113 @@
+// Copyright (C) 2019-2022 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 BASE_NETWORK_PARSER_H
+#define BASE_NETWORK_PARSER_H
+
+#include <cc/data.h>
+#include <cc/simple_parser.h>
+#include <dhcpsrv/cfg_globals.h>
+#include <dhcpsrv/network.h>
+
+namespace isc {
+namespace dhcp {
+
+/// @brief Common configuration parser for shared networks
+/// and subnets.
+class BaseNetworkParser : public data::SimpleParser {
+public:
+
+ /// @brief Moves deprecated reservation-mode parameter to
+ /// new reservations flags.
+ ///
+ /// @param config [in/out] configuration to alter.
+ /// @throw DhcpConfigError on error e.g. when both reservation-mode
+ /// and a flag are specified.
+ static void moveReservationMode(isc::data::ElementPtr config);
+
+ /// @brief Moves deprecated reservation-mode parameter to
+ /// new reservations flags.
+ ///
+ /// @param config [in/out] global parameters to alter.
+ /// @throw DhcpConfigError on error e.g. when both reservation-mode
+ /// and a flag are specified.
+ static void moveReservationMode(CfgGlobalsPtr config);
+
+protected:
+
+ /// @brief Parses common parameters
+ ///
+ /// The parsed parameters are:
+ /// - renew-timer,
+ /// - rebind-timer,
+ /// - valid-lifetime,
+ /// - store-extended-info
+ /// - reservations-global
+ /// - reservations-in-subnet
+ /// - reservations-out-of-pool
+ ///
+ /// @param network_data Data element holding shared network
+ /// configuration to be parsed.
+ /// @param [out] network Pointer to a network in which parsed data is
+ /// to be stored.
+ void parseCommon(const data::ConstElementPtr& network_data,
+ NetworkPtr& network);
+
+ /// @brief Parses parameters related to "percent" timers settings.
+ ///
+ /// The parsed parameters are:
+ /// - calculate-tee-times,
+ /// - t1-percent,
+ /// - t2-percent.
+ ///
+ /// @param network_data Data element holding network configuration
+ /// to be parsed.
+ /// @param [out] network Pointer to a network in which parsed data is
+ /// to be stored.
+ ///
+ /// @throw DhcpConfigError if configuration of these parameters is
+ /// invalid.
+ void parseTeePercents(const data::ConstElementPtr& network_data,
+ NetworkPtr& network);
+
+ /// @brief Parses parameters related to lease cache settings.
+ ///
+ /// The parsed parameters are:
+ /// - cache-threshold,
+ /// - cache-max-age.
+ ///
+ /// @param network_data Data element holding network configuration
+ /// to be parsed.
+ /// @param [out] network Pointer to a network in which parsed data is
+ /// to be stored.
+ ///
+ /// @throw DhcpConfigError if configuration of these parameters is
+ /// invalid.
+ void parseCacheParams(const data::ConstElementPtr& network_data,
+ NetworkPtr& network);
+
+ /// @brief Parses parameters pertaining to DDNS behavior.
+ ///
+ /// The parsed parameters are:
+ /// - ddns-send-updates
+ /// - ddns-override-no-update
+ /// - ddns-override-client-update
+ /// - ddns-replace-client-name
+ /// - ddns-generated-prefix
+ /// - ddns-qualifying-suffix
+ ///
+ /// @param network_data Data element holding shared network
+ /// configuration to be parsed.
+ /// @param [out] network Pointer to a network in which parsed data is
+ /// to be stored.
+ void parseDdnsParams(const data::ConstElementPtr& network_data,
+ NetworkPtr& network);
+};
+
+} // end of namespace isc::dhcp
+} // end of namespace isc
+
+#endif