=IP Constructor Stress Tests=

Copyright (c) 2008-2009, David P. D. Moss. All rights reserved.

{{{

>>> from netaddr import *

}}}

IP address construction.

{{{

>>> IPAddress(3221225984)
IPAddress('192.0.2.0')

>>> IPAddress(3221225984, 6)
IPAddress('::192.0.2.0')

>>> IPAddress(0xffffffff)
IPAddress('255.255.255.255')

>>> IPAddress(0xffffffff, 6)
IPAddress('::255.255.255.255')

>>> IPAddress(0x1ffffffff)
IPAddress('::1:ffff:ffff')

>>> IPAddress('::ffff:0.0.0.0')
IPAddress('::ffff:0.0.0.0')

>>> ip = IPAddress(0xffffff00)
>>> ip.is_netmask()
True
>>> ip.is_hostmask()
False

>>> ip = IPAddress(0xff)
>>> ip.is_netmask()
False
>>> ip.is_hostmask()
True

}}}

IP network construction.

{{{

>>> IPNetwork('192.0.2.0/24')
IPNetwork('192.0.2.0/24')

>>> IPNetwork('192.0.2.0/255.255.255.0')
IPNetwork('192.0.2.0/24')

>>> IPNetwork('192.0.2.0/0.0.0.255')
IPNetwork('192.0.2.0/24')

>>> IPNetwork(IPNetwork('192.0.2.0/24'))
IPNetwork('192.0.2.0/24')

>>> IPNetwork(IPNetwork('::192.0.2.0/120'))
IPNetwork('::192.0.2.0/120')

>>> IPNetwork(IPNetwork('192.0.2.0/24'))
IPNetwork('192.0.2.0/24')

>>> IPNetwork('::192.0.2.0/120')
IPNetwork('::192.0.2.0/120')

>>> IPNetwork('::192.0.2.0/120', 6)
IPNetwork('::192.0.2.0/120')

}}}

inet_aton() compatible IPv4 address formatting is supported.

{{{

#	Hexadecmimal.
>>> IPAddress('0x7f.0x1')
IPAddress('127.0.0.1')

>>> IPAddress('0x7f.0x0.0x0.0x1')
IPAddress('127.0.0.1')

#	Octal
>>> IPAddress('0177.01')
IPAddress('127.0.0.1')

#	Mixed.
>>> IPAddress('0x7f.0.01')
IPAddress('127.0.0.1')

#	Partial addresses.
>>> IPAddress('127')
IPAddress('0.0.0.127')

>>> IPAddress('127')
IPAddress('0.0.0.127')

}}}

Optional implicit IP network prefix selection rules.

{{{

>>> IPNetwork('192.0.2.0', implicit_prefix=True)
IPNetwork('192.0.2.0/24')

>>> IPNetwork('231.192.0.15', implicit_prefix=True)
IPNetwork('231.192.0.15/4')

>>> IPNetwork('10', implicit_prefix=True)
IPNetwork('10.0.0.0/8')

}}}
