Kea: sanity_checks_parser.cc Source File

| Kea 2.2.0

sanity_checks_parser.cc
Go to the documentation of this file.
1// Copyright (C) 2018 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>
8#include <dhcpsrv/parsers/sanity_checks_parser.h>
9#include <dhcpsrv/cfg_consistency.h>
10#include <cc/data.h>
11
12using namespace isc::data;
13
14namespace isc {
15namespace dhcp {
16
17void
18SanityChecksParser::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 ConstElementPtr lease_checks = sanity_checks->get("lease-checks");
28 if (lease_checks) {
29 if (lease_checks->getType() != Element::string) {
30 isc_throw(DhcpConfigError, "lease-checks must be a string");
31 }
32 std::string lc = lease_checks->stringValue();
33 CfgConsistency::LeaseSanity check;
34 if (lc == "none") {
35 check = CfgConsistency::LEASE_CHECK_NONE;
36 } else if (lc == "warn") {
37 check = CfgConsistency::LEASE_CHECK_WARN;
38 } else if (lc == "fix") {
39 check = CfgConsistency::LEASE_CHECK_FIX;
40 } else if (lc == "fix-del") {
41 check = CfgConsistency::LEASE_CHECK_FIX_DEL;
42 } else if (lc == "del") {
43 check = CfgConsistency::LEASE_CHECK_DEL;
44 } else {
45 isc_throw(DhcpConfigError, "Unsupported lease-checks value: " << lc
46 << ", supported values are: none, warn, fix, fix-del, del");
47 }
48 cfg.getConsistency()->setLeaseSanityCheck(check);
49 }
50
51 // Additional sanity check fields will come in later here.
52}
53
54};
55};
cfg_consistency.h
isc::data::Element::map
@ map
Definition: data.h:155
isc::data::Element::string
@ string
Definition: data.h:155
isc::dhcp::CfgConsistency::LeaseSanity
LeaseSanity
Values for subnet-id sanity checks done for leases.
Definition: cfg_consistency.h:24
isc::dhcp::CfgConsistency::LEASE_CHECK_FIX
@ LEASE_CHECK_FIX
Definition: cfg_consistency.h:27
isc::dhcp::CfgConsistency::LEASE_CHECK_DEL
@ LEASE_CHECK_DEL
Definition: cfg_consistency.h:32
isc::dhcp::CfgConsistency::LEASE_CHECK_FIX_DEL
@ LEASE_CHECK_FIX_DEL
Definition: cfg_consistency.h:30
isc::dhcp::CfgConsistency::LEASE_CHECK_WARN
@ LEASE_CHECK_WARN
Definition: cfg_consistency.h:26
isc::dhcp::CfgConsistency::LEASE_CHECK_NONE
@ LEASE_CHECK_NONE
Definition: cfg_consistency.h:25
isc::dhcp::DhcpConfigError
To be removed. Please use ConfigError instead.
Definition: dhcp_config_error.h:58
isc::dhcp::SanityChecksParser::parse
void parse(SrvConfig &srv_cfg, const isc::data::ConstElementPtr &value)
parses JSON structure
Definition: sanity_checks_parser.cc:18
isc::dhcp::SrvConfig
Specifies current DHCP configuration.
Definition: srv_config.h:177
isc::dhcp::SrvConfig::getConsistency
CfgConsistencyPtr getConsistency()
Returns const pointer to object holding sanity checks flags.
Definition: srv_config.h:497
data.h
isc_throw
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
Definition: exceptions/exceptions.h:210
isc::data
Definition: base_stamped_element.cc:12
isc::data::ConstElementPtr
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:27
isc
Defines the logger used by the top-level component of kea-lfc.
Definition: agent_parser.cc:143
sanity_checks_parser.h