Kea 3.1.1
rrclass.h
Go to the documentation of this file.
1// Copyright (C) 2010-2024 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef RRCLASS_H
8#define RRCLASS_H
9
10#include <util/buffer.h>
11
12#include <stdint.h>
13
14#include <string>
15#include <ostream>
16
17#include <dns/exceptions.h>
18
19#include <boost/optional.hpp>
20
21// Undefine the macro IN which is defined in some operating systems
22// but conflicts the IN RR class.
23
24#ifdef IN
25#undef IN
26#endif
27
28namespace isc {
29
30namespace dns {
31
32// forward declarations
34
40public:
41 InvalidRRClass(const char* file, size_t line, const char* what) :
42 DNSTextError(file, line, what) {}
43};
44
50public:
51 IncompleteRRClass(const char* file, size_t line, const char* what) :
52 isc::dns::Exception(file, line, what) {}
53};
54
89class RRClass {
90public:
94
95
100 explicit RRClass(uint16_t classcode) : classcode_(classcode) {
101 }
102
127 explicit RRClass(const std::string& class_str);
138 explicit RRClass(isc::util::InputBuffer& buffer);
139
171 static RRClass* createFromText(const std::string& class_str);
172
175
176
178
182
183
195 const std::string toText() const;
207 void toWire(AbstractMessageRenderer& renderer) const;
217 void toWire(isc::util::OutputBuffer& buffer) const;
219
223
224
229 uint16_t getCode() const {
230 return (classcode_);
231 }
232
233
237
238
246 bool equals(const RRClass& other) const {
247 return (classcode_ == other.classcode_);
248 }
249
251 bool operator==(const RRClass& other) const {
252 return (equals(other));
253 }
254
261 bool nequals(const RRClass& other) const {
262 return (classcode_ != other.classcode_);
263 }
264
265 bool operator!=(const RRClass& other) const {
266 return (nequals(other));
267 }
268
284 bool operator<(const RRClass& other) const {
285 return (classcode_ < other.classcode_);
286 }
287
288 static const RRClass& ANY();
289 static const RRClass& IN();
290 static const RRClass& CH();
291 static const RRClass& NONE();
292
293private:
294 uint16_t classcode_;
295};
296
297inline const RRClass&
299 static RRClass rrclass(255);
300 return (rrclass);
301}
302
303inline const RRClass&
305 static RRClass rrclass(1);
306 return (rrclass);
307}
308
309inline const RRClass&
311 static RRClass rrclass(3);
312 return (rrclass);
313}
314
315inline const RRClass&
317 static RRClass rrclass(254);
318 return (rrclass);
319}
320
335std::ostream&
336operator<<(std::ostream& os, const RRClass& rrclass);
337}
338}
339#endif // RRCLASS_H
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...
DNSTextError(const char *file, size_t line, const char *what)
Exception(const char *file, size_t line, const char *what)
IncompleteRRClass(const char *file, size_t line, const char *what)
Definition rrclass.h:51
InvalidRRClass(const char *file, size_t line, const char *what)
Definition rrclass.h:41
The RRClass class encapsulates DNS resource record classes.
Definition rrclass.h:89
bool operator!=(const RRClass &other) const
Same as nequals().
Definition rrclass.h:265
static const RRClass & ANY()
Definition rrclass.h:298
static const RRClass & NONE()
Definition rrclass.h:316
bool operator==(const RRClass &other) const
Same as equals().
Definition rrclass.h:251
static const RRClass & CH()
Definition rrclass.h:310
uint16_t getCode() const
Returns the RR class code as a 16-bit unsigned integer.
Definition rrclass.h:229
void toWire(AbstractMessageRenderer &renderer) const
Render the RRClass in the wire format.
Definition rrclass.cc:53
static RRClass * createFromText(const std::string &class_str)
A separate factory of RRClass from text.
Definition rrclass.cc:58
bool operator<(const RRClass &other) const
Less-than comparison for RRClass against other.
Definition rrclass.h:284
static const RRClass & IN()
Definition rrclass.h:304
bool nequals(const RRClass &other) const
Return true iff two RRClasses are not equal.
Definition rrclass.h:261
const std::string toText() const
Convert the RRClass to a string.
Definition rrclass.cc:43
RRClass(uint16_t classcode)
Constructor from an integer class code.
Definition rrclass.h:100
bool equals(const RRClass &other) const
Return true iff two RRClasses are equal.
Definition rrclass.h:246
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:346
ostream & operator<<(std::ostream &os, const EDNS &edns)
Insert the EDNS as a string into stream.
Definition edns.cc:163
Defines the logger used by the top-level component of kea-lfc.