1 /* SPDX-License-Identifier: Apache-2.0
2 * Copyright(c) 2021 Cisco Systems, Inc.
5 #ifndef __snort_snort_h__
6 #define __snort_snort_h__
8 #include <vppinfra/error.h>
9 #include <vppinfra/socket.h>
10 #include <vlib/vlib.h>
11 #include <snort/daq_vpp.h>
15 CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
17 daq_vpp_desc_t *descriptors;
18 volatile u32 *enq_head;
19 volatile u32 *deq_head;
20 volatile u32 *enq_ring;
21 volatile u32 *deq_ring;
24 u32 deq_fd_file_index;
30 /* temporary storeage used by enqueue node */
32 u16 pending_nexts[VLIB_FRAME_SIZE];
33 u32 pending_buffers[VLIB_FRAME_SIZE];
34 daq_vpp_desc_t pending_descs[VLIB_FRAME_SIZE];
44 snort_qpair_t *qpairs;
46 u8 drop_on_disconnect;
54 } snort_client_msg_queue_elt;
61 snort_client_msg_queue_elt *msg_queue;
66 /* per-instance dequeue interrupts */
68 } snort_per_thread_data_t;
72 clib_socket_t *listener;
73 snort_client_t *clients;
74 snort_instance_t *instances;
75 uword *instance_by_name;
76 u32 *instance_by_sw_if_index;
77 u8 **buffer_pool_base_addrs;
78 snort_per_thread_data_t *per_thread_data;
83 extern snort_main_t snort_main;
84 extern vlib_node_registration_t snort_enq_node;
85 extern vlib_node_registration_t snort_deq_node;
90 SNORT_ENQ_N_NEXT_NODES,
93 #define SNORT_ENQ_NEXT_NODES \
95 [SNORT_ENQ_NEXT_DROP] = "error-drop", \
99 clib_error_t *snort_instance_create (vlib_main_t *vm, char *name,
100 u8 log2_queue_sz, u8 drop_on_disconnect);
101 clib_error_t *snort_interface_enable_disable (vlib_main_t *vm,
103 u32 sw_if_index, int is_enable);
104 clib_error_t *snort_set_node_mode (vlib_main_t *vm, u32 mode);
107 snort_freelist_init (u32 *fl)
109 for (int j = 0; j < vec_len (fl); j++)
113 #endif /* __snort_snort_h__ */