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

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

Overview

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



163
164
165
166
167
168
169
170
171
# File 'lib/net/dns/header.rb', line 163

def initialize(code)
  if (0..10).include? code
    @code         = code
    @type         = RCodeType[code]
    @explanation  = RCodeErrorString[code] 
  else
    raise HeaderArgumentError, "RCode #{code} out of range"
  end
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



161
162
163
# File 'lib/net/dns/header.rb', line 161

def code
  @code
end

#explanationObject (readonly)

Returns the value of attribute explanation.



161
162
163
# File 'lib/net/dns/header.rb', line 161

def explanation
  @explanation
end

#typeObject (readonly)

Returns the value of attribute type.



161
162
163
# File 'lib/net/dns/header.rb', line 161

def type
  @type
end

Instance Method Details

#to_sObject



173
174
175
# File 'lib/net/dns/header.rb', line 173

def to_s
  @code.to_s
end