Kea 2.2.0
netconf_config.h
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#ifndef NETCONF_CONFIG_H
8#define NETCONF_CONFIG_H
9
10#include <cc/data.h>
11#include <cc/cfg_to_element.h>
12#include <cc/user_context.h>
13#include <cc/simple_parser.h>
14#include <http/url.h>
16
17#include <boost/foreach.hpp>
18
19#include <stdint.h>
20#include <string>
21
22namespace isc {
23namespace netconf {
24
65
72public:
74 enum Type {
75 UNIX, //< Unix socket.
76 HTTP, //< HTTP socket.
77 STDOUT //< standard output.
78 };
79
85 CfgControlSocket(Type type, const std::string& name,
86 const isc::http::Url& url);
87
89 virtual ~CfgControlSocket() = default;
90
94 Type getType() const {
95 return (type_);
96 }
97
101 const std::string getName() const {
102 return (name_);
103 }
104
108 const isc::http::Url getUrl() const {
109 return (url_);
110 }
111
119 static Type stringToType(const std::string& type);
120
125 static const std::string typeToString(CfgControlSocket::Type type);
126
130 virtual isc::data::ElementPtr toElement() const;
131
132private:
134 Type type_;
135
137 const std::string name_;
138
140 const isc::http::Url url_;
141};
142
144typedef boost::shared_ptr<CfgControlSocket> CfgControlSocketPtr;
145
151public:
156 CfgServer(const std::string& model, CfgControlSocketPtr ctrl_sock);
157
159 virtual ~CfgServer() = default;
160
164 const std::string getModel() const {
165 return (model_);
166 }
167
172 return (control_socket_);
173 }
174
178 bool getBootUpdate() const {
179 return (boot_update_);
180 }
181
185 void setBootUpdate(bool boot_update) {
186 boot_update_ = boot_update;
187 }
188
192 bool getSubscribeChanges() const {
193 return (subscribe_changes_);
194 }
195
200 return (subscribe_notifications_);
201 }
202
206 void setSubscribeChanges(bool subscribe_changes) {
207 subscribe_changes_ = subscribe_changes;
208 }
209
213 void setSubscribeNotifications(bool subscribe_notifications) {
214 subscribe_notifications_ = subscribe_notifications;
215 }
216
220 bool getValidateChanges() const {
221 return (validate_changes_);
222 }
223
227 void setValidateChanges(bool validate_changes) {
228 validate_changes_ = validate_changes;
229 }
230
232 std::string toText() const;
233
237 virtual isc::data::ElementPtr toElement() const;
238
239private:
241 const std::string model_;
242
247 bool boot_update_;
248
253 bool subscribe_changes_;
254
260 bool subscribe_notifications_;
261
266 bool validate_changes_;
267
269 CfgControlSocketPtr control_socket_;
270};
271
273typedef boost::shared_ptr<CfgServer> CfgServerPtr;
274
276typedef std::map<std::string, CfgServerPtr> CfgServersMap;
277
279typedef std::pair<std::string, CfgServerPtr> CfgServersMapPair;
280
282typedef boost::shared_ptr<CfgServersMap> CfgServersMapPtr;
283
288std::ostream& operator<<(std::ostream& os, const CfgServer& server);
289
295public:
306};
307
313public:
323};
324
325} // namespace netconf
326} // namespace isc
327
328#endif // NETCONF_CONFIG_H
Represents an URL.
Definition: url.h:20
Represents a Control Socket.
const std::string getName() const
Getter which returns the Unix socket name.
virtual isc::data::ElementPtr toElement() const
Unparse a configuration object.
Type getType() const
Getter which returns the socket type.
const isc::http::Url getUrl() const
Getter which returns the HTTP server URL.
Type
Defines the list of possible control socket types.
virtual ~CfgControlSocket()=default
Destructor (doing nothing).
CfgControlSocket(Type type, const std::string &name, const isc::http::Url &url)
Constructor.
static const std::string typeToString(CfgControlSocket::Type type)
Converts CfgControlSocket::Type to string.
static Type stringToType(const std::string &type)
Converts socket type name to CfgControlSocket::Type.
Represents a Managed CfgServer.
CfgServer(const std::string &model, CfgControlSocketPtr ctrl_sock)
Constructor.
virtual ~CfgServer()=default
Destructor (doing nothing).
virtual isc::data::ElementPtr toElement() const
Unparse a configuration object.
bool getValidateChanges() const
Getter which returns the validate-changes flag.
void setSubscribeChanges(bool subscribe_changes)
Set the subscribe-changes flag.
bool getBootUpdate() const
Getter which returns the boot-update flag.
void setBootUpdate(bool boot_update)
Set the boot-update flag.
bool getSubscribeNotifications() const
Getter which returns the subscribe-changes flag.
bool getSubscribeChanges() const
Getter which returns the subscribe-changes flag.
void setValidateChanges(bool validate_changes)
Set the validate-changes flag.
std::string toText() const
Returns a text representation for the server.
void setSubscribeNotifications(bool subscribe_notifications)
Set the subscribe-notifications flag.
const CfgControlSocketPtr & getCfgControlSocket() const
Getter which returns the control socket.
const std::string getModel() const
Getter which returns the model name.
Parser for CfgControlSocket.
CfgControlSocketPtr parse(data::ConstElementPtr ctrl_sock_config)
Performs the actual parsing of the given "control-socket" element.
CfgServerPtr parse(data::ConstElementPtr server_config)
Performs the actual parsing of the given value from the "managed-servers" map.
boost::shared_ptr< const Element > ConstElementPtr
Definition: data.h:27
boost::shared_ptr< Element > ElementPtr
Definition: data.h:24
ostream & operator<<(ostream &os, const CfgServer &server)
Dumps the contents of a CfgServer as text to a output stream.
boost::shared_ptr< CfgControlSocket > CfgControlSocketPtr
Defines a pointer for CfgControlSocket instances.
boost::shared_ptr< CfgServersMap > CfgServersMapPtr
Defines a pointer to map of CfgServers.
boost::shared_ptr< CfgServer > CfgServerPtr
Defines a pointer for CfgServer instances.
std::map< std::string, CfgServerPtr > CfgServersMap
Defines a map of CfgServers, keyed by the name.
std::pair< std::string, CfgServerPtr > CfgServersMapPair
Defines a iterator pairing of name and CfgServer.
Defines the logger used by the top-level component of kea-lfc.
Abstract class for configuration Cfg_* classes.
Base class for user context.
Definition: user_context.h:22