Kea 2.7.6
sanity_checks_parser.cc
Go to the documentation of this file.
1// Copyright (C) 2018-2022 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#include <config.h>
10#include <cc/data.h>
11
12using namespace isc::data;
13
14namespace isc {
15namespace dhcp {
16
17void
19
20 if (!sanity_checks) {
21 return;
22 }
23 if (sanity_checks->getType() != Element::map) {
24 isc_throw(DhcpConfigError, "sanity-checks is supposed to be a map");
25 }
26
27 // Subnet-id lease checker.
28 ConstElementPtr checks = sanity_checks->get("lease-checks");
29 if (checks) {
30 if (checks->getType() != Element::string) {
31 isc_throw(DhcpConfigError, "lease-checks must be a string");
32 }
33 std::string lc = checks->stringValue();
35 if (lc == "none") {
37 } else if (lc == "warn") {
39 } else if (lc == "fix") {
41 } else if (lc == "fix-del") {
43 } else if (lc == "del") {
45 } else {
46 isc_throw(DhcpConfigError, "Unsupported lease-checks value: " << lc
47 << ", supported values are: none, warn, fix, fix-del, del");
48 }
49 cfg.getConsistency()->setLeaseSanityCheck(check);
50 }
51
52 // Extended info lease checker.
53 checks = sanity_checks->get("extended-info-checks");
54 if (checks) {
55 if (checks->getType() != Element::string) {
56 isc_throw(DhcpConfigError, "extended-info-checks must be a string");
57 }
58 std::string exc = checks->stringValue();
60 if (exc == "none") {
62 } else if (exc == "fix") {
64 } else if (exc == "strict") {
66 } else if (exc == "pedantic") {
68 } else {
70 "Unsupported extended-info-checks value: " << exc
71 << ", supported values are: none, fix, strict, pedantic");
72 }
73 cfg.getConsistency()->setExtendedInfoSanityCheck(check);
74 }
75
76 // Additional sanity check fields will come in later here.
77}
78
79}
80}
LeaseSanity
Values for subnet-id sanity checks done for leases.
ExtendedInfoSanity
Values for extended info sanity checks done for leases.
To be removed. Please use ConfigError instead.
void parse(SrvConfig &srv_cfg, const isc::data::ConstElementPtr &value)
parses JSON structure
Specifies current DHCP configuration.
Definition srv_config.h:209
CfgConsistencyPtr getConsistency()
Returns non-const pointer to object holding sanity checks flags.
Definition srv_config.h:529
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< const Element > ConstElementPtr
Definition data.h:29
Defines the logger used by the top-level component of kea-lfc.