Linux-CAN / SocketCAN user space applications
 
 
 
 
Go to file
Oliver Hartkopp da65fdfe0d isotpsniffer: only invoke LL_OPTS setsockopt when set on commandline
In commit da33f96edf ("isotpsniffer: Add support for llopts") the
setsockopt() syscall for the link layer options CAN_ISOTP_LL_OPTS
has been added.

Unfortunately the syscall has been invoked even if there were no values
given on the command line and 'zero values' have been passed to the
kernel which correctly answered with -EINVAL.

And a missing check for a mandatory non-zero value for the MTU.

Fixes: da33f96edf ("isotpsniffer: Add support for llopts")
Reported by: https://github.com/ikuyas
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2020-02-04 17:28:11 +01:00
.github/workflows add github actions 2019-11-25 15:29:47 +01:00
LICENSES Add license texts as files 2019-09-26 15:45:43 +02:00
cmake CMake first pass (#90) 2018-08-17 09:50:30 +02:00
config/m4 add autotools infrastructure 2010-04-19 12:12:18 +00:00
include/linux include: import header files from kernel v5.4-rc7 2019-11-12 08:59:58 +01:00
.gitignore add jcat 2019-01-04 13:01:11 +01:00
.travis.yml CI: treat gcc warning as errors 2018-09-13 10:38:19 +02:00
Android.mk can-utils: added isotpperf tool for performance measurements 2015-02-04 10:17:38 +01:00
CMakeLists.txt buildsystem: add SCM_TIMESTAMPING_OPT_STATS if not already defined 2019-05-09 14:40:16 +02:00
GNUmakefile.am include: add errqueue.h, net_tstamp.h, netlink.h 2019-05-09 14:36:53 +02:00
Makefile buildsystem: add SCM_TIMESTAMPING_OPT_STATS if not already defined 2019-05-09 14:40:16 +02:00
README.md Fix spelling in various files 2019-11-11 14:21:49 +01:00
asc2log.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
autogen.sh do not use --symlink for autoreconf 2014-07-02 16:03:34 +02:00
bcmserver.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
can-calc-bit-timing.c Relicense GPL-2.0-or-later files to GPL-2.0-only 2019-07-10 14:01:23 +02:00
can-j1939-kickstart.md can-j1939-kickstart: remove "Use source address" example 2019-12-02 08:29:45 +01:00
can-j1939.md Fix spelling in various files 2019-11-11 14:21:49 +01:00
canbusload.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
candump.c candump: remove bridging functionality 2020-01-04 14:11:34 +01:00
canfdtest.c Relicense GPL-2.0-or-later files to GPL-2.0-only 2019-07-10 14:01:23 +02:00
canframelen.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
canframelen.h Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cangen.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cangw.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
canlogserver.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
canplayer.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
cansend.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
cansniffer.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
configure.ac buildsystem: add SCM_TIMESTAMPING_OPT_STATS if not already defined 2019-05-09 14:40:16 +02:00
isotpdump.c isotpdump: fix service 0x23 naming according to UDS specification 2019-07-30 22:09:50 +02:00
isotpperf.c fix include to find SIOCGSTAMP with latest kernel 2019-07-14 22:14:10 +02:00
isotprecv.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
isotpsend.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
isotpserver.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
isotpsniffer.c isotpsniffer: only invoke LL_OPTS setsockopt when set on commandline 2020-02-04 17:28:11 +01:00
isotptun.c isotptun: fix stringop-truncation warnings 2019-08-25 18:20:37 +02:00
jacd.c jacd: remove SO_BINDTODEVICE setsockopt call 2019-12-06 11:24:44 +01:00
jcat.c treewide: Fix compilation on libmusl, replace error() by err() 2019-10-30 11:59:49 +01:00
jspy.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
jsr.c treewide: Fix compilation on libmusl, replace error() by err() 2019-10-30 11:59:49 +01:00
lib.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
lib.h Fix spelling in various files 2019-11-11 14:21:49 +01:00
libj1939.c libj1939: fix missing include and syntax 2019-11-12 10:04:24 +01:00
libj1939.h libj1939.h: add missing license and copyright header 2019-09-26 15:46:20 +02:00
log2asc.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
log2long.c Add SPDX identifiers 2019-06-19 12:24:24 +02:00
page.theme import sample program & help page 2013-11-20 11:14:44 +01:00
slcan_attach.c slcan tools: fix stringop-truncation warnings 2019-08-25 18:25:35 +02:00
slcand.c slcan tools: fix stringop-truncation warnings 2019-08-25 18:25:35 +02:00
slcanpty.c Fix spelling in various files 2019-11-11 14:21:49 +01:00
style.css import sample program & help page 2013-11-20 11:14:44 +01:00
terminal.h Add SPDX identifiers 2019-06-19 12:24:24 +02:00
testj1939.c testj1939: add optional promiscuous mode and boradcast support 2019-11-29 13:53:55 +01:00

README.md

SocketCAN logo

SocketCAN userspace utilities and tools

This repository contains some userspace utilities for Linux CAN subsystem (aka SocketCAN):

Basic tools to display, record, generate and replay CAN traffic

  • candump : display, filter and log CAN data to files
  • canplayer : replay CAN logfiles
  • cansend : send a single frame
  • cangen : generate (random) CAN traffic
  • cansniffer : display CAN data content differences (just 11bit CAN IDs)

CAN access via IP sockets

  • canlogserver : log CAN frames from a remote/local host
  • bcmserver : interactive BCM configuration (remote/local)
  • socketcand : use RAW/BCM/ISO-TP sockets via TCP/IP sockets
  • cannelloni : UDP/SCTP based SocketCAN tunnel

CAN in-kernel gateway configuration

  • cangw : CAN gateway userspace tool for netlink configuration

CAN bus measurement and testing

  • canbusload : calculate and display the CAN busload
  • can-calc-bit-timing : userspace version of in-kernel bitrate calculation
  • canfdtest : Full-duplex test program (DUT and host part)

ISO-TP tools ISO15765-2:2016 for Linux

  • isotpsend : send a single ISO-TP PDU
  • isotprecv : receive ISO-TP PDU(s)
  • isotpsniffer : 'wiretap' ISO-TP PDU(s)
  • isotpdump : 'wiretap' and interpret CAN messages (CAN_RAW)
  • isotpserver : IP server for simple TCP/IP <-> ISO 15765-2 bridging (ASCII HEX)
  • isotpperf : ISO15765-2 protocol performance visualisation
  • isotptun : create a bi-directional IP tunnel on CAN via ISO-TP

Log file converters

  • asc2log : convert ASC logfile to compact CAN frame logfile
  • log2asc : convert compact CAN frame logfile to ASC logfile
  • log2long : convert compact CAN frame representation into user readable

Serial Line Discipline configuration (for slcan driver)

  • slcan_attach : userspace tool for serial line CAN interface configuration
  • slcand : daemon for serial line CAN interface configuration
  • slcanpty : creates a pty for applications using the slcan ASCII protocol

CMake Project Generator

  • Place your build folder anywhere, passing CMake the path. Relative or absolute.
  • Some examples using a build folder under the source tree root:
  • Android : cmake -DCMAKE_TOOLCHAIN_FILE=~/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-21 -DANDROID_ABI=armeabi-v7a .. && make
  • Android Studio : Copy repo under your project's app folder, add add_subdirectory(can-utils) to your CMakeLists.txt file after cmake_minimum_required(). Generating project will build Debug/Release for all supported EABI types. ie. arm64-v8a, armeabi-v7a, x86, x86_64.
  • Raspberry Pi : cmake -DCMAKE_TOOLCHAIN_FILE=~/rpi/tools/build/cmake/rpi.toolchain.cmake .. && make
  • Linux : cmake -GNinja .. && ninja
  • Linux Eclipse Photon (Debug) : CC=clang cmake -G"Eclipse CDT4 - Unix Makefiles" ../can-utils/ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ECLIPSE_VERSION=4.8.0
  • To override the base installation directory use: CMAKE_INSTALL_PREFIX ie. CC=clang cmake -DCMAKE_INSTALL_PREFIX=./out .. && make install

Additional Information: