Kea  2.1.7-git
isc::dns::Rcode Class Reference

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 object to be constructed with an invalid state.

 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 RcodeBADVERS ()
 A constant object for the BADVERS Rcode (see Rcode::BADVERS_CODE). More...
 
static const RcodeFORMERR ()
 A constant object for the FORMERR Rcode (see Rcode::FORMERR_CODE). More...
 
static const RcodeNOERROR ()
 A constant object for the NOERROR Rcode (see Rcode::NOERROR_CODE). More...
 
static const RcodeNOTAUTH ()
 A constant object for the NOTAUTH Rcode (see Rcode::NOTAUTH_CODE). More...
 
static const RcodeNOTIMP ()
 A constant object for the NOTIMP Rcode (see Rcode::NOTIMP_CODE). More...
 
static const RcodeNOTZONE ()
 A constant object for the NOTZONE Rcode (see Rcode::NOTZONE_CODE). More...
 
static const RcodeNXDOMAIN ()
 A constant object for the NXDOMAIN Rcode (see Rcode::NXDOMAIN_CODE). More...
 
static const RcodeNXRRSET ()
 A constant object for the NXRRSET Rcode (see Rcode::NXRRSET_CODE). More...
 
static const RcodeREFUSED ()
 A constant object for the REFUSED Rcode (see Rcode::REFUSED_CODE). More...
 
static const RcodeRESERVED11 ()
 A constant object for a reserved (code 11) Rcode. More...
 
static const RcodeRESERVED12 ()
 A constant object for a reserved (code 12) Rcode. More...
 
static const RcodeRESERVED13 ()
 A constant object for a reserved (code 13) Rcode. More...
 
static const RcodeRESERVED14 ()
 A constant object for a reserved (code 14) Rcode. More...
 
static const RcodeRESERVED15 ()
 A constant object for a reserved (code 15) Rcode. More...
 
static const RcodeSERVFAIL ()
 A constant object for the SERVFAIL Rcode (see Rcode::SERVFAIL_CODE). More...
 
static const RcodeYXDOMAIN ()
 A constant object for the YXDOMAIN Rcode (see Rcode::YXDOMAIN_CODE). More...
 
static const RcodeYXRRSET ()
 A constant object for the YXRRSET Rcode (see Rcode::YXRRSET_CODE). More...
 

Detailed Description

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.

Definition at line 40 of file rcode.h.

Member Enumeration Documentation

◆ CodeValue

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)

Definition at line 43 of file rcode.h.

Constructor & Destructor Documentation

◆ Rcode() [1/2]

isc::dns::Rcode::Rcode ( const uint16_t  code)
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.

Parameters
codeThe underlying 12-bit code value of the Rcode.

Definition at line 58 of file rcode.cc.

References isc_throw.

◆ Rcode() [2/2]

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.

Parameters
codeThe lower 4 bits of the underlying code value.
extended_codeThe upper 8 bits of the underlying code value.

Definition at line 64 of file rcode.cc.

References isc_throw.

Member Function Documentation

◆ BADVERS()

const Rcode & isc::dns::Rcode::BADVERS ( )
inlinestatic

A constant object for the BADVERS Rcode (see Rcode::BADVERS_CODE).

Definition at line 316 of file rcode.h.

References isc::dns::operator<<().

Referenced by isc::dns::DNSMessageBADVERS::getRcode(), and operator!=().

+ Here is the call graph for this function:

◆ equals()

bool isc::dns::Rcode::equals ( const Rcode other) const
inline

Return true iff two Rcodes are equal.

Two Rcodes are equal iff their type codes are equal.

This method never throws an exception.

Parameters
otherthe Rcode object to compare against.
Returns
true if the two Rcodes are equal; otherwise false.

Definition at line 127 of file rcode.h.

Referenced by operator==().

◆ FORMERR()

const Rcode & isc::dns::Rcode::FORMERR ( )
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(), isc::dns::DNSMessageFORMERR::getRcode(), and operator!=().

◆ getCode()

◆ getExtendedCode()

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.

Returns
The upper 8-bit of the underlying code value.

Definition at line 75 of file rcode.cc.

Referenced by getCode(), and isc::dns::MessageImpl::toWire().

◆ nequals()

bool isc::dns::Rcode::nequals ( const Rcode other) const
inline

Return true iff two Rcodes are not equal.

This method never throws an exception.

Parameters
otherthe Rcode object to compare against.
Returns
true if the two Rcodes are not equal; otherwise false.

Definition at line 139 of file rcode.h.

Referenced by operator!=().

◆ NOERROR()

◆ NOTAUTH()

const Rcode & isc::dns::Rcode::NOTAUTH ( )
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(), operator!=(), and isc::dns::TSIGError::toRcode().

◆ NOTIMP()

const Rcode & isc::dns::Rcode::NOTIMP ( )
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(), and operator!=().

◆ NOTZONE()

const Rcode & isc::dns::Rcode::NOTZONE ( )
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(), and operator!=().

◆ NXDOMAIN()

const Rcode & isc::dns::Rcode::NXDOMAIN ( )
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(), operator!=(), and isc::d2::NameAddTransaction::replacingFwdAddrsHandler().

◆ NXRRSET()

◆ operator!=()

bool isc::dns::Rcode::operator!= ( const Rcode other) const
inline

◆ operator==()

bool isc::dns::Rcode::operator== ( const Rcode other) const
inline

Same as equals().

Definition at line 131 of file rcode.h.

References equals().

+ Here is the call graph for this function:

◆ REFUSED()

const Rcode & isc::dns::Rcode::REFUSED ( )
inlinestatic

A constant object for the REFUSED Rcode (see Rcode::REFUSED_CODE).

Definition at line 250 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::REFUSED().

◆ RESERVED11()

const Rcode & isc::dns::Rcode::RESERVED11 ( )
inlinestatic

A constant object for a reserved (code 11) Rcode.

(see Rcode::RESERVED11_CODE).

Definition at line 286 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::RESERVED11().

◆ RESERVED12()

const Rcode & isc::dns::Rcode::RESERVED12 ( )
inlinestatic

A constant object for a reserved (code 12) Rcode.

(see Rcode::RESERVED12_CODE).

Definition at line 292 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::RESERVED12().

◆ RESERVED13()

const Rcode & isc::dns::Rcode::RESERVED13 ( )
inlinestatic

A constant object for a reserved (code 13) Rcode.

(see Rcode::RESERVED13_CODE).

Definition at line 298 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::RESERVED13().

◆ RESERVED14()

const Rcode & isc::dns::Rcode::RESERVED14 ( )
inlinestatic

A constant object for a reserved (code 14) Rcode.

(see Rcode::RESERVED14_CODE).

Definition at line 304 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::RESERVED14().

◆ RESERVED15()

const Rcode & isc::dns::Rcode::RESERVED15 ( )
inlinestatic

A constant object for a reserved (code 15) Rcode.

(see Rcode::RESERVED15_CODE).

Definition at line 310 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::RESERVED15().

◆ SERVFAIL()

const Rcode & isc::dns::Rcode::SERVFAIL ( )
inlinestatic

A constant object for the SERVFAIL Rcode (see Rcode::SERVFAIL_CODE).

Definition at line 232 of file rcode.h.

Referenced by operator!=(), isc::dns::TSIGError::SERVFAIL(), and isc::dns::TSIGError::toRcode().

◆ toText()

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.

Returns
A string representation of the Rcode.

Definition at line 80 of file rcode.cc.

Referenced by operator!=(), and isc::dns::operator<<().

◆ YXDOMAIN()

const Rcode & isc::dns::Rcode::YXDOMAIN ( )
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(), operator!=(), and isc::dns::TSIGError::YXDOMAIN().

◆ YXRRSET()

const Rcode & isc::dns::Rcode::YXRRSET ( )
inlinestatic

A constant object for the YXRRSET Rcode (see Rcode::YXRRSET_CODE).

Definition at line 262 of file rcode.h.

Referenced by operator!=(), and isc::dns::TSIGError::YXRRSET().


The documentation for this class was generated from the following files: