![]() |
Kea
2.5.2
|
Represents DHCPv4 Encrypted DNS Option (code 162). More...
#include <option4_dnr.h>
Public Types | |
typedef std::vector< DnrInstance > | DnrInstanceContainer |
A Type defined for container holding DNR Instances. More... | |
![]() | |
typedef OptionPtr | Factory(Option::Universe u, uint16_t type, const OptionBuffer &buf) |
a factory function prototype More... | |
enum | Universe { V4 , V6 } |
defines option universe DHCPv4 or DHCPv6 More... | |
Public Member Functions | |
Option4Dnr () | |
Constructor of the empty Option. More... | |
Option4Dnr (OptionBufferConstIter begin, OptionBufferConstIter end) | |
Constructor of the Option from on-wire data. More... | |
void | addDnrInstance (DnrInstance &dnr_instance) |
Adds given DNR instance to Option's DNR Instance container. More... | |
OptionPtr | clone () const override |
Copies this option and returns a pointer to the copy. More... | |
const DnrInstanceContainer & | getDnrInstances () const |
Getter of the dnr_instances_ field. More... | |
uint16_t | len () const override |
Returns length of the complete option (data length + DHCPv4/DHCPv6 option header) More... | |
void | pack (util::OutputBuffer &buf, bool check=true) const override |
Writes option in wire-format to a buffer. More... | |
std::string | toText (int indent=0) const override |
Returns string representation of the option. More... | |
void | unpack (OptionBufferConstIter begin, OptionBufferConstIter end) override |
Parses received wire data buffer. More... | |
![]() | |
Option (const Option &source) | |
Copy constructor. More... | |
Option (Universe u, uint16_t type) | |
ctor, used for options constructed, usually during transmission More... | |
Option (Universe u, uint16_t type, const OptionBuffer &data) | |
Constructor, used for received options. More... | |
Option (Universe u, uint16_t type, OptionBufferConstIter first, OptionBufferConstIter last) | |
Constructor, used for received options. More... | |
virtual | ~Option () |
just to force that every option has virtual dtor More... | |
void | addOption (OptionPtr opt) |
Adds a sub-option. More... | |
bool | delOption (uint16_t type) |
Attempts to delete first suboption of requested type. More... | |
virtual bool | equals (const Option &other) const |
Checks if two options are equal. More... | |
bool | equals (const OptionPtr &other) const |
Checks if options are equal. More... | |
virtual const OptionBuffer & | getData () const |
Returns pointer to actual data. More... | |
std::string | getEncapsulatedSpace () const |
Returns the name of the option space encapsulated by this option. More... | |
virtual uint16_t | getHeaderLen () const |
Returns length of header (2 for v4, 4 for v6) More... | |
OptionCollection & | getMutableOptions () |
Returns all encapsulated options. More... | |
OptionPtr | getOption (uint16_t type) const |
Returns shared_ptr to suboption of specific type. More... | |
const OptionCollection & | getOptions () const |
Returns all encapsulated options. More... | |
void | getOptionsCopy (OptionCollection &options_copy) const |
Performs deep copy of suboptions. More... | |
uint16_t | getType () const |
Returns option type (0-255 for DHCPv4, 0-65535 for DHCPv6) More... | |
uint16_t | getUint16 () const |
Returns content of first word. More... | |
uint32_t | getUint32 () const |
Returns content of first double word. More... | |
uint8_t | getUint8 () const |
Returns content of first byte. More... | |
Universe | getUniverse () const |
returns option universe (V4 or V6) More... | |
Option & | operator= (const Option &rhs) |
Assignment operator. More... | |
template<typename InputIterator > | |
void | setData (InputIterator first, InputIterator last) |
Sets content of this option from buffer. More... | |
void | setEncapsulatedSpace (const std::string &encapsulated_space) |
Sets the name of the option space encapsulated by this option. More... | |
void | setUint16 (uint16_t value) |
Sets content of this option to a single uint16 value. More... | |
void | setUint32 (uint32_t value) |
Sets content of this option to a single uint32 value. More... | |
void | setUint8 (uint8_t value) |
Sets content of this option to a single uint8 value. More... | |
virtual std::vector< uint8_t > | toBinary (const bool include_header=false) const |
Returns binary representation of the option. More... | |
virtual std::string | toHexString (const bool include_header=false) const |
Returns string containing hexadecimal representation of option. More... | |
virtual std::string | toString () const |
Returns string representation of the value. More... | |
virtual bool | valid () const |
returns if option is valid (e.g. More... | |
Protected Attributes | |
DnrInstanceContainer | dnr_instances_ |
Container holding DNR Instances. More... | |
![]() | |
OptionBuffer | data_ |
contains content of this data More... | |
std::string | encapsulated_space_ |
Name of the option space being encapsulated by this option. More... | |
OptionCollection | options_ |
collection for storing suboptions More... | |
uint16_t | type_ |
option type (0-255 for DHCPv4, 0-65535 for DHCPv6) More... | |
Universe | universe_ |
option universe (V4 or V6) More... | |
Additional Inherited Members | |
![]() | |
static OptionPtr | create (Universe u, uint16_t type) |
Factory function creating an instance of the Option . More... | |
static OptionPtr | create (Universe u, uint16_t type, const OptionBuffer &data) |
Factory function creating an instance of the Option . More... | |
static OptionPtr | factory (Option::Universe u, uint16_t type) |
Factory function to create instance of option. More... | |
static OptionPtr | factory (Option::Universe u, uint16_t type, const OptionBuffer &buf) |
Factory function to create instance of option. More... | |
![]() | |
static bool | lenient_parsing_ |
Governs whether options should be parsed less strictly. More... | |
static const size_t | OPTION4_HDR_LEN = 2 |
length of the usual DHCPv4 option header (there are exceptions) More... | |
static const size_t | OPTION6_HDR_LEN = 4 |
length of any DHCPv6 option header More... | |
![]() | |
void | check () const |
A protected method used for option correctness. More... | |
template<typename OptionType > | |
OptionPtr | cloneInternal () const |
Copies this option and returns a pointer to the copy. More... | |
std::string | headerToText (const int indent=0, const std::string &type_name="") const |
Returns option header in the textual format. More... | |
void | packHeader (isc::util::OutputBuffer &buf, bool check=true) const |
Store option's header in a buffer. More... | |
void | packOptions (isc::util::OutputBuffer &buf, bool check=true) const |
Store sub options in a buffer. More... | |
std::string | suboptionsToText (const int indent=0) const |
Returns collection of suboptions in the textual format. More... | |
void | unpackOptions (const OptionBuffer &buf) |
Builds a collection of sub options from the buffer. More... | |
Represents DHCPv4 Encrypted DNS Option (code 162).
This option has been defined in the draft-ietf-add-dnr
(to be replaced with published RFC) and it has a following structure:
DNR Instance Data structure:
Definition at line 433 of file option4_dnr.h.
typedef std::vector<DnrInstance> isc::dhcp::Option4Dnr::DnrInstanceContainer |
A Type defined for container holding DNR Instances.
Definition at line 436 of file option4_dnr.h.
isc::dhcp::Option4Dnr::Option4Dnr | ( | OptionBufferConstIter | begin, |
OptionBufferConstIter | end | ||
) |
Constructor of the Option from on-wire data.
This constructor creates an instance of the option using a buffer with on-wire data. It may throw an exception if the unpack
method throws.
begin | Iterator pointing to the beginning of the buffer holding an option. |
end | Iterator pointing to the end of the buffer holding an option. |
OutOfRange | Thrown in case of truncated data. May be also thrown when DnrInstance::unpackDnrInstanceDataLength(begin,end) throws. |
BadValue | Thrown when DnrInstance::unpackAdn(begin,end) throws. |
InvalidOptionDnrDomainName | Thrown when DnrInstance::unpackAdn(begin,end) throws. |
Definition at line 19 of file option4_dnr.cc.
References unpack().
|
inline |
Constructor of the empty Option.
No DNR instances are included in the Option when using this ctor. They must be added afterwards. No fields data included in the Option when using this ctor. They must be added afterwards.
Definition at line 459 of file option4_dnr.h.
void isc::dhcp::Option4Dnr::addDnrInstance | ( | DnrInstance & | dnr_instance | ) |
Adds given DNR instance to Option's DNR Instance container.
dnr_instance | DNR instance to be added |
Definition at line 116 of file option4_dnr.cc.
References dnr_instances_.
Referenced by unpack().
|
overridevirtual |
Copies this option and returns a pointer to the copy.
Reimplemented from isc::dhcp::Option.
Definition at line 25 of file option4_dnr.cc.
|
inline |
Getter of the dnr_instances_
field.
Definition at line 467 of file option4_dnr.h.
References dnr_instances_.
|
overridevirtual |
Returns length of the complete option (data length + DHCPv4/DHCPv6 option header)
Reimplemented from isc::dhcp::Option.
Definition at line 105 of file option4_dnr.cc.
References dnr_instances_, and isc::dhcp::Option::OPTION4_HDR_LEN.
Referenced by toText().
|
overridevirtual |
Writes option in wire-format to a buffer.
Writes option in wire-format to buffer, returns pointer to first unused byte after stored option (that is useful for writing options one after another).
buf | pointer to a buffer |
check | flag which indicates if checking the option length is required (used only in V4) |
InvalidOptionDnrDomainName | Thrown when Option's mandatory field ADN is empty. |
OutOfRange | Thrown when check param set to true and Option::packHeader(buf,check) throws. |
Reimplemented from isc::dhcp::Option.
Definition at line 30 of file option4_dnr.cc.
References isc::dhcp::Option::check(), dnr_instances_, isc::dhcp::Option::packHeader(), isc::util::OutputBuffer::writeUint16(), and isc::util::OutputBuffer::writeUint8().
|
overridevirtual |
Returns string representation of the option.
indent | number of spaces before printing text |
Reimplemented from isc::dhcp::Option.
Definition at line 89 of file option4_dnr.cc.
References dnr_instances_, isc::dhcp::Option::getHeaderLen(), len(), and isc::dhcp::Option::type_.
|
overridevirtual |
Parses received wire data buffer.
begin | iterator to first byte of option data |
end | iterator to end of option data (first byte after option end) |
OutOfRange | Thrown in case of truncated data. May be also thrown when DnrInstance::unpackDnrInstanceDataLength(begin,end) throws. |
BadValue | Thrown when DnrInstance::unpackAdn(begin,end) throws. |
InvalidOptionDnrDomainName | Thrown when DnrInstance::unpackAdn(begin,end) throws. |
Reimplemented from isc::dhcp::Option.
Definition at line 48 of file option4_dnr.cc.
References addDnrInstance(), isc::dhcp::DnrInstance::getDnrInstanceDataLength(), isc::dhcp::DnrInstance::getLogPrefix(), isc::dhcp::DnrInstance::getMinimalLength(), isc_throw, isc::dhcp::DnrInstance::setAdnOnlyMode(), isc::dhcp::Option::setData(), isc::dhcp::DnrInstance::unpackAddresses(), isc::dhcp::DnrInstance::unpackAdn(), isc::dhcp::DnrInstance::unpackDnrInstanceDataLength(), isc::dhcp::DnrInstance::unpackServicePriority(), isc::dhcp::DnrInstance::unpackSvcParams(), and isc::dhcp::Option::V4.
Referenced by Option4Dnr().
|
protected |
Container holding DNR Instances.
Definition at line 517 of file option4_dnr.h.
Referenced by addDnrInstance(), getDnrInstances(), len(), pack(), and toText().