/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef _UAPI_CAN_GW_H
#define _UAPI_CAN_GW_H
#include <linux/types.h>
#include <linux/can.h>
struct rtcanmsg {
  __u8 can_family;
  __u8 gwtype;
  __u16 flags;
};
enum {
  CGW_TYPE_UNSPEC,
  CGW_TYPE_CAN_CAN,
  __CGW_TYPE_MAX
};
#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
enum {
  CGW_UNSPEC,
  CGW_MOD_AND,
  CGW_MOD_OR,
  CGW_MOD_XOR,
  CGW_MOD_SET,
  CGW_CS_XOR,
  CGW_CS_CRC8,
  CGW_HANDLED,
  CGW_DROPPED,
  CGW_SRC_IF,
  CGW_DST_IF,
  CGW_FILTER,
  CGW_DELETED,
  CGW_LIM_HOPS,
  CGW_MOD_UID,
  __CGW_MAX
};
#define CGW_MAX (__CGW_MAX - 1)
#define CGW_FLAGS_CAN_ECHO 0x01
#define CGW_FLAGS_CAN_SRC_TSTAMP 0x02
#define CGW_FLAGS_CAN_IIF_TX_OK 0x04
#define CGW_MOD_FUNCS 4
#define CGW_MOD_ID 0x01
#define CGW_MOD_DLC 0x02
#define CGW_MOD_DATA 0x04
#define CGW_FRAME_MODS 3
#define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
struct cgw_frame_mod {
  struct can_frame cf;
  __u8 modtype;
} __attribute__((packed));
#define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
struct cgw_csum_xor {
  __s8 from_idx;
  __s8 to_idx;
  __s8 result_idx;
  __u8 init_xor_val;
} __attribute__((packed));
struct cgw_csum_crc8 {
  __s8 from_idx;
  __s8 to_idx;
  __s8 result_idx;
  __u8 init_crc_val;
  __u8 final_xor_val;
  __u8 crctab[256];
  __u8 profile;
  __u8 profile_data[20];
} __attribute__((packed));
#define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
#define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8)
enum {
  CGW_CRC8PRF_UNSPEC,
  CGW_CRC8PRF_1U8,
  CGW_CRC8PRF_16U8,
  CGW_CRC8PRF_SFFID_XOR,
  __CGW_CRC8PRF_MAX
};
#define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1)
#endif
