summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Hastings <larry@hastings.org>2015-04-13 17:48:40 -0400
committerLarry Hastings <larry@hastings.org>2015-04-13 17:48:40 -0400
commite43bbe2166fa92c5a574a4cbfe70423291816733 (patch)
treee210d0bb657d342f0ca2f03ce968bc9e6ddf5dcd
parent8cc6d42d475c53396afaf972f03bee07ee4739bd (diff)
downloadcpython-e43bbe2166fa92c5a574a4cbfe70423291816733.tar.gz
Issue #22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES.
Patch courtesy of Joe Jevnik.
-rw-r--r--Doc/library/socket.rst12
-rw-r--r--Doc/whatsnew/3.5.rst3
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS4
-rw-r--r--Modules/socketmodule.c3
-rwxr-xr-xconfigure30
-rw-r--r--configure.ac10
-rw-r--r--pyconfig.h.in3
8 files changed, 65 insertions, 1 deletions
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index 530fbb0556..84fa10d774 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -279,6 +279,18 @@ Constants
.. versionadded:: 3.4
+.. data:: CAN_RAW_FD_FRAMES
+
+ Enables CAN FD support in a CAN_RAW socket. This is disabled by default.
+ This allows your application to send both CAN and CAN FD frames; however,
+ you one must accept both CAN and CAN FD frames when reading from the socket.
+
+ This constant is documented in the Linux documentation.
+
+ Availability: Linux >= 3.6.
+
+ .. versionadded:: 3.5
+
.. data:: AF_RDS
PF_RDS
SOL_RDS
diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
index 7a8c3f8bf3..a1130df3c8 100644
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -792,6 +792,9 @@ Changes in the Python API
in Python 3.5, all old `.pyo` files from previous versions of Python are
invalid regardless of this PEP.
+ * The :mod:`socket` module now exports the CAN_RAW_FD_FRAMES constant on linux
+ 3.6 and greater.
+
Changes in the C API
--------------------
diff --git a/Misc/ACKS b/Misc/ACKS
index d1074bda05..eeb18699e1 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -664,6 +664,7 @@ Flemming Kjær Jensen
Philip H. Jensen
Philip Jenvey
MunSic Jeong
+Joe Jevnik
Chris Jerdonek
Jim Jewett
Pedro Diaz Jimenez
diff --git a/Misc/NEWS b/Misc/NEWS
index e4574a11c3..79ed545695 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1,4 +1,4 @@
-+++++++++++
++++++++++++
Python News
+++++++++++
@@ -9,6 +9,8 @@ Release date: XXX
Core and Builtins
-----------------
+- Issue #22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES.
+ Patch courtesy of Joe Jevnik.
- Issue #23731: Implement PEP 488: removal of .pyo files.
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index fd20b174d3..7610b0c05d 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -6617,6 +6617,9 @@ PyInit__socket(void)
PyModule_AddIntMacro(m, CAN_RAW_LOOPBACK);
PyModule_AddIntMacro(m, CAN_RAW_RECV_OWN_MSGS);
#endif
+#ifdef HAVE_LINUX_CAN_RAW_FD_FRAMES
+ PyModule_AddIntMacro(m, CAN_RAW_FD_FRAMES);
+#endif
#ifdef HAVE_LINUX_CAN_BCM_H
PyModule_AddIntMacro(m, CAN_BCM);
PyModule_AddIntConstant(m, "CAN_BCM_TX_SETUP", TX_SETUP);
diff --git a/configure b/configure
index 72751ed1f3..26b89112dc 100755
--- a/configure
+++ b/configure
@@ -10495,6 +10495,36 @@ if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
fi
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAN_RAW_FD_FRAMES" >&5
+$as_echo_n "checking for CAN_RAW_FD_FRAMES... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+ /* CAN_RAW_FD_FRAMES available check */
+#include <linux/can/raw.h>
+int
+main ()
+{
+int can_raw_fd_frames = CAN_RAW_FD_FRAMES;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+
+$as_echo "#define HAVE_LINUX_CAN_RAW_FD_FRAMES 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
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSX 10.5 SDK or later" >&5
$as_echo_n "checking for OSX 10.5 SDK or later... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
diff --git a/configure.ac b/configure.ac
index 69f7b7dd11..d15f26426d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2876,6 +2876,16 @@ if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
fi
fi
+AC_MSG_CHECKING(for CAN_RAW_FD_FRAMES)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* CAN_RAW_FD_FRAMES available check */
+#include <linux/can/raw.h>]],
+[[int can_raw_fd_frames = CAN_RAW_FD_FRAMES;]])],[
+ AC_DEFINE(HAVE_LINUX_CAN_RAW_FD_FRAMES, 1, [Define if compiling using Linux 3.6 or later.])
+ AC_MSG_RESULT(yes)
+],[
+ AC_MSG_RESULT(no)
+])
+
AC_MSG_CHECKING(for OSX 10.5 SDK or later)
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
diff --git a/pyconfig.h.in b/pyconfig.h.in
index c8ce976045..0d40c94cd4 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -531,6 +531,9 @@
/* Define to 1 if you have the <linux/can.h> header file. */
#undef HAVE_LINUX_CAN_H
+/* Define if compiling using Linux 3.6 or later. */
+#undef HAVE_LINUX_CAN_RAW_FD_FRAMES
+
/* Define to 1 if you have the <linux/can/raw.h> header file. */
#undef HAVE_LINUX_CAN_RAW_H