netaddr.ip.IPNetwork

Package netaddr :: Package ip :: Class IPNetwork |
[hide private]
[frames] | no frames]

# Class IPNetwork

     object --+
              |
         BaseIP --+
                  |
     object --+   |
              |   |
    IPListMixin --+
                  |
                 IPNetwork

An IPv4 or IPv6 network or subnet. A combination of an IP address and a network mask.

Accepts CIDR and several variants :-

a) Standard CIDR:

       x.x.x.x/y -> 192.0.2.0/24
       x::/y -> fe80::/10

b) Hybrid CIDR format (netmask address instead of prefix):

       x.x.x.x/y.y.y.y -> 192.0.2.0/255.255.255.0
       x::/y:: -> fe80::/ffc0::

where 'y' address represent a valid netmask.

c) ACL hybrid CIDR format (hostmask address instead of prefix):

       x.x.x.x/y.y.y.y -> 192.0.2.0/0.0.0.255
       x::/y:: -> fe80::/3f:ffff:ffff:ffff:ffff:ffff:ffff:ffff

where 'y' address represent a valid netmask.

This is like Cisco's ACL bitmasks.

d) Abbreviated CIDR format (as of netaddr 0.7.x this requires the optional constructor argument `implicit_prefix=True`):

       x       -> 192
       x/y     -> 10/8
       x.x/y   -> 192.168/16
       x.x.x/y -> 192.168.0/24

which are equivalent to:

       x.0.0.0/y   -> 192.0.0.0/24
       x.0.0.0/y   -> 10.0.0.0/8
       x.x.0.0/y   -> 192.168.0.0/16
       x.x.x.0/y   -> 192.168.0.0/24

Instance Methods | [hide private]
__init__(self, addr, implicit_prefix=False, version=None, flags=0) Constructor. |
__getstate__(self) Returns: Pickled state of an `IPNetwork` object. |
__setstate__(self, state) |
_set_prefixlen(self, value) |
__iadd__(self, num) Increases the value of this IPNetwork object by the current size multiplied by `num`. |
__isub__(self, num) Decreases the value of this IPNetwork object by the current size multiplied by `num`. |
key(self) Returns: A key tuple used to uniquely identify this IPNetwork. |
sort_key(self) Returns: A key tuple used to compare and sort this IPNetwork correctly. |
ipv4(self) Returns: A numerically equivalent version 4 IPNetwork object. |
ipv6(self, ipv4_compatible=False) Please Note: the IPv4-mapped IPv6 address format is now considered deprecated. |
previous(self, step=1) Returns: The adjacent subnet preceding this IPNetwork object. |
next(self, step=1) Returns: The adjacent subnet succeeding this IPNetwork object. |
supernet(self, prefixlen=0) Provides a list of supernets for this IPNetwork object between the size of the current prefix and (if specified) an endpoint prefix. |
subnet(self, prefixlen, count=None, fmt=None) A generator that divides up this IPNetwork's subnet into smaller subnets based on a specified CIDR prefix. |
iter_hosts(self) Returns: An iterator that provides all IP addresses that can be assigned to hosts within the range of this IP object's subnet. |
__str__(self) Returns: this IPNetwork in CIDR format |
__repr__(self) Returns: Python statement to create an equivalent object |
Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`
Inherited from BaseIP
__eq__(self, other) Returns: `True` if this IPAddress or IPNetwork object is equivalent to `other`, `False` otherwise. |
__ge__(self, other) Returns: `True` if this IPAddress or IPNetwork object is greater than or equal to `other`, `False` otherwise. |
__gt__(self, other) Returns: `True` if this IPAddress or IPNetwork object is greater than `other`, `False` otherwise. |
__hash__(self) Returns: A hash value uniquely indentifying this IP object. |
__le__(self, other) Returns: `True` if this IPAddress or IPNetwork object is less than or equal to `other`, `False` otherwise. |
__lt__(self, other) Returns: `True` if this IPAddress or IPNetwork object is less than `other`, `False` otherwise. |
__ne__(self, other) Returns: `True` if this IPAddress or IPNetwork object is not equivalent to `other`, `False` otherwise. |
_set_value(self, value) |
is_ipv4_compat(self) Returns: `True` if this IP is IPv4-mapped IPv6 address, `False` otherwise. |
is_ipv4_mapped(self) Returns: `True` if this IP is IPv4-compatible IPv6 address, `False` otherwise. |
is_link_local(self) Returns: `True` if this IP is link-local address `False` otherwise. |
is_loopback(self) Returns: `True` if this IP is loopback address (not for network transmission), `False` otherwise. |
is_multicast(self) Returns: `True` if this IP is multicast, `False` otherwise |
is_private(self) Returns: `True` if this IP is for internal/private use only (i.e. |
is_reserved(self) Returns: `True` if this IP is in IANA reserved range, `False` otherwise. |
is_unicast(self) Returns: `True` if this IP is unicast, `False` otherwise |
Inherited from IPListMixin
__bool__(self) Ranged IP objects always represent a sequence of at least one IP address and are therefore always True in the boolean context. |
__contains__(self, other) Returns: `True` if other falls within the boundary of this one, `False` otherwise. |
__getitem__(self, index) Returns: The IP address(es) in this IPNetwork object referenced by index or slice. |
__iter__(self) Returns: An iterator providing access to all IPAddress objects within range represented by this ranged IP object. |
__len__(self) Returns: the number of IP addresses in this ranged IP object. |
__nonzero__(self) Ranged IP objects always represent a sequence of at least one IP address and are therefore always True in the boolean context. |

Properties | [hide private]
| prefixlen size of the bitmask used to separate the network from the host bits
| ip The IP address of this IPNetwork object.
| network The network address of this IPNetwork object.
| broadcast The broadcast address of this IPNetwork object
| first The integer value of first IP address found within this IPNetwork object.
| last The integer value of last IP address found within this IPNetwork object.
| netmask The subnet mask of this IPNetwork object.
| hostmask The host mask of this IPNetwork object.
| cidr The true CIDR address for this IPNetwork object which omits any host bits to the right of the CIDR subnet prefix.
| _prefixlen
Inherited from `object`: `__class__`
Inherited from BaseIP
| _module
| _value
| info A record dict containing IANA registration details for this IP address if available, None otherwise.
| value a positive integer representing the value of IP address/subnet.
| version the IP protocol version represented by this IP object.
Inherited from IPListMixin
| size The total number of IP addresses within this ranged IP object.

Method Details | [hide private]

### __init__(self, addr, implicit_prefix=False, version=None, flags=0) (Constructor) |
Constructor. Parameters: `addr` - an IPv4 or IPv6 address with optional CIDR prefix, netmask or hostmask. May be an IP address in presentation (string) format, an tuple containing and integer address and a network prefix, or another IPAddress/IPNetwork object (copy construction). `implicit_prefix` - (optional) if True, the constructor uses classful IPv4 rules to select a default prefix when one is not provided. If False it uses the length of the IP address version. (default: False) `version` - (optional) optimizes version detection if specified and distinguishes between IPv4 and IPv6 for addresses with an equivalent integer value. `flags` - (optional) decides which rules are applied to the interpretation of the addr value. Currently only supports the NOHOST option. See the netaddr.core docs for further details. Overrides: object.__init__

### __getstate__(self) |
Returns: Pickled state of an `IPNetwork` object.

### __setstate__(self, state) |
Parameters: `state` - data used to unpickle a pickled `IPNetwork` object.

### __iadd__(self, num) |
Increases the value of this IPNetwork object by the current size multiplied by `num`. Parameters: `num` - (optional) number of IPNetwork blocks to increment this IPNetwork's value by. An `IndexError` is raised if result exceeds maximum IP address value or is less than zero.

### __isub__(self, num) |
Decreases the value of this IPNetwork object by the current size multiplied by `num`. Parameters: `num` - (optional) number of IPNetwork blocks to decrement this IPNetwork's value by. An `IndexError` is raised if result is less than zero or exceeds maximum IP address value.

### key(self) |
Returns: A key tuple used to uniquely identify this IPNetwork. Overrides: BaseIP.key

### sort_key(self) |
Returns: A key tuple used to compare and sort this IPNetwork correctly. Overrides: BaseIP.sort_key

### ipv4(self) |
Returns: A numerically equivalent version 4 IPNetwork object. Raises an AddrConversionError if IPv6 address cannot be converted to IPv4.

### ipv6(self, ipv4_compatible=False) |
Please Note: the IPv4-mapped IPv6 address format is now considered deprecated. See RFC 4291 or later for details. Parameters: `ipv4_compatible` - If `True` returns an IPv4-mapped address (::ffff:x.x.x.x), an IPv4-compatible (::x.x.x.x) address otherwise. Default: False (IPv4-mapped). Returns: A numerically equivalent version 6 IPNetwork object.

### previous(self, step=1) |
Parameters: `step` - the number of IP subnets between this IPNetwork object and the expected subnet. Default: 1 (the previous IP subnet). Returns: The adjacent subnet preceding this IPNetwork object.

### next(self, step=1) |
Parameters: `step` - the number of IP subnets between this IPNetwork object and the expected subnet. Default: 1 (the next IP subnet). Returns: The adjacent subnet succeeding this IPNetwork object.

### supernet(self, prefixlen=0) |
Provides a list of supernets for this IPNetwork object between the size of the current prefix and (if specified) an endpoint prefix. Parameters: `prefixlen` - (optional) a CIDR prefix for the maximum supernet. Default: 0 - returns all possible supernets. Returns: a tuple of supernet IPNetwork objects.

### subnet(self, prefixlen, count=None, fmt=None) |
A generator that divides up this IPNetwork's subnet into smaller subnets based on a specified CIDR prefix. Parameters: `prefixlen` - a CIDR prefix indicating size of subnets to be returned. `count` - (optional) number of consecutive IP subnets to be returned. Returns: an iterator containing IPNetwork subnet objects.

### iter_hosts(self) |
Returns: An iterator that provides all IP addresses that can be assigned to hosts within the range of this IP object's subnet. for IPv4, the network and broadcast addresses are always excluded. Any subnet that contains less than 4 IP addresses yields an empty list. for IPv6, only the unspecified address '::' is excluded from any yielded IP addresses.

### __str__(self) (Informal representation operator) |
str(x) Returns: this IPNetwork in CIDR format Overrides: object.__str__

### __repr__(self) (Representation operator) |
repr(x) Returns: Python statement to create an equivalent object Overrides: object.__repr__

Property Details | [hide private]

### prefixlen size of the bitmask used to separate the network from the host bits Get Method: unreachable(self) Set Method: _set_prefixlen(self, value)

### ip The IP address of this IPNetwork object. This is may or may not be the same as the network IP address which varies according to the value of the CIDR subnet prefix. Get Method: unreachable.ip(self) - The IP address of this IPNetwork object.

### network The network address of this IPNetwork object. Get Method: unreachable.network(self) - The network address of this IPNetwork object.

### broadcast The broadcast address of this IPNetwork object Get Method: unreachable.broadcast(self) - The broadcast address of this IPNetwork object

### first The integer value of first IP address found within this IPNetwork object. Get Method: unreachable.first(self) - The integer value of first IP address found within this IPNetwork object.

### last The integer value of last IP address found within this IPNetwork object. Get Method: unreachable.last(self) - The integer value of last IP address found within this IPNetwork object.

### netmask The subnet mask of this IPNetwork object. Get Method: unreachable.netmask(self) - The subnet mask of this IPNetwork object.

### hostmask The host mask of this IPNetwork object. Get Method: unreachable.hostmask(self) - The host mask of this IPNetwork object.

### cidr The true CIDR address for this IPNetwork object which omits any host bits to the right of the CIDR subnet prefix. Get Method: unreachable.cidr(self) - The true CIDR address for this IPNetwork object which omits any host bits to the right of the CIDR subnet prefix.