class Net::DNS::RR::A
IPv4 Address Record (A
)¶ ↑
Class for DNS
IPv4 Address (A
) resource records.
The resource data is an IPv4 (i.e. 32 bit long) address, hold in the instance variable address
.
a = Net::DNS::RR::A.new("localhost.movie.edu. 360 IN A 127.0.0.1") a = Net::DNS::RR::A.new(:name => "localhost.movie.edu.", :ttl => 360, :cls => Net::DNS::IN, :type => Net::DNS::A, :address => "127.0.0.1" )
When computing binary data to transmit the RR
, the RDATA section is an Internet address expressed as four decimal numbers separated by dots without any embedded space (e.g. “10.2.0.52” or “192.0.5.6”).
Attributes
address[R]
Gets the current IPv4 address for this record.
Returns an instance of IPAddr.
Public Instance Methods
address=(string_or_ipaddr)
click to toggle source
Assigns a new IPv4 address to this record, which can be in the form of a String
or an IPAddr
object.
Examples
a.address = "192.168.0.1" a.address = IPAddr.new("10.0.0.1")
Returns the new allocated instance of IPAddr.
# File lib/net/dns/rr/a.rb, line 39 def address=(string_or_ipaddr) @address = check_address(string_or_ipaddr) build_pack @address end
value()
click to toggle source
Gets the standardized value for this record, represented by the value of address
.
Returns a String.
# File lib/net/dns/rr/a.rb, line 49 def value address.to_s end
Private Instance Methods
build_pack()
click to toggle source
# File lib/net/dns/rr/a.rb, line 103 def build_pack @address_pack = @address.hton @rdlength = @address_pack.size end
check_address(input)
click to toggle source
# File lib/net/dns/rr/a.rb, line 83 def check_address(input) address = case input when IPAddr input # Address in numeric form when Integer IPAddr.new(input, Socket::AF_INET) when String IPAddr.new(input) else raise ArgumentError, "Invalid IP address `#{input}'" end unless address.ipv4? raise(ArgumentError, "Must specify an IPv4 address") end address end
get_data()
click to toggle source
# File lib/net/dns/rr/a.rb, line 108 def get_data @address_pack end
get_inspect()
click to toggle source
# File lib/net/dns/rr/a.rb, line 79 def get_inspect value end
set_type()
click to toggle source
# File lib/net/dns/rr/a.rb, line 75 def set_type @type = Net::DNS::RR::Types.new("A") end
subclass_new_from_binary(data, offset)
click to toggle source
# File lib/net/dns/rr/a.rb, line 69 def subclass_new_from_binary(data, offset) a, b, c, d = data.unpack("@#{offset} CCCC") @address = IPAddr.new("#{a}.#{b}.#{c}.#{d}") offset + 4 end
subclass_new_from_hash(options)
click to toggle source
# File lib/net/dns/rr/a.rb, line 55 def subclass_new_from_hash(options) if options.key?(:address) @address = check_address(options[:address]) elsif options.key?(:rdata) @address = check_address(options[:rdata]) else raise ArgumentError, ":address or :rdata field is mandatory" end end
subclass_new_from_string(str)
click to toggle source
# File lib/net/dns/rr/a.rb, line 65 def subclass_new_from_string(str) @address = check_address(str) end