Kea: isc::dns::Opcode Class Reference

| Kea 3.2.0-git

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 { 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 32 of file opcode.h.

## Member Enumeration Documentation

## ◆ CodeValue

enum isc::dns::Opcode::CodeValue

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 35 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

  code | The 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

  other | the `Opcode` object to compare against.

Returns
  true if the two Opcodes are equal; otherwise false.

Definition at line 90 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 78 of file opcode.h.

## ◆ IQUERY()

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

A constant object for the IQUERY Opcode.

Definition at line 184 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

  other | the `Opcode` object to compare against.

Returns
  true if the two Opcodes are not equal; otherwise false.

Definition at line 105 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 202 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 110 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 95 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 178 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 238 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 244 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 250 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 256 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 262 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 268 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 196 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 214 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 220 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 226 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 232 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 190 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 208 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:

- opcode.h
- opcode.cc