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