diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index ee1aee5278b3be39e952e797ead70fb606cd2a67..4c193b892bda8fc106a6709e3a6071c7e969998e 100755
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -392,6 +392,11 @@ Constants
       Added ``TCP_CONNECTION_INFO``. On MacOS this constant can be used in the
       same way that ``TCP_INFO`` is used on Linux and BSD.
 
+   .. versionchanged:: 3.12
+      Added ``SO_RTABLE`` and ``SO_USER_COOKIE``. On OpenBSD
+      and FreeBSD respectively those constants can be used in the same way that
+      ``SO_MARK`` is used on Linux.
+
 .. data:: AF_CAN
           PF_CAN
           SOL_CAN_*
diff --git a/Misc/NEWS.d/next/Library/2022-04-26-18-37-24.gh-issue-91968.fuuH1_.rst b/Misc/NEWS.d/next/Library/2022-04-26-18-37-24.gh-issue-91968.fuuH1_.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f16f5d3a668bd8bb0ca7fb38a7814b0a27b34e09
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-04-26-18-37-24.gh-issue-91968.fuuH1_.rst
@@ -0,0 +1 @@
+Add ``SO_RTABLE`` and ``SO_USER_COOKIE`` constants to :mod:`socket`.
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 9aefa443c7c694745a073578a7b623b56286ccc5..f376513fead1b83a769b44bb721a255025445508 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -7595,6 +7595,12 @@ PyInit__socket(void)
 #ifdef  SO_MARK
     PyModule_AddIntMacro(m, SO_MARK);
 #endif
+#ifdef  SO_USER_COOKIE
+    PyModule_AddIntMacro(m, SO_USER_COOKIE);
+#endif
+#ifdef  SO_RTABLE
+    PyModule_AddIntMacro(m, SO_RTABLE);
+#endif
 #ifdef SO_DOMAIN
     PyModule_AddIntMacro(m, SO_DOMAIN);
 #endif