Kea 2.5.5
duid.cc
Go to the documentation of this file.
1// Copyright (C) 2012-2023 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#include <config.h>
8
9#include <dhcp/duid.h>
11#include <util/io_utilities.h>
12#include <iomanip>
13#include <cctype>
14#include <sstream>
15#include <vector>
16
17#include <stdint.h>
18
19namespace isc {
20namespace dhcp {
21
23}
24
25constexpr size_t DUID::MIN_DUID_LEN;
26constexpr size_t DUID::MAX_DUID_LEN;
27
28DUID::DUID(const std::vector<uint8_t>& data) : IdentifierType<3, 130>(data) {
29}
30
31DUID::DUID(const uint8_t* data, size_t len) : IdentifierType<3, 130>(data, len) {
32}
33
34const std::vector<uint8_t>& DUID::getDuid() const {
35 return (data_);
36}
37
39 if (data_.size() < 2) {
40 return (DUID_UNKNOWN);
41 }
42 uint16_t type = (data_[0] << 8) + data_[1];
43 if (type < DUID_MAX) {
44 return (static_cast<DUID::DUIDType>(type));
45 } else {
46 return (DUID_UNKNOWN);
47 }
48}
49
50DUID
51DUID::fromText(const std::string& text) {
52 return (DUID(IdentifierType::fromText(text)));
53}
54
55const DUID&
57 static DUID empty({0, 0, 0});
58 return (empty);
59}
60
61constexpr size_t ClientId::MIN_CLIENT_ID_LEN;
62constexpr size_t ClientId::MAX_CLIENT_ID_LEN;
63
64ClientId::ClientId(const std::vector<uint8_t>& data) : IdentifierType<2, 255>(data) {
65}
66
67ClientId::ClientId(const uint8_t *data, size_t len) : IdentifierType<2, 255>(data, len) {
68}
69
70const std::vector<uint8_t>& ClientId::getClientId() const {
71 return (data_);
72}
73
74ClientIdPtr ClientId::fromText(const std::string& text) {
76}
77
78} // namespace dhcp
79} // namespace isc
static constexpr size_t MAX_CLIENT_ID_LEN
Maximum size of a client ID.
Definition: duid.h:231
const std::vector< uint8_t > & getClientId() const
Returns reference to the client-id data.
Definition: duid.cc:70
ClientId(const std::vector< uint8_t > &data)
Constructor based on vector<uint8_t>
Definition: duid.cc:64
static ClientIdPtr fromText(const std::string &text)
Create client identifier from the textual format.
Definition: duid.cc:74
static constexpr size_t MIN_CLIENT_ID_LEN
Minimum size of a client ID.
Definition: duid.h:225
Holds DUID (DHCPv6 Unique Identifier)
Definition: duid.h:138
static constexpr size_t MIN_DUID_LEN
minimum duid size
Definition: duid.h:145
static DUID fromText(const std::string &text)
Create DUID from the textual format.
Definition: duid.cc:51
static const DUID & EMPTY()
Defines the constant "empty" DUID.
Definition: duid.cc:56
static constexpr size_t MAX_DUID_LEN
maximum duid size
Definition: duid.h:151
DUIDType
specifies DUID type
Definition: duid.h:154
@ DUID_MAX
not a real type, just maximum defined value + 1
Definition: duid.h:160
@ DUID_UNKNOWN
invalid/unknown type
Definition: duid.h:155
const std::vector< uint8_t > & getDuid() const
Returns a const reference to the actual DUID value.
Definition: duid.cc:34
DUIDType getType() const
Returns the DUID type.
Definition: duid.cc:38
DUID(const std::vector< uint8_t > &data)
Constructor from vector.
Definition: duid.cc:28
virtual ~IdentifierBaseType()=0
Pure virtual destructor.
Definition: duid.cc:22
std::vector< uint8_t > data_
The actual content of the Identifier.
Definition: duid.h:127
static std::vector< uint8_t > fromText(const std::string &text)
This static function parses an Identifier specified in the textual format.
Definition: duid.h:104
boost::shared_ptr< ClientId > ClientIdPtr
Shared pointer to a Client ID.
Definition: duid.h:212
Defines the logger used by the top-level component of kea-lfc.