Kea 2.7.6
|
DHCPv6 Option class for handling list of IPv6 addresses. More...
#include <option6_addrlst.h>
Public Types | |
typedef std::vector< isc::asiolink::IOAddress > | AddressContainer |
a container for (IPv6) 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 | |
Option6AddrLst (uint16_t type, const AddressContainer &addrs) | |
Constructor used during option generation. | |
Option6AddrLst (uint16_t type, const isc::asiolink::IOAddress &addr) | |
Simplified constructor for a single address. | |
Option6AddrLst (uint16_t type, OptionBufferConstIter begin, OptionBufferConstIter end) | |
Constructor used for parsing received option. | |
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) | |
void | pack (isc::util::OutputBuffer &buf, bool check=true) const |
Assembles on-wire form of this option. | |
void | setAddress (const isc::asiolink::IOAddress &addr) |
Sets a single address. | |
void | setAddresses (const AddressContainer &addrs) |
Sets list of addresses. | |
virtual std::string | toText (int indent=0) const |
Returns string representation of the option. | |
virtual void | unpack (OptionBufferConstIter begin, OptionBufferConstIter end) |
Parses received data. | |
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. | |
Protected Attributes | |
AddressContainer | addrs_ |
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) |
Builds a collection of sub options from the buffer. | |
DHCPv6 Option class for handling list of IPv6 addresses.
This class handles a list of IPv6 addresses. An example of such option is dns-servers option. It can also be used to handle single address.
Definition at line 22 of file option6_addrlst.h.
a container for (IPv6) addresses
Definition at line 26 of file option6_addrlst.h.
isc::dhcp::Option6AddrLst::Option6AddrLst | ( | uint16_t | type, |
const AddressContainer & | addrs ) |
Constructor used during option generation.
type | option type |
addrs | vector of addresses to be stored |
Definition at line 29 of file option6_addrlst.cc.
isc::dhcp::Option6AddrLst::Option6AddrLst | ( | uint16_t | type, |
const isc::asiolink::IOAddress & | addr ) |
Simplified constructor for a single address.
type | option type |
addr | a single address to be stored |
Definition at line 33 of file option6_addrlst.cc.
isc::dhcp::Option6AddrLst::Option6AddrLst | ( | uint16_t | type, |
OptionBufferConstIter | begin, | ||
OptionBufferConstIter | end ) |
Constructor used for parsing received option.
type | option type |
begin | iterator to first byte of option data |
end | iterator to end of option data (first byte after option end) |
Definition at line 37 of file option6_addrlst.cc.
References unpack().
|
virtual |
Copies this option and returns a pointer to the copy.
This function must be overridden in the derived classes to make a copy of the derived type. The simplest way to do it is by calling cloneInternal function with an appropriate template parameter.
Reimplemented from isc::dhcp::Option.
Definition at line 44 of file option6_addrlst.cc.
References isc::dhcp::Option::cloneInternal().
|
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.
Definition at line 83 of file option6_addrlst.h.
References addrs_.
|
virtual |
Returns length of the complete option (data length + DHCPv4/DHCPv6 option header)
Reimplemented from isc::dhcp::Option.
Definition at line 104 of file option6_addrlst.cc.
References addrs_, and isc::dhcp::Option::OPTION6_HDR_LEN.
Referenced by pack().
|
virtual |
Assembles on-wire form of this option.
buf | pointer to packet buffer |
check | if set to false, allows options larger than 255 for v4 |
Reimplemented from isc::dhcp::Option.
Definition at line 63 of file option6_addrlst.cc.
References addrs_, isc::dhcp::Option::getHeaderLen(), isc_throw, len(), isc::dhcp::Option::type_, isc::util::OutputBuffer::writeData(), and isc::util::OutputBuffer::writeUint16().
void isc::dhcp::Option6AddrLst::setAddress | ( | const isc::asiolink::IOAddress & | addr | ) |
Sets a single address.
addr | a single address to be added |
Definition at line 49 of file option6_addrlst.cc.
References addrs_, isc_throw, and isc::asiolink::IOAddress::isV6().
void isc::dhcp::Option6AddrLst::setAddresses | ( | const AddressContainer & | addrs | ) |
Sets list of addresses.
addrs | a vector of addresses to be added |
Definition at line 59 of file option6_addrlst.cc.
References addrs_.
|
virtual |
Returns string representation of the option.
indent | number of spaces before printing text |
Reimplemented from isc::dhcp::Option.
Definition at line 94 of file option6_addrlst.cc.
References addrs_, and isc::dhcp::Option::headerToText().
|
virtual |
Parses received data.
begin | iterator to first byte of option data |
end | iterator to end of option data (first byte after option end) |
Reimplemented from isc::dhcp::Option.
Definition at line 81 of file option6_addrlst.cc.
References addrs_, isc::asiolink::IOAddress::fromBytes(), isc_throw, and isc::dhcp::Option::type_.
Referenced by Option6AddrLst().
|
protected |
Definition at line 89 of file option6_addrlst.h.
Referenced by getAddresses(), len(), pack(), setAddress(), setAddresses(), toText(), and unpack().