Class Net::DNS::Header::RCode
In: lib/net/dns/header.rb
Parent: Object

Name

Net::DNS::Header::RCode - DNS Header RCode handling class

Synopsis

It should be used internally by Net::DNS::Header class. However, it‘s still possible to instantiate it directly.

  require 'net/dns/header'
  rcode = Net::DNS::Header::RCode.new 0

Description

The RCode class represents the RCode field in the Header portion of a DNS packet. This field (called Response Code) is used to get informations about the status of a DNS operation, such as a query or an update. These are the values in the original Mockapetris‘s standard (RFC1035):

  • 0 No error condition
  • 1 Format error - The name server was unable to interpret
                    the query.
    
  • 2 Server failure - The name server was
                    unable to process this query due to a
                    problem with the name server.
    
  • 3 Name Error - Meaningful only for
                    responses from an authoritative name
                    server, this code means that the
                    domain name referenced in the query does
                    not exist.
    
  • 4 Not Implemented - The name server does
                    not support the requested kind of query.
    
  • 5 Refused - The name server refuses to
                    perform the specified operation for
                    policy reasons.  For example, a name
                    server may not wish to provide the
                    information to the particular requester,
                    or a name server may not wish to perform
                    a particular operation (e.g., zone
                    transfer) for particular data.
    
  • 6-15 Reserved for future use.

In the next DNS RFCs, codes 6-15 has been assigned to the following errors:

  • 6 YXDomain
  • 7 YXRRSet
  • 8 NXRRSet
  • 9 NotAuth
  • 10 NotZone

More RCodes has to come for TSIGs and other operations.

Methods

new   to_s  

Constants

NOERROR = 0   Constant for rcode Response Code No Error
FORMAT = 1   Constant for rcode Response Code Format Error
SERVER = 2   Constant for rcode Response Code Server Format Error
NAME = 3   Constant for rcode Response Code Name Error
NOTIMPLEMENTED = 4   Constant for rcode Response Code Not Implemented Error
REFUSED = 5   Constant for rcode Response Code Refused Error
RCodeType = %w[NoError FormErr ServFail NXDomain NotImp Refused YXDomain YXRRSet NXRRSet NotAuth NotZone]
RCodeErrorString = ["No errors", "The name server was unable to interpret the query", "The name server was unable to process this query due to problem with the name server", "Domain name referenced in the query does not exists", "The name server does not support the requested kind of query", "The name server refuses to perform the specified operation for policy reasons", "", "", "", "", ""]

Attributes

code  [R] 
explanation  [R] 
type  [R] 

Public Class methods

[Source]

# File lib/net/dns/header.rb, line 185
        def initialize(code)
          if (0..10).include? code
            @code         = code
            @type         = RCodeType[code]
            @explanation  = RCodeErrorString[code] 
          else
            raise ArgumentError, "RCode `#{code}' out of range"
          end
        end

Public Instance methods

[Source]

# File lib/net/dns/header.rb, line 195
        def to_s
          @code.to_s
        end

[Validate]