Skip to content

Commit 08e4e88

Browse files
authored
gh-92658: AF_HYPERV is only supported on Windows (#93192)
Only build the AF_HYPERV support on Windows for the _socket extension. FreeBSD defines the AF_HYPERV macro but doesn't have the SOCKADDR_HV type.
1 parent ac1dcb8 commit 08e4e88

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

Modules/socketmodule.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,7 +1582,7 @@ makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto)
15821582
}
15831583
#endif /* HAVE_SOCKADDR_ALG */
15841584

1585-
#ifdef AF_HYPERV
1585+
#ifdef HAVE_AF_HYPERV
15861586
case AF_HYPERV:
15871587
{
15881588
SOCKADDR_HV *a = (SOCKADDR_HV *) addr;
@@ -2407,7 +2407,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
24072407
return 1;
24082408
}
24092409
#endif /* HAVE_SOCKADDR_ALG */
2410-
#ifdef AF_HYPERV
2410+
#ifdef HAVE_AF_HYPERV
24112411
case AF_HYPERV:
24122412
{
24132413
switch (s->sock_proto) {
@@ -2476,7 +2476,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
24762476
return 0;
24772477
}
24782478
}
2479-
#endif /* AF_HYPERV */
2479+
#endif /* HAVE_AF_HYPERV */
24802480

24812481
/* More cases here... */
24822482

@@ -2626,13 +2626,13 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret)
26262626
return 1;
26272627
}
26282628
#endif /* HAVE_SOCKADDR_ALG */
2629-
#ifdef AF_HYPERV
2629+
#ifdef HAVE_AF_HYPERV
26302630
case AF_HYPERV:
26312631
{
26322632
*len_ret = sizeof (SOCKADDR_HV);
26332633
return 1;
26342634
}
2635-
#endif /* AF_HYPERV */
2635+
#endif /* HAVE_AF_HYPERV */
26362636

26372637
/* More cases here... */
26382638

@@ -7460,7 +7460,7 @@ PyInit__socket(void)
74607460
/* Linux LLC */
74617461
PyModule_AddIntMacro(m, AF_LLC);
74627462
#endif
7463-
#ifdef AF_HYPERV
7463+
#ifdef HAVE_AF_HYPERV
74647464
/* Hyper-V sockets */
74657465
PyModule_AddIntMacro(m, AF_HYPERV);
74667466

@@ -7481,7 +7481,7 @@ PyInit__socket(void)
74817481
PyModule_AddStringConstant(m, "HV_GUID_CHILDREN", "90DB8B89-0D35-4F79-8CE9-49EA0AC8B7CD");
74827482
PyModule_AddStringConstant(m, "HV_GUID_LOOPBACK", "E0E16197-DD56-4A10-9195-5EE7A155A838");
74837483
PyModule_AddStringConstant(m, "HV_GUID_PARENT", "A42E7CDA-D03F-480C-9CC2-A4DE20ABB878");
7484-
#endif /* AF_HYPERV */
7484+
#endif /* HAVE_AF_HYPERV */
74857485

74867486
#ifdef USE_BLUETOOTH
74877487
PyModule_AddIntMacro(m, AF_BLUETOOTH);

Modules/socketmodule.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,11 @@ typedef int SOCKET_T;
249249
#define PyLong_AsSocket_t(fd) (SOCKET_T)PyLong_AsLongLong(fd)
250250
#endif
251251

252+
// AF_HYPERV is only supported on Windows
253+
#if defined(AF_HYPERV) && defined(MS_WINDOWS)
254+
# define HAVE_AF_HYPERV
255+
#endif
256+
252257
/* Socket address */
253258
typedef union sock_addr {
254259
struct sockaddr_in in;
@@ -297,7 +302,7 @@ typedef union sock_addr {
297302
#ifdef HAVE_LINUX_TIPC_H
298303
struct sockaddr_tipc tipc;
299304
#endif
300-
#ifdef AF_HYPERV
305+
#ifdef HAVE_AF_HYPERV
301306
SOCKADDR_HV hv;
302307
#endif
303308
} sock_addr_t;

0 commit comments

Comments
 (0)