summaryrefslogtreecommitdiff
path: root/dns/reversename.py
diff options
context:
space:
mode:
authorBob Halley <halley@dnspython.org>2014-05-31 11:17:38 -0700
committerBob Halley <halley@dnspython.org>2014-05-31 11:17:38 -0700
commit7a277cecc6227edf746a40dbad250503ef3f7d20 (patch)
treecb4b9282a7e2114eb653bdc662c760f46241b65f /dns/reversename.py
parentc8e17fc02a2d3ebbee3e7c34cd7828858e13fe57 (diff)
downloaddnspython-7a277cecc6227edf746a40dbad250503ef3f7d20.tar.gz
Add dns.ipv6.is_mapped(); Reverse IPv6 mapped IPv4 into v4 space
Diffstat (limited to 'dns/reversename.py')
-rw-r--r--dns/reversename.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/dns/reversename.py b/dns/reversename.py
index 4925cfd..b80c60a 100644
--- a/dns/reversename.py
+++ b/dns/reversename.py
@@ -37,8 +37,13 @@ def from_address(text):
@rtype: dns.name.Name object
"""
try:
- parts = list(dns.ipv6.inet_aton(text).encode('hex_codec'))
- origin = ipv6_reverse_domain
+ v6 = dns.ipv6.inet_aton(text)
+ if dns.ipv6.is_mapped(v6):
+ parts = ['%d' % ord(byte) for byte in v6[12:]]
+ origin = ipv4_reverse_domain
+ else:
+ parts = list(v6.encode('hex_codec'))
+ origin = ipv6_reverse_domain
except:
parts = ['%d' % ord(byte) for byte in dns.ipv4.inet_aton(text)]
origin = ipv4_reverse_domain