7 #ifndef OPTION_DEFINITION_H 8 #define OPTION_DEFINITION_H 16 #include <boost/multi_index/hashed_index.hpp> 17 #include <boost/multi_index/mem_fun.hpp> 18 #include <boost/multi_index/ordered_index.hpp> 19 #include <boost/multi_index/sequenced_index.hpp> 20 #include <boost/multi_index_container.hpp> 21 #include <boost/shared_ptr.hpp> 156 const std::string& space,
157 const std::string& type,
158 const bool array_type =
false);
170 const std::string& space,
172 const bool array_type =
false);
191 const std::string& space,
192 const std::string& type,
193 const char* encapsulated_space);
212 const std::string& space,
214 const char* encapsulated_space);
231 static OptionDefinitionPtr create(
const std::string& name,
233 const std::string& space,
234 const std::string& type,
235 const bool array_type =
false);
252 static OptionDefinitionPtr create(
const std::string& name,
254 const std::string& space,
256 const bool array_type =
false);
273 static OptionDefinitionPtr create(
const std::string& name,
275 const std::string& space,
276 const std::string& type,
277 const char* encapsulated_space);
294 static OptionDefinitionPtr create(
const std::string& name,
296 const std::string& space,
298 const char* encapsulated_space);
316 return (equals(other));
325 return (!equals(other));
335 void addRecordField(
const std::string& data_type_name);
362 return (encapsulated_space_);
374 return (record_fields_);
381 return (option_space_name_);
391 return (user_context_.getContext());
397 user_context_.setContext(ctx);
407 user_context_.contextToElement(map);
420 void validate()
const;
487 const std::vector<std::string>& values)
const;
499 static OptionPtr factoryAddrList4(uint16_t type,
513 static OptionPtr factoryAddrList6(uint16_t type,
541 static OptionPtr factoryIA6(uint16_t type,
553 static OptionPtr factoryIAAddr6(uint16_t type,
565 static OptionPtr factoryIAPrefix6(uint16_t type,
598 const std::string& encapsulated_space,
602 option->setEncapsulatedSpace(encapsulated_space);
603 option->unpack(begin, end);
628 bool haveCompressedFqdnListFormat()
const;
667 return (type == type_);
673 inline bool haveSpace(
const std::string& space)
const {
674 return (space == option_space_name_);
695 bool convertToBool(
const std::string& value_str)
const;
710 T lexicalCastWithRangeCheck(
const std::string& value_str)
const;
740 std::string encapsulated_space_;
742 RecordFieldsCollection record_fields_;
746 std::string option_space_name_;
764 typedef boost::multi_index_container<
768 boost::multi_index::indexed_by<
771 boost::multi_index::sequenced<>,
773 boost::multi_index::hashed_non_unique<
780 boost::multi_index::const_mem_fun<
787 boost::multi_index::hashed_non_unique<
791 boost::multi_index::const_mem_fun<
798 boost::multi_index::ordered_non_unique<
801 boost::multi_index::const_mem_fun<
803 boost::posix_time::ptime,
809 boost::multi_index::hashed_non_unique<
810 boost::multi_index::tag<OptionIdIndexTag>,
811 boost::multi_index::const_mem_fun<data::BaseStampedElement, uint64_t,
832 typedef std::pair<OptionDefContainerTypeIndex::const_iterator,
841 typedef std::pair<OptionDefContainerNameIndex::const_iterator,
861 void addItem(
const OptionDefinitionPtr& def) {
869 #endif // OPTION_DEFINITION_H Simple container for option spaces holding various items.
This class represents configuration element which is associated with database identifier, modification timestamp and servers.
Exception to be thrown when invalid option value has been specified for a particular option definitio...
Base class representing a DHCP option definition.
void contextToElement(data::ElementPtr map) const
Merge unparse a user_context object.
void addItem(const OptionDefinitionPtr &def)
Adds a new option definition to the container.
std::vector< OptionDataType > RecordFieldsCollection
List of fields within the record.
bool operator!=(const OptionDefinition &other) const
Inequality operator.
Base class for user context.
OptionDefContainer::nth_index< 1 >::type OptionDefContainerTypeIndex
Type of the index #1 - option type.
boost::shared_ptr< Option > OptionPtr
Universe
defines option universe DHCPv4 or DHCPv6
static OptionPtr factoryIntegerArray(Option::Universe u, uint16_t type, OptionBufferConstIter begin, OptionBufferConstIter end)
Factory function to create option with array of integer values.
boost::shared_ptr< Element > ElementPtr
Forward declaration to OptionInt.
std::map< uint32_t, OptionDefContainerPtr > VendorOptionDefContainers
Container that holds various vendor option containers.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
boost::multi_index_container< OptionDefinitionPtr, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::hashed_non_unique< boost::multi_index::const_mem_fun< OptionDefinition, uint16_t, &OptionDefinition::getCode > >, boost::multi_index::hashed_non_unique< boost::multi_index::const_mem_fun< OptionDefinition, std::string, &OptionDefinition::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< data::BaseStampedElement, boost::posix_time::ptime, &data::StampedElement::getModificationTime > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< OptionIdIndexTag >, boost::multi_index::const_mem_fun< data::BaseStampedElement, uint64_t, &data::BaseStampedElement::getId > > >> OptionDefContainer
Multi index container for DHCP option definitions.
std::vector< uint8_t > OptionBuffer
buffer types used in DHCP code.
std::pair< OptionDefContainerTypeIndex::const_iterator, OptionDefContainerTypeIndex::const_iterator > OptionDefContainerTypeRange
Pair of iterators to represent the range of options definitions having the same option type value...
Class of option definition space container.
OptionDataType
Data types of DHCP option fields.
uint16_t getCode() const
Return option code.
Forward declaration to OptionIntArray.
boost::posix_time::ptime getModificationTime() const
Returns timestamp.
uint64_t getId() const
Returns element's database identifier.
boost::shared_ptr< const Element > ConstElementPtr
Exception to be thrown when the particular option definition duplicates existing option definition...
boost::shared_ptr< OptionDefContainer > OptionDefContainerPtr
Pointer to an option definition container.
OptionSpaceContainer< OptionDefContainer, OptionDefinitionPtr, std::string > BaseOptionDefSpaceContainer
Base type of option definition space container.
std::string getName() const
Return option name.
void setContext(const data::ConstElementPtr &ctx)
Sets user context.
OptionBuffer::const_iterator OptionBufferConstIter
const_iterator for walking over OptionBuffer
std::map< std::string, OptionDefContainerPtr > OptionDefContainers
Container that holds option definitions for various option spaces.
data::ConstElementPtr getContext() const
Returns const pointer to the user context.
This is a base class for exceptions thrown from the DNS library module.
Defines the logger used by the top-level component of kea-lfc.
std::string getOptionSpaceName() const
Returns option space name.
const RecordFieldsCollection & getRecordFields() const
Return list of record fields.
void addItem(const ItemType &item, const Selector &option_space)
Adds a new item to the option_space.
This class represents configuration element which is associated with database identifier and the modi...
InvalidOptionValue(const char *file, size_t line, const char *what)
boost::shared_ptr< OptionDefinition > OptionDefinitionPtr
Pointer to option definition object.
std::vector< OptionDataType >::const_iterator RecordFieldsConstIter
Const iterator for record data fields.
DuplicateOptionDefinition(const char *file, size_t line, const char *what)
bool getArrayType() const
Return array type indicator.
OptionDataType getType() const
Return option data type.
std::string getEncapsulatedSpace() const
Return name of the encapsulated option space.
static OptionPtr factoryInteger(Option::Universe u, uint16_t type, const std::string &encapsulated_space, OptionBufferConstIter begin, OptionBufferConstIter end)
Factory function to create option with integer value.
OptionDefContainer::nth_index< 2 >::type OptionDefContainerNameIndex
Type of the index #2 - option name.
std::pair< OptionDefContainerNameIndex::const_iterator, OptionDefContainerNameIndex::const_iterator > OptionDefContainerNameRange
Pair of iterators to represent the range of options definitions having the same option name...
bool operator==(const OptionDefinition &other) const
Equality operator.