VBVX
0.1.0
Header-only C++23 library for safe, zero-copy parsing of packet buffers.
Loading...
Searching...
No Matches
udp_header.hxx
Go to the documentation of this file.
1
#pragma once
2
3
#include <cstdint>
4
5
#include "
utils.hxx
"
6
7
namespace
vbvx
{
8
17
struct
[[gnu::packed]]
UDPHeader
{
18
uint16_t
src_port_be
;
19
uint16_t
dst_port_be
;
20
uint16_t
length_be
;
21
uint16_t
checksum_be
;
22
23
constexpr
auto
src_port
() const noexcept -> uint16_t {
24
return
autoswap
(
src_port_be
);
25
}
26
27
constexpr
auto
dst_port
() const noexcept -> uint16_t {
28
return
autoswap
(
dst_port_be
);
29
}
30
31
constexpr
auto
length
() const noexcept -> uint16_t {
32
return
autoswap
(
length_be
);
33
}
34
35
constexpr
auto
checksum
() const noexcept -> uint16_t {
36
return
autoswap
(
checksum_be
);
37
}
38
39
constexpr
void
set_src_port
(uint16_t v)
noexcept
{
40
src_port_be
=
autoswap
(v);
41
}
42
43
constexpr
void
set_dst_port
(uint16_t v)
noexcept
{
44
dst_port_be
=
autoswap
(v);
45
}
46
47
constexpr
void
set_length
(uint16_t v)
noexcept
{
length_be
=
autoswap
(v); }
48
49
constexpr
void
set_checksum
(uint16_t v)
noexcept
{
50
checksum_be
=
autoswap
(v);
51
}
52
};
53
54
static_assert
(
sizeof
(UDPHeader) == 8,
"Wrong UDP header size"
);
55
static_assert
(
alignof
(UDPHeader) == 1,
"Wrong UDP header alignment"
);
56
57
}
// namespace vbvx
vbvx
Definition
arp.hxx:11
vbvx::autoswap
constexpr _Tp autoswap(_Tp tp)
Byte-swap a value if the host is little-endian.
Definition
utils.hxx:13
vbvx::UDPHeader
UDP header (8 bytes).
Definition
udp_header.hxx:17
vbvx::UDPHeader::dst_port_be
uint16_t dst_port_be
Definition
udp_header.hxx:19
vbvx::UDPHeader::set_length
constexpr void set_length(uint16_t v) noexcept
Definition
udp_header.hxx:47
vbvx::UDPHeader::src_port_be
uint16_t src_port_be
Definition
udp_header.hxx:18
vbvx::UDPHeader::length_be
uint16_t length_be
Definition
udp_header.hxx:20
vbvx::UDPHeader::checksum
constexpr auto checksum() const noexcept -> uint16_t
Definition
udp_header.hxx:35
vbvx::UDPHeader::set_checksum
constexpr void set_checksum(uint16_t v) noexcept
Definition
udp_header.hxx:49
vbvx::UDPHeader::src_port
constexpr auto src_port() const noexcept -> uint16_t
Definition
udp_header.hxx:23
vbvx::UDPHeader::checksum_be
uint16_t checksum_be
Definition
udp_header.hxx:21
vbvx::UDPHeader::dst_port
constexpr auto dst_port() const noexcept -> uint16_t
Definition
udp_header.hxx:27
vbvx::UDPHeader::set_src_port
constexpr void set_src_port(uint16_t v) noexcept
Definition
udp_header.hxx:39
vbvx::UDPHeader::length
constexpr auto length() const noexcept -> uint16_t
Definition
udp_header.hxx:31
vbvx::UDPHeader::set_dst_port
constexpr void set_dst_port(uint16_t v) noexcept
Definition
udp_header.hxx:43
utils.hxx
vbvx
udp_header.hxx
Generated by
1.16.0