diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 17:39:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 17:39:49 +0000 |
commit | a0aa2307322cd47bbf416810ac0292925e03be87 (patch) | |
tree | 37076262a026c4b48c8a0e84f44ff9187556ca35 /src/util-napatech.h | |
parent | Initial commit. (diff) | |
download | suricata-a0aa2307322cd47bbf416810ac0292925e03be87.tar.xz suricata-a0aa2307322cd47bbf416810ac0292925e03be87.zip |
Adding upstream version 1:7.0.3.upstream/1%7.0.3
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/util-napatech.h')
-rw-r--r-- | src/util-napatech.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/src/util-napatech.h b/src/util-napatech.h new file mode 100644 index 0000000..45d4ddf --- /dev/null +++ b/src/util-napatech.h @@ -0,0 +1,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__ */ |