Kea 2.6.0
isc::dhcp::DUID Class Reference

Holds DUID (DHCPv6 Unique Identifier) More...

#include <duid.h>

+ Inheritance diagram for isc::dhcp::DUID:

Public Types

enum  DUIDType {
  DUID_UNKNOWN = 0 , DUID_LLT = 1 , DUID_EN = 2 , DUID_LL = 3 ,
  DUID_UUID = 4 , DUID_MAX
}
 specifies DUID type More...
 

Public Member Functions

 DUID (const std::vector< uint8_t > &data)
 Constructor from vector.
 
 DUID (const uint8_t *data, size_t len)
 Constructor from array and array size.
 
const std::vector< uint8_t > & getDuid () const
 Returns a const reference to the actual DUID value.
 
DUIDType getType () const
 Returns the DUID type.
 
- Public Member Functions inherited from isc::dhcp::IdentifierType< 3, 130 >
 IdentifierType (const std::vector< uint8_t > &data)
 Constructor from vector.
 
 IdentifierType (const uint8_t *data, size_t len)
 Constructor from array and array size.
 
bool operator!= (const IdentifierType &other) const
 Compares two identifiers for inequality.
 
bool operator== (const IdentifierType &other) const
 Compares two identifiers for equality.
 
std::string toText () const
 Returns textual representation of the identifier (e.g.
 

Static Public Member Functions

static const DUIDEMPTY ()
 Defines the constant "empty" DUID.
 
static DUID fromText (const std::string &text)
 Create DUID from the textual format.
 
- Static Public Member Functions inherited from isc::dhcp::IdentifierType< 3, 130 >
static std::vector< uint8_t > fromText (const std::string &text)
 This static function parses an Identifier specified in the textual format.
 
static constexpr size_t getMaxSize ()
 Return the maximum size of the acceptable data.
 
static constexpr size_t getMinSize ()
 Return the minimum size of the acceptable data.
 

Static Public Attributes

static constexpr size_t MAX_DUID_LEN = IdentifierType::getMaxSize()
 maximum duid size
 
static constexpr size_t MIN_DUID_LEN = IdentifierType::getMinSize()
 minimum duid size
 

Additional Inherited Members

- Protected Member Functions inherited from isc::dhcp::IdentifierBaseType
virtual ~IdentifierBaseType ()=0
 Pure virtual destructor.
 
- Protected Attributes inherited from isc::dhcp::IdentifierType< 3, 130 >
std::vector< uint8_t > data_
 The actual content of the Identifier.
 

Detailed Description

Holds DUID (DHCPv6 Unique Identifier)

This class holds DUID, that is used in client-id, server-id and several other options. It is used to identify DHCPv6 entity.

Definition at line 142 of file duid.h.

Member Enumeration Documentation

◆ DUIDType

specifies DUID type

Enumerator
DUID_UNKNOWN 

invalid/unknown type

DUID_LLT 

link-layer + time, see RFC3315, section 11.2

DUID_EN 

enterprise-id, see RFC3315, section 11.3

DUID_LL 

link-layer, see RFC3315, section 11.4

DUID_UUID 

UUID, see RFC3315, section 11.5.

DUID_MAX 

not a real type, just maximum defined value + 1

Definition at line 158 of file duid.h.

Constructor & Destructor Documentation

◆ DUID() [1/2]

isc::dhcp::DUID::DUID ( const std::vector< uint8_t > &  data)

Constructor from vector.

Parameters
dataThe data used to create the DUID

Definition at line 27 of file duid.cc.

◆ DUID() [2/2]

isc::dhcp::DUID::DUID ( const uint8_t *  data,
size_t  len 
)

Constructor from array and array size.

Parameters
dataThe data used to create the DUID
lenThe data len used to create the DUID

Definition at line 30 of file duid.cc.

Member Function Documentation

◆ EMPTY()

const DUID & isc::dhcp::DUID::EMPTY ( )
static

Defines the constant "empty" DUID.

In general, empty DUID is not allowed. The only case where it is really valid is to designate declined IPv6 Leases. We have a broad assumption that the Lease->duid_ must always be set. However, declined lease doesn't have any DUID associated with it. Hence we need a way to indicate that fact.

Returns
reference to the static constant empty DUID

Definition at line 55 of file duid.cc.

Referenced by isc::dhcp::CSVLeaseFile6::append(), isc::dhcp::Lease6::decline(), and isc::dhcp::CSVLeaseFile6::next().

◆ fromText()

DUID isc::dhcp::DUID::fromText ( const std::string &  text)
static

Create DUID from the textual format.

This static function parses a DUID specified in the textual format.

Parameters
textDUID in the hexadecimal format with digits representing individual bytes separated by colons.
Exceptions
isc::BadValueif parsing the DUID failed.

Definition at line 50 of file duid.cc.

References isc::dhcp::IdentifierType< min_size, max_size >::fromText().

Referenced by isc::dhcp::Lease6::fromElement(), isc::lease_cmds::LeaseCmdsImpl::getParameters(), isc::lease_cmds::LeaseCmdsImpl::leaseGetByDuidHandler(), and isc::lease_cmds::Lease6Parser::parse().

+ Here is the call graph for this function:

◆ getDuid()

const std::vector< uint8_t > & isc::dhcp::DUID::getDuid ( ) const

Returns a const reference to the actual DUID value.

Warning
Since this function returns a reference to the vector (not a copy) the returned object must be used with caution because it remains valid only for the time period when the object which returned it is valid.
Returns
A reference to a vector holding a DUID.

Definition at line 33 of file duid.cc.

References isc::dhcp::IdentifierType< 3, 130 >::data_.

Referenced by user_chk::UserRegistry::findUser(), isc::dhcp_ddns::D2Dhcid::fromDUID(), isc::dhcp::Lease6::fromElement(), isc::dhcp::MySqlLeaseMgr::getLeases6(), isc::dhcp::PgSqlLeaseMgr::getLeases6(), isc::dhcp::MySqlLeaseMgr::getLeases6ByRelayId(), and isc::dhcp::PgSqlLeaseMgr::getLeases6ByRelayId().

◆ getType()

DUID::DUIDType isc::dhcp::DUID::getType ( ) const

Returns the DUID type.

Definition at line 37 of file duid.cc.

References isc::dhcp::IdentifierType< 3, 130 >::data_, DUID_MAX, and DUID_UNKNOWN.

Member Data Documentation

◆ MAX_DUID_LEN

constexpr size_t isc::dhcp::DUID::MAX_DUID_LEN = IdentifierType::getMaxSize()
staticconstexpr

maximum duid size

The maximum DUID size specified in RFC 8415, section 11.1 is 130: 2 fixed octets for the type + 128 maximum octets for the value.

Definition at line 155 of file duid.h.

Referenced by isc::dhcp::Host::getIdentifierMaxLength(), and isc::dhcp::Dhcpv6Srv::sanityCheckDUID().

◆ MIN_DUID_LEN

constexpr size_t isc::dhcp::DUID::MIN_DUID_LEN = IdentifierType::getMinSize()
staticconstexpr

minimum duid size

The minimal DUID size specified in RFC 8415, section 11.1 is 3: 2 fixed octets for the type + 1 minimum octet for the value.

Definition at line 149 of file duid.h.

Referenced by isc::dhcp::Dhcpv6Srv::sanityCheckDUID().


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