Kea 3.3.3
isc::dns::Opcode Class Reference

The Opcode class objects represent standard OPCODEs of the header section of DNS messages as defined in RFC1035. More...

#include <opcode.h>

Public Types

enum  CodeValue : uint16_t {
  QUERY_CODE = 0 , IQUERY_CODE = 1 , STATUS_CODE = 2 , RESERVED3_CODE = 3 ,
  NOTIFY_CODE = 4 , UPDATE_CODE = 5 , RESERVED6_CODE = 6 , RESERVED7_CODE = 7 ,
  RESERVED8_CODE = 8 , RESERVED9_CODE = 9 , RESERVED10_CODE = 10 , RESERVED11_CODE = 11 ,
  RESERVED12_CODE = 12 , RESERVED13_CODE = 13 , RESERVED14_CODE = 14 , RESERVED15_CODE = 15
}
 Constants for standard OPCODE 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 Opcode object to be constructed with an invalid state.

 Opcode (const uint8_t code)
 Constructor from the code value.
CodeValue getCode () const
 Returns the Opcode code value.
bool equals (const Opcode &other) const
 Return true iff two Opcodes are equal.
bool operator== (const Opcode &other) const
 Same as equals().
bool nequals (const Opcode &other) const
 Return true iff two Opcodes are not equal.
bool operator!= (const Opcode &other) const
 Same as nequals().
std::string toText () const
 Convert the Opcode to a string.
static const Opcode & QUERY ()
 A constant object for the QUERY Opcode.
static const Opcode & IQUERY ()
 A constant object for the IQUERY Opcode.
static const Opcode & STATUS ()
 A constant object for the STATUS Opcode.
static const Opcode & RESERVED3 ()
 A constant object for a reserved (code 3) Opcode.
static const Opcode & NOTIFY ()
 A constant object for the NOTIFY Opcode.
static const Opcode & UPDATE ()
 A constant object for the UPDATE Opcode.
static const Opcode & RESERVED6 ()
 A constant object for a reserved (code 6) Opcode.
static const Opcode & RESERVED7 ()
 A constant object for a reserved (code 7) Opcode.
static const Opcode & RESERVED8 ()
 A constant object for a reserved (code 8) Opcode.
static const Opcode & RESERVED9 ()
 A constant object for a reserved (code 9) Opcode.
static const Opcode & RESERVED10 ()
 A constant object for a reserved (code 10) Opcode.
static const Opcode & RESERVED11 ()
 A constant object for a reserved (code 11) Opcode.
static const Opcode & RESERVED12 ()
 A constant object for a reserved (code 12) Opcode.
static const Opcode & RESERVED13 ()
 A constant object for a reserved (code 13) Opcode.
static const Opcode & RESERVED14 ()
 A constant object for a reserved (code 14) Opcode.
static const Opcode & RESERVED15 ()
 A constant object for a reserved (code 15) Opcode.

Detailed Description

The Opcode class objects represent standard OPCODEs of the header section of DNS messages as defined in RFC1035.

This is a straightforward value class encapsulating the OPCODE code values. Since OPCODEs are 4-bit integers that are used in limited places and it's unlikely that new code values will be assigned, we could represent them as simple integers (via constant variables or enums). However, we define a separate class so that we can benefit from C++ type safety as much as possible. For convenience we also provide an enum type for standard OPCDE values, but it is generally advisable to handle OPCODEs through this class. In fact, public interfaces of this library uses this class to pass or return OPCODEs instead of the bare code values.

Definition at line 31 of file opcode.h.

Member Enumeration Documentation

◆ CodeValue

enum isc::dns::Opcode::CodeValue : uint16_t

Constants for standard OPCODE values.

Enumerator
QUERY_CODE 

0: Standard query (RFC1035)

IQUERY_CODE 

1: Inverse query (RFC1035)

STATUS_CODE 

2: Server status request (RFC1035)

RESERVED3_CODE 

3: Reserved for future use (RFC1035)

NOTIFY_CODE 

4: Notify (RFC1996)

UPDATE_CODE 

5: Dynamic update (RFC2136)

RESERVED6_CODE 

6: Reserved for future use (RFC1035)

RESERVED7_CODE 

7: Reserved for future use (RFC1035)

RESERVED8_CODE 

8: Reserved for future use (RFC1035)

RESERVED9_CODE 

9: Reserved for future use (RFC1035)

RESERVED10_CODE 

10: Reserved for future use (RFC1035)

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)

Definition at line 34 of file opcode.h.

Constructor & Destructor Documentation

◆ Opcode()

isc::dns::Opcode::Opcode ( const uint8_t code)
explicit

Constructor from the code value.

Since OPCODEs are 4-bit values, parameters larger than 15 are invalid. If code is larger than 15 an exception of class isc::OutOfRange will be thrown.

Parameters
codeThe underlying code value of the Opcode.

Definition at line 44 of file opcode.cc.

References isc_throw.

Referenced by equals(), IQUERY(), nequals(), NOTIFY(), operator!=(), operator==(), QUERY(), RESERVED10(), RESERVED11(), RESERVED12(), RESERVED13(), RESERVED14(), RESERVED15(), RESERVED3(), RESERVED6(), RESERVED7(), RESERVED8(), RESERVED9(), STATUS(), and UPDATE().

Member Function Documentation

◆ equals()

bool isc::dns::Opcode::equals ( const Opcode & other) const
inline

Return true iff two Opcodes are equal.

Two Opcodes are equal iff their type codes are equal.

This method never throws an exception.

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

Definition at line 89 of file opcode.h.

References Opcode().

Referenced by operator==().

Here is the call graph for this function:

◆ getCode()

CodeValue isc::dns::Opcode::getCode ( ) const
inline

Returns the Opcode code value.

This method never throws an exception.

Returns
The underlying code value corresponding to the Opcode.

Definition at line 77 of file opcode.h.

◆ IQUERY()

const Opcode & isc::dns::Opcode::IQUERY ( )
inlinestatic

A constant object for the IQUERY Opcode.

Definition at line 183 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ nequals()

bool isc::dns::Opcode::nequals ( const Opcode & other) const
inline

Return true iff two Opcodes are not equal.

This method never throws an exception.

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

Definition at line 104 of file opcode.h.

References Opcode().

Referenced by operator!=().

Here is the call graph for this function:

◆ NOTIFY()

const Opcode & isc::dns::Opcode::NOTIFY ( )
inlinestatic

A constant object for the NOTIFY Opcode.

Definition at line 201 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ operator!=()

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

Same as nequals().

Definition at line 109 of file opcode.h.

References Opcode(), and nequals().

Here is the call graph for this function:

◆ operator==()

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

Same as equals().

Definition at line 94 of file opcode.h.

References Opcode(), and equals().

Here is the call graph for this function:

◆ QUERY()

const Opcode & isc::dns::Opcode::QUERY ( )
inlinestatic

A constant object for the QUERY Opcode.

Definition at line 177 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED10()

const Opcode & isc::dns::Opcode::RESERVED10 ( )
inlinestatic

A constant object for a reserved (code 10) Opcode.

Definition at line 237 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED11()

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

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

Definition at line 243 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED12()

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

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

Definition at line 249 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED13()

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

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

Definition at line 255 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED14()

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

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

Definition at line 261 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED15()

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

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

Definition at line 267 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED3()

const Opcode & isc::dns::Opcode::RESERVED3 ( )
inlinestatic

A constant object for a reserved (code 3) Opcode.

Definition at line 195 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED6()

const Opcode & isc::dns::Opcode::RESERVED6 ( )
inlinestatic

A constant object for a reserved (code 6) Opcode.

Definition at line 213 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED7()

const Opcode & isc::dns::Opcode::RESERVED7 ( )
inlinestatic

A constant object for a reserved (code 7) Opcode.

Definition at line 219 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED8()

const Opcode & isc::dns::Opcode::RESERVED8 ( )
inlinestatic

A constant object for a reserved (code 8) Opcode.

Definition at line 225 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ RESERVED9()

const Opcode & isc::dns::Opcode::RESERVED9 ( )
inlinestatic

A constant object for a reserved (code 9) Opcode.

Definition at line 231 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ STATUS()

const Opcode & isc::dns::Opcode::STATUS ( )
inlinestatic

A constant object for the STATUS Opcode.

Definition at line 189 of file opcode.h.

References Opcode().

Here is the call graph for this function:

◆ toText()

string isc::dns::Opcode::toText ( ) const

Convert the Opcode to a string.

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 "QUERY", etc.

If resource allocation for the string fails, a corresponding standard exception will be thrown.

Returns
A string representation of the Opcode.

Definition at line 53 of file opcode.cc.

Referenced by isc::dns::operator<<().

◆ UPDATE()

const Opcode & isc::dns::Opcode::UPDATE ( )
inlinestatic

A constant object for the UPDATE Opcode.

Definition at line 207 of file opcode.h.

References Opcode().

Here is the call graph for this function:

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