libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
dnsname.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
13#include <cstddef>
14#include <cstdint>
15#include <promeki/namespace.h>
16#include <promeki/error.h>
17#include <promeki/list.h>
18#include <promeki/map.h>
19#include <promeki/result.h>
20#include <promeki/string.h>
21
22PROMEKI_NAMESPACE_BEGIN
23
69inline constexpr size_t MaxNameWireBytes = 255;
70
72inline constexpr size_t MaxNameTextBytes = 1024;
73
75inline constexpr int MaxNamePointerHops = 16;
76
83String dnsEscapeLabel(const String &raw);
84
92String dnsUnescapeLabel(const String &escaped);
93
107List<String> dnsSplitName(const String &name);
108
116String dnsJoinName(const List<String> &rawLabels);
117
128struct DnsNameDecodeResult {
130 String name;
132 size_t nextOffset = 0;
133};
134
154Result<DnsNameDecodeResult> decodeName(const uint8_t *data, size_t len, size_t offset);
155
169Error skipName(const uint8_t *data, size_t len, size_t &offset);
170
180using DnsNameCompressionMap = Map<String, uint16_t>;
181
209Error encodeName(const String &name, List<uint8_t> &out,
210 DnsNameCompressionMap *dict = nullptr);
211
224String dnsCanonicalName(const String &name);
225
226PROMEKI_NAMESPACE_END
227
228#endif // PROMEKI_ENABLE_NETWORK