cangw1
Manual page for cangw 2023.03-1
Usage
cangw [options]
Overview
cangw - manage PF_CAN netlink gateway.
Commands:
-
-A -
(add a new rule)
-
-D -
(delete a rule)
-
-F -
(flush / delete all rules)
-
-L -
(list all rules)
Mandatory:
-
-s <src_dev> -
(source netdevice)
-
-d <dst_dev> -
(destination netdevice)
Options
-
-X -
(this is a CAN FD rule)
-
-t -
(preserve src_dev rx timestamp)
-
-e -
(echo sent frames - recommended on vcanx)
-
-i -
(allow to route to incoming interface)
-
-u <uid> -
(user defined modification identifier)
-
-l <hops> -
(limit the number of frame hops / routings)
-
-f <filter> -
(set CAN filter)
-
-m <mod> -
(set Classical CAN frame modifications)
-
-M <MOD> -
(set CAN FD frame modifications)
-
-x <from_idx>:<to_idx>:<result_idx>:<init_xor_val> -
(XOR checksum)
-
-c <from>:<to>:<result>:<init_val>:<xor_val>:<crctab[256]> -
(CRC8 cs)
-
-p <profile>:[<profile_data>] -
(CRC8 checksum profile & parameters)
Values are given and expected in hexadecimal values. Leading 0s can be omitted.
<filter> is a <value><mask> CAN identifier filter:
<can_id>:<can_mask>
|
(matches when <received_can_id> & mask == can_id & mask) |
|---|---|
<can_id>~<can_mask>
|
(matches when <received_can_id> & mask != can_id & mask) |
<mod> is a Classical CAN frame modification instruction consisting of <instruction>:<can_frame-elements>:<can_id>.<can_dlc>.<can_data>
<instruction>
|
is one of 'AND' 'OR' 'XOR' 'SET' |
|---|---|
<can_frame-elements>
|
is _one_ or _more_ of 'I'dentifier 'L'ength 'D'ata |
<can_id>
|
is an u32 value containing the CAN Identifier |
<can_dlc>
|
is an u8 value containing the data length code in hex (0 .. F) |
<can_data>
|
is always eight(!) u8 values containing the CAN frames data |
<MOD> is a CAN FD frame modification instruction consisting of <instruction>:<canfd_frame-elements>:<can_id>.<flags>.<len>.<can_data>
<instruction>
|
is one of 'AND' 'OR' 'XOR' 'SET' |
|---|---|
<canfd_frame-elements>
|
is _one_ or _more_ of 'I'd 'F'lags 'L'ength 'D'ata |
<can_id>
|
is an u32 value containing the CAN FD Identifier |
<flags>
|
is an u8 value containing CAN FD flags (CANFD_BRS, CANFD_ESI) |
<len>
|
is an u8 value containing the data length in hex (0 .. 40) |
<can_data>
|
is always 64(!) u8 values containing the CAN FD frames data |
The max. four modifications are performed in the order AND -> OR -> XOR -> SET
Supported CRC 8 profiles:
Profile '1' (1U8)
|
add one additional u8 value |
|---|---|
Profile '2' (16U8)
|
add u8 value from table[16] indexed by (data[1] & 0xF) |
Profile '3' (SFFID_XOR)
|
add u8 value (can_id & 0xFF) ^ (can_id >> 8 & 0xFF) |
Examples
cangw -A -s can0 -d vcan3 -e -f 123:C00007FF -m SET:IL:333.4.1122334455667788
Releases
4 releases since Debian 10 (Buster); the text changed 2 times.
-M since Debian 11 (Bullseye);
-X since Debian 11 (Bullseye).