CANGW(1)

NAME
cangw - manual page for cangw 2023.03-1

SYNOPSIS
cangw [options]

DESCRIPTION
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