Skip to content

Commit

Permalink
bpo-25780: Expose CAN_RAW_JOIN_FILTERS in the socket module (pythonGH…
Browse files Browse the repository at this point in the history
…-19190)

Co-Authored-By: Stefan Tatschner <[email protected]>
  • Loading branch information
ZackerySpytz and rumpelsepp authored Apr 9, 2020
1 parent b54a99d commit 97e0de0
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 0 deletions.
11 changes: 11 additions & 0 deletions Doc/library/socket.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
7 changes: 7 additions & 0 deletions Doc/whatsnew/3.9.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
---------

Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Original file line number Diff line number Diff line change
Expand Up @@ -1682,6 +1682,7 @@ William Tanksley
Christian Tanzer
Steven Taschuk
Batuhan Taskaya
Stefan Tatschner
Amy Taylor
Julian Taylor
Monty Taylor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Expose :data:`~socket.CAN_RAW_JOIN_FILTERS` in the :mod:`socket` module.
3 changes: 3 additions & 0 deletions Modules/socketmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
30 changes: 30 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down
10 changes: 10 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 3 additions & 0 deletions pyconfig.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 97e0de0

Please sign in to comment.