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
7namespace vbvx {
8
17struct [[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 {
41 }
42
43 constexpr void set_dst_port(uint16_t v) noexcept {
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 {
51 }
52};
53
54static_assert(sizeof(UDPHeader) == 8, "Wrong UDP header size");
55static_assert(alignof(UDPHeader) == 1, "Wrong UDP header alignment");
56
57} // namespace vbvx
Definition arp.hxx:11
constexpr _Tp autoswap(_Tp tp)
Byte-swap a value if the host is little-endian.
Definition utils.hxx:13
UDP header (8 bytes).
Definition udp_header.hxx:17
uint16_t dst_port_be
Definition udp_header.hxx:19
constexpr void set_length(uint16_t v) noexcept
Definition udp_header.hxx:47
uint16_t src_port_be
Definition udp_header.hxx:18
uint16_t length_be
Definition udp_header.hxx:20
constexpr auto checksum() const noexcept -> uint16_t
Definition udp_header.hxx:35
constexpr void set_checksum(uint16_t v) noexcept
Definition udp_header.hxx:49
constexpr auto src_port() const noexcept -> uint16_t
Definition udp_header.hxx:23
uint16_t checksum_be
Definition udp_header.hxx:21
constexpr auto dst_port() const noexcept -> uint16_t
Definition udp_header.hxx:27
constexpr void set_src_port(uint16_t v) noexcept
Definition udp_header.hxx:39
constexpr auto length() const noexcept -> uint16_t
Definition udp_header.hxx:31
constexpr void set_dst_port(uint16_t v) noexcept
Definition udp_header.hxx:43