]> rtime.felk.cvut.cz Git - can-eth-gw.git/blobdiff - kernel/canethgw.h
passing parameters to kernel via ioctl
[can-eth-gw.git] / kernel / canethgw.h
index d8743d67b09efb86c26e16e3928bae5500a58ac1..c082fcac57951dd492b723afc9123a1611c7e733 100644 (file)
@@ -11,42 +11,64 @@ struct rtcanmsg {
        __u16 flags;
 };
 
+/* CEGW_CMD_INFO values */
 enum {
-       CGW_TYPE_UNSPEC,
-       CGW_TYPE_CAN_CAN,          /* CAN->CAN routing */
-       CGW_TYPE_CAN_ETH_UDP,  /* CAN->ETH udp */
-       CGW_TYPE_ETH_CAN_UDP,  /* ETH->CAN udp */
-       CGW_TYPE_CAN_ETH_TCP,
-       CGW_TYPE_CONFIG,
-       CEGW_FLUSH,
+       CEGW_RULE_CAN_ETH,
+       CEGW_RULE_ETH_CAN,
        CEGW_LISTEN,
-       __CGW_TYPE_MAX
+       CEGW_FLUSH,
+       __CEGW_CMD_MAX
 };
-
-#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
+#define CEGW_CMD_MAX (__CEGW_CMD_MAX - 1)
 
 /* rtnetlink attributes */
 enum {
-       CGW_UNSPEC,
-       CGW_MOD_AND,    /* CAN frame modification binary AND */
-       CGW_MOD_OR,     /* CAN frame modification binary OR */
-       CGW_MOD_XOR,    /* CAN frame modification binary XOR */
-       CGW_MOD_SET,    /* CAN frame modification set alternate values */
-       CGW_CS_XOR,     /* set data[] XOR checksum into data[index] */
-       CGW_CS_CRC8,    /* set data[] CRC8 checksum into data[index] */
-       CGW_HANDLED,    /* number of handled CAN frames */
-       CGW_DROPPED,    /* number of dropped CAN frames */
-       CGW_CAN_IF,     /* ifindex of source network interface */
-       CGW_LISTEN_IP,
-       CGW_LISTEN_PORT,
-       CGW_CMD_INFO,
-       CGW_ETH_IP,
-       CGW_ETH_PORT,
-       CGW_ETH_PROTO,  /* ifindex of destination network interface */
-       CGW_FILTER,     /* specify struct can_filter on source CAN device */
-       __CGW_MAX
+       CEGW_TYPE,
+       CEGW_CAN_IFINDEX,
+       CEGW_ETH_IP,
+       CEGW_ETH_PORT,
+       CEGW_CMD_INFO,
+       __CEGW_MAX
+};
+#define CEGW_MAX (__CEGW_MAX - 1)
+
+struct cegw_udp_dst
+{
+       __u32 len;
+       struct sockaddr addr;
+};
+
+struct cegw_udp_dst4
+{
+       __u32 len;
+       struct sockaddr_in addr;
 };
 
-#define CGW_MAX (__CGW_MAX - 1)
+struct cegw_ioctl
+{
+       __u32 can_sock;
+       __u32 udp_sock;;
+       __u32 udp_dstcnt;
+       __u32 udp_addrlen;
+       struct sockaddr_in udp_dst[0];
+};
+
+struct cegw_job
+{
+       struct socket* can_sock;
+       struct socket* udp_sock;
+       __u32  udp_dstcnt;
+       struct sockaddr_in* udp_dst;
+};
+
+#define CEGW_IOCTL_BASE 'c'
+#define CEGW_IOCTL_START _IOW(CEGW_IOCTL_BASE, 0, struct cegw_ioctl)
+
+/* ToDo:
+ *     CEGW_HANDLED
+ *     CEGW_DROPPED
+ *     CEGW_ETH_PROTO
+ */
+
 #endif /* CANETHGW_H */