From 11a89f123eeac66ffa53347077f27a85a5537200 Mon Sep 17 00:00:00 2001 From: "pmoody@google.com" Date: Thu, 24 Nov 2011 21:07:45 +0000 Subject: fix for i84 git-svn-id: https://ipaddr-py.googlecode.com/svn@236 09200d28-7f98-11dd-ad27-0f66e57d2035 --- trunk/ipaddr.py | 4 ++++ trunk/ipaddr_test.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/trunk/ipaddr.py b/trunk/ipaddr.py index 09e4ebd..ef60011 100644 --- a/trunk/ipaddr.py +++ b/trunk/ipaddr.py @@ -1323,6 +1323,8 @@ class IPv4Network(_BaseV4, _BaseNet): if self.ip != self.network: raise ValueError('%s has host bits set' % self.ip) + if self._prefixlen == (self._max_prefixlen - 1): + self.iterhosts = self.__iter__ def _is_hostmask(self, ip_str): """Test if the IP string is a hostmask (rather than a netmask). @@ -1870,6 +1872,8 @@ class IPv6Network(_BaseV6, _BaseNet): if self.ip != self.network: raise ValueError('%s has host bits set' % self.ip) + if self._prefixlen == (self._max_prefixlen - 1): + self.iterhosts = self.__iter__ def _is_valid_netmask(self, prefixlen): """Verify that the netmask/prefixlen is valid. diff --git a/trunk/ipaddr_test.py b/trunk/ipaddr_test.py index 24f1fae..47345db 100755 --- a/trunk/ipaddr_test.py +++ b/trunk/ipaddr_test.py @@ -333,6 +333,11 @@ class IpaddrUnitTest(unittest.TestCase): self.assertEqual(self.ipv4.subnet(), list(self.ipv4.iter_subnets())) self.assertEqual(self.ipv6.subnet(), list(self.ipv6.iter_subnets())) + def testIterHosts(self): + self.assertEqual([ipaddr.IPv4Address('2.0.0.0'), + ipaddr.IPv4Address('2.0.0.1')], + list(ipaddr.IPNetwork('2.0.0.0/31').iterhosts())) + def testFancySubnetting(self): self.assertEqual(sorted(self.ipv4.subnet(prefixlen_diff=3)), sorted(self.ipv4.subnet(new_prefix=27))) -- cgit v1.2.1