Kea 2.7.4
|
Represents option definitions used by the DHCP server. More...
#include <cfg_option_def.h>
Public Member Functions | |
void | copyTo (CfgOptionDef &new_config) const |
Copies this configuration to a new configuration. | |
Public Member Functions inherited from isc::data::CfgToElement | |
virtual | ~CfgToElement () |
Destructor. | |
Methods and operators used for comparing objects. | |
bool | equals (const CfgOptionDef &other) const |
Check if configuration is equal to other configuration. | |
bool | operator== (const CfgOptionDef &other) const |
Equality operator. | |
bool | operator!= (const CfgOptionDef &other) const |
Inequality operator. | |
void | add (const OptionDefinitionPtr &def) |
Add new option definition. | |
OptionDefContainerPtr | getAll (const std::string &option_space) const |
Return option definitions for particular option space. | |
OptionDefinitionPtr | get (const std::string &option_space, const uint16_t option_code) const |
Return option definition for a particular option space and code. | |
OptionDefinitionPtr | get (const std::string &option_space, const std::string &option_name) const |
Return option definition for the particular option space and name. | |
uint64_t | del (const uint64_t id) |
Deletes all option definitions having a given database id. | |
const OptionDefSpaceContainer & | getContainer () const |
Returns reference to container holding option definitions. | |
virtual isc::data::ElementPtr | toElement () const |
Unparse a configuration object. | |
isc::data::ElementPtr | toElementWithMetadata (const bool include_metadata) const |
Unparse a configuration object with optionally including the metadata. | |
void | merge (CfgOptionDef &other) |
Merges specified option definitions from a configuration into this configuration. | |
Represents option definitions used by the DHCP server.
This class provides methods to add and retrieve option definitions specified by the administrator for the DHCP server. Option definitions specify formats of the options. This class doesn't hold information about the data being carried by the options.
Option definitions are grouped by option spaces. The option space is identified by the unique name which is specified as a string. The following names: "dhcp4" and "dhcp6" are reserved, though. They are names of option spaces used for standard top-level DHCPv4 and DHCPv6 options respectively.
Definition at line 30 of file cfg_option_def.h.
void isc::dhcp::CfgOptionDef::add | ( | const OptionDefinitionPtr & | def | ) |
Add new option definition.
def | option definition to be added. |
isc::dhcp::DuplicateOptionDefinition | when the particular option definition already exists. |
isc::dhcp::MalformedOptionDefinition | when the pointer to an option definition is NULL. |
isc::BadValue | when the option space name is empty or when trying to override the standard option (in dhcp4 or dhcp6 option space). |
Definition at line 74 of file cfg_option_def.cc.
References isc::dhcp::OptionDefSpaceContainer::addItem(), get(), isc::dhcp::LibDHCP::getOptionDef(), and isc_throw.
void isc::dhcp::CfgOptionDef::copyTo | ( | CfgOptionDef & | new_config | ) | const |
Copies this configuration to a new configuration.
This method copies the option definitions stores in the configuration to an object passed as parameter. There are no shared objects or pointers between the original object and a copy.
[out] | new_config | An object to which the configuration will be copied. |
Definition at line 21 of file cfg_option_def.cc.
References getAll(), and isc::dhcp::OptionSpaceContainer< ContainerType, ItemType, Selector >::getOptionSpaceNames().
uint64_t isc::dhcp::CfgOptionDef::del | ( | const uint64_t | id | ) |
Deletes all option definitions having a given database id.
Note that there are cases when there will be multiple option definitions having the same id (typically id of 0). When configuration backend is in use it sets the unique ids from the database. In cases when the configuration backend is not used, the ids default to 0. Passing the id of 0 would result in deleting all option definitions that were not added via the database.
id | Identifier of the option definitions to be deleted. |
Definition at line 157 of file cfg_option_def.cc.
References isc::dhcp::OptionSpaceContainer< ContainerType, ItemType, Selector >::deleteItems().
bool isc::dhcp::CfgOptionDef::equals | ( | const CfgOptionDef & | other | ) | const |
Check if configuration is equal to other configuration.
other | An object holding configuration to compare to. |
Definition at line 37 of file cfg_option_def.cc.
References getAll(), and isc::dhcp::OptionSpaceContainer< ContainerType, ItemType, Selector >::getOptionSpaceNames().
Referenced by operator!=(), and operator==().
OptionDefinitionPtr isc::dhcp::CfgOptionDef::get | ( | const std::string & | option_space, |
const std::string & | option_name ) const |
Return option definition for the particular option space and name.
option_space | option space. |
option_name | option name. |
Definition at line 135 of file cfg_option_def.cc.
References getAll().
OptionDefinitionPtr isc::dhcp::CfgOptionDef::get | ( | const std::string & | option_space, |
const uint16_t | option_code ) const |
Return option definition for a particular option space and code.
option_space | option space. |
option_code | option code. |
Definition at line 113 of file cfg_option_def.cc.
References getAll().
Referenced by add().
OptionDefContainerPtr isc::dhcp::CfgOptionDef::getAll | ( | const std::string & | option_space | ) | const |
Return option definitions for particular option space.
option_space | option space. |
Definition at line 107 of file cfg_option_def.cc.
References isc::dhcp::OptionSpaceContainer< ContainerType, ItemType, Selector >::getItems().
Referenced by copyTo(), equals(), get(), get(), merge(), and toElementWithMetadata().
|
inline |
Returns reference to container holding option definitions.
Definition at line 131 of file cfg_option_def.h.
void isc::dhcp::CfgOptionDef::merge | ( | CfgOptionDef & | other | ) |
Merges specified option definitions from a configuration into this configuration.
This method merges the option definitions from the other
configuration into this configuration. The merged set of definitions is created as follows:
Iterator over the definitions in each name space in this configuration: If either the definition's name or code are defined in other
then skip over the definition otherwise add it to other
.
Replace this configuration's definitions with the definitions in other
using copyTo()
.
other | option definitions to merge in. |
other
. Therefore, the caller must not rely on the data held in the other
object after the call to merge
. Also, the data held in other
must not be modified after the call to merge
because it may affect the merged configuration. Definition at line 226 of file cfg_option_def.cc.
References getAll(), and isc::dhcp::OptionSpaceContainer< ContainerType, ItemType, Selector >::getOptionSpaceNames().
|
inline |
Inequality operator.
other | An object holding configuration to compare to. |
Definition at line 67 of file cfg_option_def.h.
References equals().
|
inline |
Equality operator.
other | An object holding configuration to compare to. |
Definition at line 58 of file cfg_option_def.h.
References equals().
|
virtual |
Unparse a configuration object.
Implements isc::data::CfgToElement.
Definition at line 162 of file cfg_option_def.cc.
References toElementWithMetadata().
ElementPtr isc::dhcp::CfgOptionDef::toElementWithMetadata | ( | const bool | include_metadata | ) | const |
Unparse a configuration object with optionally including the metadata.
include_metadata | boolean value indicating if the metadata should be included (if true) or not (if false). |
Definition at line 167 of file cfg_option_def.cc.
References isc::data::Element::create(), isc::data::Element::createList(), isc::data::Element::createMap(), getAll(), isc::dhcp::OptionDataTypeUtil::getDataTypeName(), and isc::dhcp::OptionSpaceContainer< ContainerType, ItemType, Selector >::getOptionSpaceNames().
Referenced by toElement().