bpo-35569: Expose RFC 3542 IPv6 socket options on macOS (GH-19526)
This commit is contained in:
parent
d7184d3dbd
commit
9a45bfe6f4
|
@ -959,6 +959,37 @@ class GeneralModuleTests(unittest.TestCase):
|
||||||
socket.IPPROTO_L2TP
|
socket.IPPROTO_L2TP
|
||||||
socket.IPPROTO_SCTP
|
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):
|
def testHostnameRes(self):
|
||||||
# Testing hostname resolution mechanisms
|
# Testing hostname resolution mechanisms
|
||||||
hostname = socket.gethostname()
|
hostname = socket.gethostname()
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Expose RFC 3542 IPv6 socket options.
|
8
setup.py
8
setup.py
|
@ -1116,8 +1116,12 @@ class PyBuildExt(build_ext):
|
||||||
def detect_socket(self):
|
def detect_socket(self):
|
||||||
# socket(2)
|
# socket(2)
|
||||||
if not VXWORKS:
|
if not VXWORKS:
|
||||||
self.add(Extension('_socket', ['socketmodule.c'],
|
kwargs = {'depends': ['socketmodule.h']}
|
||||||
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'):
|
elif self.compiler.find_library_file(self.lib_dirs, 'net'):
|
||||||
libs = ['net']
|
libs = ['net']
|
||||||
self.add(Extension('_socket', ['socketmodule.c'],
|
self.add(Extension('_socket', ['socketmodule.c'],
|
||||||
|
|
Loading…
Reference in New Issue