зеркало из https://github.com/github/ruby.git
* lib/resolv.rb (Resolv::DNS::Resource::IN::SRV): Added RFC2782 SRV
resource record for specifying location of services. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
962af989ec
Коммит
a0b39cf64f
|
@ -1,3 +1,8 @@
|
|||
Sat Jan 29 09:42:12 2005 Sam Roberts <sroberts@uniserve.com>
|
||||
|
||||
* lib/resolv.rb (Resolv::DNS::Resource::IN::SRV): Added RFC2782 SRV
|
||||
resource record for specifying location of services.
|
||||
|
||||
Sat Jan 29 00:10:33 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
|
||||
|
||||
* ascii.c, euc_jp.c, hash.c, oniggnu.h, oniguruma.h, regcomp.c,
|
||||
|
|
|
@ -1600,6 +1600,64 @@ class Resolv
|
|||
return self.new(IPv6.new(msg.get_bytes(16)))
|
||||
end
|
||||
end
|
||||
|
||||
# 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 should be 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.
|
||||
class SRV < Resource
|
||||
ClassHash[[TypeValue = 33, ClassValue = ClassValue]] = self
|
||||
|
||||
# Create a SRV resource record.
|
||||
def initialize(priority, weight, port, target)
|
||||
@priority = priority.to_int
|
||||
@weight = weight.to_int
|
||||
@port = port.to_int
|
||||
@target = Name.create(target)
|
||||
end
|
||||
|
||||
attr_reader :priority, :weight, :port, :target
|
||||
|
||||
def encode_rdata(msg)
|
||||
msg.put_pack("n", @priority)
|
||||
msg.put_pack("n", @weight)
|
||||
msg.put_pack("n", @port)
|
||||
msg.put_name(@target)
|
||||
end
|
||||
|
||||
def self.decode_rdata(msg)
|
||||
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
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче