snort: snort3 plugin and DAQ
[vpp.git] / src / plugins / snort / daq_vpp.h
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright(c) 2021 Cisco Systems, Inc.
3  */
4
5 #ifndef __DAQ_VPP_H__
6 #define __DAQ_VPP_H__
7
8 #include <stdint.h>
9
10 #define DAQ_VPP_DEFAULT_SOCKET_FILE "snort.sock"
11 #define DAQ_VPP_DEFAULT_SOCKET_PATH "/run/vpp/" DAQ_VPP_DEFAULT_SOCKET_FILE
12 #define DAQ_VPP_INST_NAME_LEN       32
13
14 typedef enum memif_msg_type
15 {
16   DAQ_VPP_MSG_TYPE_NONE = 0,
17   DAQ_VPP_MSG_TYPE_HELLO = 1,
18   DAQ_VPP_MSG_TYPE_CONFIG = 2,
19   DAQ_VPP_MSG_TYPE_BPOOL = 3,
20   DAQ_VPP_MSG_TYPE_QPAIR = 4,
21 } daq_vpp_msg_type_t;
22
23 typedef struct
24 {
25   char inst_name[DAQ_VPP_INST_NAME_LEN];
26 } daq_vpp_msg_hello_t;
27
28 typedef struct
29 {
30   uint32_t shm_size;
31   uint16_t num_bpools;
32   uint16_t num_qpairs;
33 } daq_vpp_msg_config_t;
34
35 typedef struct
36 {
37   uint32_t size;
38 } daq_vpp_msg_bpool_t;
39
40 typedef struct
41 {
42   uint8_t log2_queue_size;
43   uint32_t desc_table_offset;
44   uint32_t enq_head_offset;
45   uint32_t deq_head_offset;
46   uint32_t enq_ring_offset;
47   uint32_t deq_ring_offset;
48 } daq_vpp_msg_qpair_t;
49
50 typedef struct
51 {
52   daq_vpp_msg_type_t type : 8;
53   union
54   {
55     daq_vpp_msg_hello_t hello;
56     daq_vpp_msg_config_t config;
57     daq_vpp_msg_bpool_t bpool;
58     daq_vpp_msg_qpair_t qpair;
59   };
60 } daq_vpp_msg_t;
61
62 typedef enum
63 {
64   DAQ_VPP_ACTION_DROP,
65   DAQ_VPP_ACTION_FORWARD,
66 } daq_vpp_action_t;
67
68 typedef struct
69 {
70   uint32_t offset;
71   uint16_t length;
72   uint16_t address_space_id;
73   uint8_t buffer_pool;
74   daq_vpp_action_t action : 8;
75 } daq_vpp_desc_t;
76
77 #endif /* __DAQ_VPP_H__ */