Kea: isc::dhcp::DUID Class Reference

| Kea 3.2.0-git

isc::dhcp::DUID Class Reference

Holds DUID (DHCPv6 Unique Identifier). More...

`#include <duid.h>`

Inheritance diagram for isc::dhcp::DUID:
[legend]

## 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.
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 DUID & | EMPTY ()
| 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

enum isc::dhcp::DUID::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

  data | The data used to create the DUID

Definition at line 27 of file duid.cc.

References isc::dhcp::IdentifierType< 3, 130 >::IdentifierType().

Referenced by EMPTY(), and fromText().

Here is the call graph for this function:

## ◆ DUID() [2/2]

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

Constructor from array and array size.

Parameters

  data | The data used to create the DUID
  len | The data len used to create the DUID

Definition at line 30 of file duid.cc.

References isc::dhcp::IdentifierType< 3, 130 >::IdentifierType().

Here is the call graph for this function:

## 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.

References DUID().

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

Here is the call graph for this function:

## ◆ 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

  text | DUID in the hexadecimal format with digits representing individual bytes separated by colons.

Exceptions

  isc::BadValue | if parsing the DUID failed.

Definition at line 50 of file duid.cc.

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

Referenced by isc::dhcp::Lease6::fromElement().

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(), and isc::dhcp::Lease6::fromElement().

## ◆ 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

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

maximum duid size

The maximum DUID size specified in RFC 9915, 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

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

minimum duid size

The minimal DUID size specified in RFC 9915, 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:

- duid.h
- duid.cc