]> rtime.felk.cvut.cz Git - can-eth-gw.git/blob - kernel/canethgw.h
f15b688229dad52899044ea882a76295898a0265
[can-eth-gw.git] / kernel / canethgw.h
1 #ifndef CANETHGW_H
2 #define CANETHGW_H
3
4 #include <linux/types.h>
5 #include <linux/can.h>
6
7 /* these are from gw.h */
8 struct rtcanmsg {
9         __u8  can_family;
10         __u8  gwtype;
11         __u16 flags;
12 };
13
14 /* CEGW_CMD_INFO values */
15 enum {
16         CEGW_RULE_CAN_ETH,
17         CEGW_RULE_ETH_CAN,
18         CEGW_LISTEN,
19         CEGW_FLUSH,
20         __CEGW_CMD_MAX
21 };
22 #define CEGW_CMD_MAX (__CEGW_CMD_MAX - 1)
23
24 /* rtnetlink attributes */
25 enum {
26         CEGW_TYPE,
27         CEGW_CAN_IFINDEX,
28         CEGW_ETH_IP,
29         CEGW_ETH_PORT,
30         CEGW_CMD_INFO,
31         __CEGW_MAX
32 };
33 #define CEGW_MAX (__CEGW_MAX - 1)
34
35 struct cegw_udp_dst
36 {
37         __u32 len;
38         struct sockaddr addr;
39 };
40
41 struct cegw_udp_dst4
42 {
43         __u32 len;
44         struct sockaddr_in addr;
45 };
46
47 struct cegw_ioctl
48 {
49         __u32 can_sock;
50         __u32 udp_sock;
51         __u32 udp_dstcnt;
52         __u32 udp_addrlen;
53         struct sockaddr_in udp_dst[0];
54 };
55
56 #ifdef __KERNEL__
57 struct cegw_job
58 {
59         struct kref refcount;
60         struct socket* can_sock;
61         struct socket* udp_sock;
62         __u32  udp_dstcnt;
63         struct sockaddr_in udp_dst[0];
64 };
65 #endif
66
67 #define CEGW_IOCTL_BASE 'c'
68 #define CEGW_IOCTL_START _IOW(CEGW_IOCTL_BASE, 0, struct cegw_ioctl)
69
70 /* ToDo:
71  *      CEGW_HANDLED
72  *      CEGW_DROPPED
73  *      CEGW_ETH_PROTO
74  */
75
76 #endif /* CANETHGW_H */
77