Kea 2.7.6
|
DHCPv4 Option class for handling list of IPv4 addresses. More...
#include <option4_addrlst.h>
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) |
Builds a collection of sub options from the buffer. | |
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.
Defines a collection of IPv4 addresses.
Definition at line 38 of file option4_addrlst.h.
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().
type | option type |
Definition at line 28 of file option4_addrlst.cc.
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.
type | option type |
addrs | container with a list of addresses |
Definition at line 32 of file option4_addrlst.cc.
References setAddresses().
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.
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 setAddress().
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.
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 addAddress(), isc_throw, isc::util::readUint32(), and isc::dhcp::Option::type_.
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.
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().
|
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().
|
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 115 of file option4_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 109 of file option4_addrlst.cc.
References addrs_, and isc::dhcp::Option::getHeaderLen().
Referenced by pack().
|
virtual |
Writes option in a wire-format to a buffer.
Method will throw if option storing fails for some reason.
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().
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.
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().
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.
addrs | address collection to be set |
Definition at line 92 of file option4_addrlst.cc.
References addAddress(), and addrs_.
Referenced by Option4AddrLst().
|
virtual |
Returns string representation of the option.
indent | number of spaces before printing text |
Reimplemented from isc::dhcp::Option.
Definition at line 114 of file option4_addrlst.cc.
References addrs_, and isc::dhcp::Option::headerToText().
|
protected |
contains list of addresses
Definition at line 159 of file option4_addrlst.h.
Referenced by addAddress(), getAddresses(), len(), pack(), setAddress(), setAddresses(), and toText().