12#include <boost/shared_ptr.hpp>
269 virtual std::string
toText(
int indent = 0)
const;
277 virtual std::string
toString()
const;
286 virtual std::vector<uint8_t>
toBinary(
const bool include_header =
false)
const;
295 virtual std::string
toHexString(
const bool include_header =
false)
const;
308 virtual uint16_t
len()
const;
318 virtual bool valid()
const;
433 template<
typename InputIterator>
434 void setData(InputIterator first, InputIterator last) {
435 data_.assign(first, last);
503 template<
typename OptionType>
505 const OptionType* cast_this =
dynamic_cast<const OptionType*
>(
this);
507 return (boost::shared_ptr<OptionType>(
new OptionType(*cast_this)));
570 const std::string& type_name =
"")
const;
This is a base class for exceptions thrown from the DNS library module.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Wrapper exception thrown by unpackOptionsX functions to add option type and len to the underlying err...
OptionParseError(const char *file, size_t line, const char *what)
static OptionPtr factory(Option::Universe u, uint16_t type, const OptionBuffer &buf)
Factory function to create instance of option.
uint16_t type_
option type (0-255 for DHCPv4, 0-65535 for DHCPv6)
std::string headerToText(const int indent=0, const std::string &type_name="") const
Returns option header in the textual format.
std::string suboptionsToText(const int indent=0) const
Returns collection of suboptions in the textual format.
static bool lenient_parsing_
Governs whether options should be parsed less strictly.
std::string encapsulated_space_
Name of the option space being encapsulated by this option.
const OptionCollection & getOptions() const
Returns all encapsulated options.
std::string getEncapsulatedSpace() const
Returns the name of the option space encapsulated by this option.
bool equals(const OptionPtr &other) const
Checks if options are equal.
void setEncapsulatedSpace(const std::string &encapsulated_space)
Sets the name of the option space encapsulated by this option.
virtual const OptionBuffer & getData() const
Returns pointer to actual data.
virtual ~Option()
just to force that every option has virtual dtor
virtual void pack(isc::util::OutputBuffer &buf, bool check=true) const
Writes option in wire-format to a buffer.
bool delOption(uint16_t type)
Attempts to delete first suboption of requested type.
virtual uint16_t getHeaderLen() const
Returns length of header (2 for v4, 4 for v6)
virtual uint16_t len() const
Returns length of the complete option (data length + DHCPv4/DHCPv6 option header)
Universe
defines option universe DHCPv4 or DHCPv6
Universe universe_
option universe (V4 or V6)
OptionPtr getOption(uint16_t type) const
Returns shared_ptr to suboption of specific type.
void addOption(OptionPtr opt)
Adds a sub-option.
void setUint32(uint32_t value)
Sets content of this option to a single uint32 value.
uint16_t getType() const
Returns option type (0-255 for DHCPv4, 0-65535 for DHCPv6)
OptionBuffer data_
contains content of this data
virtual std::string toString() const
Returns string representation of the value.
void unpackOptions(const OptionBuffer &buf)
Builds a collection of sub options from the buffer.
void packOptions(isc::util::OutputBuffer &buf, bool check=true) const
Store sub options in a buffer.
static OptionPtr create(Universe u, uint16_t type)
Factory function creating an instance of the Option.
static const size_t OPTION6_HDR_LEN
length of any DHCPv6 option header
OptionPtr Factory(Option::Universe u, uint16_t type, const OptionBuffer &buf)
a factory function prototype
void setUint8(uint8_t value)
Sets content of this option to a single uint8 value.
Option & operator=(const Option &rhs)
Assignment operator.
void setData(InputIterator first, InputIterator last)
Sets content of this option from buffer.
virtual bool valid() const
returns if option is valid (e.g.
OptionCollection options_
collection for storing suboptions
OptionPtr cloneInternal() const
Copies this option and returns a pointer to the copy.
Universe getUniverse() const
returns option universe (V4 or V6)
uint8_t getUint8() const
Returns content of first byte.
virtual std::vector< uint8_t > toBinary(const bool include_header=false) const
Returns binary representation of the option.
void setUint16(uint16_t value)
Sets content of this option to a single uint16 value.
virtual OptionPtr clone() const
Copies this option and returns a pointer to the copy.
virtual void unpack(OptionBufferConstIter begin, OptionBufferConstIter end)
Parses received buffer.
static OptionPtr factory(Option::Universe u, uint16_t type)
Factory function to create instance of option.
uint16_t getUint16() const
Returns content of first word.
virtual std::string toText(int indent=0) const
Returns string representation of the option.
OptionCollection & getMutableOptions()
Returns all encapsulated options.
void packHeader(isc::util::OutputBuffer &buf, bool check=true) const
Store option's header in a buffer.
virtual std::string toHexString(const bool include_header=false) const
Returns string containing hexadecimal representation of option.
uint32_t getUint32() const
Returns content of first double word.
Option(Universe u, uint16_t type)
ctor, used for options constructed, usually during transmission
void check() const
A protected method used for option correctness.
void getOptionsCopy(OptionCollection &options_copy) const
Performs deep copy of suboptions.
static const size_t OPTION4_HDR_LEN
length of the usual DHCPv4 option header (there are exceptions)
Exception thrown during option unpacking This exception is thrown when an error has occurred,...
SkipRemainingOptionsError(const char *file, size_t line, const char *what)
Exception thrown during option unpacking This exception is thrown when an error has occurred unpackin...
SkipThisOptionError(const char *file, size_t line, const char *what)
The OutputBuffer class is a buffer abstraction for manipulating mutable data.
boost::shared_ptr< OptionCollection > OptionCollectionPtr
A pointer to an OptionCollection.
OptionBuffer::const_iterator OptionBufferConstIter
const_iterator for walking over OptionBuffer
std::multimap< unsigned int, OptionPtr > OptionCollection
A collection of DHCP (v4 or v6) options.
boost::shared_ptr< OptionBuffer > OptionBufferPtr
pointer to a DHCP buffer
OptionBuffer::iterator OptionBufferIter
iterator for walking over OptionBuffer
std::vector< uint8_t > OptionBuffer
buffer types used in DHCP code.
boost::shared_ptr< Option > OptionPtr
Defines the logger used by the top-level component of kea-lfc.