Kea 2.2.0
rrtype.h
Go to the documentation of this file.
1
7
8// Copyright (C) 2010-2021 Internet Systems Consortium, Inc. ("ISC")
9//
10// This Source Code Form is subject to the terms of the Mozilla Public
11// License, v. 2.0. If a copy of the MPL was not distributed with this
12// file, You can obtain one at http://mozilla.org/MPL/2.0/.
13
14#ifndef RRTYPE_H
15#define RRTYPE_H 1
16
17#include <stdint.h>
18
19#include <string>
20#include <ostream>
21
22#include <dns/exceptions.h>
23
24// Solaris x86 defines DS in <sys/regset.h>, which gets pulled in by Boost
25#if defined(__sun) && defined(DS)
26# undef DS
27#endif
28
29namespace isc {
30namespace util {
31class InputBuffer;
32class OutputBuffer;
33}
34
35namespace dns {
36
37// forward declarations
38class AbstractMessageRenderer;
39
45public:
46 InvalidRRType(const char* file, size_t line, const char* what) :
47 DNSTextError(file, line, what) {}
48};
49
55public:
56 IncompleteRRType(const char* file, size_t line, const char* what) :
57 isc::dns::Exception(file, line, what) {}
58};
59
106class RRType {
107public:
111
112
117 explicit RRType(uint16_t typecode) : typecode_(typecode) {}
144 explicit RRType(const std::string& typestr);
155 explicit RRType(isc::util::InputBuffer& buffer);
158
159
161
165
166
178 const std::string toText() const;
189 void toWire(AbstractMessageRenderer& renderer) const;
199 void toWire(isc::util::OutputBuffer& buffer) const;
201
205
206
211 uint16_t getCode() const { return (typecode_); }
213
217
218
226 bool equals(const RRType& other) const
227 { return (typecode_ == other.typecode_); }
229 bool operator==(const RRType& other) const { return (equals(other)); }
230
237 bool nequals(const RRType& other) const
238 { return (typecode_ != other.typecode_); }
240 bool operator!=(const RRType& other) const { return (nequals(other)); }
241
257 bool operator<(const RRType& other) const
258 { return (typecode_ < other.typecode_); }
260
261 // BEGIN_WELL_KNOWN_TYPE_DECLARATIONS
262 static const RRType& TSIG();
263 static const RRType& A();
264 static const RRType& AFSDB();
265 static const RRType& CAA();
266 static const RRType& CNAME();
267 static const RRType& DLV();
268 static const RRType& DNAME();
269 static const RRType& DNSKEY();
270 static const RRType& DS();
271 static const RRType& HINFO();
272 static const RRType& MINFO();
273 static const RRType& MX();
274 static const RRType& NAPTR();
275 static const RRType& NS();
276 static const RRType& NSEC3();
277 static const RRType& NSEC3PARAM();
278 static const RRType& NSEC();
279 static const RRType& OPT();
280 static const RRType& PTR();
281 static const RRType& RP();
282 static const RRType& RRSIG();
283 static const RRType& SOA();
284 static const RRType& SPF();
285 static const RRType& SSHFP();
286 static const RRType& TKEY();
287 static const RRType& TLSA();
288 static const RRType& TXT();
289 static const RRType& AAAA();
290 static const RRType& DHCID();
291 static const RRType& SRV();
292 static const RRType& IXFR();
293 static const RRType& AXFR();
294 static const RRType& ANY();
295 static const RRType& MD();
296 static const RRType& MF();
297 static const RRType& MB();
298 static const RRType& MG();
299 static const RRType& MR();
300 static const RRType& NXT();
301 static const RRType& A6();
302 static const RRType& MAILA();
303 static const RRType& Null();
304 static const RRType& WKS();
305 static const RRType& X25();
306 static const RRType& RT();
307 static const RRType& NSAP();
308 static const RRType& NSAP_PTR();
309 static const RRType& SIG();
310 static const RRType& ISDN();
311 static const RRType& KEY();
312 static const RRType& PX();
313 static const RRType& GPOS();
314 static const RRType& LOC();
315 static const RRType& KX();
316 static const RRType& CERT();
317 static const RRType& APL();
318 static const RRType& IPSECKEY();
319 static const RRType& HIP();
320 static const RRType& UNSPEC();
321 static const RRType& NID();
322 static const RRType& L32();
323 static const RRType& L64();
324 static const RRType& LP();
325 static const RRType& MAILB();
326 static const RRType& URI();
327 // END_WELL_KNOWN_TYPE_DECLARATIONS
328
329private:
330 uint16_t typecode_;
331};
332
333// BEGIN_WELL_KNOWN_TYPE_DEFINITIONS
334inline const RRType&
336 static RRType rrtype(250);
337 return (rrtype);
338}
339
340inline const RRType&
342 static RRType rrtype(1);
343 return (rrtype);
344}
345
346inline const RRType&
348 static RRType rrtype(18);
349 return (rrtype);
350}
351
352inline const RRType&
354 static RRType rrtype(257);
355 return (rrtype);
356}
357
358inline const RRType&
360 static RRType rrtype(5);
361 return (rrtype);
362}
363
364inline const RRType&
366 static RRType rrtype(32769);
367 return (rrtype);
368}
369
370inline const RRType&
372 static RRType rrtype(39);
373 return (rrtype);
374}
375
376inline const RRType&
378 static RRType rrtype(48);
379 return (rrtype);
380}
381
382inline const RRType&
384 static RRType rrtype(43);
385 return (rrtype);
386}
387
388inline const RRType&
390 static RRType rrtype(13);
391 return (rrtype);
392}
393
394inline const RRType&
396 static RRType rrtype(14);
397 return (rrtype);
398}
399
400inline const RRType&
402 static RRType rrtype(15);
403 return (rrtype);
404}
405
406inline const RRType&
408 static RRType rrtype(35);
409 return (rrtype);
410}
411
412inline const RRType&
414 static RRType rrtype(2);
415 return (rrtype);
416}
417
418inline const RRType&
420 static RRType rrtype(50);
421 return (rrtype);
422}
423
424inline const RRType&
426 static RRType rrtype(51);
427 return (rrtype);
428}
429
430inline const RRType&
432 static RRType rrtype(47);
433 return (rrtype);
434}
435
436inline const RRType&
438 static RRType rrtype(41);
439 return (rrtype);
440}
441
442inline const RRType&
444 static RRType rrtype(12);
445 return (rrtype);
446}
447
448inline const RRType&
450 static RRType rrtype(17);
451 return (rrtype);
452}
453
454inline const RRType&
456 static RRType rrtype(46);
457 return (rrtype);
458}
459
460inline const RRType&
462 static RRType rrtype(6);
463 return (rrtype);
464}
465
466inline const RRType&
468 static RRType rrtype(99);
469 return (rrtype);
470}
471
472inline const RRType&
474 static RRType rrtype(44);
475 return (rrtype);
476}
477
478inline const RRType&
480 static RRType rrtype(249);
481 return (rrtype);
482}
483
484inline const RRType&
486 static RRType rrtype(52);
487 return (rrtype);
488}
489
490inline const RRType&
492 static RRType rrtype(16);
493 return (rrtype);
494}
495
496inline const RRType&
498 static RRType rrtype(28);
499 return (rrtype);
500}
501
502inline const RRType&
504 static RRType rrtype(49);
505 return (rrtype);
506}
507
508inline const RRType&
510 static RRType rrtype(33);
511 return (rrtype);
512}
513
514inline const RRType&
516 static RRType rrtype(251);
517 return (rrtype);
518}
519
520inline const RRType&
522 static RRType rrtype(252);
523 return (rrtype);
524}
525
526inline const RRType&
528 static RRType rrtype(255);
529 return (rrtype);
530}
531
532inline const RRType&
534 static RRType rrtype(3);
535 return (rrtype);
536}
537
538inline const RRType&
540 static RRType rrtype(4);
541 return (rrtype);
542}
543
544inline const RRType&
546 static RRType rrtype(7);
547 return (rrtype);
548}
549
550inline const RRType&
552 static RRType rrtype(8);
553 return (rrtype);
554}
555
556inline const RRType&
558 static RRType rrtype(9);
559 return (rrtype);
560}
561
562inline const RRType&
564 static RRType rrtype(30);
565 return (rrtype);
566}
567
568inline const RRType&
570 static RRType rrtype(38);
571 return (rrtype);
572}
573
574inline const RRType&
576 static RRType rrtype(254);
577 return (rrtype);
578}
579
580inline const RRType&
582 static RRType rrtype(10);
583 return (rrtype);
584}
585
586inline const RRType&
588 static RRType rrtype(11);
589 return (rrtype);
590}
591
592inline const RRType&
594 static RRType rrtype(19);
595 return (rrtype);
596}
597
598inline const RRType&
600 static RRType rrtype(21);
601 return (rrtype);
602}
603
604inline const RRType&
606 static RRType rrtype(22);
607 return (rrtype);
608}
609
610inline const RRType&
612 static RRType rrtype(23);
613 return (rrtype);
614}
615
616inline const RRType&
618 static RRType rrtype(24);
619 return (rrtype);
620}
621
622inline const RRType&
624 static RRType rrtype(20);
625 return (rrtype);
626}
627
628inline const RRType&
630 static RRType rrtype(25);
631 return (rrtype);
632}
633
634inline const RRType&
636 static RRType rrtype(26);
637 return (rrtype);
638}
639
640inline const RRType&
642 static RRType rrtype(27);
643 return (rrtype);
644}
645
646inline const RRType&
648 static RRType rrtype(29);
649 return (rrtype);
650}
651
652inline const RRType&
654 static RRType rrtype(36);
655 return (rrtype);
656}
657
658inline const RRType&
660 static RRType rrtype(37);
661 return (rrtype);
662}
663
664inline const RRType&
666 static RRType rrtype(42);
667 return (rrtype);
668}
669
670inline const RRType&
672 static RRType rrtype(45);
673 return (rrtype);
674}
675
676inline const RRType&
678 static RRType rrtype(55);
679 return (rrtype);
680}
681
682inline const RRType&
684 static RRType rrtype(103);
685 return (rrtype);
686}
687
688inline const RRType&
690 static RRType rrtype(104);
691 return (rrtype);
692}
693
694inline const RRType&
696 static RRType rrtype(105);
697 return (rrtype);
698}
699
700inline const RRType&
702 static RRType rrtype(106);
703 return (rrtype);
704}
705
706inline const RRType&
708 static RRType rrtype(107);
709 return (rrtype);
710}
711
712inline const RRType&
714 static RRType rrtype(253);
715 return (rrtype);
716}
717
718inline const RRType&
720 static RRType rrtype(256);
721 return (rrtype);
722}
723
724// END_WELL_KNOWN_TYPE_DEFINITIONS
725
740std::ostream&
741operator<<(std::ostream& os, const RRType& rrtype);
742}
743}
744#endif // RRTYPE_H
745
746// Local Variables:
747// mode: c++
748// End:
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
The AbstractMessageRenderer class is an abstract base class that provides common interfaces for rende...
Base class for all sorts of text parse errors.
A standard DNS module exception that is thrown if an RRType object is being constructed from a incomp...
Definition: rrtype.h:54
IncompleteRRType(const char *file, size_t line, const char *what)
Definition: rrtype.h:56
A standard DNS module exception that is thrown if an RRType object is being constructed from an unrec...
Definition: rrtype.h:44
InvalidRRType(const char *file, size_t line, const char *what)
Definition: rrtype.h:46
The RRType class encapsulates DNS resource record types.
Definition: rrtype.h:106
static const RRType & DNSKEY()
Definition: rrtype.h:377
uint16_t getCode() const
Returns the RR type code as a 16-bit unsigned integer.
Definition: rrtype.h:211
static const RRType & ISDN()
Definition: rrtype.h:623
static const RRType & TSIG()
Definition: rrtype.h:335
static const RRType & IXFR()
Definition: rrtype.h:515
static const RRType & MINFO()
Definition: rrtype.h:395
static const RRType & MB()
Definition: rrtype.h:545
static const RRType & SPF()
Definition: rrtype.h:467
static const RRType & TLSA()
Definition: rrtype.h:485
static const RRType & MD()
Definition: rrtype.h:533
RRType(uint16_t typecode)
Constructor from an integer type code.
Definition: rrtype.h:117
static const RRType & SSHFP()
Definition: rrtype.h:473
bool operator<(const RRType &other) const
Less-than comparison for RRType against other.
Definition: rrtype.h:257
static const RRType & NSAP()
Definition: rrtype.h:605
static const RRType & MR()
Definition: rrtype.h:557
static const RRType & ANY()
Definition: rrtype.h:527
static const RRType & IPSECKEY()
Definition: rrtype.h:671
static const RRType & PX()
Definition: rrtype.h:635
static const RRType & OPT()
Definition: rrtype.h:437
static const RRType & CNAME()
Definition: rrtype.h:359
static const RRType & L32()
Definition: rrtype.h:695
static const RRType & SIG()
Definition: rrtype.h:617
static const RRType & LOC()
Definition: rrtype.h:647
static const RRType & RP()
Definition: rrtype.h:449
static const RRType & NS()
Definition: rrtype.h:413
bool operator==(const RRType &other) const
Same as equals().
Definition: rrtype.h:229
static const RRType & HINFO()
Definition: rrtype.h:389
static const RRType & Null()
Definition: rrtype.h:581
static const RRType & KEY()
Definition: rrtype.h:629
void toWire(AbstractMessageRenderer &renderer) const
Render the RRType in the wire format.
Definition: rrtype.cc:55
static const RRType & DNAME()
Definition: rrtype.h:371
static const RRType & GPOS()
Definition: rrtype.h:641
static const RRType & X25()
Definition: rrtype.h:593
static const RRType & TKEY()
Definition: rrtype.h:479
static const RRType & A6()
Definition: rrtype.h:569
static const RRType & APL()
Definition: rrtype.h:665
static const RRType & NSEC()
Definition: rrtype.h:431
static const RRType & MX()
Definition: rrtype.h:401
static const RRType & NXT()
Definition: rrtype.h:563
static const RRType & NID()
Definition: rrtype.h:689
bool operator!=(const RRType &other) const
Same as nequals().
Definition: rrtype.h:240
static const RRType & MF()
Definition: rrtype.h:539
static const RRType & MAILA()
Definition: rrtype.h:575
static const RRType & AAAA()
Definition: rrtype.h:497
static const RRType & CAA()
Definition: rrtype.h:353
const std::string toText() const
Convert the RRType to a string.
Definition: rrtype.cc:45
bool equals(const RRType &other) const
Return true iff two RRTypes are equal.
Definition: rrtype.h:226
static const RRType & NAPTR()
Definition: rrtype.h:407
static const RRType & HIP()
Definition: rrtype.h:677
static const RRType & URI()
Definition: rrtype.h:719
static const RRType & AFSDB()
Definition: rrtype.h:347
static const RRType & UNSPEC()
Definition: rrtype.h:683
static const RRType & DLV()
Definition: rrtype.h:365
static const RRType & AXFR()
Definition: rrtype.h:521
static const RRType & SRV()
Definition: rrtype.h:509
static const RRType & DS()
Definition: rrtype.h:383
static const RRType & LP()
Definition: rrtype.h:707
static const RRType & KX()
Definition: rrtype.h:653
static const RRType & NSAP_PTR()
Definition: rrtype.h:611
static const RRType & CERT()
Definition: rrtype.h:659
static const RRType & L64()
Definition: rrtype.h:701
static const RRType & PTR()
Definition: rrtype.h:443
static const RRType & RRSIG()
Definition: rrtype.h:455
static const RRType & NSEC3()
Definition: rrtype.h:419
static const RRType & RT()
Definition: rrtype.h:599
static const RRType & WKS()
Definition: rrtype.h:587
bool nequals(const RRType &other) const
Return true iff two RRTypes are not equal.
Definition: rrtype.h:237
static const RRType & NSEC3PARAM()
Definition: rrtype.h:425
static const RRType & MG()
Definition: rrtype.h:551
static const RRType & DHCID()
Definition: rrtype.h:503
static const RRType & SOA()
Definition: rrtype.h:461
static const RRType & MAILB()
Definition: rrtype.h:713
static const RRType & TXT()
Definition: rrtype.h:491
static const RRType & A()
Definition: rrtype.h:341
The InputBuffer class is a buffer abstraction for manipulating read-only data.
Definition: buffer.h:81
The OutputBuffer class is a buffer abstraction for manipulating mutable data.
Definition: buffer.h:294
ostream & operator<<(std::ostream &os, const EDNS &edns)
Insert the EDNS as a string into stream.
Definition: edns.cc:172
Defines the logger used by the top-level component of kea-lfc.