Kea: isc::dhcp::Option4AddrLst Class Reference

| Kea 3.2.0-git

isc::dhcp::Option4AddrLst Class Reference

DHCPv4 Option class for handling list of IPv4 addresses. More...

`#include <option4_addrlst.h>`

Inheritance diagram for isc::dhcp::Option4AddrLst:
[legend]

## Public Types
typedef std::vector< isc::asiolink::IOAddress > | AddressContainer
| Defines a collection of IPv4 addresses.
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...

## Public Member Functions
| Option4AddrLst (uint8_t type)
| Constructor, creates an option with empty list of addresses.
| Option4AddrLst (uint8_t type, const AddressContainer &addrs)
| Constructor, creates an option with a list of addresses.
| Option4AddrLst (uint8_t type, const isc::asiolink::IOAddress &addr)
| Constructor, creates an option with a single address.
| Option4AddrLst (uint8_t type, OptionBufferConstIter first, OptionBufferConstIter last)
| Constructor, used for received options.
void | addAddress (const isc::asiolink::IOAddress &addr)
| Adds address to existing list of addresses.
virtual OptionPtr | clone () const
| Copies this option and returns a pointer to the copy.
AddressContainer | getAddresses () const
| Returns vector with addresses.
virtual uint16_t | len () const
| Returns length of the complete option (data length + DHCPv4/DHCPv6 option header).
virtual void | pack (isc::util::OutputBuffer &buf, bool check=true) const
| Writes option in a wire-format to a buffer.
void | setAddress (const isc::asiolink::IOAddress &addr)
| Clears address list and sets a single address.
void | setAddresses (const AddressContainer &addrs)
| Sets addresses list.
virtual std::string | toText (int indent=0) const
| Returns string representation of the option.
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 void | unpack (OptionBufferConstIter begin, OptionBufferConstIter end)
| Parses received buffer.
virtual bool | valid () const
| returns if option is valid (e.g.

## Protected Attributes
AddressContainer | addrs_
| contains list of addresses
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)

## Additional Inherited Members
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.

## Detailed Description

DHCPv4 Option class for handling list of IPv4 addresses.

This class handles a list of IPv4 addresses. An example of such option is dns-servers option. It can also be used to handle a single address.

Definition at line 34 of file option4_addrlst.h.

## Member Typedef Documentation

## ◆ AddressContainer

typedef std::vector<isc::asiolink::IOAddress> isc::dhcp::Option4AddrLst::AddressContainer

Defines a collection of IPv4 addresses.

Definition at line 38 of file option4_addrlst.h.

## Constructor & Destructor Documentation

## ◆ Option4AddrLst() [1/4]

isc::dhcp::Option4AddrLst::Option4AddrLst | ( | uint8_t | type | ) |

Constructor, creates an option with empty list of addresses.

Creates empty option that can hold addresses. Addresses can be added with addAddress(), setAddress() or setAddresses().

Parameters

  type | option type

Definition at line 28 of file option4_addrlst.cc.

References isc::dhcp::Option::Option(), and isc::dhcp::Option::V4.

Here is the call graph for this function:

## ◆ Option4AddrLst() [2/4]

isc::dhcp::Option4AddrLst::Option4AddrLst | ( | uint8_t | type,
|  | const AddressContainer & | addrs )

Constructor, creates an option with a list of addresses.

Creates an option that contains specified list of IPv4 addresses.

Parameters

  type | option type
  addrs | container with a list of addresses

Definition at line 32 of file option4_addrlst.cc.

References isc::dhcp::Option::Option(), setAddresses(), and isc::dhcp::Option::V4.

Here is the call graph for this function:

## ◆ Option4AddrLst() [3/4]

isc::dhcp::Option4AddrLst::Option4AddrLst | ( | uint8_t | type,
|  | const isc::asiolink::IOAddress & | addr )

Constructor, creates an option with a single address.

Creates an option that contains a single address.

Parameters

  type | option type
  addr | a single address that will be stored as 1-elem. address list

Definition at line 55 of file option4_addrlst.cc.

References isc::dhcp::Option::Option(), setAddress(), and isc::dhcp::Option::V4.

Here is the call graph for this function:

## ◆ Option4AddrLst() [4/4]

isc::dhcp::Option4AddrLst::Option4AddrLst | ( | uint8_t | type,
|  | OptionBufferConstIter | first,
|  | OptionBufferConstIter | last )

Constructor, used for received options.

TODO: This can be templated to use different containers, not just vector. Prototype should look like this: template<typename InputIterator> Option(Universe u, uint16_t type, InputIterator first, InputIterator last);

vector<int8_t> myData; Example usage: new Option(V4, 123, myData.begin()+1, myData.end()-1) This will create DHCPv4 option of type 123 that contains data from trimmed (first and last byte removed) myData vector.

Parameters

  type | option type (0-255 for V4 and 0-65535 for V6)
  first | iterator to the first element that should be copied
  last | iterator to the next element after the last one to be copied.

Definition at line 39 of file option4_addrlst.cc.

References isc::dhcp::Option::Option(), addAddress(), isc_throw, isc::util::readUint32(), isc::dhcp::Option::type_, and isc::dhcp::Option::V4.

Here is the call graph for this function:

## Member Function Documentation

## ◆ addAddress()

void isc::dhcp::Option4AddrLst::addAddress | ( | const isc::asiolink::IOAddress & | addr | ) |

Adds address to existing list of addresses.

Adds a single address to that list. See setAddress() if you want to define only a single address or setAddresses() if you want to set the whole list at once.

Passed address must be IPv4 address. Otherwise BadValue exception will be thrown.

Parameters

  addr | an address that is going to be added to existing list

Definition at line 101 of file option4_addrlst.cc.

References addrs_, isc_throw, and isc::asiolink::IOAddress::isV4().

Referenced by Option4AddrLst(), setAddress(), and setAddresses().

Here is the call graph for this function:

## ◆ clone()

OptionPtr isc::dhcp::Option4AddrLst::clone | ( |  | ) | const
| virtual

Copies this option and returns a pointer to the copy.

Reimplemented from isc::dhcp::Option.

Definition at line 61 of file option4_addrlst.cc.

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

Here is the call graph for this function:

## ◆ getAddresses()

AddressContainer isc::dhcp::Option4AddrLst::getAddresses | ( |  | ) | const
| inline

Returns vector with addresses.

We return a copy of our list. Although this includes overhead, it also makes this list safe to use after this option object is no longer available. As options are expected to hold only a few (1-3) addresses, the overhead is not that big.

Returns
  address container with addresses

Definition at line 115 of file option4_addrlst.h.

References addrs_.

## ◆ len()

uint16_t isc::dhcp::Option4AddrLst::len | ( |  | ) | const
| virtual

Returns length of the complete option (data length + DHCPv4/DHCPv6 option header).

Returns
  length of the option

Reimplemented from isc::dhcp::Option.

Definition at line 109 of file option4_addrlst.cc.

References addrs_, and isc::dhcp::Option::getHeaderLen().

Referenced by pack().

Here is the call graph for this function:

## ◆ pack()

void isc::dhcp::Option4AddrLst::pack | ( | isc::util::OutputBuffer & | buf,
|  | bool | check = true ) const
| virtual

Writes option in a wire-format to a buffer.

Method will throw if option storing fails for some reason.

Parameters

  buf | output buffer (option will be stored there)
  check | if set to false, allows options larger than 255 for v4

Reimplemented from isc::dhcp::Option.

Definition at line 66 of file option4_addrlst.cc.

References addrs_, isc::dhcp::Option::check(), isc::dhcp::Option::getHeaderLen(), isc_throw, len(), isc::dhcp::Option::type_, isc::util::OutputBuffer::writeUint32(), and isc::util::OutputBuffer::writeUint8().

Here is the call graph for this function:

## ◆ setAddress()

void isc::dhcp::Option4AddrLst::setAddress | ( | const isc::asiolink::IOAddress & | addr | ) |

Clears address list and sets a single address.

Clears existing list of addresses and adds a single address to that list. This is very convenient method for options that are supposed to only a single option. See addAddress() if you want to add address to existing list or setAddresses() if you want to set the whole list at once.

Passed address must be IPv4 address. Otherwise BadValue exception will be thrown.

Parameters

  addr | an address that is going to be set as 1-element address list

Definition at line 83 of file option4_addrlst.cc.

References addAddress(), addrs_, isc_throw, and isc::asiolink::IOAddress::isV4().

Referenced by Option4AddrLst().

Here is the call graph for this function:

## ◆ setAddresses()

void isc::dhcp::Option4AddrLst::setAddresses | ( | const AddressContainer & | addrs | ) |

Sets addresses list.

Clears existing list of addresses and adds a single address to that list. This is very convenient method for options that are supposed to only a single option. See addAddress() if you want to add address to existing list or setAddresses() if you want to set the whole list at once.

Passed address must be IPv4 address. Otherwise BadValue exception will be thrown.

Parameters

  addrs | address collection to be set

Definition at line 92 of file option4_addrlst.cc.

References addAddress(), and addrs_.

Referenced by Option4AddrLst().

Here is the call graph for this function:

## ◆ toText()

std::string isc::dhcp::Option4AddrLst::toText | ( | int | indent = 0 | ) | const
| virtual

Returns string representation of the option.

Parameters

  indent | number of spaces before printing text

Returns
  string with text representation.

Reimplemented from isc::dhcp::Option.

Definition at line 114 of file option4_addrlst.cc.

References addrs_, and isc::dhcp::Option::headerToText().

Here is the call graph for this function:

## Member Data Documentation

## ◆ addrs_

AddressContainer isc::dhcp::Option4AddrLst::addrs_
| protected

contains list of addresses

Definition at line 159 of file option4_addrlst.h.

Referenced by addAddress(), getAddresses(), len(), pack(), setAddress(), setAddresses(), and toText().

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

- option4_addrlst.h
- option4_addrlst.cc