Return the value for reverse lookup/PTR records as RFC 2317 look alike. RFC 2317 is an ugly hack which only works for sub-/24 e.g. not for /23. Do not use it. Better set up a zone for every address. See reverseName for a way to achieve that. >>> print IP('195.185.1.
(self)
| 794 | |
| 795 | |
| 796 | def reverseName(self): |
| 797 | """Return the value for reverse lookup/PTR records as RFC 2317 look alike. |
| 798 | |
| 799 | RFC 2317 is an ugly hack which only works for sub-/24 e.g. not |
| 800 | for /23. Do not use it. Better set up a zone for every |
| 801 | address. See reverseName for a way to achieve that. |
| 802 | |
| 803 | >>> print IP('195.185.1.1').reverseName() |
| 804 | 1.1.185.195.in-addr.arpa. |
| 805 | >>> print IP('195.185.1.0/28').reverseName() |
| 806 | 0-15.1.185.195.in-addr.arpa. |
| 807 | >>> IP('::1:2').reverseName() |
| 808 | '2.0.0.0.1.ip6.arpa.' |
| 809 | """ |
| 810 | |
| 811 | if self._ipversion == 4: |
| 812 | s = self.strFullsize(0) |
| 813 | s = s.split('.') |
| 814 | s.reverse() |
| 815 | first_byte_index = int(4 - (self._prefixlen / 8)) |
| 816 | if self._prefixlen % 8 != 0: |
| 817 | nibblepart = "%s-%s" % ( |
| 818 | s[3 - (self._prefixlen / 8)], intToIp(self.ip + self.len() - 1, 4).split('.')[-1]) |
| 819 | if nibblepart[-1] == 'l': |
| 820 | nibblepart = nibblepart[:-1] |
| 821 | nibblepart += '.' |
| 822 | else: |
| 823 | nibblepart = "" |
| 824 | |
| 825 | s = '.'.join(s[first_byte_index:]) |
| 826 | return "%s%s.in-addr.arpa." % (nibblepart, s) |
| 827 | |
| 828 | elif self._ipversion == 6: |
| 829 | s = hex(self.ip)[2:].lower() |
| 830 | if s[-1] == 'l': |
| 831 | s = s[:-1] |
| 832 | if self._prefixlen % 4 != 0: |
| 833 | nibblepart = "%s-%s" % (s[self._prefixlen:], hex(self.ip + self.len() - 1)[2:].lower()) |
| 834 | if nibblepart[-1] == 'l': |
| 835 | nibblepart = nibblepart[:-1] |
| 836 | nibblepart += '.' |
| 837 | else: |
| 838 | nibblepart = "" |
| 839 | s = list(s) |
| 840 | s.reverse() |
| 841 | s = '.'.join(s) |
| 842 | first_nibble_index = int(32 - (self._prefixlen / 4)) * 2 |
| 843 | return "%s%s.ip6.arpa." % (nibblepart, s[first_nibble_index:]) |
| 844 | else: |
| 845 | raise ValueError, "only IPv4 and IPv6 supported" |
| 846 | |
| 847 | def make_net(self, netmask): |
| 848 | """Transform a single IP address into a network specification by |
no test coverage detected