Browse Source
bpo-35569: Expose RFC 3542 IPv6 socket options on macOS (GH-19526)
pull/20146/head
Erlend Egeberg Aasland
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
38 additions and
2 deletions
-
Lib/test/test_socket.py
-
Misc/NEWS.d/next/macOS/2020-04-15-00-02-47.bpo-35569.02_1MV.rst
-
setup.py
|
|
|
@ -959,6 +959,37 @@ class GeneralModuleTests(unittest.TestCase): |
|
|
|
socket.IPPROTO_L2TP |
|
|
|
socket.IPPROTO_SCTP |
|
|
|
|
|
|
|
@unittest.skipUnless(sys.platform == 'darwin', 'macOS specific test') |
|
|
|
@unittest.skipUnless(socket_helper.IPV6_ENABLED, 'IPv6 required for this test') |
|
|
|
def test3542SocketOptions(self): |
|
|
|
# Ref. issue #35569 and https://tools.ietf.org/html/rfc3542 |
|
|
|
opts = { |
|
|
|
'IPV6_CHECKSUM', |
|
|
|
'IPV6_DONTFRAG', |
|
|
|
'IPV6_DSTOPTS', |
|
|
|
'IPV6_HOPLIMIT', |
|
|
|
'IPV6_HOPOPTS', |
|
|
|
'IPV6_NEXTHOP', |
|
|
|
'IPV6_PATHMTU', |
|
|
|
'IPV6_PKTINFO', |
|
|
|
'IPV6_RECVDSTOPTS', |
|
|
|
'IPV6_RECVHOPLIMIT', |
|
|
|
'IPV6_RECVHOPOPTS', |
|
|
|
'IPV6_RECVPATHMTU', |
|
|
|
'IPV6_RECVPKTINFO', |
|
|
|
'IPV6_RECVRTHDR', |
|
|
|
'IPV6_RECVTCLASS', |
|
|
|
'IPV6_RTHDR', |
|
|
|
'IPV6_RTHDRDSTOPTS', |
|
|
|
'IPV6_RTHDR_TYPE_0', |
|
|
|
'IPV6_TCLASS', |
|
|
|
'IPV6_USE_MIN_MTU', |
|
|
|
} |
|
|
|
for opt in opts: |
|
|
|
self.assertTrue( |
|
|
|
hasattr(socket, opt), f"Missing RFC3542 socket option '{opt}'" |
|
|
|
) |
|
|
|
|
|
|
|
def testHostnameRes(self): |
|
|
|
# Testing hostname resolution mechanisms |
|
|
|
hostname = socket.gethostname() |
|
|
|
|
|
|
|
@ -0,0 +1 @@ |
|
|
|
Expose RFC 3542 IPv6 socket options. |
|
|
|
@ -1116,8 +1116,12 @@ class PyBuildExt(build_ext): |
|
|
|
def detect_socket(self): |
|
|
|
# socket(2) |
|
|
|
if not VXWORKS: |
|
|
|
self.add(Extension('_socket', ['socketmodule.c'], |
|
|
|
depends=['socketmodule.h'])) |
|
|
|
kwargs = {'depends': ['socketmodule.h']} |
|
|
|
if MACOS: |
|
|
|
# Issue #35569: Expose RFC 3542 socket options. |
|
|
|
kwargs['extra_compile_args'] = ['-D__APPLE_USE_RFC_3542'] |
|
|
|
|
|
|
|
self.add(Extension('_socket', ['socketmodule.c'], **kwargs)) |
|
|
|
elif self.compiler.find_library_file(self.lib_dirs, 'net'): |
|
|
|
libs = ['net'] |
|
|
|
self.add(Extension('_socket', ['socketmodule.c'], |
|
|
|
|