Skip to content

Commit ec0c214

Browse files
committed
gh-151049: Add 2001:1::3/128 (RFC 9665) to ipaddress IPv6 global exceptions
IANA's IPv6 Special-Purpose Address Registry (2024-04) lists 2001:1::3/128 ("DNS-SD Service Registration Protocol Anycast", RFC 9665) as globally reachable, like 2001:1::1/128 and 2001:1::2/128. It was missing from _IPv6Constants._private_networks_exceptions, so is_global returned False for it. Add the exception and extend testReservedIpv6.
1 parent 5755d0f commit ec0c214

3 files changed

Lines changed: 10 additions & 0 deletions

File tree

Lib/ipaddress.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,6 +2394,8 @@ class _IPv6Constants:
23942394
_private_networks_exceptions = [
23952395
IPv6Network('2001:1::1/128'),
23962396
IPv6Network('2001:1::2/128'),
2397+
# RFC 9665: https://www.rfc-editor.org/rfc/rfc9665.html
2398+
IPv6Network('2001:1::3/128'),
23972399
IPv6Network('2001:3::/32'),
23982400
IPv6Network('2001:4:112::/48'),
23992401
IPv6Network('2001:20::/28'),

Lib/test/test_ipaddress.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2488,6 +2488,10 @@ def testReservedIpv6(self):
24882488
self.assertFalse(ipaddress.ip_address('2001::').is_global)
24892489
self.assertTrue(ipaddress.ip_address('2001:1::1').is_global)
24902490
self.assertTrue(ipaddress.ip_address('2001:1::2').is_global)
2491+
# gh-151049: RFC 9665 anycast address (IANA 2024-04 registration)
2492+
self.assertTrue(ipaddress.ip_address('2001:1::3').is_global)
2493+
self.assertFalse(ipaddress.ip_address('2001:1::3').is_private)
2494+
self.assertFalse(ipaddress.ip_address('2001:1::4').is_global)
24912495
self.assertFalse(ipaddress.ip_address('2001:2::').is_global)
24922496
self.assertTrue(ipaddress.ip_address('2001:3::').is_global)
24932497
self.assertFalse(ipaddress.ip_address('2001:4::').is_global)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
:mod:`ipaddress`: fix ``is_global`` and ``is_private`` for the
2+
``2001:1::3/128`` (DNS-SD Service Registration Protocol Anycast) address,
3+
which IANA registered as globally reachable per :rfc:`9665`. It is now
4+
correctly reported with ``is_global`` ``True`` and ``is_private`` ``False``.

0 commit comments

Comments
 (0)