summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorniels <nkeulen@gmail.com>2021-01-27 20:44:12 +0100
committerGitHub <noreply@github.com>2021-01-27 20:44:12 +0100
commit606a44b62ea7032f63e359aaaaabc0057e168890 (patch)
tree361093c02616938aa43edfcf1280069fdd77ac0b
parent84112269445997ad6bfcf25247e788a31365460e (diff)
downloadnetaddr-606a44b62ea7032f63e359aaaaabc0057e168890.tar.gz
Fix for is_loopback behaviour (issue: #222) (#223)
-rw-r--r--netaddr/ip/__init__.py4
-rw-r--r--netaddr/tests/ip/test_ip_network_categories.py26
2 files changed, 28 insertions, 2 deletions
diff --git a/netaddr/ip/__init__.py b/netaddr/ip/__init__.py
index d1232eb..9e13b29 100644
--- a/netaddr/ip/__init__.py
+++ b/netaddr/ip/__init__.py
@@ -151,7 +151,7 @@ class BaseIP(object):
if self._module.version == 4:
return self in IPV4_LOOPBACK
elif self._module.version == 6:
- return self == IPV6_LOOPBACK
+ return self in IPV6_LOOPBACK
def is_private(self):
"""
@@ -1949,7 +1949,7 @@ IPV4_RESERVED = (
#-----------------------------------------------------------------------------
# Cached IPv6 address range lookups.
#-----------------------------------------------------------------------------
-IPV6_LOOPBACK = IPAddress('::1')
+IPV6_LOOPBACK = IPNetwork('::1/128')
IPV6_PRIVATE = (
IPNetwork('fc00::/7'), # Unique Local Addresses (ULA)
diff --git a/netaddr/tests/ip/test_ip_network_categories.py b/netaddr/tests/ip/test_ip_network_categories.py
new file mode 100644
index 0000000..9f9961e
--- /dev/null
+++ b/netaddr/tests/ip/test_ip_network_categories.py
@@ -0,0 +1,26 @@
+from netaddr import IPNetwork
+
+
+def test_is_unicast():
+ assert IPNetwork('192.0.2.0/24').is_unicast()
+ assert IPNetwork('fe80::1/48').is_unicast()
+
+
+def test_is_multicast():
+ assert IPNetwork('239.192.0.1/24').is_multicast()
+ assert IPNetwork('ff00::/8').is_multicast()
+
+
+def test_is_private():
+ assert IPNetwork('10.0.0.0/24').is_private()
+ assert IPNetwork('fc00::/7').is_private()
+
+
+def test_is_reserved():
+ assert IPNetwork('240.0.0.0/24').is_reserved()
+ assert IPNetwork('0::/48').is_reserved()
+
+
+def test_is_loopback():
+ assert IPNetwork('127.0.0.0/8').is_loopback()
+ assert IPNetwork('::1/128').is_loopback()