Skip to content
Snippets Groups Projects
Commit a43649f2 authored by Stuart Gathman's avatar Stuart Gathman
Browse files

Make addr2bin and dynip handle IP6.

parent de679b15
Branches
No related tags found
No related merge requests found
......@@ -48,9 +48,10 @@ def is_dynip(host,addr):
True
"""
if host.startswith('[') and host.endswith(']'):
return True
return True # no ptr
if addr:
if host.find(addr) >= 0: return True
if addr.find(':') >= 0: return False # IP6
a = addr.split('.')
ia = map(int,a)
h = host
......
......@@ -28,16 +28,21 @@ ip6re = re.compile( '(?:%(hex4)s:){6}%(ls32)s$'
}, re.IGNORECASE)
# from spf.py
def addr2bin(str):
def addr2bin(s):
"""Convert a string IPv4 address into an unsigned integer."""
if s.find(':') >= 0:
try:
return struct.unpack("!L", socket.inet_aton(str))[0]
return bin2long6(inet_pton(s))
except:
raise socket.error("Invalid IP6 address: "+s)
try:
return struct.unpack("!L", socket.inet_aton(s))[0]
except socket.error:
raise socket.error("Invalid IP4 address: "+str)
raise socket.error("Invalid IP4 address: "+s)
def bin2long6(str):
def bin2long6(s):
"""Convert binary IP6 address into an unsigned Python long integer."""
h, l = struct.unpack("!QQ", str)
h, l = struct.unpack("!QQ", s)
return h << 64 | l
if hasattr(socket,'has_ipv6') and socket.has_ipv6:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment