Kea 2.7.5
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...
 

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.
 
 Rcode (const uint8_t code, const uint8_t extended_code)
 Constructor from a pair of base and extended parts of code.
 
uint16_t getCode () const
 Returns the Rcode code value.
 
uint8_t getExtendedCode () const
 Returns the upper 8-bit of the Rcode code value.
 
bool equals (const Rcode &other) const
 Return true iff two Rcodes are equal.
 
bool operator== (const Rcode &other) const
 Same as equals().
 
bool nequals (const Rcode &other) const
 Return true iff two Rcodes are not equal.
 
bool operator!= (const Rcode &other) const
 Same as nequals().
 
std::string toText () const
 Convert the Rcode to a string.
 
static const RcodeNOERROR ()
 A constant object for the NOERROR Rcode (see Rcode::NOERROR_CODE).
 
static const RcodeFORMERR ()
 A constant object for the FORMERR Rcode (see Rcode::FORMERR_CODE).
 
static const RcodeSERVFAIL ()
 A constant object for the SERVFAIL Rcode (see Rcode::SERVFAIL_CODE).
 
static const RcodeNXDOMAIN ()
 A constant object for the NXDOMAIN Rcode (see Rcode::NXDOMAIN_CODE).
 
static const RcodeNOTIMP ()
 A constant object for the NOTIMP Rcode (see Rcode::NOTIMP_CODE).
 
static const RcodeREFUSED ()
 A constant object for the REFUSED Rcode (see Rcode::REFUSED_CODE).
 
static const RcodeYXDOMAIN ()
 A constant object for the YXDOMAIN Rcode (see Rcode::YXDOMAIN_CODE).
 
static const RcodeYXRRSET ()
 A constant object for the YXRRSET Rcode (see Rcode::YXRRSET_CODE).
 
static const RcodeNXRRSET ()
 A constant object for the NXRRSET Rcode (see Rcode::NXRRSET_CODE).
 
static const RcodeNOTAUTH ()
 A constant object for the NOTAUTH Rcode (see Rcode::NOTAUTH_CODE).
 
static const RcodeNOTZONE ()
 A constant object for the NOTZONE Rcode (see Rcode::NOTZONE_CODE).
 
static const RcodeRESERVED11 ()
 A constant object for a reserved (code 11) Rcode.
 
static const RcodeRESERVED12 ()
 A constant object for a reserved (code 12) Rcode.
 
static const RcodeRESERVED13 ()
 A constant object for a reserved (code 13) Rcode.
 
static const RcodeRESERVED14 ()
 A constant object for a reserved (code 14) Rcode.
 
static const RcodeRESERVED15 ()
 A constant object for a reserved (code 15) Rcode.
 
static const RcodeBADVERS ()
 A constant object for the BADVERS Rcode (see Rcode::BADVERS_CODE).
 

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 324 of file rcode.h.

Referenced by isc::dns::DNSMessageBADVERS::getRcode().

◆ 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 129 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 234 of file rcode.h.

Referenced by isc::dns::TSIGError::FORMERR(), and isc::dns::DNSMessageFORMERR::getRcode().

◆ getCode()

uint16_t isc::dns::Rcode::getCode ( ) const
inline

Returns the Rcode code value.

This method never throws an exception.

Returns
The underlying code value corresponding to the Rcode.

Definition at line 106 of file rcode.h.

◆ 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.

◆ 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 144 of file rcode.h.

Referenced by operator!=().

◆ NOERROR()

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

◆ NOTAUTH()

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

A constant object for the NOTAUTH Rcode (see Rcode::NOTAUTH_CODE).

Definition at line 282 of file rcode.h.

Referenced by isc::dns::TSIGError::NOTAUTH(), 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 252 of file rcode.h.

Referenced by isc::dns::TSIGError::NOTIMP().

◆ NOTZONE()

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

A constant object for the NOTZONE Rcode (see Rcode::NOTZONE_CODE).

Definition at line 288 of file rcode.h.

Referenced by isc::dns::TSIGError::NOTZONE().

◆ NXDOMAIN()

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

◆ NXRRSET()

◆ operator!=()

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

Same as nequals().

Definition at line 149 of file rcode.h.

References nequals().

+ Here is the call graph for this function:

◆ operator==()

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

Same as equals().

Definition at line 134 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 258 of file rcode.h.

Referenced by 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 294 of file rcode.h.

Referenced by 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 300 of file rcode.h.

Referenced by 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 306 of file rcode.h.

Referenced by 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 312 of file rcode.h.

Referenced by 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 318 of file rcode.h.

Referenced by 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 240 of file rcode.h.

Referenced by 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.

◆ YXDOMAIN()

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

◆ YXRRSET()

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

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

Definition at line 270 of file rcode.h.

Referenced by isc::dns::TSIGError::YXRRSET().


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