]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-96534: socketmodule: support FreeBSD divert(4) socket (#96536)
authorGleb Smirnoff <glebius@FreeBSD.org>
Thu, 4 May 2023 14:57:05 +0000 (07:57 -0700)
committerGitHub <noreply@github.com>
Thu, 4 May 2023 14:57:05 +0000 (14:57 +0000)
Doc/library/socket.rst
Misc/NEWS.d/next/Library/2022-09-03-09-24-02.gh-issue-96534.EU4Oxv.rst [new file with mode: 0644]
Modules/socketmodule.c

index 4ee0897db9406327bd40658b9aaf259e3fd4b03f..13a82cf82d59083c83e14831dc7f1832e0f08030 100644 (file)
@@ -509,6 +509,17 @@ Constants
    .. versionadded:: 3.9
 
 
+.. data:: AF_DIVERT
+          PF_DIVERT
+
+   These two constants, documented in the FreeBSD divert(4) manual page, are
+   also defined in the socket module.
+
+   .. availability:: FreeBSD >= 14.0.
+
+   .. versionadded:: 3.12
+
+
 .. data:: AF_PACKET
           PF_PACKET
           PACKET_*
diff --git a/Misc/NEWS.d/next/Library/2022-09-03-09-24-02.gh-issue-96534.EU4Oxv.rst b/Misc/NEWS.d/next/Library/2022-09-03-09-24-02.gh-issue-96534.EU4Oxv.rst
new file mode 100644 (file)
index 0000000..0497d9e
--- /dev/null
@@ -0,0 +1 @@
+Support divert(4) added in FreeBSD 14.
index f11d4b1a6e0591aa43b9d76e220e0cfbb569c664..e5478382e11f890eaf19ba8fd1232d9be8a98684 100644 (file)
@@ -1903,6 +1903,11 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
         /* RDS sockets use sockaddr_in: fall-through */
 #endif /* AF_RDS */
 
+#ifdef AF_DIVERT
+    case AF_DIVERT:
+        /* FreeBSD divert(4) sockets use sockaddr_in: fall-through */
+#endif /* AF_DIVERT */
+
     case AF_INET:
     {
         struct maybe_idna host = {NULL, NULL};
@@ -7683,6 +7688,14 @@ socket_exec(PyObject *m)
     ADD_INT_MACRO(m, AF_SYSTEM);
 #endif
 
+/* FreeBSD divert(4) */
+#ifdef PF_DIVERT
+    PyModule_AddIntMacro(m, PF_DIVERT);
+#endif
+#ifdef AF_DIVERT
+    PyModule_AddIntMacro(m, AF_DIVERT);
+#endif
+
 #ifdef AF_PACKET
     ADD_INT_MACRO(m, AF_PACKET);
 #endif