Kea 2.7.6
isc::dhcp::ClientClassDictionary Class Reference

Maintains a list of ClientClassDef's. More...

#include <client_class_def.h>

+ Inheritance diagram for isc::dhcp::ClientClassDictionary:

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 ClientClassDefListPtrgetClasses () 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.
 
ClientClassDictionaryoperator= (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.
 

Detailed Description

Maintains a list of ClientClassDef's.

Definition at line 362 of file client_class_def.h.

Constructor & Destructor Documentation

◆ ClientClassDictionary() [1/2]

isc::dhcp::ClientClassDictionary::ClientClassDictionary ( )

Constructor.

Definition at line 320 of file client_class_def.cc.

◆ ClientClassDictionary() [2/2]

isc::dhcp::ClientClassDictionary::ClientClassDictionary ( const ClientClassDictionary & rhs)

Definition at line 324 of file client_class_def.cc.

◆ ~ClientClassDictionary()

isc::dhcp::ClientClassDictionary::~ClientClassDictionary ( )

Destructor.

Definition at line 332 of file client_class_def.cc.

Member Function Documentation

◆ addClass() [1/2]

void isc::dhcp::ClientClassDictionary::addClass ( const ClientClassDefPtr & class_def)

Adds a new class to the list.

Parameters
class_defpointer to class definition to add
Exceptions
DuplicateClientClassDefif 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.

+ Here is the call graph for this function:

◆ addClass() [2/2]

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.

Parameters
nameName to assign to this class
match_exprExpression the class will use to determine membership
testOriginal version of match_expr
additionalOriginal value of the only if additional flag
depend_on_knownUsing host so will be evaluated later
optionsCollection of options members should be given
defsOption definitions (optional)
user_contextUser context (optional)
next_servernext-server value for this class (optional)
snameserver-name value for this class (optional)
filenameboot-file-name value for this class (optional)
validvalid-lifetime triplet (optional)
preferredpreferred-lifetime triplet (optional)
is_templatetrue if class is a template class. Defaults to false.
offer_lftthe offer lifetime assigned to the class (may be empty if not defined)
Exceptions
DuplicateClientClassDefif 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=().

+ Here is the call graph for this function:

◆ createOptions()

void isc::dhcp::ClientClassDictionary::createOptions ( const CfgOptionDefPtr & cfg_option_def)

Iterates over the classes in the dictionary and recreates the options.

Parameters
cfg_option_defset 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().

◆ dependOnClass()

bool isc::dhcp::ClientClassDictionary::dependOnClass ( const std::string & name,
std::string & dependent_class ) const

Checks direct dependency.

Parameters
nameThe client class name.
[out]dependent_classReference to a variable where the name of the first class depending on the checked class is set.
Returns
true if a definition depends on the class name, false if none.

Definition at line 436 of file client_class_def.cc.

◆ empty()

bool isc::dhcp::ClientClassDictionary::empty ( ) const

Checks if the class dictionary is empty.

Returns
true if there are no classes, false otherwise.

Definition at line 431 of file client_class_def.cc.

◆ encapsulateOptions()

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().

◆ equals()

bool isc::dhcp::ClientClassDictionary::equals ( const ClientClassDictionary & other) const

Compares two ClientClassDictionary objects for equality.

Parameters
otherOther client class definition to compare to.
Returns
true if descriptors equal, false otherwise.

Definition at line 456 of file client_class_def.cc.

Referenced by operator!=(), and operator==().

◆ findClass()

ClientClassDefPtr isc::dhcp::ClientClassDictionary::findClass ( const std::string & name) const

Fetches the class definition for a given class name.

Parameters
namethe name of the desired class
Returns
ClientClassDefPtr to the desired class if found, or an empty pointer if not.

Definition at line 388 of file client_class_def.cc.

Referenced by addClass().

◆ getClasses()

const ClientClassDefListPtr & isc::dhcp::ClientClassDictionary::getClasses ( ) const

Fetches the dictionary's list of classes.

Returns
ClientClassDefListPtr to the list of classes

Definition at line 426 of file client_class_def.cc.

◆ initMatchExpr()

void isc::dhcp::ClientClassDictionary::initMatchExpr ( uint16_t family)

Iterates over the classes in the dictionary and ensures that that match expressions are initialized.

Parameters
familyClass 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().

+ Here is the call graph for this function:

◆ operator!=()

bool isc::dhcp::ClientClassDictionary::operator!= ( const ClientClassDictionary & other) const
inline

Inequality operator.

Parameters
otherOther client class dictionary to compare to.
Returns
true if the dictionaries are not equal, false otherwise.

Definition at line 492 of file client_class_def.h.

References equals().

+ Here is the call graph for this function:

◆ operator=()

ClientClassDictionary & isc::dhcp::ClientClassDictionary::operator= ( const ClientClassDictionary & rhs)

Copy assignment operator.

Parameters
rhsClient class dictionary to be copied from.
Returns
Instance copy.

Definition at line 564 of file client_class_def.cc.

References addClass(), and isc::data::copy().

+ Here is the call graph for this function:

◆ operator==()

bool isc::dhcp::ClientClassDictionary::operator== ( const ClientClassDictionary & other) const
inline

Equality operator.

Parameters
otherOther client class dictionary to compare to.
Returns
true if the dictionaries are equal, false otherwise.

Definition at line 483 of file client_class_def.h.

References equals().

+ Here is the call graph for this function:

◆ removeClass() [1/2]

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.

Parameters
namethe name of the class to remove

Definition at line 398 of file client_class_def.cc.

◆ removeClass() [2/2]

void isc::dhcp::ClientClassDictionary::removeClass ( const uint64_t id)

Removes a client class by id.

Parameters
idclass id.

Definition at line 410 of file client_class_def.cc.

◆ toElement()

ElementPtr isc::dhcp::ClientClassDictionary::toElement ( ) const
virtual

Unparse a configuration object.

Returns
a pointer to unparsed configuration

Implements isc::data::CfgToElement.

Definition at line 554 of file client_class_def.cc.

References isc::data::Element::createList().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: