Kea  1.9.9-git
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 > &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 DUIDEMPTY ()
 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

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

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().

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

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().

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

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

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

+ Here is the call graph for this function:

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::CqlLeaseMgr::getLeases6(), isc::dhcp::PgSqlLeaseMgr::getLeases6(), and isc::dhcp::MySqlLeaseMgr::getLeases6().

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.

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

Compares two DUIDs for inequality.

Definition at line 94 of file duid.cc.

References duid_.

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

Compares two DUIDs for equality.

Definition at line 90 of file duid.cc.

References duid_.

Member Data Documentation

std::vector<uint8_t> isc::dhcp::DUID::duid_
protected
const size_t isc::dhcp::DUID::MAX_DUID_LEN = 128
static
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: