Kea  2.3.4-git
isc::dhcp::OptionIntArray< T > Class Template Reference

Forward declaration to OptionIntArray. More...

#include <option_definition.h>

+ Inheritance diagram for isc::dhcp::OptionIntArray< T >:

Public Member Functions

 OptionIntArray (const Option::Universe u, const uint16_t type)
 Constructor. More...
 
 OptionIntArray (const Option::Universe u, const uint16_t type, const OptionBuffer &buf)
 Constructor. More...
 
 OptionIntArray (const Option::Universe u, const uint16_t type, OptionBufferConstIter begin, OptionBufferConstIter end)
 Constructor. More...
 
void addValue (const T value)
 Adds a new value to the array. More...
 
virtual OptionPtr clone () const
 Copies this option and returns a pointer to the copy. More...
 
const std::vector< T > & getValues () const
 Return collection of option values. More...
 
virtual uint16_t len () const
 returns complete length of option More...
 
virtual void pack (isc::util::OutputBuffer &buf, bool check=true) const
 Writes option in wire-format to buf, returns pointer to first unused byte after stored option. More...
 
void setValues (const std::vector< T > &values)
 Set option values. More...
 
virtual std::string toText (int indent=0) const
 Returns textual representation of the option. More...
 
virtual void unpack (OptionBufferConstIter begin, OptionBufferConstIter end)
 Parses received buffer. More...
 
- Public Member Functions inherited from isc::dhcp::Option
 Option (Universe u, uint16_t type)
 ctor, used for options constructed, usually during transmission More...
 
 Option (Universe u, uint16_t type, const OptionBuffer &data)
 Constructor, used for received options. More...
 
 Option (Universe u, uint16_t type, OptionBufferConstIter first, OptionBufferConstIter last)
 Constructor, used for received options. More...
 
 Option (const Option &source)
 Copy constructor. More...
 
virtual ~Option ()
 just to force that every option has virtual dtor More...
 
void addOption (OptionPtr opt)
 Adds a sub-option. More...
 
bool delOption (uint16_t type)
 Attempts to delete first suboption of requested type. More...
 
bool equals (const OptionPtr &other) const
 Checks if options are equal. More...
 
virtual bool equals (const Option &other) const
 Checks if two options are equal. More...
 
virtual const OptionBuffergetData () const
 Returns pointer to actual data. More...
 
std::string getEncapsulatedSpace () const
 Returns the name of the option space encapsulated by this option. More...
 
virtual uint16_t getHeaderLen () const
 Returns length of header (2 for v4, 4 for v6) More...
 
OptionCollectiongetMutableOptions ()
 Returns all encapsulated options. More...
 
OptionPtr getOption (uint16_t type) const
 Returns shared_ptr to suboption of specific type. More...
 
const OptionCollectiongetOptions () const
 Returns all encapsulated options. More...
 
void getOptionsCopy (OptionCollection &options_copy) const
 Performs deep copy of suboptions. More...
 
uint16_t getType () const
 Returns option type (0-255 for DHCPv4, 0-65535 for DHCPv6) More...
 
uint16_t getUint16 () const
 Returns content of first word. More...
 
uint32_t getUint32 () const
 Returns content of first double word. More...
 
uint8_t getUint8 () const
 Returns content of first byte. More...
 
Universe getUniverse () const
 returns option universe (V4 or V6) More...
 
Optionoperator= (const Option &rhs)
 Assignment operator. More...
 
template<typename InputIterator >
void setData (InputIterator first, InputIterator last)
 Sets content of this option from buffer. More...
 
void setEncapsulatedSpace (const std::string &encapsulated_space)
 Sets the name of the option space encapsulated by this option. More...
 
void setUint16 (uint16_t value)
 Sets content of this option to a single uint16 value. More...
 
void setUint32 (uint32_t value)
 Sets content of this option to a single uint32 value. More...
 
void setUint8 (uint8_t value)
 Sets content of this option to a single uint8 value. More...
 
virtual std::vector< uint8_t > toBinary (const bool include_header=false) const
 Returns binary representation of the option. More...
 
virtual std::string toHexString (const bool include_header=false) const
 Returns string containing hexadecimal representation of option. More...
 
virtual std::string toString () const
 Returns string representation of the value. More...
 
virtual bool valid () const
 returns if option is valid (e.g. More...
 

Additional Inherited Members

- Public Types inherited from isc::dhcp::Option
typedef OptionPtr Factory(Option::Universe u, uint16_t type, const OptionBuffer &buf)
 a factory function prototype More...
 
enum  Universe { V4, V6 }
 defines option universe DHCPv4 or DHCPv6 More...
 
- Static Public Member Functions inherited from isc::dhcp::Option
static OptionPtr create (Universe u, uint16_t type)
 Factory function creating an instance of the Option. More...
 
static OptionPtr create (Universe u, uint16_t type, const OptionBuffer &data)
 Factory function creating an instance of the Option. More...
 
static OptionPtr factory (Option::Universe u, uint16_t type, const OptionBuffer &buf)
 Factory function to create instance of option. More...
 
static OptionPtr factory (Option::Universe u, uint16_t type)
 Factory function to create instance of option. More...
 
- Static Public Attributes inherited from isc::dhcp::Option
static bool lenient_parsing_
 Governs whether options should be parsed less strictly. More...
 
static const size_t OPTION4_HDR_LEN = 2
 length of the usual DHCPv4 option header (there are exceptions) More...
 
static const size_t OPTION6_HDR_LEN = 4
 length of any DHCPv6 option header More...
 
- Protected Member Functions inherited from isc::dhcp::Option
void check () const
 A protected method used for option correctness. More...
 
template<typename OptionType >
OptionPtr cloneInternal () const
 Copies this option and returns a pointer to the copy. More...
 
std::string headerToText (const int indent=0, const std::string &type_name="") const
 Returns option header in the textual format. More...
 
void packHeader (isc::util::OutputBuffer &buf, bool check=true) const
 Store option's header in a buffer. More...
 
void packOptions (isc::util::OutputBuffer &buf, bool check=true) const
 Store sub options in a buffer. More...
 
std::string suboptionsToText (const int indent=0) const
 Returns collection of suboptions in the textual format. More...
 
void unpackOptions (const OptionBuffer &buf)
 Builds a collection of sub options from the buffer. More...
 
- Protected Attributes inherited from isc::dhcp::Option
OptionBuffer data_
 contains content of this data More...
 
std::string encapsulated_space_
 Name of the option space being encapsulated by this option. More...
 
OptionCollection options_
 collection for storing suboptions More...
 
uint16_t type_
 option type (0-255 for DHCPv4, 0-65535 for DHCPv6) More...
 
Universe universe_
 option universe (V4 or V6) More...
 

Detailed Description

template<typename T>
class isc::dhcp::OptionIntArray< T >

Forward declaration to OptionIntArray.

This template class represents DHCP (v4 or v6) option with an array of integer values.

Forward declaration of OptionIntArray.

This forward declaration is needed to access the OptionIntArray class without having to include the option_int_array.h header file. It is required because this header includes libdhcp++.h, and including option_int_array.h would cause circular inclusion between libdhcp++.h, option_definition.h and option_int_array.h.

The type of the elements in the array can be any of the following:

  • uint8_t,
  • uint16_t,
  • uint32_t,
  • int8_t,
  • int16_t,
  • int32_t.
Warning
Since this option may convey variable number of integer values, sub-options are should not be added in this option as there is no way to distinguish them from other data. The API will allow addition of sub-options but they will be ignored during packing and unpacking option data.
Template Parameters
Tdata field type (see above).

Definition at line 75 of file option_definition.h.

Constructor & Destructor Documentation

◆ OptionIntArray() [1/3]

template<typename T >
isc::dhcp::OptionIntArray< T >::OptionIntArray ( const Option::Universe  u,
const uint16_t  type 
)
inline

Constructor.

Creates option with empty values vector.

Parameters
uuniverse (V4 or V6).
typeoption type.
Exceptions
isc::dhcp::InvalidDataTypeif data field type provided as template parameter is not a supported integer type.

Definition at line 73 of file option_int_array.h.

References isc_throw.

◆ OptionIntArray() [2/3]

template<typename T >
isc::dhcp::OptionIntArray< T >::OptionIntArray ( const Option::Universe  u,
const uint16_t  type,
const OptionBuffer buf 
)
inline

Constructor.

Parameters
uuniverse (V4 or V6).
typeoption type.
bufbuffer with option data (must not be empty).
Exceptions
isc::OutOfRangeif provided buffer is empty or its length is not multiple of size of the data type in bytes.
isc::dhcp::InvalidDataTypeif data field type provided as template parameter is not a supported integer type.

Definition at line 91 of file option_int_array.h.

References isc_throw, and isc::dhcp::OptionIntArray< T >::unpack().

+ Here is the call graph for this function:

◆ OptionIntArray() [3/3]

template<typename T >
isc::dhcp::OptionIntArray< T >::OptionIntArray ( const Option::Universe  u,
const uint16_t  type,
OptionBufferConstIter  begin,
OptionBufferConstIter  end 
)
inline

Constructor.

This constructor creates option from a buffer. This constructor may throw exception if unpack function throws during buffer parsing.

Parameters
uuniverse (V4 or V6).
typeoption type.
beginiterator to first byte of option data.
enditerator to end of option data (first byte after option end).
Exceptions
isc::OutOfRangeif provided buffer is empty or its length is not multiple of size of the data type in bytes.
isc::dhcp::InvalidDataTypeif data field type provided as template parameter is not a supported integer type.

Definition at line 115 of file option_int_array.h.

References isc_throw, and isc::dhcp::OptionIntArray< T >::unpack().

+ Here is the call graph for this function:

Member Function Documentation

◆ addValue()

template<typename T >
void isc::dhcp::OptionIntArray< T >::addValue ( const T  value)
inline

Adds a new value to the array.

Parameters
valuea value being added.

Definition at line 132 of file option_int_array.h.

◆ clone()

template<typename T >
virtual OptionPtr isc::dhcp::OptionIntArray< T >::clone ( ) const
inlinevirtual

Copies this option and returns a pointer to the copy.

Reimplemented from isc::dhcp::Option.

Definition at line 125 of file option_int_array.h.

References isc::dhcp::Option::cloneInternal().

+ Here is the call graph for this function:

◆ getValues()

template<typename T >
const std::vector<T>& isc::dhcp::OptionIntArray< T >::getValues ( ) const
inline

Return collection of option values.

Returns
collection of values.

Definition at line 231 of file option_int_array.h.

Referenced by isc::dhcp::Dhcpv6Srv::getHookIndexBuffer6Send().

◆ len()

template<typename T >
virtual uint16_t isc::dhcp::OptionIntArray< T >::len ( ) const
inlinevirtual

returns complete length of option

Returns length of this option, including option header and suboptions

Returns
length of this option

Reimplemented from isc::dhcp::Option.

Definition at line 243 of file option_int_array.h.

References isc::dhcp::Option::getUniverse(), isc::dhcp::Option::OPTION4_HDR_LEN, isc::dhcp::Option::OPTION6_HDR_LEN, isc::dhcp::Option::options_, and isc::dhcp::Option::V4.

+ Here is the call graph for this function:

◆ pack()

template<typename T >
virtual void isc::dhcp::OptionIntArray< T >::pack ( isc::util::OutputBuffer buf,
bool  check = true 
) const
inlinevirtual

Writes option in wire-format to buf, returns pointer to first unused byte after stored option.

Parameters
[out]bufbuffer (option will be stored here)
checkif set to false, allows options larger than 255 for v4
Exceptions
isc::dhcp::InvalidDataTypeif size of a data fields type is not equal to 1, 2 or 4 bytes. The data type is not checked in this function because it is checked in a constructor.

Reimplemented from isc::dhcp::Option.

Definition at line 145 of file option_int_array.h.

References isc::dhcp::Option::check(), isc_throw, isc::dhcp::Option::packHeader(), isc::util::OutputBuffer::writeUint16(), isc::util::OutputBuffer::writeUint32(), and isc::util::OutputBuffer::writeUint8().

+ Here is the call graph for this function:

◆ setValues()

template<typename T >
void isc::dhcp::OptionIntArray< T >::setValues ( const std::vector< T > &  values)
inline

Set option values.

Parameters
valuescollection of values to be set for option.

Definition at line 236 of file option_int_array.h.

◆ toText()

template<typename T >
virtual std::string isc::dhcp::OptionIntArray< T >::toText ( int  indent = 0) const
inlinevirtual

Returns textual representation of the option.

Parameters
indentNumber of space characters to be inserted before the text.
Returns
textual representation of the option.

Reimplemented from isc::dhcp::Option.

Definition at line 261 of file option_int_array.h.

References isc::dhcp::OptionDataTypeUtil::getDataTypeName(), and isc::dhcp::Option::headerToText().

+ Here is the call graph for this function:

◆ unpack()

template<typename T >
virtual void isc::dhcp::OptionIntArray< T >::unpack ( OptionBufferConstIter  begin,
OptionBufferConstIter  end 
)
inlinevirtual

Parses received buffer.

Parses received buffer and returns offset to the first unused byte after parsed option.

Parameters
beginiterator to first byte of option data
enditerator to end of option data (first byte after option end)
Exceptions
isc::dhcp::InvalidDataTypeif size of a data fields type is not equal to 1, 2 or 4 bytes. The data type is not checked in this function because it is checked in a constructor.

Reimplemented from isc::dhcp::Option.

Definition at line 185 of file option_int_array.h.

References isc::dhcp::Option::getType(), isc_throw, isc::util::readUint16(), and isc::util::readUint32().

Referenced by isc::dhcp::OptionIntArray< T >::OptionIntArray().

+ Here is the call graph for this function:

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