Kea  2.3.7
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 
12 using namespace isc::data;
13 
14 namespace isc {
15 namespace dhcp {
16 
17 void
18 SanityChecksParser::parse(SrvConfig& cfg, const ConstElementPtr& sanity_checks) {
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") {
36  check = CfgConsistency::LEASE_CHECK_NONE;
37  } else if (lc == "warn") {
38  check = CfgConsistency::LEASE_CHECK_WARN;
39  } else if (lc == "fix") {
40  check = CfgConsistency::LEASE_CHECK_FIX;
41  } else if (lc == "fix-del") {
42  check = CfgConsistency::LEASE_CHECK_FIX_DEL;
43  } else if (lc == "del") {
44  check = CfgConsistency::LEASE_CHECK_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") {
61  check = CfgConsistency::EXTENDED_INFO_CHECK_NONE;
62  } else if (exc == "fix") {
63  check = CfgConsistency::EXTENDED_INFO_CHECK_FIX;
64  } else if (exc == "strict") {
65  check = CfgConsistency::EXTENDED_INFO_CHECK_STRICT;
66  } else if (exc == "pedantic") {
67  check = CfgConsistency::EXTENDED_INFO_CHECK_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.
Specifies current DHCP configuration.
Definition: srv_config.h:186
CfgConsistencyPtr getConsistency()
Returns non-const pointer to object holding sanity checks flags.
Definition: srv_config.h:506
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:27
Defines the logger used by the top-level component of kea-lfc.