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_H
20  #define _UAPI_CAN_H
21  #include <linux/types.h>
22  #include <linux/socket.h>
23  #define CAN_EFF_FLAG 0x80000000U
24  #define CAN_RTR_FLAG 0x40000000U
25  #define CAN_ERR_FLAG 0x20000000U
26  #define CAN_SFF_MASK 0x000007FFU
27  #define CAN_EFF_MASK 0x1FFFFFFFU
28  #define CAN_ERR_MASK 0x1FFFFFFFU
29  typedef __u32 canid_t;
30  #define CAN_SFF_ID_BITS 11
31  #define CAN_EFF_ID_BITS 29
32  typedef __u32 can_err_mask_t;
33  #define CAN_MAX_DLC 8
34  #define CAN_MAX_DLEN 8
35  #define CANFD_MAX_DLC 15
36  #define CANFD_MAX_DLEN 64
37  struct can_frame {
38    canid_t can_id;
39    __u8 can_dlc;
40    __u8 __pad;
41    __u8 __res0;
42    __u8 __res1;
43    __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
44  };
45  #define CANFD_BRS 0x01
46  #define CANFD_ESI 0x02
47  struct canfd_frame {
48    canid_t can_id;
49    __u8 len;
50    __u8 flags;
51    __u8 __res0;
52    __u8 __res1;
53    __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
54  };
55  #define CAN_MTU (sizeof(struct can_frame))
56  #define CANFD_MTU (sizeof(struct canfd_frame))
57  #define CAN_RAW 1
58  #define CAN_BCM 2
59  #define CAN_TP16 3
60  #define CAN_TP20 4
61  #define CAN_MCNET 5
62  #define CAN_ISOTP 6
63  #define CAN_J1939 7
64  #define CAN_NPROTO 8
65  #define SOL_CAN_BASE 100
66  struct sockaddr_can {
67    __kernel_sa_family_t can_family;
68    int can_ifindex;
69    union {
70      struct {
71        canid_t rx_id, tx_id;
72      } tp;
73      struct {
74        __u64 name;
75        __u32 pgn;
76        __u8 addr;
77      } j1939;
78    } can_addr;
79  };
80  struct can_filter {
81    canid_t can_id;
82    canid_t can_mask;
83  };
84  #define CAN_INV_FILTER 0x20000000U
85  #define CAN_RAW_FILTER_MAX 512
86  #endif
87