'Instantiate a new IPv6 Network object.
Args:
address: A string or integer representing the IPv6 network or the IP
and prefix/netmask.
\'2001:4860::/128\'
\'2001:4860:0000:0000:0000:0000:0000:0000/128\'
\'2001:4860::\'
are all functionally the same in IPv6.  That is to say,
failing to provide a subnetmask will create an object with
a mask of /128.
Additionally, an integer can be passed, so
IPv6Network(\'2001:4860::\') ==
IPv6Network(42541956101370907050197289607612071936L).
or, more generally
IPv6Network(IPv6Network(\'2001:4860::\')._ip) ==
IPv6Network(\'2001:4860::\')
Raises:
IPv6IpValidationError: If address isn\'t a valid IPv6 address.
IPv6NetmaskValidationError: If the netmask isn\'t valid for
an IPv6 address.'

def __init__(self, address):

    BaseNet.__init__(self, address)
    BaseV6.__init__(self, address)
    if isinstance(address, (int, long)):
        self._ip = address
        self.ip = IPv6Address(self._ip)
        self._prefixlen = 128
        self.netmask = IPv6Address(self._ALL_ONES)
        if ((address < 0) or (address > self._ALL_ONES)):
            raise IPv6IpValidationError(address)
        return
    if _compat_has_real_bytes:
        if (isinstance(address, bytes) and (len(address) == 16)):
            tmp = struct.unpack('!QQ', address)
            self._ip = ((tmp[0] << 64) | tmp[1])
            self.ip = IPv6Address(self._ip)
            self._prefixlen = 128
            self.netmask = IPv6Address(self._ALL_ONES)
            return
    addr = str(address).split('/')
    if (len(addr) > 2):
        raise IPv6IpValidationError(ipaddr)
    if (not self._is_valid_ip(addr[0])):
        raise IPv6IpValidationError(addr[0])
    if (len(addr) == 2):
        if self._is_valid_netmask(addr[1]):
            self._prefixlen = int(addr[1])
        else:
            raise IPv6NetmaskValidationError(addr[1])
    else:
        self._prefixlen = 128
    self.netmask = IPv6Address(self._ip_int_from_prefix(self._prefixlen))
    if (not self._is_valid_ip(addr[0])):
        raise IPv6IpValidationError(addr[0])
    self._ip = self._ip_int_from_string(addr[0])
    self.ip = IPv6Address(self._ip)
