This is a small recursive function that draws an IP space layout based on a few parameters. It breaks down a large IP space (for intance a /16) into smaller networks as specified (down to /30). In order to collapse out unnecessary data, you can optionally specify a network size you are interested in (for instance, /24) and only display the networks at that scale. Text descriptions can be attached to any given subnet/subnet mask combination... described networks will always be shown.
#The network number to start with...
start = ip_to_base10("172.20.128.0")
#An 'interesting' network size will always be shown, regardless if its used. Set to 0 if you don't want it.
interesting = 22
#The network size to start drawing from ( 0 to 30)
draw_from = 17
#the network size to stop drawing at (0 to 30, should be smaller (in size... /0 is largest, /30 smallest) than draw_from)
draw_to = 18
#OK, draw it
drawsubnet(draw_from, draw_to, interesting, start)
/17 172.20.128.0 - 255.255.128.0 - 32766 hosts - (2 /18's under)
/18 172.20.128.0 - 255.255.192.0 - 16382 hosts
/22 172.20.128.0 - 255.255.252.0 - 1022 hosts - New York /22
/22 172.20.132.0 - 255.255.252.0 - 1022 hosts - Los Angeles /22
/22 172.20.136.0 - 255.255.252.0 - 1022 hosts - Chicago /22
/22 172.20.140.0 - 255.255.252.0 - 1022 hosts
/22 172.20.144.0 - 255.255.252.0 - 1022 hosts
/22 172.20.148.0 - 255.255.252.0 - 1022 hosts
/22 172.20.152.0 - 255.255.252.0 - 1022 hosts
/22 172.20.156.0 - 255.255.252.0 - 1022 hosts
/22 172.20.160.0 - 255.255.252.0 - 1022 hosts
/22 172.20.164.0 - 255.255.252.0 - 1022 hosts
/22 172.20.168.0 - 255.255.252.0 - 1022 hosts
/22 172.20.172.0 - 255.255.252.0 - 1022 hosts
/22 172.20.176.0 - 255.255.252.0 - 1022 hosts
/22 172.20.180.0 - 255.255.252.0 - 1022 hosts
/22 172.20.184.0 - 255.255.252.0 - 1022 hosts
/22 172.20.188.0 - 255.255.252.0 - 1022 hosts
/18 172.20.192.0 - 255.255.192.0 - 16382 hosts
/22 172.20.192.0 - 255.255.252.0 - 1022 hosts
/22 172.20.196.0 - 255.255.252.0 - 1022 hosts
/22 172.20.200.0 - 255.255.252.0 - 1022 hosts
/22 172.20.204.0 - 255.255.252.0 - 1022 hosts
/22 172.20.208.0 - 255.255.252.0 - 1022 hosts
/22 172.20.212.0 - 255.255.252.0 - 1022 hosts
/22 172.20.216.0 - 255.255.252.0 - 1022 hosts
/22 172.20.220.0 - 255.255.252.0 - 1022 hosts
/22 172.20.224.0 - 255.255.252.0 - 1022 hosts
/22 172.20.228.0 - 255.255.252.0 - 1022 hosts
/22 172.20.232.0 - 255.255.252.0 - 1022 hosts
/22 172.20.236.0 - 255.255.252.0 - 1022 hosts
/22 172.20.240.0 - 255.255.252.0 - 1022 hosts
/22 172.20.244.0 - 255.255.252.0 - 1022 hosts
/22 172.20.248.0 - 255.255.252.0 - 1022 hosts
/22 172.20.252.0 - 255.255.252.0 - 1022 hosts - Administrivia
/24 172.20.255.0 - 255.255.255.0 - 254 hosts - Management Networks
/29 172.20.255.0 - 255.255.255.248 - 6 hosts - Management network A
/29 172.20.255.8 - 255.255.255.248 - 6 hosts - Management network B