Skip to content

Instantly share code, notes, and snippets.

@adamcrosby
Created December 9, 2011 05:36
Show Gist options
  • Save adamcrosby/1450338 to your computer and use it in GitHub Desktop.
Save adamcrosby/1450338 to your computer and use it in GitHub Desktop.
Testing if a given IP is in a given network
def ip2int(ip):
(f,s,t,l)=ip.split('.')
return (int(f)*16777216)+(int(s)*65536)+(int(t)*256)+int(l)
def ipInNet(ip, network, masklength):
mask = 0xFFFFFFFF << (32 - int(masklength))
if (ip2int(ip) & mask) == (ip2int(network) & mask):
return True
else:
return False
ip = "10.0.0.55"
networka = "10.0.0.0"
netmaska = 24
networkb = "10.0.0.0"
netmaskb = 16
networkc = "9.0.0.0"
netmaskc = 8
networkd = "10.10.0.0"
netmaskd = 8
networke = "10.10.0.0"
netmaske = 24
ipInNet(ip, networka, netmaska) # Yields True
ipInNet(ip, networkb, netmaskb) # Yields True
ipInNet(ip, networkc, netmaskc) # Yields False
ipInNet(ip, networkd, netmaskd) # Yields True
ipInNet(ip, networke, netmaske) # Yields False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment