Repository navigation
ipaddress module fails on rfc4007 scoped IPv6 addresses #78969
Description
Activity
JeremyMcMillan commented
on Sep 24, 2018 JeremyMcMillanmannequinMannequinAuthorMore actionsipaddress 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:ffff') IPv6Address('fe80::dead:dead:beef:ffff') >>> ipaddress.IPv6Address('fe80::dead:dead:beef:ffff%eth0') Traceback (most recent call last): File "<stdin>", line 1, in <module> 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 'ffff%eth0' in 'fe80::dead:dead:beef:ffff%eth0' >>> ipaddress.IPv6Interface('fe80::dead:dead:beef:ffff%eth0') Traceback (most recent call last): File "<stdin>", line 1, in <module> 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 'ffff%eth0' in 'fe80::dead:dead:beef:ffff%eth0'
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or errordocsDocumentation in the Doc dirDocumentation in the Doc dir3.7 (EOL)end of lifeend of life3.8 (EOL)end of lifeend of lifestdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directory
on Sep 24, 2018 JeremyMcMillan commented
on Sep 25, 2018 JeremyMcMillanmannequinMannequinAuthorMore actionssubclass workaround implementation example
https://github.com/isbm/salt/blob/976fe19d73ca6bf5df375eaa15d77ce4a5a54b7a/salt/_compat.py#L125
I think this is something that would be good to have. Jeremy would you care to make a PR for this?
I would like to fix this problem if nobody is against that. I stumbled upon the very same thing recently and I think it would be a nice opportunity to contribute.
JeremyMcMillan commented
on Apr 11, 2019 JeremyMcMillanmannequinMannequinAuthorMore actionsI think the code in SaltStack to handle scoped IPv6 addresses is mature, so please look at these examples.
https://github.com/saltstack/salt/blob/2085cb1078f187adf82a0cf19b39d350ff1bbd50/salt/_compat.py#L125
Pull request needs a review.
FWIW: Marking Component: Documentation means that the issue is only about changing the doc. Hence the auto-assignment to the nebulous docs group, which no longer exists in the form it once did. Enhancement issues nearly always need a doc change but are not marked 'Documentation'. I am not sure what Jeremy's original intent was, but the actual PR is mostly code implementing and testing the newly documented addition.
- added3.9 (EOL)end of lifeend of lifeand removeddocsDocumentation in the Doc dirDocumentation in the Doc dir3.7 (EOL)end of lifeend of life3.8 (EOL)end of lifeend of life
on Jul 15, 2019 - addedtype-featureA feature request or enhancementA feature request or enhancementand removedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Jul 15, 2019 Please, pay attention to this issue. Pull request needs core review.
Nick, can you comment on this and review the revised PR?
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: