Issue 35569: Expose RFC 3542 IPv6 socket options on macOS (original) (raw)

Created on 2018-12-23 12:00 by chrysn, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
0001-bpo-35569-Expose-RFC-3542-socket-options-on-macOS.patch erlendaasland,2020-02-29 23:22
0002-bpo-35569-Add-unit-tests.patch erlendaasland,2020-04-13 18:58
Pull Requests
URL Status Linked Edit
PR 19526 merged erlendaasland,2020-04-14 22:16
PR 20146 merged ned.deily,2020-05-17 06:50
Messages (9)
msg332389 - (view) Author: chrysn (chrysn) * Date: 2018-12-23 12:00
Python builds on MacOS do not expose the IPV6_RECVPKTINFO flag specified in [RFC3842], which is required for UDP protocols that need control over their servers' sending ports like [CoAP]. While I don't own Apple hardware and thus can't test it, the [nginx] code indicates that this API is available on OSX and is just gated behind `-D__APPLE_USE_RFC_3542`. Searching the web for that define indicates that other interpreted langues and applications use the flag as well (PHP, Ruby; PowerDNS, nmap, libcoap). Please consider enabling this on future releases of Python on OSX. [RFC3542]: https://tools.ietf.org/html/rfc3542 [CoAP]: https://github.com/chrysn/aiocoap/issues/69 [nginx]: http://hg.nginx.org/nginx/rev/9fb994513776
msg332391 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2018-12-23 15:15
#include <netinet6/in6.h> in the macOS 10.14 SDK says: /* * RFC 3542 define the following socket options in a manner incompatible * with RFC 2292: * IPV6_PKTINFO * IPV6_HOPLIMIT * IPV6_NEXTHOP * IPV6_HOPOPTS * IPV6_DSTOPTS * IPV6_RTHDR * * To use the new IPv6 Sockets options introduced by RFC 3542 * the constant __APPLE_USE_RFC_3542 must be defined before * including <netinet/in.h> * * To use the old IPv6 Sockets options from RFC 2292 * the constant __APPLE_USE_RFC_2292 must be defined before * including <netinet/in.h> * * Note that eventually RFC 3542 is going to be the * default and RFC 2292 will be obsolete. */ My conclusion from reading this: the name might suggest that this is an internal macro, but should be safe to use.
msg363032 - (view) Author: Erlend E. Aasland (erlendaasland) * (Python triager) Date: 2020-02-29 23:22
Proposed patch attached.
msg363830 - (view) Author: chrysn (chrysn) * Date: 2020-03-10 17:07
Testing the application to current git master (on a borrowed machine with Darwin Kernel Version 18.5.0), the provided patch does enable the desired IPV6_RECVPKTINFO flag, and the received pktinfo struct complies to the spec.
msg363831 - (view) Author: Erlend E. Aasland (erlendaasland) * (Python triager) Date: 2020-03-10 17:14
Thanks for testing @chrysn. I guess I should add unit tests if this is to be applied to master.
msg366323 - (view) Author: Erlend E. Aasland (erlendaasland) * (Python triager) Date: 2020-04-13 18:58
Added (Mac OS specific) unit tests.
msg369095 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2020-05-17 06:32
New changeset 9a45bfe6f4aedd2a9d94cb12aa276057b15d8b63 by Erlend Egeberg Aasland in branch 'master': bpo-35569: Expose RFC 3542 IPv6 socket options on macOS (GH-19526) https://github.com/python/cpython/commit/9a45bfe6f4aedd2a9d94cb12aa276057b15d8b63
msg369096 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2020-05-17 06:37
Thanks for the PR! Merged for 3.9.0b1
msg369098 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2020-05-17 06:57
New changeset fa098b6bc8662cceb944ad5a4a3e5eb63d3cb517 by Ned Deily in branch 'master': bpo-35569: add Erlend to Misc/ACKS (GH-20146) https://github.com/python/cpython/commit/fa098b6bc8662cceb944ad5a4a3e5eb63d3cb517
History
Date User Action Args
2022-04-11 14:59:09 admin set github: 79750
2020-05-17 06:57:31 ned.deily set messages: +
2020-05-17 06:50:01 ned.deily set pull_requests: + <pull%5Frequest19451>
2020-05-17 06:37:41 ned.deily set status: open -> closedversions: - Python 3.8title: OSX: Enable IPV6_RECVPKTINFO -> Expose RFC 3542 IPv6 socket options on macOSmessages: + resolution: fixedstage: patch review -> resolved
2020-05-17 06:32:53 ned.deily set messages: +
2020-04-14 22:16:36 erlendaasland set stage: needs patch -> patch reviewpull_requests: + <pull%5Frequest18876>
2020-04-13 19:33:15 erlendaasland set versions: + Python 3.9
2020-04-13 18:58:59 erlendaasland set files: + 0002-bpo-35569-Add-unit-tests.patchmessages: +
2020-03-10 17:14:05 erlendaasland set messages: +
2020-03-10 17:07:32 chrysn set messages: +
2020-02-29 23:22:45 erlendaasland set files: + 0001-bpo-35569-Expose-RFC-3542-socket-options-on-macOS.patchkeywords: + patchmessages: +
2020-02-29 22:41:38 erlendaasland set nosy: + erlendaasland
2018-12-23 15:15:46 ronaldoussoren set versions: + Python 3.8nosy: + ronaldoussoren, ned.deilymessages: + components: + macOSstage: needs patch
2018-12-23 12:00:47 chrysn create