(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
-------
socket.CAN_ISOTP
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):
with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s:
pass
--- /dev/null
+:mod:`socket`: Add missing constants for ISO-TP sockets.
ADD_INT_MACRO(m, J1939_FILTER_MAX);
#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
ADD_INT_MACRO(m, SOL_RDS);
#endif
#include <linux/can/bcm.h>
#endif
+#ifdef HAVE_LINUX_CAN_ISOTP_H
+#include <linux/can/isotp.h>
+#endif
+
#ifdef HAVE_LINUX_CAN_J1939_H
#include <linux/can/j1939.h>
#endif
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
ac_fn_c_check_header_compile "$LINENO" "linux/can.h" "ac_cv_header_linux_can_h" "
#ifdef HAVE_SYS_SOCKET_H
then :
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
ac_fn_c_check_header_compile "$LINENO" "linux/can/j1939.h" "ac_cv_header_linux_can_j1939_h" "
#ifdef HAVE_SYS_SOCKET_H
#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
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
#include <sys/socket.h>
/* Define to 1 if you have the <linux/can.h> header file. */
#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. */
#undef HAVE_LINUX_CAN_J1939_H