Class: Gem::Resolv::IPv6
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | lib/rubygems/vendor/resolv/lib/resolv.rb | 
Overview
A DNS IPv6 address.
Constant Summary
- 
    Regex =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3037A composite IPv6address Regexp./ (?:#{Regex_8Hex}) | (?:#{Regex_CompressedHex}) | (?:#{Regex_6Hex4Dec}) | (?:#{Regex_CompressedHex4Dec}) | (?:#{Regex_8HexLinkLocal}) | (?:#{Regex_CompressedHexLinkLocal}) /x
- 
    Regex_6Hex4Dec =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2998IPv4mappedIPv6address format a:b:c:d:e:f:w.x.y.z/\A ((?:[0-9A-Fa-f]{1,4}:){6,6}) (\d)\.(\d)\.(\d)\.(\d) \z/x
- 
    Regex_8Hex =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2982IPv6address format a:b:c:d:e:f:g:h/\A (?:[0-9A-Fa-f]{1,4}:){7} [0-9A-Fa-f]{1,4} \z/x
- 
    Regex_8HexLinkLocal =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3014IPv6link local address format fe80:b:c:d:e:f:g:h%em1/\A [Ff][Ee]80 (?::[0-9A-Fa-f]{1,4}){7} %[-0-9A-Za-z._~]+ \z/x
- 
    Regex_CompressedHex =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2990Compressed IPv6 address format a::b /\A ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) :: ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) \z/x
- 
    Regex_CompressedHex4Dec =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3006Compressed IPv4 mapped IPv6address format a::b:w.x.y.z/\A ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) :: ((?:[0-9A-Fa-f]{1,4}:)*) (\d)\.(\d)\.(\d)\.(\d) \z/x
- 
    Regex_CompressedHexLinkLocal =
    # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3023Compressed IPv6 link local address format fe80::b%em1 /\A [Ff][Ee]80: (?: ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) :: ((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) | :((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) )? :[0-9A-Fa-f]{1,4}%[-0-9A-Za-z._~]+ \z/x
Class Method Summary
- 
    
      .create(arg)  
    
    Creates a new IPv6address fromargwhich may be:
- .new(address) ⇒ IPv6 constructor Internal use only
Instance Attribute Summary
- 
    
      #address  
    
    readonly
    The raw IPv6address as a String.
Instance Method Summary
- 
    
      #to_name  
    
    Turns this IPv6address into aDNS::Name.
- #==(other) Internal use only
- #eql?(other) ⇒ Boolean Internal use only
- #hash Internal use only
- #inspect Internal use only
- #to_s Internal use only
Constructor Details
    .new(address)  ⇒ IPv6 
  
  
    This method is for internal use only.
  
Class Method Details
.create(arg)
Creates a new IPv6 address from arg which may be:
- IPv6
- 
returns arg.
- String
- 
argmust match one of the IPv6::Regex* constants
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3052
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
Instance Attribute Details
#address (readonly)
The raw IPv6 address as a String.
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3108
attr_reader :address
Instance Method Details
#==(other)
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3128
def ==(other) # :nodoc: return @address == other.address end
    #eql?(other)  ⇒ Boolean 
  
  
    This method is for internal use only.
  
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3132
def eql?(other) # :nodoc: return self == other end
#hash
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3136
def hash # :nodoc: return @address.hash end
#inspect
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3114
def inspect # :nodoc: return "#<#{self.class} #{self}>" end
#to_name
Turns this IPv6 address into a DNS::Name.
#to_s
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3110
def to_s # :nodoc: sprintf("%x:%x:%x:%x:%x:%x:%x:%x", *@address.unpack("nnnnnnnn")).sub(/(^|:)0(:0)+(:|$)/, '::') end