Kea
1.9.9-git
|
DNS Response Codes (RCODEs) class. More...
#include <rcode.h>
Public Types | |
enum | CodeValue { NOERROR_CODE = 0, FORMERR_CODE = 1, SERVFAIL_CODE = 2, NXDOMAIN_CODE = 3, NOTIMP_CODE = 4, REFUSED_CODE = 5, YXDOMAIN_CODE = 6, YXRRSET_CODE = 7, NXRRSET_CODE = 8, NOTAUTH_CODE = 9, NOTZONE_CODE = 10, RESERVED11_CODE = 11, RESERVED12_CODE = 12, RESERVED13_CODE = 13, RESERVED14_CODE = 14, RESERVED15_CODE = 15, BADVERS_CODE = 16 } |
Constants for pre-defined RCODE values. More... | |
Public Member Functions | |
bool | equals (const Rcode &other) const |
Return true iff two Rcodes are equal. More... | |
uint16_t | getCode () const |
Returns the Rcode code value. More... | |
uint8_t | getExtendedCode () const |
Returns the upper 8-bit of the Rcode code value. More... | |
bool | nequals (const Rcode &other) const |
Return true iff two Rcodes are not equal. More... | |
bool | operator!= (const Rcode &other) const |
Same as nequals() . More... | |
bool | operator== (const Rcode &other) const |
Same as equals() . More... | |
std::string | toText () const |
Convert the Rcode to a string. More... | |
Constructors and Destructor | |
We use the default versions of destructor, copy constructor, and assignment operator. The default constructor is hidden as a result of defining the other constructors. This is intentional; we don't want to allow an | |
Rcode (const uint16_t code) | |
Constructor from the code value. More... | |
Rcode (const uint8_t code, const uint8_t extended_code) | |
Constructor from a pair of base and extended parts of code. More... | |
Static Public Member Functions | |
static const Rcode & | BADVERS () |
A constant object for the BADVERS Rcode (see Rcode::BADVERS_CODE ). More... | |
static const Rcode & | FORMERR () |
A constant object for the FORMERR Rcode (see Rcode::FORMERR_CODE ). More... | |
static const Rcode & | NOERROR () |
A constant object for the NOERROR Rcode (see Rcode::NOERROR_CODE ). More... | |
static const Rcode & | NOTAUTH () |
A constant object for the NOTAUTH Rcode (see Rcode::NOTAUTH_CODE ). More... | |
static const Rcode & | NOTIMP () |
A constant object for the NOTIMP Rcode (see Rcode::NOTIMP_CODE ). More... | |
static const Rcode & | NOTZONE () |
A constant object for the NOTZONE Rcode (see Rcode::NOTZONE_CODE ). More... | |
static const Rcode & | NXDOMAIN () |
A constant object for the NXDOMAIN Rcode (see Rcode::NXDOMAIN_CODE ). More... | |
static const Rcode & | NXRRSET () |
A constant object for the NXRRSET Rcode (see Rcode::NXRRSET_CODE ). More... | |
static const Rcode & | REFUSED () |
A constant object for the REFUSED Rcode (see Rcode::REFUSED_CODE ). More... | |
static const Rcode & | RESERVED11 () |
A constant object for a reserved (code 11) Rcode. More... | |
static const Rcode & | RESERVED12 () |
A constant object for a reserved (code 12) Rcode. More... | |
static const Rcode & | RESERVED13 () |
A constant object for a reserved (code 13) Rcode. More... | |
static const Rcode & | RESERVED14 () |
A constant object for a reserved (code 14) Rcode. More... | |
static const Rcode & | RESERVED15 () |
A constant object for a reserved (code 15) Rcode. More... | |
static const Rcode & | SERVFAIL () |
A constant object for the SERVFAIL Rcode (see Rcode::SERVFAIL_CODE ). More... | |
static const Rcode & | YXDOMAIN () |
A constant object for the YXDOMAIN Rcode (see Rcode::YXDOMAIN_CODE ). More... | |
static const Rcode & | YXRRSET () |
A constant object for the YXRRSET Rcode (see Rcode::YXRRSET_CODE ). More... | |
DNS Response Codes (RCODEs) class.
The Rcode
class objects represent standard Response Codes (RCODEs) of the header section of DNS messages, and extended response codes as defined in the EDNS specification.
Originally RCODEs were defined as 4-bit integers (RFC1035), and then extended to 12 bits as part of the EDNS specification (RFC2671). This API uses the 12-bit version of the definition from the beginning; applications don't have to aware of the original definition except when dealing with the wire-format representation of the EDNS OPT RR (which is rare).
Like the Opcode
class, Rcodes could be represented as bare integers, but we define a separate class to benefit from C++ type safety.
For convenience we also provide an enum type for pre-defined RCODE values, but it is generally advisable to handle RCODEs through this class. In fact, public interfaces of this library uses this class to pass or return RCODEs instead of the bare code values.
Constants for pre-defined RCODE values.
Enumerator | |
---|---|
NOERROR_CODE |
0: No error (RFC1035) |
FORMERR_CODE |
1: Format error (RFC1035) |
SERVFAIL_CODE |
2: Server failure (RFC1035) |
NXDOMAIN_CODE |
3: Name Error (RFC1035) |
NOTIMP_CODE |
4: Not Implemented (RFC1035) |
REFUSED_CODE |
5: Refused (RFC1035) |
YXDOMAIN_CODE |
6: Name unexpectedly exists (RFC2136) |
YXRRSET_CODE |
7: RRset unexpectedly exists (RFC2136) |
NXRRSET_CODE |
8: RRset should exist but not (RFC2136) |
NOTAUTH_CODE |
9: Server isn't authoritative (RFC2136) |
NOTZONE_CODE |
10: Name is not within the zone (RFC2136) |
RESERVED11_CODE |
11: Reserved for future use (RFC1035) |
RESERVED12_CODE |
12: Reserved for future use (RFC1035) |
RESERVED13_CODE |
13: Reserved for future use (RFC1035) |
RESERVED14_CODE |
14: Reserved for future use (RFC1035) |
RESERVED15_CODE |
15: Reserved for future use (RFC1035) |
BADVERS_CODE |
16: EDNS version not implemented (RFC2671) |
|
explicit |
Constructor from the code value.
Since RCODEs are 12-bit values, parameters larger than 0xfff are invalid. If code
is larger than 0xfff an exception of class isc::OutOfRange
will be thrown.
code | The underlying 12-bit code value of the Rcode . |
Definition at line 58 of file rcode.cc.
References isc_throw.
isc::dns::Rcode::Rcode | ( | const uint8_t | code, |
const uint8_t | extended_code | ||
) |
Constructor from a pair of base and extended parts of code.
This constructor takes two parameters, one for the lower 4 bits of the code value, the other for the upper 8 bits, and combines them to build a complete 12-bit code value.
The first parameter, code
, is the lower 4 bits, and therefore must not exceed 15. Otherwise, an exception of class isc::OutOfRange
will be thrown.
This version of constructor is provided specifically for constructing an Rcode from a DNS header and an EDNS OPT RR. Normal applications won't have to use this constructor.
code | The lower 4 bits of the underlying code value. |
extended_code | The upper 8 bits of the underlying code value. |
Definition at line 64 of file rcode.cc.
References isc_throw.
|
inlinestatic |
A constant object for the BADVERS Rcode (see Rcode::BADVERS_CODE
).
Definition at line 316 of file rcode.h.
Referenced by isc::dns::DNSMessageBADVERS::getRcode().
|
inline |
Return true iff two Rcodes are equal.
Two Rcodes are equal iff their type codes are equal.
This method never throws an exception.
other | the Rcode object to compare against. |
Definition at line 127 of file rcode.h.
Referenced by operator==().
|
inlinestatic |
A constant object for the FORMERR Rcode (see Rcode::FORMERR_CODE
).
Definition at line 226 of file rcode.h.
Referenced by isc::dns::TSIGError::FORMERR(), and isc::dns::DNSMessageFORMERR::getRcode().
|
inline |
Returns the Rcode
code value.
This method never throws an exception.
Rcode
. Definition at line 106 of file rcode.h.
Referenced by isc::dns::MessageImpl::addEDNS(), isc::d2::NameAddTransaction::addingFwdAddrsHandler(), isc::d2::NameRemoveTransaction::removingFwdAddrsHandler(), isc::d2::SimpleRemoveTransaction::removingFwdRRsHandler(), isc::d2::NameRemoveTransaction::removingFwdRRsHandler(), isc::d2::SimpleRemoveTransaction::removingRevPtrsHandler(), isc::d2::NameRemoveTransaction::removingRevPtrsHandler(), isc::d2::SimpleAddTransaction::replacingFwdAddrsHandler(), isc::d2::NameAddTransaction::replacingFwdAddrsHandler(), isc::d2::SimpleAddTransaction::replacingRevPtrsHandler(), isc::d2::NameAddTransaction::replacingRevPtrsHandler(), and isc::dns::MessageImpl::toWire().
uint8_t isc::dns::Rcode::getExtendedCode | ( | ) | const |
Returns the upper 8-bit of the Rcode
code value.
Normal applications won't have to use this method. This is provided in case the upper 8 bits are necessary for the EDNS protocol processing.
This method never throws an exception.
Definition at line 75 of file rcode.cc.
Referenced by isc::dns::MessageImpl::toWire().
|
inline |
Return true iff two Rcodes are not equal.
This method never throws an exception.
other | the Rcode object to compare against. |
Definition at line 139 of file rcode.h.
Referenced by operator!=().
|
inlinestatic |
A constant object for the NOERROR Rcode (see Rcode::NOERROR_CODE
).
Definition at line 220 of file rcode.h.
Referenced by isc::d2::NameAddTransaction::addingFwdAddrsHandler(), isc::d2::D2UpdateMessage::D2UpdateMessage(), isc::dns::TSIGError::NOERROR(), isc::d2::NameRemoveTransaction::removingFwdAddrsHandler(), isc::d2::SimpleRemoveTransaction::removingFwdRRsHandler(), isc::d2::NameRemoveTransaction::removingFwdRRsHandler(), isc::d2::SimpleRemoveTransaction::removingRevPtrsHandler(), isc::d2::NameRemoveTransaction::removingRevPtrsHandler(), isc::d2::SimpleAddTransaction::replacingFwdAddrsHandler(), isc::d2::NameAddTransaction::replacingFwdAddrsHandler(), isc::d2::SimpleAddTransaction::replacingRevPtrsHandler(), and isc::d2::NameAddTransaction::replacingRevPtrsHandler().
|
inlinestatic |
A constant object for the NOTAUTH Rcode (see Rcode::NOTAUTH_CODE
).
Definition at line 274 of file rcode.h.
Referenced by isc::dns::TSIGError::NOTAUTH(), and isc::dns::TSIGError::toRcode().
|
inlinestatic |
A constant object for the NOTIMP Rcode (see Rcode::NOTIMP_CODE
).
Definition at line 244 of file rcode.h.
Referenced by isc::dns::TSIGError::NOTIMP().
|
inlinestatic |
A constant object for the NOTZONE Rcode (see Rcode::NOTZONE_CODE
).
Definition at line 280 of file rcode.h.
Referenced by isc::dns::TSIGError::NOTZONE().
|
inlinestatic |
A constant object for the NXDOMAIN Rcode (see Rcode::NXDOMAIN_CODE
).
Definition at line 238 of file rcode.h.
Referenced by isc::dns::TSIGError::NXDOMAIN(), and isc::d2::NameAddTransaction::replacingFwdAddrsHandler().
|
inlinestatic |
A constant object for the NXRRSET Rcode (see Rcode::NXRRSET_CODE
).
Definition at line 268 of file rcode.h.
Referenced by isc::dns::TSIGError::NXRRSET(), isc::d2::NameRemoveTransaction::removingFwdAddrsHandler(), isc::d2::SimpleRemoveTransaction::removingFwdRRsHandler(), isc::d2::NameRemoveTransaction::removingFwdRRsHandler(), isc::d2::SimpleRemoveTransaction::removingRevPtrsHandler(), and isc::d2::NameRemoveTransaction::removingRevPtrsHandler().
|
inline |
|
inline |
|
inlinestatic |
A constant object for the REFUSED Rcode (see Rcode::REFUSED_CODE
).
Definition at line 250 of file rcode.h.
Referenced by isc::dns::TSIGError::REFUSED().
|
inlinestatic |
A constant object for a reserved (code 11) Rcode.
(see Rcode::RESERVED11_CODE
).
Definition at line 286 of file rcode.h.
Referenced by isc::dns::TSIGError::RESERVED11().
|
inlinestatic |
A constant object for a reserved (code 12) Rcode.
(see Rcode::RESERVED12_CODE
).
Definition at line 292 of file rcode.h.
Referenced by isc::dns::TSIGError::RESERVED12().
|
inlinestatic |
A constant object for a reserved (code 13) Rcode.
(see Rcode::RESERVED13_CODE
).
Definition at line 298 of file rcode.h.
Referenced by isc::dns::TSIGError::RESERVED13().
|
inlinestatic |
A constant object for a reserved (code 14) Rcode.
(see Rcode::RESERVED14_CODE
).
Definition at line 304 of file rcode.h.
Referenced by isc::dns::TSIGError::RESERVED14().
|
inlinestatic |
A constant object for a reserved (code 15) Rcode.
(see Rcode::RESERVED15_CODE
).
Definition at line 310 of file rcode.h.
Referenced by isc::dns::TSIGError::RESERVED15().
|
inlinestatic |
A constant object for the SERVFAIL Rcode (see Rcode::SERVFAIL_CODE
).
Definition at line 232 of file rcode.h.
Referenced by isc::dns::TSIGError::SERVFAIL(), and isc::dns::TSIGError::toRcode().
string isc::dns::Rcode::toText | ( | ) | const |
Convert the Rcode
to a string.
For pre-defined code values (see Rcode::CodeValue), this method returns a string representation of the "mnemonic' used for the enum and constant objects. For example, the string for code value 0 is "NOERROR", etc. For other code values it returns a string representation of the decimal number of the value, e.g. "32", "100", etc.
If resource allocation for the string fails, a corresponding standard exception will be thrown.
Rcode
. Definition at line 80 of file rcode.cc.
Referenced by isc::dns::operator<<(), and isc::dns::Message::toText().
|
inlinestatic |
A constant object for the YXDOMAIN Rcode (see Rcode::YXDOMAIN_CODE
).
Definition at line 256 of file rcode.h.
Referenced by isc::d2::NameAddTransaction::addingFwdAddrsHandler(), and isc::dns::TSIGError::YXDOMAIN().
|
inlinestatic |
A constant object for the YXRRSET Rcode (see Rcode::YXRRSET_CODE
).
Definition at line 262 of file rcode.h.
Referenced by isc::dns::TSIGError::YXRRSET().