1 /* 2 * This file is auto-generated. Modifications will be lost. 3 * 4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5 * for more information. 6 */ 7 #ifndef _UAPI_CAN_GW_H 8 #define _UAPI_CAN_GW_H 9 #include <linux/types.h> 10 #include <linux/can.h> 11 struct rtcanmsg { 12 __u8 can_family; 13 __u8 gwtype; 14 __u16 flags; 15 }; 16 enum { 17 CGW_TYPE_UNSPEC, 18 CGW_TYPE_CAN_CAN, 19 __CGW_TYPE_MAX 20 }; 21 #define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1) 22 enum { 23 CGW_UNSPEC, 24 CGW_MOD_AND, 25 CGW_MOD_OR, 26 CGW_MOD_XOR, 27 CGW_MOD_SET, 28 CGW_CS_XOR, 29 CGW_CS_CRC8, 30 CGW_HANDLED, 31 CGW_DROPPED, 32 CGW_SRC_IF, 33 CGW_DST_IF, 34 CGW_FILTER, 35 CGW_DELETED, 36 CGW_LIM_HOPS, 37 CGW_MOD_UID, 38 CGW_FDMOD_AND, 39 CGW_FDMOD_OR, 40 CGW_FDMOD_XOR, 41 CGW_FDMOD_SET, 42 __CGW_MAX 43 }; 44 #define CGW_MAX (__CGW_MAX - 1) 45 #define CGW_FLAGS_CAN_ECHO 0x01 46 #define CGW_FLAGS_CAN_SRC_TSTAMP 0x02 47 #define CGW_FLAGS_CAN_IIF_TX_OK 0x04 48 #define CGW_FLAGS_CAN_FD 0x08 49 #define CGW_MOD_FUNCS 4 50 #define CGW_MOD_ID 0x01 51 #define CGW_MOD_DLC 0x02 52 #define CGW_MOD_LEN CGW_MOD_DLC 53 #define CGW_MOD_DATA 0x04 54 #define CGW_MOD_FLAGS 0x08 55 #define CGW_FRAME_MODS 4 56 #define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS) 57 struct cgw_frame_mod { 58 struct can_frame cf; 59 __u8 modtype; 60 } __attribute__((packed)); 61 struct cgw_fdframe_mod { 62 struct canfd_frame cf; 63 __u8 modtype; 64 } __attribute__((packed)); 65 #define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod) 66 #define CGW_FDMODATTR_LEN sizeof(struct cgw_fdframe_mod) 67 struct cgw_csum_xor { 68 __s8 from_idx; 69 __s8 to_idx; 70 __s8 result_idx; 71 __u8 init_xor_val; 72 } __attribute__((packed)); 73 struct cgw_csum_crc8 { 74 __s8 from_idx; 75 __s8 to_idx; 76 __s8 result_idx; 77 __u8 init_crc_val; 78 __u8 final_xor_val; 79 __u8 crctab[256]; 80 __u8 profile; 81 __u8 profile_data[20]; 82 } __attribute__((packed)); 83 #define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor) 84 #define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8) 85 enum { 86 CGW_CRC8PRF_UNSPEC, 87 CGW_CRC8PRF_1U8, 88 CGW_CRC8PRF_16U8, 89 CGW_CRC8PRF_SFFID_XOR, 90 __CGW_CRC8PRF_MAX 91 }; 92 #define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1) 93 #endif 94