Resolv::IPv6
class Resolv::IPv6
父类:Object
Resolv :: DNS IPv6地址。
常量
正则表达式
一个复合IPv6地址Regexp。
Regex_6Hex4Dec
IPv4映射的IPv6地址格式a:b:c:d:e:f:wxyz
Regex_8Hex
IPv6地址格式a:b:c:d:e:f:g:h
Regex_CompressedHex
压缩的IPv6地址格式a :: b
Regex_CompressedHex4Dec
压缩的IPv4映射的IPv6地址格式a :: b:wxyz
属性
addressR
作为String的原始IPv6地址。
公共类方法
创建(arg)显示源
创建一个新的IPv6地址,arg
其中可能是:
IPv6
返回arg
。
串
arg
必须匹配其中一个IPv6 :: Regex *常量
# File lib/resolv.rb, line 2442
def self.create(arg)
case arg
when IPv6
return arg
when String
address = ''.b
if Regex_8Hex =~ arg
arg.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
elsif Regex_CompressedHex =~ arg
prefix = $1
suffix = $2
a1 = ''.b
a2 = ''.b
prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
omitlen = 16 - a1.length - a2.length
address << a1 << "\0" * omitlen << a2
elsif Regex_6Hex4Dec =~ arg
prefix, a, b, c, d = $1, $2.to_i, $3.to_i, $4.to_i, $5.to_i
if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
prefix.scan(/[0-9A-Fa-f]+/) {|hex| address << [hex.hex].pack('n')}
address << [a, b, c, d].pack('CCCC')
else
raise ArgumentError.new("not numeric IPv6 address: " + arg)
end
elsif Regex_CompressedHex4Dec =~ arg
prefix, suffix, a, b, c, d = $1, $2, $3.to_i, $4.to_i, $5.to_i, $6.to_i
if (0..255) === a && (0..255) === b && (0..255) === c && (0..255) === d
a1 = ''.b
a2 = ''.b
prefix.scan(/[0-9A-Fa-f]+/) {|hex| a1 << [hex.hex].pack('n')}
suffix.scan(/[0-9A-Fa-f]+/) {|hex| a2 << [hex.hex].pack('n')}
omitlen = 12 - a1.length - a2.length
address << a1 << "\0" * omitlen << a2 << [a, b, c, d].pack('CCCC')
else
raise ArgumentError.new("not numeric IPv6 address: " + arg)
end
else
raise ArgumentError.new("not numeric IPv6 address: " + arg)
end
return IPv6.new(address)
else
raise ArgumentError.new("cannot interpret as IPv6 address: #{arg.inspect}")
end
end
公共实例方法
to_name()显示源
将此IPv6地址转换为Resolv :: DNS :: Name。
# File lib/resolv.rb, line 2517
def to_name
return DNS::Name.new(
@address.unpack("H32")[0].split(//).reverse + ['ip6', 'arpa'])
end