[Python-checkins] bpo-25780: Expose CAN_RAW_JOIN_FILTERS in the socket module (GH-19190)

Zackery Spytz webhook-mailer at python.org
Thu Apr 9 08:03:54 EDT 2020


https://github.com/python/cpython/commit/97e0de04b8cd44474e452a028761e34407192041
commit: 97e0de04b8cd44474e452a028761e34407192041
branch: master
author: Zackery Spytz <zspytz at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-04-09T13:03:49+01:00
summary:

bpo-25780: Expose CAN_RAW_JOIN_FILTERS in the socket module (GH-19190)

Co-Authored-By: Stefan Tatschner <stefan at rumpelsepp.org>

files:
A Misc/NEWS.d/next/Library/2020-03-27-08-57-46.bpo-25780.kIjVge.rst
M Doc/library/socket.rst
M Doc/whatsnew/3.9.rst
M Misc/ACKS
M Modules/socketmodule.c
M configure
M configure.ac
M pyconfig.h.in

diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index 5426b5abe4f0f..87dee1a801dea 100755
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -408,6 +408,17 @@ Constants
 
    .. versionadded:: 3.5
 
+.. data:: CAN_RAW_JOIN_FILTERS
+
+   Joins the applied CAN filters such that only CAN frames that match all
+   given CAN filters are passed to user space.
+
+   This constant is documented in the Linux documentation.
+
+   .. availability:: Linux >= 4.1.
+
+   .. versionadded:: 3.9
+
 .. data:: CAN_ISOTP
 
    CAN_ISOTP, in the CAN protocol family, is the ISO-TP (ISO 15765-2) protocol.
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index ef499f504682d..e49d4264c6591 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -362,6 +362,13 @@ a non-blocking socket. (Contributed by Dong-hee Na in :issue:`39259`.)
 :class:`~smtplib.LMTP` constructor  now has an optional *timeout* parameter.
 (Contributed by Dong-hee Na in :issue:`39329`.)
 
+socket
+------
+
+The :mod:`socket` module now exports the :data:`~socket.CAN_RAW_JOIN_FILTERS`
+constant on Linux 4.1 and greater.
+(Contributed by Stefan Tatschner and Zackery Spytz in :issue:`25780`.)
+
 threading
 ---------
 
diff --git a/Misc/ACKS b/Misc/ACKS
index ce100b972aa05..8cb95dc0cf863 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1682,6 +1682,7 @@ William Tanksley
 Christian Tanzer
 Steven Taschuk
 Batuhan Taskaya
+Stefan Tatschner
 Amy Taylor
 Julian Taylor
 Monty Taylor
diff --git a/Misc/NEWS.d/next/Library/2020-03-27-08-57-46.bpo-25780.kIjVge.rst b/Misc/NEWS.d/next/Library/2020-03-27-08-57-46.bpo-25780.kIjVge.rst
new file mode 100644
index 0000000000000..119e149ae7dc7
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-03-27-08-57-46.bpo-25780.kIjVge.rst
@@ -0,0 +1 @@
+Expose :data:`~socket.CAN_RAW_JOIN_FILTERS` in the :mod:`socket` module.
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index b5c241e643dfc..722c06e372e38 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -7702,6 +7702,9 @@ PyInit__socket(void)
 #ifdef HAVE_LINUX_CAN_RAW_FD_FRAMES
     PyModule_AddIntMacro(m, CAN_RAW_FD_FRAMES);
 #endif
+#ifdef HAVE_LINUX_CAN_RAW_JOIN_FILTERS
+    PyModule_AddIntMacro(m, CAN_RAW_JOIN_FILTERS);
+#endif
 #ifdef HAVE_LINUX_CAN_BCM_H
     PyModule_AddIntMacro(m, CAN_BCM);
 
diff --git a/configure b/configure
index a7a3ac254a970..d3e8149bec08b 100755
--- a/configure
+++ b/configure
@@ -11307,6 +11307,36 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAN_RAW_JOIN_FILTERS" >&5
+$as_echo_n "checking for CAN_RAW_JOIN_FILTERS... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <linux/can/raw.h>
+int
+main ()
+{
+int can_raw_join_filters = CAN_RAW_JOIN_FILTERS;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+
+$as_echo "#define HAVE_LINUX_CAN_RAW_JOIN_FILTERS 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 # Check for --with-doc-strings
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-doc-strings" >&5
 $as_echo_n "checking for --with-doc-strings... " >&6; }
diff --git a/configure.ac b/configure.ac
index 8eed0151ebb41..6bc8499f7ffe6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3447,6 +3447,16 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* CAN_RAW_FD_FRAMES available check */
   AC_MSG_RESULT(no)
 ])
 
+AC_MSG_CHECKING(for CAN_RAW_JOIN_FILTERS)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <linux/can/raw.h>]],
+[[int can_raw_join_filters = CAN_RAW_JOIN_FILTERS;]])],[
+  AC_DEFINE(HAVE_LINUX_CAN_RAW_JOIN_FILTERS, 1, [Define if compiling using Linux 4.1 or later.])
+  AC_MSG_RESULT(yes)
+],[
+  AC_MSG_RESULT(no)
+])
+
 # Check for --with-doc-strings
 AC_MSG_CHECKING(for --with-doc-strings)
 AC_ARG_WITH(doc-strings,
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 2a72e9ed7fe9c..76a10474208cf 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -628,6 +628,9 @@
 /* Define to 1 if you have the <linux/can/raw.h> header file. */
 #undef HAVE_LINUX_CAN_RAW_H
 
+/* Define if compiling using Linux 4.1 or later. */
+#undef HAVE_LINUX_CAN_RAW_JOIN_FILTERS
+
 /* Define to 1 if you have the <linux/memfd.h> header file. */
 #undef HAVE_LINUX_MEMFD_H
 



More information about the Python-checkins mailing list