Kea 2.5.8
isc::dhcp::Option4Dnr Class Reference

Represents DHCPv4 Encrypted DNS Option (code 162). More...

#include <option4_dnr.h>

+ Inheritance diagram for isc::dhcp::Option4Dnr:

Public Types

typedef std::vector< DnrInstanceDnrInstanceContainer
 A Type defined for container holding DNR Instances.
 
- 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

 Option4Dnr (OptionBufferConstIter begin, OptionBufferConstIter end, bool convenient_notation=false)
 Constructor of the Option from on-wire data.
 
void addDnrInstance (DnrInstance &dnr_instance)
 Adds given DNR instance to Option's DNR Instance container.
 
OptionPtr clone () const override
 Copies this option and returns a pointer to the copy.
 
const DnrInstanceContainergetDnrInstances () const
 Getter of the dnr_instances_ field.
 
uint16_t len () const override
 Returns length of the complete option (data length + DHCPv4/DHCPv6 option header)
 
void pack (util::OutputBuffer &buf, bool check=true) const override
 Writes option in wire-format to a buffer.
 
std::string toText (int indent=0) const override
 Returns string representation of the option.
 
void unpack (OptionBufferConstIter begin, OptionBufferConstIter end) override
 Parses received wire data buffer.
 
- 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.
 
virtual OptionPtr clone () const
 Copies this option and returns a pointer to the copy.
 
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)
 
virtual uint16_t len () const
 Returns length of the complete option (data length + DHCPv4/DHCPv6 option header)
 
Optionoperator= (const Option &rhs)
 Assignment operator.
 
virtual void pack (isc::util::OutputBuffer &buf, bool check=true) const
 Writes option in wire-format to a buffer.
 
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 std::string toText (int indent=0) const
 Returns string representation of the option.
 
virtual void unpack (OptionBufferConstIter begin, OptionBufferConstIter end)
 Parses received buffer.
 
virtual bool valid () const
 returns if option is valid (e.g.
 

Protected Attributes

DnrInstanceContainer dnr_instances_
 Container holding DNR Instances.
 
- 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

Represents DHCPv4 Encrypted DNS Option (code 162).

This option has been defined in the RFC9463 and it has a following structure:

  • option-code = 162 (1 octet)
  • option-len (1 octet)
  • multiple (one or more) DNR Instance Data

DNR Instance Data structure:

  • DNR Instance Data Length (2 octets)
  • Service Priority (2 octets)
  • ADN Length (1 octet)
  • Authentication Domain Name (variable length)
  • Addr Length (1 octet)
  • IPv4 Address(es) (variable length)
  • Service Parameters (variable length).

Definition at line 490 of file option4_dnr.h.

Member Typedef Documentation

◆ DnrInstanceContainer

A Type defined for container holding DNR Instances.

Definition at line 493 of file option4_dnr.h.

Constructor & Destructor Documentation

◆ Option4Dnr()

isc::dhcp::Option4Dnr::Option4Dnr ( OptionBufferConstIter  begin,
OptionBufferConstIter  end,
bool  convenient_notation = false 
)

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.

Parameters
beginIterator pointing to the beginning of the buffer holding an option.
endIterator pointing to the end of the buffer holding an option.
convenient_notationFlag stating whether data in buffer is a convenient notation string that needs custom parsing or binary data. Defaults to false.
Exceptions
OutOfRangeThrown in case of truncated data. May be also thrown when DnrInstance::unpackDnrInstanceDataLength(begin,end) throws.
BadValueThrown when DnrInstance::unpackAdn(begin,end) throws.
InvalidOptionDnrDomainNameThrown when DnrInstance::unpackAdn(begin,end) throws.

Definition at line 20 of file option4_dnr.cc.

References unpack().

+ Here is the call graph for this function:

Member Function Documentation

◆ addDnrInstance()

void isc::dhcp::Option4Dnr::addDnrInstance ( DnrInstance dnr_instance)

Adds given DNR instance to Option's DNR Instance container.

Parameters
dnr_instanceDNR instance to be added

Definition at line 125 of file option4_dnr.cc.

References dnr_instances_.

Referenced by unpack().

◆ clone()

OptionPtr isc::dhcp::Option4Dnr::clone ( ) const
overridevirtual

Copies this option and returns a pointer to the copy.

Returns
Pointer to the copy of the option.

Reimplemented from isc::dhcp::Option.

Definition at line 28 of file option4_dnr.cc.

◆ getDnrInstances()

const DnrInstanceContainer & isc::dhcp::Option4Dnr::getDnrInstances ( ) const
inline

Getter of the dnr_instances_ field.

Returns
Reference to Option's DNR Instance container

Definition at line 521 of file option4_dnr.h.

References dnr_instances_.

◆ len()

uint16_t isc::dhcp::Option4Dnr::len ( ) const
overridevirtual

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 114 of file option4_dnr.cc.

References dnr_instances_, len(), and isc::dhcp::Option::OPTION4_HDR_LEN.

Referenced by len(), and toText().

+ Here is the call graph for this function:

◆ pack()

void isc::dhcp::Option4Dnr::pack ( util::OutputBuffer buf,
bool  check = true 
) const
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).

Parameters
bufpointer to a buffer
checkflag which indicates if checking the option length is required (used only in V4)
Exceptions
InvalidOptionDnrDomainNameThrown when Option's mandatory field ADN is empty.
OutOfRangeThrown when check param set to true and Option::packHeader(buf,check) throws.

Reimplemented from isc::dhcp::Option.

Definition at line 33 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().

+ Here is the call graph for this function:

◆ toText()

std::string isc::dhcp::Option4Dnr::toText ( int  indent = 0) const
overridevirtual

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 98 of file option4_dnr.cc.

References dnr_instances_, isc::dhcp::Option::getHeaderLen(), len(), and isc::dhcp::Option::type_.

+ Here is the call graph for this function:

◆ unpack()

void isc::dhcp::Option4Dnr::unpack ( OptionBufferConstIter  begin,
OptionBufferConstIter  end 
)
overridevirtual

Parses received wire data buffer.

Parameters
beginiterator to first byte of option data
enditerator to end of option data (first byte after option end)
Exceptions
OutOfRangeThrown in case of truncated data. May be also thrown when DnrInstance::unpackDnrInstanceDataLength(begin,end) throws.
BadValueThrown when DnrInstance::unpackAdn(begin,end) throws.
InvalidOptionDnrDomainNameThrown when DnrInstance::unpackAdn(begin,end) throws.

Reimplemented from isc::dhcp::Option.

Definition at line 51 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().

+ Here is the call graph for this function:

Member Data Documentation

◆ dnr_instances_

DnrInstanceContainer isc::dhcp::Option4Dnr::dnr_instances_
protected

Container holding DNR Instances.

Definition at line 571 of file option4_dnr.h.

Referenced by addDnrInstance(), getDnrInstances(), len(), pack(), and toText().


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