libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums_dns.h
Go to the documentation of this file.
1
14#pragma once
15
16
17#include <promeki/config.h>
18#if PROMEKI_ENABLE_CORE
19#include <promeki/namespace.h>
20#include <promeki/enum.h>
21
22PROMEKI_NAMESPACE_BEGIN
23
61class DnsRecordType : public TypedEnum<DnsRecordType> {
62 public:
63 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("DnsRecordType", "DNS Record Type", 1,
64 {"Unknown", 0, "Unknown"},
65 {"A", 1, "IPv4 Host Address"},
66 {"Ns", 2, "Authoritative Name Server"},
67 {"Cname", 5, "Canonical Name Alias"},
68 {"Soa", 6, "Start of Authority"},
69 {"Ptr", 12, "Domain Name Pointer"},
70 {"Mx", 15, "Mail Exchange"},
71 {"Txt", 16, "Text / DNS-SD Attributes"},
72 {"Aaaa", 28, "IPv6 Host Address"},
73 {"Srv", 33, "Service Locator"},
74 {"Naptr", 35, "Naming Authority Pointer"},
75 {"Opt", 41, "EDNS0 Pseudo-Record"},
76 {"Ds", 43, "DNSSEC Delegation Signer"},
77 {"Rrsig", 46, "DNSSEC RRSIG Signature"},
78 {"Nsec", 47, "DNSSEC Next Secure"},
79 {"Dnskey", 48, "DNSSEC Public Key"},
80 {"Tlsa", 52, "DANE TLS Anchor"},
81 {"Svcb", 64, "Service Binding"},
82 {"Https", 65, "HTTPS Service Binding"},
83 {"Axfr", 252, "Zone Transfer (Query Only)"},
84 {"Any", 255, "Wildcard / ANY (Query Only)"},
85 {"Caa", 257, "Cert. Authority Authorization"}); // default: A
86
87 using TypedEnum<DnsRecordType>::TypedEnum;
88
89 static const DnsRecordType Unknown;
90 static const DnsRecordType A;
91 static const DnsRecordType Ns;
92 static const DnsRecordType Cname;
93 static const DnsRecordType Soa;
94 static const DnsRecordType Ptr;
95 static const DnsRecordType Mx;
96 static const DnsRecordType Txt;
97 static const DnsRecordType Aaaa;
98 static const DnsRecordType Srv;
99 static const DnsRecordType Naptr;
100 static const DnsRecordType Opt;
101 static const DnsRecordType Ds;
102 static const DnsRecordType Rrsig;
103 static const DnsRecordType Nsec;
104 static const DnsRecordType Dnskey;
105 static const DnsRecordType Tlsa;
106 static const DnsRecordType Svcb;
107 static const DnsRecordType Https;
108 static const DnsRecordType Axfr;
109 static const DnsRecordType Any;
110 static const DnsRecordType Caa;
111};
112
113inline const DnsRecordType DnsRecordType::Unknown{0};
114inline const DnsRecordType DnsRecordType::A{1};
115inline const DnsRecordType DnsRecordType::Ns{2};
116inline const DnsRecordType DnsRecordType::Cname{5};
117inline const DnsRecordType DnsRecordType::Soa{6};
118inline const DnsRecordType DnsRecordType::Ptr{12};
119inline const DnsRecordType DnsRecordType::Mx{15};
120inline const DnsRecordType DnsRecordType::Txt{16};
121inline const DnsRecordType DnsRecordType::Aaaa{28};
122inline const DnsRecordType DnsRecordType::Srv{33};
123inline const DnsRecordType DnsRecordType::Naptr{35};
124inline const DnsRecordType DnsRecordType::Opt{41};
125inline const DnsRecordType DnsRecordType::Ds{43};
126inline const DnsRecordType DnsRecordType::Rrsig{46};
127inline const DnsRecordType DnsRecordType::Nsec{47};
128inline const DnsRecordType DnsRecordType::Dnskey{48};
129inline const DnsRecordType DnsRecordType::Tlsa{52};
130inline const DnsRecordType DnsRecordType::Svcb{64};
131inline const DnsRecordType DnsRecordType::Https{65};
132inline const DnsRecordType DnsRecordType::Axfr{252};
133inline const DnsRecordType DnsRecordType::Any{255};
134inline const DnsRecordType DnsRecordType::Caa{257};
135
150class DnsRecordClass : public TypedEnum<DnsRecordClass> {
151 public:
152 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("DnsRecordClass", "DNS Record Class", 1,
153 {"In", 1, "Internet"},
154 {"Cs", 2, "CSNET (obsolete)"},
155 {"Ch", 3, "CHAOS"},
156 {"Hs", 4, "Hesiod"},
157 {"None", 254, "None (RFC 2136 update)"},
158 {"Any", 255, "Wildcard / ANY"}); // default: In
159
160 using TypedEnum<DnsRecordClass>::TypedEnum;
161
162 static const DnsRecordClass In;
163 static const DnsRecordClass Cs;
164 static const DnsRecordClass Ch;
165 static const DnsRecordClass Hs;
166 static const DnsRecordClass None;
167 static const DnsRecordClass Any;
168};
169
170inline const DnsRecordClass DnsRecordClass::In{1};
171inline const DnsRecordClass DnsRecordClass::Cs{2};
172inline const DnsRecordClass DnsRecordClass::Ch{3};
173inline const DnsRecordClass DnsRecordClass::Hs{4};
174inline const DnsRecordClass DnsRecordClass::None{254};
175inline const DnsRecordClass DnsRecordClass::Any{255};
176
184class DnsRecordSection : public TypedEnum<DnsRecordSection> {
185 public:
186 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("DnsRecordSection", "DNS Record Section", 1,
187 {"Question", 0, "Question"},
188 {"Answer", 1, "Answer"},
189 {"Authority", 2, "Authority"},
190 {"Additional", 3, "Additional"}); // default: Answer
191
192 using TypedEnum<DnsRecordSection>::TypedEnum;
193
194 static const DnsRecordSection Question;
195 static const DnsRecordSection Answer;
196 static const DnsRecordSection Authority;
197 static const DnsRecordSection Additional;
198};
199
200inline const DnsRecordSection DnsRecordSection::Question{0};
201inline const DnsRecordSection DnsRecordSection::Answer{1};
202inline const DnsRecordSection DnsRecordSection::Authority{2};
203inline const DnsRecordSection DnsRecordSection::Additional{3};
204
214class DnsOpcode : public TypedEnum<DnsOpcode> {
215 public:
216 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("DnsOpcode", "DNS Opcode", 0,
217 {"Query", 0, "Standard Query"},
218 {"IQuery", 1, "Inverse Query (Obsolete)"},
219 {"Status", 2, "Server Status"},
220 {"Notify", 4, "Zone Notify"},
221 {"Update", 5, "Dynamic Update"}); // default: Query
222
223 using TypedEnum<DnsOpcode>::TypedEnum;
224
225 static const DnsOpcode Query;
226 static const DnsOpcode IQuery;
227 static const DnsOpcode Status;
228 static const DnsOpcode Notify;
229 static const DnsOpcode Update;
230};
231
232inline const DnsOpcode DnsOpcode::Query{0};
233inline const DnsOpcode DnsOpcode::IQuery{1};
234inline const DnsOpcode DnsOpcode::Status{2};
235inline const DnsOpcode DnsOpcode::Notify{4};
236inline const DnsOpcode DnsOpcode::Update{5};
237
270class DnsRcode : public TypedEnum<DnsRcode> {
271 public:
272 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("DnsRcode", "DNS Response Code", 0,
273 {"NoError", 0, "No Error"},
274 {"FormErr", 1, "Format Error"},
275 {"ServFail", 2, "Server Failure"},
276 {"NxDomain", 3, "Name Does Not Exist"},
277 {"NotImp", 4, "Not Implemented"},
278 {"Refused", 5, "Refused"},
279 {"YxDomain", 6, "YXDOMAIN (Update Prereq)"},
280 {"YxRrSet", 7, "YXRRSET (Update Prereq)"},
281 {"NxRrSet", 8, "NXRRSET (Update Prereq)"},
282 {"NotAuth", 9, "Not Authoritative"},
283 {"NotZone", 10, "Name Not In Zone"},
284 {"BadVers", 16, "Bad EDNS Version"},
285 {"BadKey", 17, "Bad TSIG Key"},
286 {"BadTime", 18, "Bad TSIG Time"},
287 {"BadMode", 19, "Bad TKEY Mode"},
288 {"BadName", 20, "Duplicate TKEY Name"},
289 {"BadAlg", 21, "Bad TKEY Algorithm"},
290 {"BadTrunc", 22, "TSIG Truncation"},
291 {"BadCookie", 23, "Bad DNS Cookie"}); // default: NoError
292
293 using TypedEnum<DnsRcode>::TypedEnum;
294
295 static const DnsRcode NoError;
296 static const DnsRcode FormErr;
297 static const DnsRcode ServFail;
298 static const DnsRcode NxDomain;
299 static const DnsRcode NotImp;
300 static const DnsRcode Refused;
301 static const DnsRcode YxDomain;
302 static const DnsRcode YxRrSet;
303 static const DnsRcode NxRrSet;
304 static const DnsRcode NotAuth;
305 static const DnsRcode NotZone;
306 static const DnsRcode BadVers;
307 static const DnsRcode BadKey;
308 static const DnsRcode BadTime;
309 static const DnsRcode BadMode;
310 static const DnsRcode BadName;
311 static const DnsRcode BadAlg;
312 static const DnsRcode BadTrunc;
313 static const DnsRcode BadCookie;
314};
315
316inline const DnsRcode DnsRcode::NoError{0};
317inline const DnsRcode DnsRcode::FormErr{1};
318inline const DnsRcode DnsRcode::ServFail{2};
319inline const DnsRcode DnsRcode::NxDomain{3};
320inline const DnsRcode DnsRcode::NotImp{4};
321inline const DnsRcode DnsRcode::Refused{5};
322inline const DnsRcode DnsRcode::YxDomain{6};
323inline const DnsRcode DnsRcode::YxRrSet{7};
324inline const DnsRcode DnsRcode::NxRrSet{8};
325inline const DnsRcode DnsRcode::NotAuth{9};
326inline const DnsRcode DnsRcode::NotZone{10};
327inline const DnsRcode DnsRcode::BadVers{16};
328inline const DnsRcode DnsRcode::BadKey{17};
329inline const DnsRcode DnsRcode::BadTime{18};
330inline const DnsRcode DnsRcode::BadMode{19};
331inline const DnsRcode DnsRcode::BadName{20};
332inline const DnsRcode DnsRcode::BadAlg{21};
333inline const DnsRcode DnsRcode::BadTrunc{22};
334inline const DnsRcode DnsRcode::BadCookie{23};
335
338PROMEKI_NAMESPACE_END
339
340#endif // PROMEKI_ENABLE_CORE