diff options
author | Eric V. Smith <eric@trueblade.com> | 2014-04-14 12:58:07 -0400 |
---|---|---|
committer | Eric V. Smith <eric@trueblade.com> | 2014-04-14 12:58:07 -0400 |
commit | ebdaaf40875fb8e29c7fbad5cc67221123995a8e (patch) | |
tree | 4feedc5959563cc17fdb855348951a88e7c4c598 /Lib/ipaddress.py | |
parent | 6b2308803506321019bfe2ec1f2303ebb97ec998 (diff) | |
download | cpython-git-ebdaaf40875fb8e29c7fbad5cc67221123995a8e.tar.gz |
Issue #20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.
Diffstat (limited to 'Lib/ipaddress.py')
-rw-r--r-- | Lib/ipaddress.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Lib/ipaddress.py b/Lib/ipaddress.py index 54df39ae56..1e451f8873 100644 --- a/Lib/ipaddress.py +++ b/Lib/ipaddress.py @@ -436,6 +436,17 @@ class _IPAddressBase(_TotalOrderingMixin): return str(self) @property + def reverse_pointer(self): + """The name of the reverse DNS pointer for the IP address, e.g.: + >>> ipaddress.ip_address("127.0.0.1").reverse_pointer + '1.0.0.127.in-addr.arpa' + >>> ipaddress.ip_address("2001:db8::1").reverse_pointer + '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa' + + """ + return self._reverse_pointer() + + @property def version(self): msg = '%200s has no version specified' % (type(self),) raise NotImplementedError(msg) @@ -1221,6 +1232,15 @@ class _BaseV4: return True return False + def _reverse_pointer(self): + """Return the reverse DNS pointer name for the IPv4 address. + + This implements the method described in RFC1035 3.5. + + """ + reverse_octets = str(self).split('.')[::-1] + return '.'.join(reverse_octets) + '.in-addr.arpa' + @property def max_prefixlen(self): return self._max_prefixlen @@ -1784,6 +1804,15 @@ class _BaseV6: return '%s/%d' % (':'.join(parts), self._prefixlen) return ':'.join(parts) + def _reverse_pointer(self): + """Return the reverse DNS pointer name for the IPv6 address. + + This implements the method described in RFC3596 2.5. + + """ + reverse_chars = self.exploded[::-1].replace(':', '') + return '.'.join(reverse_chars) + '.ip6.arpa' + @property def max_prefixlen(self): return self._max_prefixlen |