Kea 2.6.2
netconf_process.cc
Go to the documentation of this file.
1// Copyright (C) 2018-2024 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
10#include <asiolink/io_address.h>
11#include <asiolink/io_error.h>
14#include <config/timeouts.h>
15#include <netconf/netconf.h>
17#include <netconf/netconf_log.h>
19
20using namespace isc::asiolink;
21using namespace isc::config;
22using namespace isc::data;
23using namespace isc::http;
24using namespace isc::process;
25
26namespace isc {
27namespace netconf {
28
30 const asiolink::IOServicePtr& io_service)
31 : DProcessBase(name, io_service, DCfgMgrBasePtr(new NetconfCfgMgr())) {
32}
33
34void
37
38void
41
42 try {
43 // Call init.
44 agent_.init(getNetconfCfgMgr());
45
46 // Let's process incoming data or expiring timers in a loop until
47 // shutdown condition is detected.
48 while (!shouldShutdown()) {
49 runIO();
50 }
52
53 } catch (const std::exception& ex) {
55 try {
57 } catch (...) {
58 // Ignore double errors
59 }
61 "Process run method failed: " << ex.what());
62 }
63
65}
66
67size_t
68NetconfProcess::runIO() {
69 // Handle events registered by hooks using external IOService objects.
71 size_t cnt = getIOService()->poll();
72 if (!cnt) {
73 cnt = getIOService()->runOne();
74 }
75 return (cnt);
76}
77
83
86 bool check_only) {
88 getCfgMgr()->simpleParseConfig(config_set, check_only);
89 int rcode = 0;
91
93 try {
94 // Handle events registered by hooks using external IOService objects.
96 } catch (const std::exception& ex) {
97 std::ostringstream err;
98 err << "Error initializing hooks: "
99 << ex.what();
101 }
102
103 return (answer);
104}
105
108 return (boost::dynamic_pointer_cast<NetconfCfgMgr>(getCfgMgr()));
109}
110
111} // namespace netconf
112} // namespace isc
it forwards queries to a single upstream resolver and passes the answers back to the client It is constructed with the address of the forward server Queries are initiated with the question to ask the forward a buffer into which to write the answer
Definition asiodns.dox:60
Ctrl Netconf Configuration Manager.
NetconfCfgMgrPtr getNetconfCfgMgr()
Returns a pointer to the configuration manager.
void init() override final
Initialize the Netconf process.
void run() override final
Implements the process's event loop.
isc::data::ConstElementPtr shutdown(isc::data::ConstElementPtr args) override final
Initiates the process's shutdown process.
NetconfProcess(const char *name, const asiolink::IOServicePtr &io_service)
Constructor.
isc::data::ConstElementPtr configure(isc::data::ConstElementPtr config_set, bool check_only=false) override final
Processes the given configuration.
Exception thrown if the process encountered an operational error.
Definition d_process.h:24
void setShutdownFlag(bool value)
Sets the process shut down flag to the given value.
Definition d_process.h:162
DProcessBase(const char *app_name, asiolink::IOServicePtr io_service, DCfgMgrBasePtr cfg_mgr)
Constructor.
Definition d_process.h:87
void stopIOService()
Convenience method for stopping IOservice processing.
Definition d_process.h:184
bool shouldShutdown() const
Checks if the process has been instructed to shut down.
Definition d_process.h:155
asiolink::IOServicePtr & getIOService()
Fetches the controller's IOService.
Definition d_process.h:176
DCfgMgrBasePtr & getCfgMgr()
Fetches the process's configuration manager.
Definition d_process.h:191
This file contains several functions and constants that are used for handling commands and responses ...
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
#define LOG_INFO(LOGGER, MESSAGE)
Macro to conveniently test info output and log it.
Definition macros.h:20
#define LOG_FATAL(LOGGER, MESSAGE)
Macro to conveniently test fatal output and log it.
Definition macros.h:38
#define LOG_DEBUG(LOGGER, LEVEL, MESSAGE)
Macro to conveniently test debug output and log it.
Definition macros.h:14
ConstElementPtr parseAnswer(int &rcode, const ConstElementPtr &msg)
Parses a standard config/command level answer and returns arguments or text status code.
const int CONTROL_RESULT_ERROR
Status code indicating a general failure.
ConstElementPtr createAnswer(const int status_code, const std::string &text, const ConstElementPtr &arg)
Creates a standard config/command level answer message.
const int CONTROL_RESULT_SUCCESS
Status code indicating a successful operation.
boost::shared_ptr< const Element > ConstElementPtr
Definition data.h:29
const int DBGLVL_START_SHUT
This is given a value of 0 as that is the level selected if debugging is enabled without giving a lev...
const isc::log::MessageID NETCONF_FAILED
isc::log::Logger netconf_logger(NETCONF_LOGGER_NAME)
Base logger for the netconf agent.
Definition netconf_log.h:49
const isc::log::MessageID NETCONF_STARTED
const isc::log::MessageID NETCONF_RUN_EXIT
boost::shared_ptr< NetconfCfgMgr > NetconfCfgMgrPtr
Defines a shared pointer to NetconfCfgMgr.
boost::shared_ptr< DCfgMgrBase > DCfgMgrBasePtr
Defines a shared pointer to DCfgMgrBase.
Definition d_cfg_mgr.h:247
Defines the logger used by the top-level component of kea-lfc.
Contains declarations for loggers used by the Kea netconf agent.