Class: Resolv::DNS::Resource::IN::SRV

Inherits:
Resolv::DNS::Resource show all
Defined in:
lib/net/dns/resolv.rb

Overview

SRV resource record defined in RFC 2782

These records identify the hostname and port that a service is available at.

The format is:

_Service._Proto.Name TTL Class SRV Priority Weight Port Target

The fields specific to SRV are defined in RFC 2782 as meaning:

  • priority The priority of this target host. A client MUST attempt to contact the target host with the lowest-numbered priority it can reach; target hosts with the same priority SHOULD be tried in an order defined by the weight field. The range is 0-65535. Note that it is not widely implemented and is commonly set to zero.

  • weight A server selection mechanism. The weight field specifies a relative weight for entries with the same priority. Larger weights SHOULD be given a proportionately higher probability of being selected. The range of this number is 0-65535. Domain administrators SHOULD use Weight 0 when there isn’t any server selection to do, to make the RR easier to read for humans (less noisy). Note that it is not widely implemented and should be set to zero.

  • port The port on this target host of this service. The range is 0- 65535.

  • target The domain name of the target host. A target of “.” means that the service is decidedly not available at this domain.

Constant Summary

Constants inherited from Resolv::DNS::Resource

ClassHash, ClassInsensitiveTypes, ClassValue

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Resolv::DNS::Resource

#==, #eql?, get_class, #hash

Constructor Details

#initialize(priority, weight, port, target) ⇒ SRV

Create a SRV resource record.

TODO - switch args to (target, port, priority = 0, weight = 0)? It would be more convenient to use.



1808
1809
1810
1811
1812
1813
# File 'lib/net/dns/resolv.rb', line 1808

def initialize(priority, weight, port, target)
  @priority = priority.to_int
  @weight = weight.to_int
  @port = port.to_int
  @target = Name.create(target)
end

Instance Attribute Details

#portObject (readonly)

Returns the value of attribute port.



1815
1816
1817
# File 'lib/net/dns/resolv.rb', line 1815

def port
  @port
end

#priorityObject (readonly)

Returns the value of attribute priority.



1815
1816
1817
# File 'lib/net/dns/resolv.rb', line 1815

def priority
  @priority
end

#targetObject (readonly)

Returns the value of attribute target.



1815
1816
1817
# File 'lib/net/dns/resolv.rb', line 1815

def target
  @target
end

#weightObject (readonly)

Returns the value of attribute weight.



1815
1816
1817
# File 'lib/net/dns/resolv.rb', line 1815

def weight
  @weight
end

Class Method Details

.decode_rdata(msg) ⇒ Object

:nodoc:



1824
1825
1826
1827
1828
1829
1830
# File 'lib/net/dns/resolv.rb', line 1824

def self.decode_rdata(msg) # :nodoc:
  priority, = msg.get_unpack("n")
  weight,   = msg.get_unpack("n")
  port,     = msg.get_unpack("n")
  target    = msg.get_name
  return self.new(priority, weight, port, target)
end

Instance Method Details

#encode_rdata(msg) ⇒ Object

:nodoc:



1817
1818
1819
1820
1821
1822
# File 'lib/net/dns/resolv.rb', line 1817

def encode_rdata(msg) # :nodoc:
  msg.put_pack("n", @priority)
  msg.put_pack("n", @weight)
  msg.put_pack("n", @port)
  msg.put_name(@target)
end