1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _UAPI_CAN_GW_H
20#define _UAPI_CAN_GW_H
21#include <linux/types.h>
22#include <linux/can.h>
23struct rtcanmsg {
24  __u8 can_family;
25  __u8 gwtype;
26  __u16 flags;
27};
28enum {
29  CGW_TYPE_UNSPEC,
30  CGW_TYPE_CAN_CAN,
31  __CGW_TYPE_MAX
32};
33#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
34enum {
35  CGW_UNSPEC,
36  CGW_MOD_AND,
37  CGW_MOD_OR,
38  CGW_MOD_XOR,
39  CGW_MOD_SET,
40  CGW_CS_XOR,
41  CGW_CS_CRC8,
42  CGW_HANDLED,
43  CGW_DROPPED,
44  CGW_SRC_IF,
45  CGW_DST_IF,
46  CGW_FILTER,
47  CGW_DELETED,
48  CGW_LIM_HOPS,
49  CGW_MOD_UID,
50  __CGW_MAX
51};
52#define CGW_MAX (__CGW_MAX - 1)
53#define CGW_FLAGS_CAN_ECHO 0x01
54#define CGW_FLAGS_CAN_SRC_TSTAMP 0x02
55#define CGW_FLAGS_CAN_IIF_TX_OK 0x04
56#define CGW_MOD_FUNCS 4
57#define CGW_MOD_ID 0x01
58#define CGW_MOD_DLC 0x02
59#define CGW_MOD_DATA 0x04
60#define CGW_FRAME_MODS 3
61#define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
62struct cgw_frame_mod {
63  struct can_frame cf;
64  __u8 modtype;
65} __attribute__((packed));
66#define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
67struct cgw_csum_xor {
68  __s8 from_idx;
69  __s8 to_idx;
70  __s8 result_idx;
71  __u8 init_xor_val;
72} __attribute__((packed));
73struct 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)
85enum {
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