1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/* Copyright (C) 2017 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
/**
* \file
*
* \author Phil Young <py@napatech.com>
*
*/
#ifndef __UTIL_NAPATECH_H__
#define __UTIL_NAPATECH_H__
#ifdef HAVE_NAPATECH
#include <nt.h>
typedef struct NapatechPacketVars_
{
uint64_t stream_id;
NtNetBuf_t nt_packet_buf;
NtNetStreamRx_t rx_stream;
NtFlowStream_t flow_stream;
ThreadVars *tv;
#ifdef NAPATECH_ENABLE_BYPASS
NtDyn3Descr_t *dyn3;
int bypass;
#endif
} NapatechPacketVars;
typedef struct NapatechStreamConfig_
{
uint8_t stream_id;
bool is_active;
bool initialized;
} NapatechStreamConfig;
typedef struct NapatechCurrentStats_
{
uint64_t current_packets;
uint64_t current_bytes;
uint64_t current_drop_packets;
uint64_t current_drop_bytes;
} NapatechCurrentStats;
#define MAX_HOSTBUFFER 4
#define MAX_STREAMS 256
#define MAX_PORTS 80
#define MAX_ADAPTERS 8
#define HB_HIGHWATER 2048 //1982
extern void NapatechStartStats(void);
#define NAPATECH_ERROR(status) \
{ \
char errorBuffer[1024]; \
NT_ExplainError((status), errorBuffer, sizeof(errorBuffer) - 1); \
SCLogError("Napatech Error: %s", errorBuffer); \
}
#define NAPATECH_NTPL_ERROR(ntpl_cmd, ntpl_info, status) \
{ \
char errorBuffer[1024]; \
NT_ExplainError(status, errorBuffer, sizeof(errorBuffer) - 1); \
SCLogError(" NTPL failed: %s", errorBuffer); \
SCLogError(" cmd: %s", ntpl_cmd); \
if (strncmp(ntpl_info.u.errorData.errBuffer[0], "", 256) != 0) \
SCLogError(" %s", ntpl_info.u.errorData.errBuffer[0]); \
if (strncmp(ntpl_info.u.errorData.errBuffer[1], "", 256) != 0) \
SCLogError(" %s", ntpl_info.u.errorData.errBuffer[1]); \
if (strncmp(ntpl_info.u.errorData.errBuffer[2], "", 256) != 0) \
SCLogError(" %s", ntpl_info.u.errorData.errBuffer[2]); \
}
// #define ENABLE_NT_DEBUG
#ifdef ENABLE_NT_DEBUG
void NapatechPrintIP(uint32_t address);
#define NAPATECH_DEBUG(...) printf(__VA_ARGS__)
#define NAPATECH_PRINTIP(a) NapatechPrintIP(uint32_t address)
#else
#define NAPATECH_DEBUG(...)
#define NAPATECH_PRINTIP(a)
#endif
NapatechCurrentStats NapatechGetCurrentStats(uint16_t id);
int NapatechGetStreamConfig(NapatechStreamConfig stream_config[]);
bool NapatechSetupNuma(uint32_t stream, uint32_t numa);
uint32_t NapatechSetupTraffic(uint32_t first_stream, uint32_t last_stream);
uint32_t NapatechDeleteFilters(void);
#ifdef NAPATECH_ENABLE_BYPASS
/* */
#define NAPATECH_KEYTYPE_IPV4 3
#define NAPATECH_KEYTYPE_IPV4_SPAN 4
#define NAPATECH_KEYTYPE_IPV6 5
#define NAPATECH_KEYTYPE_IPV6_SPAN 6
#define NAPATECH_FLOWTYPE_DROP 7
#define NAPATECH_FLOWTYPE_PASS 8
int NapatechVerifyBypassSupport(void);
int NapatechGetNumAdapters(void);
int NapatechIsBypassSupported(void);
#endif /* NAPATECH_ENABLE_BYPASS */
#endif /* HAVE_NAPATECH */
#endif /* __UTIL_NAPATECH_H__ */
|