How to use the ciscoconfparse.local_py.ipaddr.IPv4Address function in ciscoconfparse

To help you get started, we’ve selected a few ciscoconfparse examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
except ValueError:
                raise AddressValueError(address)
            self.ip = IPv4Address(ip)
            self._ip = self.ip._ip
            self._prefixlen = self._prefix_from_prefix_int(prefixlen)

        else:
            # Assume input argument to be string or any object representation
            # which converts into a formatted IP prefix string.
            addr = str(address).split('/')

            if len(addr) > 2:
                raise AddressValueError(address)

            self._ip = self._ip_int_from_string(addr[0])
            self.ip = IPv4Address(self._ip)

            if len(addr) == 2:
                try:
                    # Check for a netmask in prefix length form.
                    self._prefixlen = self._prefix_from_prefix_string(addr[1])
                except NetmaskValueError:
                    # Check for a netmask or hostmask in dotted-quad form.
                    # This may raise NetmaskValueError.
                    self._prefixlen = self._prefix_from_ip_string(addr[1])
            else:
                self._prefixlen = self._max_prefixlen

        self.netmask = IPv4Address(self._ip_int_from_prefix(self._prefixlen))

        if strict:
            if self.ip != self.network:
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
Returns:
            A long, the IPv6 ip_str.

        Raises:
            AddressValueError: if ip_str isn't a valid IPv6 Address.

        """
        parts = ip_str.split(':')

        # An IPv6 address needs at least 2 colons (3 parts).
        if len(parts) < 3:
            raise AddressValueError(ip_str)

        # If the address has an IPv4-style suffix, convert it to hexadecimal.
        if '.' in parts[-1]:
            ipv4_int = IPv4Address(parts.pop())._ip
            parts.append('%x' % ((ipv4_int >> 16) & 0xFFFF))
            parts.append('%x' % (ipv4_int & 0xFFFF))

        # An IPv6 address can't have more than 8 colons (9 parts).
        if len(parts) > self._HEXTET_COUNT + 1:
            raise AddressValueError(ip_str)

        # Disregarding the endpoints, find '::' with nothing in between.
        # This indicates that a run of zeroes has been skipped.
        try:
            skip_index, = (
                [i for i in xrange(1, len(parts) - 1) if not parts[i]] or
                [None])
        except ValueError:
            # Can't have more than one '::'
            raise AddressValueError(ip_str)
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
AddressValueError: If ipaddr isn't a valid IPv4 address.
            NetmaskValueError: If the netmask isn't valid for
              an IPv4 address.
            ValueError: If strict was True and a network address was not
              supplied.

        """
        _BaseNet.__init__(self, address)
        _BaseV4.__init__(self, address)

        # Constructing from a single IP address.
        if isinstance(address, (int, long, Bytes, IPv4Address)):
            self.ip = IPv4Address(address)
            self._ip = self.ip._ip
            self._prefixlen = self._max_prefixlen
            self.netmask = IPv4Address(self._ALL_ONES)
            return

        # Constructing from an (ip, prefixlen) tuple.
        if isinstance(address, tuple):
            try:
                ip, prefixlen = address
            except ValueError:
                raise AddressValueError(address)
            self.ip = IPv4Address(ip)
            self._ip = self.ip._ip
            self._prefixlen = self._prefix_from_prefix_int(prefixlen)

        else:
            # Assume input argument to be string or any object representation
            # which converts into a formatted IP prefix string.
            addr = str(address).split('/')
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
A true network address, eg, 192.168.1.0/24 and not an
              IP address on a network, eg, 192.168.1.1/24.

        Raises:
            AddressValueError: If ipaddr isn't a valid IPv4 address.
            NetmaskValueError: If the netmask isn't valid for
              an IPv4 address.
            ValueError: If strict was True and a network address was not
              supplied.

        """
        _BaseNet.__init__(self, address)
        _BaseV4.__init__(self, address)

        # Constructing from a single IP address.
        if isinstance(address, (int, long, Bytes, IPv4Address)):
            self.ip = IPv4Address(address)
            self._ip = self.ip._ip
            self._prefixlen = self._max_prefixlen
            self.netmask = IPv4Address(self._ALL_ONES)
            return

        # Constructing from an (ip, prefixlen) tuple.
        if isinstance(address, tuple):
            try:
                ip, prefixlen = address
            except ValueError:
                raise AddressValueError(address)
            self.ip = IPv4Address(ip)
            self._ip = self.ip._ip
            self._prefixlen = self._prefix_from_prefix_int(prefixlen)
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
version: An Integer, 4 or 6. If set, don't try to automatically
          determine what the IP address type is. important for things
          like IPAddress(1), which could be IPv4, '0.0.0.1',  or IPv6,
          '::1'.

    Returns:
        An IPv4Address or IPv6Address object.

    Raises:
        ValueError: if the string passed isn't either a v4 or a v6
          address.

    """
    if version:
        if version == 4:
            return IPv4Address(address)
        elif version == 6:
            return IPv6Address(address)

    try:
        return IPv4Address(address)
    except (AddressValueError, NetmaskValueError):
        pass

    try:
        return IPv6Address(address)
    except (AddressValueError, NetmaskValueError):
        pass

    raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
                     address)
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
    @property
    def ipv4_mapped(self):
        """Return the IPv4 mapped address.

        Returns:
            If the IPv6 address is a v4 mapped address, return the
            IPv4 mapped address. Return None otherwise.

        """
        if (self._ip >> 32) != 0xFFFF:
            return None
        return IPv4Address(self._ip & 0xFFFFFFFF)
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
IP address on a network, eg, 192.168.1.1/24.

        Raises:
            AddressValueError: If ipaddr isn't a valid IPv4 address.
            NetmaskValueError: If the netmask isn't valid for
              an IPv4 address.
            ValueError: If strict was True and a network address was not
              supplied.

        """
        _BaseNet.__init__(self, address)
        _BaseV4.__init__(self, address)

        # Constructing from a single IP address.
        if isinstance(address, (int, long, Bytes, IPv4Address)):
            self.ip = IPv4Address(address)
            self._ip = self.ip._ip
            self._prefixlen = self._max_prefixlen
            self.netmask = IPv4Address(self._ALL_ONES)
            return

        # Constructing from an (ip, prefixlen) tuple.
        if isinstance(address, tuple):
            try:
                ip, prefixlen = address
            except ValueError:
                raise AddressValueError(address)
            self.ip = IPv4Address(ip)
            self._ip = self.ip._ip
            self._prefixlen = self._prefix_from_prefix_int(prefixlen)

        else:
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
    @property
    def sixtofour(self):
        """Return the IPv4 6to4 embedded address.

        Returns:
            The IPv4 6to4-embedded address if present or None if the
            address doesn't appear to contain a 6to4 embedded address.

        """
        if (self._ip >> 112) != 0x2002:
            return None
        return IPv4Address((self._ip >> 80) & 0xFFFFFFFF)
github mpenning / ciscoconfparse / ciscoconfparse / local_py / ipaddr.py View on Github external
'192.168.1.1'

              Additionally, an integer can be passed, so
              IPv4Address('192.168.1.1') == IPv4Address(3232235777).
              or, more generally
              IPv4Address(int(IPv4Address('192.168.1.1'))) ==
                IPv4Address('192.168.1.1')

        Raises:
            AddressValueError: If ipaddr isn't a valid IPv4 address.

        """
        _BaseV4.__init__(self, address)

        # Efficient copy constructor.
        if isinstance(address, IPv4Address):
            self._ip = address._ip
            return

        # Efficient constructor from integer.
        if isinstance(address, (int, long)):
            self._ip = address
            if address < 0 or address > self._ALL_ONES:
                raise AddressValueError(address)
            return

        # Constructing from a packed address
        if isinstance(address, Bytes):
            try:
                self._ip, = struct.unpack('!I', address)
            except struct.error:
                raise AddressValueError(address)  # Wrong length.