Class: Net::DNS::Header::RCode

Inherits:
Object
  • Object
show all
Defined in:
lib/net/dns/header.rb

Overview

DNS Header RCode handling class

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

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.

Constant Summary collapse

NOERROR =

Constant for rcode Response Code No Error

0
FORMAT =

Constant for rcode Response Code Format Error

1
SERVER =

Constant for rcode Response Code Server Format Error

2
NAME =

Constant for rcode Response Code Name Error

3
NOTIMPLEMENTED =

Constant for rcode Response Code Not Implemented Error

4
REFUSED =

Constant for rcode Response Code Refused Error

5
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",
"",
"",
"",
"",
""]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code) ⇒ RCode

Returns a new instance of RCode.



139
140
141
142
143
144
145
146
147
# File 'lib/net/dns/header.rb', line 139

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

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



137
138
139
# File 'lib/net/dns/header.rb', line 137

def code
  @code
end

#explanationObject (readonly)

Returns the value of attribute explanation.



137
138
139
# File 'lib/net/dns/header.rb', line 137

def explanation
  @explanation
end

#typeObject (readonly)

Returns the value of attribute type.



137
138
139
# File 'lib/net/dns/header.rb', line 137

def type
  @type
end

Instance Method Details

#to_sObject



149
150
151
# File 'lib/net/dns/header.rb', line 149

def to_s
  @code.to_s
end