Method: IPAddress::IPv6#initialize

Defined in:
lib/ipaddress/ipv6.rb

#initialize(str) ⇒ IPv6

Creates a new IPv6 address object.

An IPv6 address can be expressed in any of the following forms:

  • "1080:0000:0000:0000:0008:0800:200C:417A": IPv6 address with no compression
  • "1080:0:0:0:8:800:200C:417A": IPv6 address with leading zeros compression
  • "1080::8:800:200C:417A": IPv6 address with full compression

In all these 3 cases, a new IPv6 address object will be created, using the default subnet mask /128

You can also specify the subnet mask as with IPv4 addresses:

ip6 = IPAddress "2001:db8::8:800:200c:417a/64"


90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/ipaddress/ipv6.rb', line 90

def initialize(str)
  ip, netmask = str.split("/")
  
  if IPAddress.valid_ipv6?(ip)
    @groups = self.class.groups(ip)
    @address = IN6FORMAT % @groups
    @compressed = compress_address
  else
    raise ArgumentError, "Invalid IP #{ip.inspect}"
  end

  @prefix = Prefix128.new(netmask ? netmask : 128)

end