Kea 2.7.6
|
Maintains a list of ClientClassDef's. More...
#include <client_class_def.h>
Public Member Functions | |
ClientClassDictionary () | |
Constructor. | |
ClientClassDictionary (const ClientClassDictionary &rhs) | |
~ClientClassDictionary () | |
Destructor. | |
void | addClass (const ClientClassDefPtr &class_def) |
Adds a new class to the list. | |
void | addClass (const std::string &name, const ExpressionPtr &match_expr, const std::string &test, bool additional, bool depend_on_known, const CfgOptionPtr &options, CfgOptionDefPtr defs=CfgOptionDefPtr(), isc::data::ConstElementPtr user_context=isc::data::ConstElementPtr(), asiolink::IOAddress next_server=asiolink::IOAddress("0.0.0.0"), const std::string &sname=std::string(), const std::string &filename=std::string(), const util::Triplet< uint32_t > &valid=util::Triplet< uint32_t >(), const util::Triplet< uint32_t > &preferred=util::Triplet< uint32_t >(), bool is_template=false, const util::Optional< uint32_t > &offer_lft=util::Optional< uint32_t >()) |
Adds a new class to the list. | |
void | createOptions (const CfgOptionDefPtr &cfg_option_def) |
Iterates over the classes in the dictionary and recreates the options. | |
bool | dependOnClass (const std::string &name, std::string &dependent_class) const |
Checks direct dependency. | |
bool | empty () const |
Checks if the class dictionary is empty. | |
void | encapsulateOptions () const |
Iterates over the classes in the dictionary and encapsulates suboptions. | |
bool | equals (const ClientClassDictionary &other) const |
Compares two ClientClassDictionary objects for equality. | |
ClientClassDefPtr | findClass (const std::string &name) const |
Fetches the class definition for a given class name. | |
const ClientClassDefListPtr & | getClasses () const |
Fetches the dictionary's list of classes. | |
void | initMatchExpr (uint16_t family) |
Iterates over the classes in the dictionary and ensures that that match expressions are initialized. | |
bool | operator!= (const ClientClassDictionary &other) const |
Inequality operator. | |
ClientClassDictionary & | operator= (const ClientClassDictionary &rhs) |
Copy assignment operator. | |
bool | operator== (const ClientClassDictionary &other) const |
Equality operator. | |
void | removeClass (const std::string &name) |
Removes a given class definition from the dictionary. | |
void | removeClass (const uint64_t id) |
Removes a client class by id. | |
virtual isc::data::ElementPtr | toElement () const |
Unparse a configuration object. | |
Public Member Functions inherited from isc::data::CfgToElement | |
virtual | ~CfgToElement () |
Destructor. | |
Maintains a list of ClientClassDef's.
Definition at line 362 of file client_class_def.h.
isc::dhcp::ClientClassDictionary::ClientClassDictionary | ( | ) |
Constructor.
Definition at line 320 of file client_class_def.cc.
isc::dhcp::ClientClassDictionary::ClientClassDictionary | ( | const ClientClassDictionary & | rhs | ) |
Definition at line 324 of file client_class_def.cc.
isc::dhcp::ClientClassDictionary::~ClientClassDictionary | ( | ) |
Destructor.
Definition at line 332 of file client_class_def.cc.
void isc::dhcp::ClientClassDictionary::addClass | ( | const ClientClassDefPtr & | class_def | ) |
Adds a new class to the list.
class_def | pointer to class definition to add |
DuplicateClientClassDef | if class already exists within the dictionary, BadValue if the pointer is empty. |
Definition at line 372 of file client_class_def.cc.
References findClass(), and isc_throw.
void isc::dhcp::ClientClassDictionary::addClass | ( | const std::string & | name, |
const ExpressionPtr & | match_expr, | ||
const std::string & | test, | ||
bool | additional, | ||
bool | depend_on_known, | ||
const CfgOptionPtr & | options, | ||
CfgOptionDefPtr | defs = CfgOptionDefPtr(), | ||
isc::data::ConstElementPtr | user_context = isc::data::ConstElementPtr(), | ||
asiolink::IOAddress | next_server = asiolink::IOAddress("0.0.0.0"), | ||
const std::string & | sname = std::string(), | ||
const std::string & | filename = std::string(), | ||
const util::Triplet< uint32_t > & | valid = util::Triplet<uint32_t>(), | ||
const util::Triplet< uint32_t > & | preferred = util::Triplet<uint32_t>(), | ||
bool | is_template = false, | ||
const util::Optional< uint32_t > & | offer_lft = util::Optional<uint32_t>() ) |
Adds a new class to the list.
name | Name to assign to this class |
match_expr | Expression the class will use to determine membership |
test | Original version of match_expr |
additional | Original value of the only if additional flag |
depend_on_known | Using host so will be evaluated later |
options | Collection of options members should be given |
defs | Option definitions (optional) |
user_context | User context (optional) |
next_server | next-server value for this class (optional) |
sname | server-name value for this class (optional) |
filename | boot-file-name value for this class (optional) |
valid | valid-lifetime triplet (optional) |
preferred | preferred-lifetime triplet (optional) |
is_template | true if class is a template class. Defaults to false. |
offer_lft | the offer lifetime assigned to the class (may be empty if not defined) |
DuplicateClientClassDef | if class already exists within the dictionary. See dhcp::ClientClassDef::ClientClassDef() for others. |
Definition at line 336 of file client_class_def.cc.
References addClass().
Referenced by addClass(), and operator=().
void isc::dhcp::ClientClassDictionary::createOptions | ( | const CfgOptionDefPtr & | cfg_option_def | ) |
Iterates over the classes in the dictionary and recreates the options.
cfg_option_def | set of option definitions to use. |
Definition at line 504 of file client_class_def.cc.
Referenced by isc::dhcp::CBControlDHCPv4::databaseConfigApply(), and isc::dhcp::CBControlDHCPv6::databaseConfigApply().
bool isc::dhcp::ClientClassDictionary::dependOnClass | ( | const std::string & | name, |
std::string & | dependent_class ) const |
Checks direct dependency.
name | The client class name. | |
[out] | dependent_class | Reference to a variable where the name of the first class depending on the checked class is set. |
Definition at line 436 of file client_class_def.cc.
bool isc::dhcp::ClientClassDictionary::empty | ( | ) | const |
Checks if the class dictionary is empty.
Definition at line 431 of file client_class_def.cc.
void isc::dhcp::ClientClassDictionary::encapsulateOptions | ( | ) | const |
Iterates over the classes in the dictionary and encapsulates suboptions.
Definition at line 544 of file client_class_def.cc.
Referenced by isc::dhcp::CBControlDHCPv4::databaseConfigApply(), and isc::dhcp::CBControlDHCPv6::databaseConfigApply().
bool isc::dhcp::ClientClassDictionary::equals | ( | const ClientClassDictionary & | other | ) | const |
Compares two ClientClassDictionary
objects for equality.
other | Other client class definition to compare to. |
Definition at line 456 of file client_class_def.cc.
Referenced by operator!=(), and operator==().
ClientClassDefPtr isc::dhcp::ClientClassDictionary::findClass | ( | const std::string & | name | ) | const |
Fetches the class definition for a given class name.
name | the name of the desired class |
Definition at line 388 of file client_class_def.cc.
Referenced by addClass().
const ClientClassDefListPtr & isc::dhcp::ClientClassDictionary::getClasses | ( | ) | const |
Fetches the dictionary's list of classes.
Definition at line 426 of file client_class_def.cc.
void isc::dhcp::ClientClassDictionary::initMatchExpr | ( | uint16_t | family | ) |
Iterates over the classes in the dictionary and ensures that that match expressions are initialized.
family | Class universe, e.g. AF_INET or AF_INET6. |
Definition at line 478 of file client_class_def.cc.
References isc::eval::EvalContext::acceptAll(), isc::data::Element::create(), isc::dhcp::ExpressionParser::parse(), isc::eval::EvalContext::PARSER_BOOL, and isc::eval::EvalContext::PARSER_STRING.
Referenced by isc::dhcp::CBControlDHCPv4::databaseConfigApply(), and isc::dhcp::CBControlDHCPv6::databaseConfigApply().
|
inline |
Inequality operator.
other | Other client class dictionary to compare to. |
Definition at line 492 of file client_class_def.h.
References equals().
ClientClassDictionary & isc::dhcp::ClientClassDictionary::operator= | ( | const ClientClassDictionary & | rhs | ) |
Copy assignment operator.
rhs | Client class dictionary to be copied from. |
Definition at line 564 of file client_class_def.cc.
References addClass(), and isc::data::copy().
|
inline |
Equality operator.
other | Other client class dictionary to compare to. |
Definition at line 483 of file client_class_def.h.
References equals().
void isc::dhcp::ClientClassDictionary::removeClass | ( | const std::string & | name | ) |
Removes a given class definition from the dictionary.
Removes the class definition from the map if it exists, otherwise no harm, no foul.
name | the name of the class to remove |
Definition at line 398 of file client_class_def.cc.
void isc::dhcp::ClientClassDictionary::removeClass | ( | const uint64_t | id | ) |
Removes a client class by id.
id | class id. |
Definition at line 410 of file client_class_def.cc.
|
virtual |
Unparse a configuration object.
Implements isc::data::CfgToElement.
Definition at line 554 of file client_class_def.cc.
References isc::data::Element::createList().