userver
C++ Async Framework
Loading...
Searching...
No Matches
macaddr.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/utils/macaddr.hpp
4
/// @brief MAC address types
5
6
#
include
<
array
>
7
#
include
<
stdexcept
>
8
#
include
<
string
>
9
#
include
<
utility
>
10
11
#
include
<
userver
/
compiler
/
impl
/
lifetime
.
hpp
>
12
#
include
<
userver
/
utils
/
encoding
/
hex
.
hpp
>
13
14
USERVER_NAMESPACE_BEGIN
15
16
namespace
utils
{
17
18
/// @ingroup userver_containers
19
///
20
/// @brief Base class for Macaddr/Macaddr8
21
template
<std::size_t N>
22
class
MacaddrBase final {
23
static_assert
(N == 6 || N == 8,
"Address can only be 6 or 8 bytes size"
);
24
25
public
:
26
using
OctetsType = std::array<
unsigned
char
, N>;
27
28
MacaddrBase() =
default
;
29
30
explicit
MacaddrBase(
const
OctetsType& macaddr)
noexcept
: macaddr_(macaddr) {}
31
32
/// @brief Get octets of MAC-address
33
const
OctetsType&
GetOctets
()
const
noexcept
USERVER_IMPL_LIFETIME_BOUND {
return
macaddr_; }
34
35
friend
bool
operator==(
const
MacaddrBase<N>& a,
const
MacaddrBase<N>& b)
noexcept
{
36
return
a
.
GetOctets
(
)
== b
.
GetOctets
(
)
;
37
}
38
39
private
:
40
OctetsType macaddr_ = {0};
41
};
42
43
/// @ingroup userver_containers
44
///
45
/// @brief 48-bit MAC address
46
using
Macaddr = MacaddrBase<6>;
47
48
/// @ingroup userver_containers
49
///
50
/// @brief 64-bit MAC address
51
using
Macaddr8 = MacaddrBase<8>;
52
53
/// @brief Get 48-bit MAC address as a string in "xx:xx:.." format.
54
std::string
MacaddrToString
(Macaddr macaddr);
55
56
/// @brief Get 64-bit MAC address as a string in "xx:xx:.." format.
57
std::string
Macaddr8ToString
(Macaddr8 macaddr);
58
59
/// @brief Get 48-bit MAC address from std::string.
60
Macaddr
MacaddrFromString
(
const
std::string& str);
61
62
/// @brief Get 64-bit MAC address from std::string.
63
Macaddr8
Macaddr8FromString
(
const
std::string& str);
64
65
}
// namespace utils
66
67
USERVER_NAMESPACE_END
userver
utils
macaddr.hpp
Generated on Mon May 4 2026 12:09:23 for userver by
Doxygen
1.13.2