Kea  1.5.0
isc::config Namespace Reference

Classes

class  BadSocketInfo
 An exception indicating that specified socket parameters are invalid. More...
 
class  BaseCommandMgr
 Commands Manager, responsible for processing external commands. More...
 
class  ClientConnection
 Represents client side connection over the unix domain socket. More...
 
class  ClientConnectionImpl
 Implementation of the ClientConnection. More...
 
class  CmdsImpl
 Base class that command handler implementers may use for common tasks. More...
 
class  CommandMgr
 Commands Manager implementation for the Kea servers. More...
 
class  CommandMgrImpl
 Implementation of the CommandMgr. More...
 
class  CtrlChannelError
 A standard control channel exception that is thrown if a function is there is a problem with one of the messages. More...
 
class  HookedCommandMgr
 Command Manager which can delegate commands to a hook library. More...
 
class  InvalidCommandHandler
 Exception indicating that the handler specified is not valid. More...
 
class  InvalidCommandName
 Exception indicating that the command name is not valid. More...
 
class  JSONFeed
 State model for asynchronous read of data in JSON format. More...
 
class  JSONFeedError
 A generic exception thrown upon an error in the JSONFeed. More...
 
class  SocketError
 An exception indicating a problem with socket operation. More...
 

Typedefs

typedef boost::shared_ptr< ClientConnectionClientConnectionPtr
 Type of the pointer to the ClientConnection object. More...
 
typedef boost::shared_ptr< const JSONFeedConstJSONFeedPtr
 Pointer to the const JSONFeed. More...
 
typedef boost::shared_ptr< JSONFeedJSONFeedPtr
 Pointer to the JSONFeed. More...
 

Functions

std::string answerToText (const ConstElementPtr &msg)
 
std::string answerToText (const isc::data::ConstElementPtr &msg)
 Converts answer to printable text. More...
 
isc::data::ConstElementPtr combineCommandsLists (const isc::data::ConstElementPtr &response1, const isc::data::ConstElementPtr &response2)
 Combines lists of commands carried in two responses. More...
 
ConstElementPtr combineCommandsLists (const ConstElementPtr &response1, const ConstElementPtr &response2)
 
ConstElementPtr createAnswer (const int status_code, const std::string &text, const ConstElementPtr &arg)
 
ConstElementPtr createAnswer ()
 Creates a standard config/command level success answer message (i.e. More...
 
ConstElementPtr createAnswer (const int status_code, const std::string &status_text)
 Creates a standard config/command level answer message (i.e. More...
 
ConstElementPtr createAnswer (const int status_code, const ConstElementPtr &arg)
 
isc::data::ConstElementPtr createAnswer (const int status_code, const isc::data::ConstElementPtr &arg)
 Creates a standard config/command level answer message (i.e. More...
 
isc::data::ConstElementPtr createAnswer (const int status_code, const std::string &status, const isc::data::ConstElementPtr &arg)
 Creates a standard config/command level answer message. More...
 
isc::data::ConstElementPtr createCommand (const std::string &command, isc::data::ConstElementPtr arg)
 Creates a standard command message with the given argument (of the form { "command": "my_command", "arguments": arg }. More...
 
ConstElementPtr createCommand (const std::string &command)
 Creates a standard command message with no argument (of the form { "command": "my_command" }) More...
 
ConstElementPtr createCommand (const std::string &command, ConstElementPtr arg)
 
isc::data::ConstElementPtr createCommand (const std::string &command, isc::data::ConstElementPtr arg, const std::string &service)
 Creates a standard config/command command message with the given argument and given service (of the form { "command": "my_command", "arguments": arg, "service": [ service ] }. More...
 
ConstElementPtr createCommand (const std::string &command, const std::string &service)
 Creates a standard config/command command message with no argument and with the given service (of the form { "command": "my_command", "service": [ service ] }) More...
 
ConstElementPtr createCommand (const std::string &command, ConstElementPtr arg, const std::string &service)
 
ConstElementPtr parseAnswer (int &rcode, const ConstElementPtr &msg)
 
isc::data::ConstElementPtr parseAnswer (int &status_code, const isc::data::ConstElementPtr &msg)
 Parses a standard config/command level answer message. More...
 
std::string parseCommand (isc::data::ConstElementPtr &arg, isc::data::ConstElementPtr command)
 Parses the given command into a string containing the actual command and an ElementPtr containing the optional argument. More...
 
std::string parseCommand (ConstElementPtr &arg, ConstElementPtr command)
 
std::string parseCommandWithArgs (isc::data::ConstElementPtr &arg, isc::data::ConstElementPtr command)
 Parses the given command into a string containing the command name and an ElementPtr containing the mandatory argument. More...
 
std::string parseCommandWithArgs (ConstElementPtr &arg, ConstElementPtr command)
 

Variables

isc::log::Logger command_logger ("commands")
 Command processing Logger. More...
 
const char * CONTROL_ARGUMENTS = "arguments"
 String used for arguments map ("arguments") More...
 
const char * CONTROL_COMMAND = "command"
 String used for commands ("command") More...
 
const char * CONTROL_RESULT = "result"
 String used for result, i.e. integer status ("result") More...
 
const int CONTROL_RESULT_COMMAND_UNSUPPORTED = 2
 Status code indicating that the specified command is not supported. More...
 
const int CONTROL_RESULT_EMPTY = 3
 Status code indicating that the specified command was completed correctly, but failed to produce any results. More...
 
const int CONTROL_RESULT_ERROR = 1
 Status code indicating a general failure. More...
 
const int CONTROL_RESULT_SUCCESS = 0
 Status code indicating a successful operation. More...
 
const char * CONTROL_SERVICE = "service"
 String used for service list ("service") More...
 
const char * CONTROL_TEXT = "text"
 String used for storing textual description ("text") More...
 
const int DBG_COMMAND = isc::log::DBGLVL_COMMAND
 
constexpr long TIMEOUT_AGENT_FORWARD_COMMAND = 60000
 Timeout for the Control Agent to forward command to a Kea server, e.g. More...
 
constexpr long TIMEOUT_AGENT_IDLE_CONNECTION_TIMEOUT = 30000
 Timeout for the idle connection to be closed. More...
 
constexpr long TIMEOUT_AGENT_RECEIVE_COMMAND = 10000
 Timeout for the Control Agent to receive command over the RESTful interface. More...
 
constexpr long TIMEOUT_DHCP_SERVER_RECEIVE_COMMAND = 10000
 Timeout for the DHCP server to receive command over the unix domain socket. More...
 

Typedef Documentation

◆ ClientConnectionPtr

Type of the pointer to the ClientConnection object.

Definition at line 154 of file client_connection.h.

◆ ConstJSONFeedPtr

typedef boost::shared_ptr<const JSONFeed> isc::config::ConstJSONFeedPtr

Pointer to the const JSONFeed.

Definition at line 27 of file json_feed.h.

◆ JSONFeedPtr

typedef boost::shared_ptr<JSONFeed> isc::config::JSONFeedPtr

Pointer to the JSONFeed.

Definition at line 21 of file json_feed.h.

Function Documentation

◆ answerToText() [1/2]

◆ answerToText() [2/2]

std::string isc::config::answerToText ( const isc::data::ConstElementPtr msg)

Converts answer to printable text.

Parameters
msganswer to be parsed
Returns
printable string

◆ combineCommandsLists() [1/2]

isc::data::ConstElementPtr isc::config::combineCommandsLists ( const isc::data::ConstElementPtr response1,
const isc::data::ConstElementPtr response2 
)

Combines lists of commands carried in two responses.

This method is used to combine list of commands returned by the two command managers.

If the same command appears in two responses only a single instance is returned in the combined response.

Parameters
response1First command response.
response2Second command response.
Returns
Pointer to the 'list-commands' response holding combined list of commands.

◆ combineCommandsLists() [2/2]

ConstElementPtr isc::config::combineCommandsLists ( const ConstElementPtr &  response1,
const ConstElementPtr &  response2 
)

Definition at line 231 of file command_interpreter.cc.

References CONTROL_RESULT_SUCCESS, createAnswer(), and parseAnswer().

Referenced by isc::config::HookedCommandMgr::handleCommand().

+ Here is the call graph for this function:

◆ createAnswer() [1/6]

ConstElementPtr isc::config::createAnswer ( const int  status_code,
const std::string &  text,
const ConstElementPtr &  arg 
)

Definition at line 33 of file command_interpreter.cc.

References CONTROL_ARGUMENTS, CONTROL_RESULT, CONTROL_TEXT, and isc_throw.

Referenced by isc::process::DControllerBase::buildReportHandler(), isc::dhcp::ControlledDhcpv4Srv::checkConfig(), isc::dhcp::ControlledDhcpv6Srv::checkConfig(), isc::process::DControllerBase::configFromFile(), isc::process::DControllerBase::configGetHandler(), isc::netconf::StdoutControlSocket::configSet(), isc::netconf::StdoutControlSocket::configTest(), isc::process::DControllerBase::configTestHandler(), isc::dhcp::configureDhcp4Server(), isc::dhcp::configureDhcp6Server(), isc::process::DControllerBase::configWriteHandler(), isc::config::HookedCommandMgr::handleCommand(), isc::config::BaseCommandMgr::handleCommand(), isc::lease_cmds::LeaseCmdsImpl::lease4WipeHandler(), isc::lease_cmds::LeaseCmdsImpl::lease6WipeHandler(), isc::lease_cmds::LeaseCmdsImpl::leaseGetAllHandler(), isc::lease_cmds::LeaseCmdsImpl::leaseGetHandler(), isc::lease_cmds::LeaseCmdsImpl::leaseGetPageHandler(), isc::netconf::NetconfCfgMgr::parse(), isc::agent::CtrlAgentCfgMgr::parse(), isc::d2::D2CfgMgr::parse(), isc::dhcp::ControlledDhcpv6Srv::processCommand(), isc::dhcp::ControlledDhcpv4Srv::processCommand(), isc::config::BaseCommandMgr::processCommand(), isc::dhcp::ControlledDhcpv4Srv::processConfig(), isc::dhcp::ControlledDhcpv6Srv::processConfig(), isc::ha::HAService::processContinue(), isc::ha::HAService::processHeartbeat(), isc::ha::HAService::processScopes(), isc::ha::HAService::processSynchronize(), isc::ha::HAImpl::scopesHandler(), isc::config::CmdsImpl::setErrorResponse(), isc::config::CmdsImpl::setSuccessResponse(), isc::netconf::NetconfProcess::shutdown(), isc::agent::CtrlAgentProcess::shutdown(), isc::d2::D2Process::shutdown(), isc::process::DControllerBase::shutdownProcess(), isc::process::DCfgMgrBase::simpleParseConfig(), isc::stats::StatsMgr::statisticGetAllHandler(), isc::stats::StatsMgr::statisticGetHandler(), isc::stats::StatsMgr::statisticRemoveAllHandler(), isc::stats::StatsMgr::statisticRemoveHandler(), isc::stats::StatsMgr::statisticResetAllHandler(), isc::stats::StatsMgr::statisticResetHandler(), isc::stat_cmds::LeaseStatCmdsImpl::statLease4GetHandler(), isc::stat_cmds::LeaseStatCmdsImpl::statLease6GetHandler(), isc::ha::HAImpl::synchronizeHandler(), and isc::process::DControllerBase::versionGetHandler().

◆ createAnswer() [2/6]

isc::data::ConstElementPtr isc::config::createAnswer ( )

Creates a standard config/command level success answer message (i.e.

of the form { "result": 0 }

Returns
Standard command/config success answer message

Definition at line 53 of file command_interpreter.cc.

References createAnswer().

+ Here is the call graph for this function:

◆ createAnswer() [3/6]

isc::data::ConstElementPtr isc::config::createAnswer ( const int  status_code,
const std::string &  status_text 
)

Creates a standard config/command level answer message (i.e.

of the form { "result": 1, "text": "Invalid command received" }

Parameters
status_codeThe return code (0 for success)
status_textA string to put into the "text" argument
Returns
Standard command/config answer message

Definition at line 58 of file command_interpreter.cc.

References createAnswer().

+ Here is the call graph for this function:

◆ createAnswer() [4/6]

ConstElementPtr isc::config::createAnswer ( const int  status_code,
const ConstElementPtr &  arg 
)

Definition at line 63 of file command_interpreter.cc.

Referenced by combineCommandsLists(), and createAnswer().

◆ createAnswer() [5/6]

isc::data::ConstElementPtr isc::config::createAnswer ( const int  status_code,
const isc::data::ConstElementPtr arg 
)

Creates a standard config/command level answer message (i.e.

of the form { "result": status_code, "arguments": arg }

Parameters
status_codeThe return code (0 for success)
argThe optional argument for the answer. This can be of any Element type. May be NULL.
Returns
Standard command/config answer message

◆ createAnswer() [6/6]

isc::data::ConstElementPtr isc::config::createAnswer ( const int  status_code,
const std::string &  status,
const isc::data::ConstElementPtr arg 
)

Creates a standard config/command level answer message.

Parameters
status_codeThe return code (0 for success)
statustextual representation of the status (used mostly for errors)
argThe optional argument for the answer. This can be of any Element type. May be NULL.
Returns
Standard command/config answer message

◆ createCommand() [1/6]

isc::data::ConstElementPtr isc::config::createCommand ( const std::string &  command,
isc::data::ConstElementPtr  arg 
)

Creates a standard command message with the given argument (of the form { "command": "my_command", "arguments": arg }.

Parameters
commandThe command string
argThe optional argument for the command. This can be of any Element type. May be NULL.
Returns
The created message

◆ createCommand() [2/6]

◆ createCommand() [3/6]

ConstElementPtr isc::config::createCommand ( const std::string &  command,
ConstElementPtr  arg 
)

Definition at line 142 of file command_interpreter.cc.

References createCommand().

+ Here is the call graph for this function:

◆ createCommand() [4/6]

isc::data::ConstElementPtr isc::config::createCommand ( const std::string &  command,
isc::data::ConstElementPtr  arg,
const std::string &  service 
)

Creates a standard config/command command message with the given argument and given service (of the form { "command": "my_command", "arguments": arg, "service": [ service ] }.

Parameters
commandThe command string
argThe optional argument for the command. This can be of any Element type. May be NULL.
serviceThe target service. May be empty.
Returns
The created message

◆ createCommand() [5/6]

isc::data::ConstElementPtr isc::config::createCommand ( const std::string &  command,
const std::string &  service 
)

Creates a standard config/command command message with no argument and with the given service (of the form { "command": "my_command", "service": [ service ] })

Parameters
commandThe command string
serviceThe target service. May be empty.
Returns
The created message

Definition at line 147 of file command_interpreter.cc.

References createCommand().

+ Here is the call graph for this function:

◆ createCommand() [6/6]

ConstElementPtr isc::config::createCommand ( const std::string &  command,
ConstElementPtr  arg,
const std::string &  service 
)

Definition at line 152 of file command_interpreter.cc.

References CONTROL_ARGUMENTS, CONTROL_COMMAND, and CONTROL_SERVICE.

Referenced by createCommand().

◆ parseAnswer() [1/2]

◆ parseAnswer() [2/2]

isc::data::ConstElementPtr isc::config::parseAnswer ( int &  status_code,
const isc::data::ConstElementPtr msg 
)

Parses a standard config/command level answer message.

Parameters
status_codeThis value will be set to the return code contained in the message
msgThe message to parse
Returns
The optional argument in the message.

◆ parseCommand() [1/2]

std::string isc::config::parseCommand ( isc::data::ConstElementPtr arg,
isc::data::ConstElementPtr  command 
)

Parses the given command into a string containing the actual command and an ElementPtr containing the optional argument.

Exceptions
CtrlChannelErrorif this is not a well-formed command
Parameters
argThis value will be set to the ElementPtr pointing to the argument, or to an empty Map (ElementPtr) if there was none.
commandThe command message containing the command (as made by createCommand()
Returns
The command name.

◆ parseCommand() [2/2]

std::string isc::config::parseCommand ( ConstElementPtr &  arg,
ConstElementPtr  command 
)

◆ parseCommandWithArgs() [1/2]

std::string isc::config::parseCommandWithArgs ( isc::data::ConstElementPtr arg,
isc::data::ConstElementPtr  command 
)

Parses the given command into a string containing the command name and an ElementPtr containing the mandatory argument.

This function expects that command arguments are specified and are a map.

Exceptions
CtrlChannelErrorif this is not a well-formed command, arguments are not specified or are not a map.
Parameters
argReference to the data element to which command arguments will be assigned.
commandThe command message containing the command and the arguments.
Returns
Command name.

◆ parseCommandWithArgs() [2/2]

std::string isc::config::parseCommandWithArgs ( ConstElementPtr &  arg,
ConstElementPtr  command 
)

Definition at line 205 of file command_interpreter.cc.

References isc_throw, and parseCommand().

+ Here is the call graph for this function:

Variable Documentation

◆ command_logger

isc::log::Logger isc::config::command_logger

Command processing Logger.

Define the logger used to log messages related to command processing. We could define it in multiple modules, but defining in a single module and linking to it saves time and space.

Definition at line 21 of file config_log.h.

Referenced by isc::config::BaseCommandMgr::deregisterCommand(), isc::config::CommandMgrImpl::doAccept(), isc::config::CommandMgrImpl::openCommandSocket(), isc::config::BaseCommandMgr::processCommand(), isc::config::BaseCommandMgr::registerCommand(), and isc::config::BaseCommandMgr::registerExtendedCommand().

◆ CONTROL_ARGUMENTS

const char * isc::config::CONTROL_ARGUMENTS = "arguments"

String used for arguments map ("arguments")

Definition at line 28 of file command_interpreter.cc.

Referenced by createAnswer(), createCommand(), parseAnswer(), and parseCommand().

◆ CONTROL_COMMAND

const char * isc::config::CONTROL_COMMAND = "command"

String used for commands ("command")

Definition at line 25 of file command_interpreter.cc.

Referenced by createCommand(), and parseCommand().

◆ CONTROL_RESULT

const char * isc::config::CONTROL_RESULT = "result"

String used for result, i.e. integer status ("result")

Definition at line 26 of file command_interpreter.cc.

Referenced by answerToText(), createAnswer(), and parseAnswer().

◆ CONTROL_RESULT_COMMAND_UNSUPPORTED

const int isc::config::CONTROL_RESULT_COMMAND_UNSUPPORTED = 2

Status code indicating that the specified command is not supported.

Definition at line 45 of file command_interpreter.h.

Referenced by isc::config::BaseCommandMgr::handleCommand().

◆ CONTROL_RESULT_EMPTY

◆ CONTROL_RESULT_ERROR

◆ CONTROL_RESULT_SUCCESS

◆ CONTROL_SERVICE

const char * isc::config::CONTROL_SERVICE = "service"

String used for service list ("service")

Definition at line 29 of file command_interpreter.cc.

Referenced by createCommand(), and parseCommand().

◆ CONTROL_TEXT

const char * isc::config::CONTROL_TEXT = "text"

String used for storing textual description ("text")

Definition at line 27 of file command_interpreter.cc.

Referenced by answerToText(), createAnswer(), and parseAnswer().

◆ DBG_COMMAND

◆ TIMEOUT_AGENT_FORWARD_COMMAND

constexpr long isc::config::TIMEOUT_AGENT_FORWARD_COMMAND = 60000

Timeout for the Control Agent to forward command to a Kea server, e.g.

DHCP server.

This value is high to ensure that the server have enough time to generate large responses, e.g. dump whole lease databse.

Definition at line 31 of file timeouts.h.

◆ TIMEOUT_AGENT_IDLE_CONNECTION_TIMEOUT

constexpr long isc::config::TIMEOUT_AGENT_IDLE_CONNECTION_TIMEOUT = 30000

Timeout for the idle connection to be closed.

Definition at line 24 of file timeouts.h.

Referenced by isc::agent::CtrlAgentProcess::configure().

◆ TIMEOUT_AGENT_RECEIVE_COMMAND

constexpr long isc::config::TIMEOUT_AGENT_RECEIVE_COMMAND = 10000

Timeout for the Control Agent to receive command over the RESTful interface.

Definition at line 21 of file timeouts.h.

Referenced by isc::agent::CtrlAgentProcess::configure().

◆ TIMEOUT_DHCP_SERVER_RECEIVE_COMMAND

constexpr long isc::config::TIMEOUT_DHCP_SERVER_RECEIVE_COMMAND = 10000

Timeout for the DHCP server to receive command over the unix domain socket.

Definition at line 17 of file timeouts.h.