Kea: isc::dhcp::DUID Class Reference

| Kea 2.2.0

Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
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 > &duid)
| Constructor from vector. More...
| DUID (const uint8_t *duid, size_t len)
| Constructor from array and array size. More...
const std::vector< uint8_t > & | getDuid () const
| Returns a const reference to the actual DUID value. More...
DUIDType | getType () const
| Returns the DUID type. More...
bool | operator!= (const DUID &other) const
| Compares two DUIDs for inequality. More...
bool | operator== (const DUID &other) const
| Compares two DUIDs for equality. More...
std::string | toText () const
| Returns textual representation of a DUID (e.g. 00:01:02:03:ff) More...

## Static Public Member Functions
static const DUID & | EMPTY ()
| Defines the constant "empty" DUID. More...
static DUID | fromText (const std::string &text)
| Create DUID from the textual format. More...

## Static Public Attributes
static const size_t | MAX_DUID_LEN = 128
| maximum duid size As defined in RFC 8415, section 11.1 More...
static const size_t | MIN_DUID_LEN = 1
| minimum duid size The minimal DUID size specified in RFC 8415 is 1. More...

## Protected Attributes
std::vector< uint8_t > | duid_
| The actual content of the DUID. More...

## 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 27 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 38 of file duid.h.

## Constructor & Destructor Documentation

## ◆ DUID() [1/2]

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

Constructor from vector.

Definition at line 23 of file duid.cc.

References duid_, isc_throw, and MAX_DUID_LEN.

Referenced by fromText().

## ◆ DUID() [2/2]

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

Constructor from array and array size.

Definition at line 34 of file duid.cc.

References duid_, isc_throw, and MAX_DUID_LEN.

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

  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 62 of file duid.cc.

References DUID(), and isc::util::str::decodeFormattedHexString().

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 46 of file duid.cc.

References duid_.

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

## ◆ getType()

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

Returns the DUID type.

Definition at line 49 of file duid.cc.

References duid_, DUID_MAX, and DUID_UNKNOWN.

## ◆ operator!=()

bool isc::dhcp::DUID::operator!= | ( | const DUID & | other | ) | const

Compares two DUIDs for inequality.

Definition at line 94 of file duid.cc.

References duid_.

## ◆ operator==()

bool isc::dhcp::DUID::operator== | ( | const DUID & | other | ) | const

Compares two DUIDs for equality.

Definition at line 90 of file duid.cc.

References duid_.

## ◆ toText()

std::string isc::dhcp::DUID::toText | ( |  | ) | const

Returns textual representation of a DUID (e.g. 00:01:02:03:ff)

Definition at line 75 of file duid.cc.

References duid_.

Referenced by isc::dhcp::LeaseMgr::getLease6(), isc::dhcp::Memfile_LeaseMgr::getLeases6(), isc::dhcp::MySqlLeaseMgr::getLeases6(), isc::dhcp::PgSqlLeaseMgr::getLeases6(), isc::perfdhcp::ExchangeStats::receivedLeases(), and isc::dhcp::ClientId::toText().

## Member Data Documentation

## ◆ duid_

std::vector<uint8_t> isc::dhcp::DUID::duid_
| protected

The actual content of the DUID.

Definition at line 99 of file duid.h.

Referenced by DUID(), isc::dhcp::ClientId::getClientId(), getDuid(), getType(), isc::dhcp::ClientId::operator!=(), operator!=(), isc::dhcp::ClientId::operator==(), operator==(), and toText().

## ◆ MAX_DUID_LEN

const size_t isc::dhcp::DUID::MAX_DUID_LEN = 128
| static

maximum duid size As defined in RFC 8415, section 11.1

Definition at line 31 of file duid.h.

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

## ◆ MIN_DUID_LEN

const size_t isc::dhcp::DUID::MIN_DUID_LEN = 1
| static

minimum duid size The minimal DUID size specified in RFC 8415 is 1.

Definition at line 35 of file duid.h.

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

- duid.h
- duid.cc