New submission from Jeremy McMillan :
ipaddress module has no support for scoped IPv6 addresses which prevents the
use of ipaddress.ip_address() and ipaddress.IPv6Address() with (always
available by default on IPv6 systems) RFC conforming IPv6 link local addresses
that specify interface scope.
https://tools.ietf.org/html/rfc4007
This is bad because interface scope is required for connect() and bind()
operations on multihomed machines, and virtualized or software defined
networking will make this case very common.
eg.
>>> ipaddress.IPv6Address('fe80::dead:dead:beef:')
IPv6Address('fe80::dead:dead:beef:')
>>> ipaddress.IPv6Address('fe80::dead:dead:beef:%eth0')
Traceback (most recent call last):
File "", line 1, in
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ipaddress.py",
line 1900, in __init__
self._ip = self._ip_int_from_string(addr_str)
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ipaddress.py",
line 1716, in _ip_int_from_string
raise AddressValueError("%s in %r" % (exc, ip_str)) from None
ipaddress.AddressValueError: Only hex digits permitted in '%eth0' in
'fe80::dead:dead:beef:%eth0'
>>> ipaddress.IPv6Interface('fe80::dead:dead:beef:%eth0')
Traceback (most recent call last):
File "", line 1, in
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ipaddress.py",
line 2060, in __init__
IPv6Address.__init__(self, addr[0])
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ipaddress.py",
line 1900, in __init__
self._ip = self._ip_int_from_string(addr_str)
File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ipaddress.py",
line 1716, in _ip_int_from_string
raise AddressValueError("%s in %r" % (exc, ip_str)) from None
ipaddress.AddressValueError: Only hex digits permitted in '%eth0' in
'fe80::dead:dead:beef:%eth0'
--
assignee: docs@python
components: Documentation, Library (Lib)
messages: 326240
nosy: Jeremy McMillan, docs@python
priority: normal
severity: normal
status: open
title: ipaddress module fails on rfc4007 scoped IPv6 addresses
type: behavior
versions: Python 2.7, Python 3.4, Python 3.5, Python 3.6, Python 3.7, Python 3.8
___
Python tracker
<https://bugs.python.org/issue34788>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com