Kea 2.7.6
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:

Public Types

typedef std::vector< isc::asiolink::IOAddressAddressContainer
 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 OptionBuffergetData () 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)
 
OptionCollectiongetMutableOptions ()
 Returns all encapsulated options.
 
OptionPtr getOption (uint16_t type) const
 Returns shared_ptr to suboption of specific type.
 
const OptionCollectiongetOptions () 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)
 
Optionoperator= (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.
 

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

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
typeoption type

Definition at line 28 of file option4_addrlst.cc.

◆ 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
typeoption type
addrscontainer with a list of addresses

Definition at line 32 of file option4_addrlst.cc.

References setAddresses().

+ 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
typeoption type
addra single address that will be stored as 1-elem. address list

Definition at line 55 of file option4_addrlst.cc.

References setAddress().

+ 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
typeoption type (0-255 for V4 and 0-65535 for V6)
firstiterator to the first element that should be copied
lastiterator 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_.

+ 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
addran 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
bufoutput buffer (option will be stored there)
checkif 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
addran 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
addrsaddress 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
indentnumber 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: