7 #ifndef SHARED_NETWORK_PARSER_H 8 #define SHARED_NETWORK_PARSER_H 18 #include <boost/pointer_cast.hpp> 32 std::string name = getString(shared_network_data,
"name");
36 if (shared_network_data->contains(
"interface")) {
37 shared_network->setIface(getString(shared_network_data,
"interface"));
40 if (shared_network_data->contains(
"option-data")) {
41 auto json = shared_network_data->get(
"option-data");
43 CfgOptionPtr cfg_option = shared_network->getCfgOption();
45 parser.
parse(cfg_option, json);
48 if (shared_network_data->contains(
"subnet4")) {
49 auto json = shared_network_data->get(
"subnet4");
54 parser.
parse(subnets, json);
57 for (
auto subnet = subnets.cbegin(); subnet != subnets.cend();
59 shared_network->add(*subnet);
63 if (shared_network_data->contains(
"match-client-id")) {
64 shared_network->setMatchClientId(getBoolean(shared_network_data,
68 if (shared_network_data->contains(
"authoritative")) {
69 shared_network->setAuthoritative(getBoolean(shared_network_data,
73 if (shared_network_data->contains(
"client-class")) {
74 std::string client_class = getString(shared_network_data,
"client-class");
75 if (!client_class.empty()) {
76 shared_network->allowClientClass(client_class);
80 ConstElementPtr user_context = shared_network_data->get(
"user-context");
82 shared_network->setContext(user_context);
85 if (shared_network_data->contains(
"require-client-classes")) {
86 const std::vector<data::ElementPtr>& class_list =
87 shared_network_data->get(
"require-client-classes")->listValue();
88 for (
auto cclass = class_list.cbegin();
89 cclass != class_list.cend(); ++cclass) {
91 (*cclass)->stringValue().empty()) {
93 << (*cclass)->getPosition() <<
")");
95 shared_network->requireClientClass((*cclass)->stringValue());
99 if (shared_network_data->contains(
"relay")) {
100 auto relay_parms = shared_network_data->get(
"relay");
104 parser.
parse(relay_info, relay_parms);
105 shared_network->setRelayInfo(*relay_info);
111 }
catch (
const std::exception& ex) {
113 << shared_network_data->getPosition() <<
")");
116 return (shared_network);
126 std::string name = getString(shared_network_data,
"name");
130 if (shared_network_data->contains(
"interface")) {
131 shared_network->setIface(getString(shared_network_data,
"interface"));
134 if (shared_network_data->contains(
"option-data")) {
135 auto json = shared_network_data->get(
"option-data");
137 CfgOptionPtr cfg_option = shared_network->getCfgOption();
139 parser.
parse(cfg_option, json);
142 if (shared_network_data->contains(
"client-class")) {
143 std::string client_class = getString(shared_network_data,
"client-class");
144 if (!client_class.empty()) {
145 shared_network->allowClientClass(client_class);
149 ConstElementPtr user_context = shared_network_data->get(
"user-context");
151 shared_network->setContext(user_context);
154 if (shared_network_data->contains(
"require-client-classes")) {
155 const std::vector<data::ElementPtr>& class_list =
156 shared_network_data->get(
"require-client-classes")->listValue();
157 for (
auto cclass = class_list.cbegin();
158 cclass != class_list.cend(); ++cclass) {
160 (*cclass)->stringValue().empty()) {
162 << (*cclass)->getPosition() <<
")");
164 shared_network->requireClientClass((*cclass)->stringValue());
168 if (shared_network_data->contains(
"subnet6")) {
169 auto json = shared_network_data->get(
"subnet6");
174 parser.
parse(subnets, json);
177 for (
auto subnet = subnets.cbegin(); subnet != subnets.cend();
179 shared_network->add(*subnet);
183 if (shared_network_data->contains(
"relay")) {
184 auto relay_parms = shared_network_data->get(
"relay");
188 parser.
parse(relay_info, relay_parms);
189 shared_network->setRelayInfo(*relay_info);
192 }
catch (
const std::exception& ex) {
194 << shared_network_data->getPosition() <<
")");
197 return (shared_network);
203 #endif // SHARED_NETWORK_PARSER_H
void parse(const CfgOptionPtr &cfg, isc::data::ConstElementPtr option_data_list)
Parses a list of options, instantiates them and stores in cfg.
boost::shared_ptr< CfgOption > CfgOptionPtr
Non-const pointer.
size_t parse(SrvConfigPtr cfg, data::ConstElementPtr subnets_list)
parses contents of the list
this class parses a list of DHCP6 subnets
boost::multi_index_container< Subnet6Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SubnetRandomAccessIndexTag > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetSubnetIdIndexTag >, boost::multi_index::const_mem_fun< Subnet, SubnetID, &Subnet::getID > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetPrefixIndexTag >, boost::multi_index::const_mem_fun< Subnet, std::string, &Subnet::toText > > >> Subnet6Collection
A collection of Subnet6 objects.
boost::shared_ptr< Network::RelayInfo > RelayInfoPtr
Pointer to the RelayInfo structure.
this class parses list of DHCP4 subnets
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Shared network holding IPv4 subnets.
Holds optional information about relay.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
parser for additional relay information
To be removed. Please use ConfigError instead.
boost::shared_ptr< const Element > ConstElementPtr
Parser for option data values within a subnet.
boost::shared_ptr< SharedNetwork6 > SharedNetwork6Ptr
Pointer to SharedNetwork6 object.
size_t parse(SrvConfigPtr cfg, data::ConstElementPtr subnets_list)
parses contents of the list
boost::shared_ptr< SharedNetwork4 > SharedNetwork4Ptr
Pointer to SharedNetwork4 object.
Defines the logger used by the top-level component of kea-dhcp-ddns.
boost::multi_index_container< Subnet4Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SubnetRandomAccessIndexTag > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetSubnetIdIndexTag >, boost::multi_index::const_mem_fun< Subnet, SubnetID, &Subnet::getID > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetPrefixIndexTag >, boost::multi_index::const_mem_fun< Subnet, std::string, &Subnet::toText > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetServerIdIndexTag >, boost::multi_index::const_mem_fun< Network4, asiolink::IOAddress, &Network4::getServerId > > >> Subnet4Collection
A collection of Subnet4 objects.
void parse(const isc::dhcp::Network::RelayInfoPtr &relay_info, isc::data::ConstElementPtr relay_elem)
parses the actual relay parameters
Shared network holding IPv6 subnets.