=IP Subnet Tests= Copyright (c) 2008-2012, David P. D. Moss. All rights reserved. {{{ >>> from netaddr import * }}} Incrementing IP objects. {{{ >>> ip = IPNetwork('192.0.2.0/28') >>> for i in range(16): ... str(ip) ... ip += 1 '192.0.2.0/28' '192.0.2.16/28' '192.0.2.32/28' '192.0.2.48/28' '192.0.2.64/28' '192.0.2.80/28' '192.0.2.96/28' '192.0.2.112/28' '192.0.2.128/28' '192.0.2.144/28' '192.0.2.160/28' '192.0.2.176/28' '192.0.2.192/28' '192.0.2.208/28' '192.0.2.224/28' '192.0.2.240/28' >>> ip = IPNetwork('2001:470:1f04::/48') >>> for i in ip.subnet(128): ... print i ... break 2001:470:1f04::/128 }}} IP address and subnet sortability. {{{ >>> ip_list = [] >>> for subnet in IPNetwork('192.0.2.0/24').subnet(28, 3): ... ip_list.append(subnet) ... ip_list.extend([ip for ip in subnet]) >>> for addr in sorted(ip_list): ... print '%r' % addr IPNetwork('192.0.2.0/28') IPAddress('192.0.2.0') IPAddress('192.0.2.1') IPAddress('192.0.2.2') IPAddress('192.0.2.3') IPAddress('192.0.2.4') IPAddress('192.0.2.5') IPAddress('192.0.2.6') IPAddress('192.0.2.7') IPAddress('192.0.2.8') IPAddress('192.0.2.9') IPAddress('192.0.2.10') IPAddress('192.0.2.11') IPAddress('192.0.2.12') IPAddress('192.0.2.13') IPAddress('192.0.2.14') IPAddress('192.0.2.15') IPNetwork('192.0.2.16/28') IPAddress('192.0.2.16') IPAddress('192.0.2.17') IPAddress('192.0.2.18') IPAddress('192.0.2.19') IPAddress('192.0.2.20') IPAddress('192.0.2.21') IPAddress('192.0.2.22') IPAddress('192.0.2.23') IPAddress('192.0.2.24') IPAddress('192.0.2.25') IPAddress('192.0.2.26') IPAddress('192.0.2.27') IPAddress('192.0.2.28') IPAddress('192.0.2.29') IPAddress('192.0.2.30') IPAddress('192.0.2.31') IPNetwork('192.0.2.32/28') IPAddress('192.0.2.32') IPAddress('192.0.2.33') IPAddress('192.0.2.34') IPAddress('192.0.2.35') IPAddress('192.0.2.36') IPAddress('192.0.2.37') IPAddress('192.0.2.38') IPAddress('192.0.2.39') IPAddress('192.0.2.40') IPAddress('192.0.2.41') IPAddress('192.0.2.42') IPAddress('192.0.2.43') IPAddress('192.0.2.44') IPAddress('192.0.2.45') IPAddress('192.0.2.46') IPAddress('192.0.2.47') }}}