gh-86819: Add ISO-TP CAN socket constants (#23794)
Co-authored-by: Stefan Tatschner <stefan@rumpelsepp.org> Co-authored-by: Patrick Menschel <menschel.p@posteo.de>
This commit is contained in:
@@ -404,6 +404,13 @@ shelve
|
|||||||
(Contributed by Andrea Oliveri in :gh:`134004`.)
|
(Contributed by Andrea Oliveri in :gh:`134004`.)
|
||||||
|
|
||||||
|
|
||||||
|
socket
|
||||||
|
------
|
||||||
|
|
||||||
|
* Add constants for the ISO-TP CAN protocol.
|
||||||
|
(Contributed by Patrick Menschel and Stefan Tatschner in :gh:`86819`.)
|
||||||
|
|
||||||
|
|
||||||
sqlite3
|
sqlite3
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|||||||
@@ -2393,6 +2393,45 @@ class ISOTPTest(unittest.TestCase):
|
|||||||
socket.CAN_ISOTP
|
socket.CAN_ISOTP
|
||||||
socket.SOCK_DGRAM
|
socket.SOCK_DGRAM
|
||||||
|
|
||||||
|
@unittest.skipUnless(hasattr(socket, "SOL_CAN_ISOTP"),
|
||||||
|
"missing <linux/can/isotp.h>")
|
||||||
|
def testISOTP(self):
|
||||||
|
socket.SOL_CAN_ISOTP
|
||||||
|
|
||||||
|
socket.CAN_ISOTP_OPTS
|
||||||
|
socket.CAN_ISOTP_RECV_FC
|
||||||
|
|
||||||
|
socket.CAN_ISOTP_TX_STMIN
|
||||||
|
socket.CAN_ISOTP_RX_STMIN
|
||||||
|
socket.CAN_ISOTP_LL_OPTS
|
||||||
|
|
||||||
|
socket.CAN_ISOTP_LISTEN_MODE
|
||||||
|
socket.CAN_ISOTP_EXTEND_ADDR
|
||||||
|
socket.CAN_ISOTP_TX_PADDING
|
||||||
|
socket.CAN_ISOTP_RX_PADDING
|
||||||
|
socket.CAN_ISOTP_CHK_PAD_LEN
|
||||||
|
socket.CAN_ISOTP_CHK_PAD_DATA
|
||||||
|
socket.CAN_ISOTP_HALF_DUPLEX
|
||||||
|
socket.CAN_ISOTP_FORCE_TXSTMIN
|
||||||
|
socket.CAN_ISOTP_FORCE_RXSTMIN
|
||||||
|
socket.CAN_ISOTP_RX_EXT_ADDR
|
||||||
|
socket.CAN_ISOTP_WAIT_TX_DONE
|
||||||
|
# This constant is not always available
|
||||||
|
# socket.CAN_ISOTP_SF_BROADCAST
|
||||||
|
|
||||||
|
socket.CAN_ISOTP_DEFAULT_FLAGS
|
||||||
|
socket.CAN_ISOTP_DEFAULT_EXT_ADDRESS
|
||||||
|
socket.CAN_ISOTP_DEFAULT_PAD_CONTENT
|
||||||
|
socket.CAN_ISOTP_DEFAULT_FRAME_TXTIME
|
||||||
|
socket.CAN_ISOTP_DEFAULT_RECV_BS
|
||||||
|
socket.CAN_ISOTP_DEFAULT_EXT_ADDRESS
|
||||||
|
socket.CAN_ISOTP_DEFAULT_RECV_STMIN
|
||||||
|
socket.CAN_ISOTP_DEFAULT_RECV_WFTMAX
|
||||||
|
|
||||||
|
socket.CAN_ISOTP_DEFAULT_LL_MTU
|
||||||
|
socket.CAN_ISOTP_DEFAULT_LL_TX_DL
|
||||||
|
socket.CAN_ISOTP_DEFAULT_LL_TX_FLAGS
|
||||||
|
|
||||||
def testCreateSocket(self):
|
def testCreateSocket(self):
|
||||||
with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s:
|
with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s:
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
:mod:`socket`: Add missing constants for ISO-TP sockets.
|
||||||
@@ -8528,6 +8528,43 @@ socket_exec(PyObject *m)
|
|||||||
|
|
||||||
ADD_INT_MACRO(m, J1939_FILTER_MAX);
|
ADD_INT_MACRO(m, J1939_FILTER_MAX);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_LINUX_CAN_ISOTP_H
|
||||||
|
ADD_INT_MACRO(m, SOL_CAN_ISOTP);
|
||||||
|
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_OPTS);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_RECV_FC);
|
||||||
|
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_TX_STMIN);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_RX_STMIN);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_LL_OPTS);
|
||||||
|
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_LISTEN_MODE);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_EXTEND_ADDR);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_TX_PADDING);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_RX_PADDING);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_CHK_PAD_LEN);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_CHK_PAD_DATA);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_HALF_DUPLEX);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_FORCE_TXSTMIN);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_FORCE_RXSTMIN);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_RX_EXT_ADDR);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_WAIT_TX_DONE);
|
||||||
|
#ifdef CAN_ISOTP_SF_BROADCAST
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_SF_BROADCAST);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_FLAGS);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_EXT_ADDRESS);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_PAD_CONTENT);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_FRAME_TXTIME);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_RECV_BS);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_RECV_STMIN);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_RECV_WFTMAX);
|
||||||
|
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_LL_MTU);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_LL_TX_DL);
|
||||||
|
ADD_INT_MACRO(m, CAN_ISOTP_DEFAULT_LL_TX_FLAGS);
|
||||||
|
#endif
|
||||||
#ifdef SOL_RDS
|
#ifdef SOL_RDS
|
||||||
ADD_INT_MACRO(m, SOL_RDS);
|
ADD_INT_MACRO(m, SOL_RDS);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -165,6 +165,10 @@ typedef int socklen_t;
|
|||||||
#include <linux/can/bcm.h>
|
#include <linux/can/bcm.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LINUX_CAN_ISOTP_H
|
||||||
|
#include <linux/can/isotp.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LINUX_CAN_J1939_H
|
#ifdef HAVE_LINUX_CAN_J1939_H
|
||||||
#include <linux/can/j1939.h>
|
#include <linux/can/j1939.h>
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
13
configure
generated
vendored
13
configure
generated
vendored
@@ -12004,7 +12004,7 @@ then :
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
|
# On Linux, can.h, can/bcm.h, can/isotp.h, can/j1939.h, can/raw.h require sys/socket.h
|
||||||
# On NetBSD, netcan/can.h requires sys/socket.h
|
# On NetBSD, netcan/can.h requires sys/socket.h
|
||||||
ac_fn_c_check_header_compile "$LINENO" "linux/can.h" "ac_cv_header_linux_can_h" "
|
ac_fn_c_check_header_compile "$LINENO" "linux/can.h" "ac_cv_header_linux_can_h" "
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
@@ -12027,6 +12027,17 @@ if test "x$ac_cv_header_linux_can_bcm_h" = xyes
|
|||||||
then :
|
then :
|
||||||
printf "%s\n" "#define HAVE_LINUX_CAN_BCM_H 1" >>confdefs.h
|
printf "%s\n" "#define HAVE_LINUX_CAN_BCM_H 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
ac_fn_c_check_header_compile "$LINENO" "linux/can/isotp.h" "ac_cv_header_linux_can_isotp_h" "
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
"
|
||||||
|
if test "x$ac_cv_header_linux_can_isotp_h" = xyes
|
||||||
|
then :
|
||||||
|
printf "%s\n" "#define HAVE_LINUX_CAN_ISOTP_H 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
ac_fn_c_check_header_compile "$LINENO" "linux/can/j1939.h" "ac_cv_header_linux_can_j1939_h" "
|
ac_fn_c_check_header_compile "$LINENO" "linux/can/j1939.h" "ac_cv_header_linux_can_j1939_h" "
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
|||||||
@@ -3053,10 +3053,10 @@ AC_CHECK_HEADERS([linux/vm_sockets.h], [], [], [
|
|||||||
#endif
|
#endif
|
||||||
])
|
])
|
||||||
|
|
||||||
# On Linux, can.h, can/bcm.h, can/j1939.h, can/raw.h require sys/socket.h
|
# On Linux, can.h, can/bcm.h, can/isotp.h, can/j1939.h, can/raw.h require sys/socket.h
|
||||||
# On NetBSD, netcan/can.h requires sys/socket.h
|
# On NetBSD, netcan/can.h requires sys/socket.h
|
||||||
AC_CHECK_HEADERS(
|
AC_CHECK_HEADERS(
|
||||||
[linux/can.h linux/can/bcm.h linux/can/j1939.h linux/can/raw.h netcan/can.h],
|
[linux/can.h linux/can/bcm.h linux/can/isotp.h linux/can/j1939.h linux/can/raw.h netcan/can.h],
|
||||||
[], [], [
|
[], [], [
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
|||||||
@@ -727,6 +727,9 @@
|
|||||||
/* Define to 1 if you have the <linux/can.h> header file. */
|
/* Define to 1 if you have the <linux/can.h> header file. */
|
||||||
#undef HAVE_LINUX_CAN_H
|
#undef HAVE_LINUX_CAN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <linux/can/isotp.h> header file. */
|
||||||
|
#undef HAVE_LINUX_CAN_ISOTP_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <linux/can/j1939.h> header file. */
|
/* Define to 1 if you have the <linux/can/j1939.h> header file. */
|
||||||
#undef HAVE_LINUX_CAN_J1939_H
|
#undef HAVE_LINUX_CAN_J1939_H
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user