Kea: isc::dhcp::OptionInt< T > Class Template Reference

| Kea 3.2.0-git

isc::dhcp::OptionInt< T > Class Template Reference

Forward declaration to OptionInt. More...

`#include <option_int.h>`

Inheritance diagram for isc::dhcp::OptionInt< T >:
[legend]

## Public Member Functions
| OptionInt (Option::Universe u, uint16_t type, OptionBufferConstIter begin, OptionBufferConstIter end, size_t rec_level=0)
| Constructor.
| OptionInt (Option::Universe u, uint16_t type, T value)
| Constructor.
virtual OptionPtr | clone () const
| Copies this option and returns a pointer to the copy.
T | getValue () const
| Return option value.
virtual uint16_t | len () const
| returns complete length of option
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.
void | setValue (T value)
| Set option value.
virtual std::string | toText (int indent=0) const
| Returns option carrying an integer value in the textual format.
virtual void | unpack (OptionBufferConstIter begin, OptionBufferConstIter end)
| Parses received buffer.
void | unpack (OptionBufferConstIter begin, OptionBufferConstIter end, size_t rec_level)
| Parses received buffer with limited recursion.
Public Member Functions inherited from isc::dhcp::Option
| Option (const Option &source)
| Copy constructor.
| Option (Universe u, uint16_t type)
| ctor, used for options constructed, usually during transmission
| Option (Universe u, uint16_t type, const OptionBuffer &data)
| Constructor, used for received options.
| Option (Universe u, uint16_t type, OptionBufferConstIter first, OptionBufferConstIter last)
| Constructor, used for received options.
virtual | ~Option ()
| just to force that every option has virtual dtor
void | addOption (OptionPtr opt)
| Adds a sub-option.
bool | delOption (uint16_t type)
| Attempts to delete first suboption of requested type.
virtual bool | equals (const Option &other) const
| Checks if two options are equal.
bool | equals (const OptionPtr &other) const
| Checks if options are equal.
virtual const OptionBuffer & | getData () const
| Returns pointer to actual data.
std::string | getEncapsulatedSpace () const
| Returns the name of the option space encapsulated by this option.
virtual uint16_t | getHeaderLen () const
| Returns length of header (2 for v4, 4 for v6).
OptionCollection & | getMutableOptions ()
| Returns all encapsulated options.
OptionPtr | getOption (uint16_t type) const
| Returns shared_ptr to suboption of specific type.
const OptionCollection & | getOptions () const
| Returns all encapsulated options.
void | getOptionsCopy (OptionCollection &options_copy) const
| Performs deep copy of suboptions.
uint16_t | getType () const
| Returns option type (0-255 for DHCPv4, 0-65535 for DHCPv6).
uint16_t | getUint16 () const
| Returns content of first word.
uint32_t | getUint32 () const
| Returns content of first double word.
uint8_t | getUint8 () const
| Returns content of first byte.
Universe | getUniverse () const
| returns option universe (V4 or V6)
Option & | operator= (const Option &rhs)
| Assignment operator.
template<typename InputIterator>
void | setData (InputIterator first, InputIterator last)
| Sets content of this option from buffer.
void | setEncapsulatedSpace (const std::string &encapsulated_space)
| Sets the name of the option space encapsulated by this option.
void | setUint16 (uint16_t value)
| Sets content of this option to a single uint16 value.
void | setUint32 (uint32_t value)
| Sets content of this option to a single uint32 value.
void | setUint8 (uint8_t value)
| Sets content of this option to a single uint8 value.
virtual std::vector< uint8_t > | toBinary (const bool include_header=false) const
| Returns binary representation of the option.
virtual std::string | toHexString (const bool include_header=false) const
| Returns string containing hexadecimal representation of option.
virtual std::string | toString () const
| Returns string representation of the value.
virtual bool | valid () const
| returns if option is valid (e.g.

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

## Detailed Description

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

Forward declaration to OptionInt.

This template class represents DHCP option with single value.

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

This value is of integer type and can be any of the following:

- uint8_t,
- uint16_t,
- uint32_t,
- int8_t,
- int16_t,
- int32_t.

Template Parameters

  T | data field type (see above).

Definition at line 49 of file option_int.h.

## Constructor & Destructor Documentation

## ◆ OptionInt() [1/2]

template<typename T>

isc::dhcp::OptionInt< T >::OptionInt | ( | Option::Universe | u,
|  | uint16_t | type,
|  | T | value )
| inline

Constructor.

Parameters

  u | universe (V4 or V6)
  type | option type.
  value | option value.

Exceptions

  isc::dhcp::InvalidDataType | if data field type provided as template parameter is not a supported integer type.

Todo
  Extend constructor to set encapsulated option space name.

Definition at line 65 of file option_int.h.

## ◆ OptionInt() [2/2]

template<typename T>

isc::dhcp::OptionInt< T >::OptionInt | ( | Option::Universe | u,
|  | uint16_t | type,
|  | OptionBufferConstIter | begin,
|  | OptionBufferConstIter | end,
|  | size_t | rec_level = 0 )
| inline

Constructor.

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

Parameters

  u | universe (V4 or V6)
  type | option type.
  begin | iterator to first byte of option data.
  end | iterator to end of option data (first byte after option end).
  rec_level | recursion level.

Exceptions

  isc::OutOfRange | if provided buffer is shorter than data size.
  isc::dhcp::InvalidDataType | if data field type provided as template parameter is not a supported integer type.

Todo
  Extend constructor to set encapsulated option space name.

Definition at line 89 of file option_int.h.

## Member Function Documentation

## ◆ clone()

template<typename T>

virtual OptionPtr isc::dhcp::OptionInt< T >::clone | ( |  | ) | const
| inlinevirtual

Copies this option and returns a pointer to the copy.

Reimplemented from isc::dhcp::Option.

Definition at line 100 of file option_int.h.

## ◆ getValue()

template<typename T>

T isc::dhcp::OptionInt< T >::getValue | ( |  | ) | const
| inline

Return option value.

Returns
  option value.

Definition at line 211 of file option_int.h.

Referenced by isc::dhcp::OptionInt< uint8_t >::toText().

## ◆ len()

template<typename T>

virtual uint16_t isc::dhcp::OptionInt< 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 218 of file option_int.h.

## ◆ pack()

template<typename T>

virtual void isc::dhcp::OptionInt< 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] | buf | buffer (option will be stored here)
  | check | if set to false, allows options larger than 255 for v4

Exceptions

  isc::dhcp::InvalidDataType | if size of a data field 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 113 of file option_int.h.

## ◆ setValue()

template<typename T>

void isc::dhcp::OptionInt< T >::setValue | ( | T | value | ) |
| inline

Set option value.

Parameters

  value | new option value.

Definition at line 206 of file option_int.h.

## ◆ toText()

template<typename T>

virtual std::string isc::dhcp::OptionInt< T >::toText | ( | int | indent = 0 | ) | const
| inlinevirtual

Returns option carrying an integer value in the textual format.

The returned value also includes the suboptions if present.

Parameters

  indent | Number of spaces to be inserted before the text.

Reimplemented from isc::dhcp::Option.

Definition at line 236 of file option_int.h.

## ◆ unpack() [1/2]

template<typename T>

virtual void isc::dhcp::OptionInt< 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

  begin | iterator to first byte of option data
  end | iterator to end of option data (first byte after option end)

Exceptions

  isc::OutOfRange | if provided buffer is shorter than data size.
  isc::dhcp::InvalidDataType | if size of a data field 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 149 of file option_int.h.

Referenced by isc::dhcp::OptionInt< uint8_t >::OptionInt(), and isc::dhcp::OptionInt< uint8_t >::unpack().

## ◆ unpack() [2/2]

template<typename T>

void isc::dhcp::OptionInt< T >::unpack | ( | OptionBufferConstIter | begin,
|  | OptionBufferConstIter | end,
|  | size_t | rec_level )
| inline

Parses received buffer with limited recursion.

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

Parameters

  begin | iterator to first byte of option data
  end | iterator to end of option data (first byte after option end)
  rec_level | recursion level

Exceptions

  isc::OutOfRange | if provided buffer is shorter than data size.
  isc::dhcp::InvalidDataType | if size of a data field 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.

Definition at line 166 of file option_int.h.

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

- option_definition.h
- option_int.h