From 39cf5b151a73ea24f926946abebf253a76e09eb8 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 16 Sep 2022 11:08:21 +0200 Subject: [PATCH] src: includes cleanup Work towards making `suricata-common.h` only introduce system headers and other things that are independent of complex internal Suricata data structures. Update files to compile after this. Remove special DPDK handling for strlcpy and strlcat, as this caused many compilation failures w/o including DPDK headers for all files. Remove packet macros from decode.h and move them into their own file, turn them into functions and rename them to match our function naming policy. --- configure.ac | 6 - qa/coccinelle/pktnotset-packet.cocci | 2 +- src/Makefile.am | 2 + src/app-layer-detect-proto.c | 1 + src/app-layer-detect-proto.h | 3 + src/app-layer-frames.c | 1 + src/app-layer-ftp.c | 33 +---- src/app-layer-htp-body.c | 36 +---- src/app-layer-htp-file.c | 39 +---- src/app-layer-htp-libhtp.c | 2 +- src/app-layer-htp-mem.c | 6 +- src/app-layer-htp.c | 2 + src/app-layer-htp.h | 2 - src/app-layer-modbus.c | 2 +- src/app-layer-parser.c | 41 ++---- src/app-layer.c | 2 +- src/conf.c | 1 + src/counters.c | 22 ++- src/counters.h | 2 + src/datasets.c | 3 + src/decode-geneve.c | 1 + src/decode-icmpv6.c | 60 ++++---- src/decode-ipv4.c | 39 ++--- src/decode-ipv6.c | 21 +-- src/decode-null.c | 4 - src/decode-raw.c | 18 +-- src/decode-tcp.c | 15 +- src/decode-teredo.c | 2 + src/decode-vlan.c | 12 +- src/decode-vntag.c | 11 +- src/decode-vxlan.c | 5 +- src/decode.c | 36 ++--- src/decode.h | 118 +-------------- src/defrag-config.c | 7 +- src/defrag-config.h | 2 + src/defrag-hash.h | 1 + src/defrag-queue.c | 1 - src/defrag-queue.h | 1 + src/defrag-timeout.c | 1 + src/defrag.c | 5 +- src/defrag.h | 1 + src/detect-byte.h | 2 + src/detect-content.c | 2 +- src/detect-csum.c | 4 +- src/detect-datarep.c | 1 + src/detect-dataset.c | 2 + src/detect-dsize.c | 4 +- src/detect-engine-analyzer.c | 1 + src/detect-engine-build.c | 1 + src/detect-engine-loader.c | 1 + src/detect-engine-port.c | 2 +- src/detect-engine-prefilter.h | 1 + src/detect-engine-profile.c | 10 +- src/detect-engine-profile.h | 2 + src/detect-engine.c | 1 + src/detect-filename.c | 1 + src/detect-flowbits.c | 1 + src/detect-fragbits.c | 4 +- src/detect-fragoffset.c | 3 +- src/detect-http-headers-stub.h | 2 + src/detect-parse.c | 4 +- src/detect-parse.h | 2 + src/detect-replace.c | 2 +- src/device-storage.h | 1 + src/feature.c | 5 +- src/flow-bypass.h | 3 + src/flow-hash.h | 2 + src/flow-storage.h | 1 + src/flow-util.h | 1 + src/log-cf-common.c | 1 + src/log-pcap.c | 37 ++--- src/log-tcp-data.c | 23 +-- src/log-tcp-data.h | 3 + src/log-tlsstore.c | 23 +-- src/output-file.c | 8 +- src/output-file.h | 2 - src/output-filedata.c | 3 +- src/output-filedata.h | 3 - src/output-filestore.c | 10 +- src/output-flow.c | 1 - src/output-json-common.c | 16 +- src/output-json-dcerpc.c | 15 -- src/output-json-smb.c | 15 -- src/output-lua.c | 19 +-- src/output-packet.c | 1 - src/output-packet.h | 3 - src/output-stats.c | 7 +- src/output-streaming.c | 1 - src/output-tx.c | 1 - src/output-tx.h | 1 + src/output.h | 3 + src/packet-queue.h | 2 + src/packet.c | 141 ++++++++++++++++++ src/packet.h | 29 ++++ src/reputation.c | 17 +-- src/reputation.h | 3 + src/runmode-af-packet.c | 1 + src/runmode-dpdk.c | 3 + src/runmode-netmap.c | 2 + src/runmode-pcap.c | 10 +- src/runmode-pfring.c | 5 +- src/runmode-unittests.c | 4 +- src/rust-context.h | 6 + src/rust.h | 4 +- src/source-dpdk.c | 1 + src/source-dpdk.h | 2 + src/source-napatech.c | 1 + src/stream-tcp-inline.c | 1 + src/stream-tcp-reassemble.h | 7 +- src/stream.h | 1 + src/suricata-common.h | 35 +++-- src/suricata.c | 169 +++++++--------------- src/tests/detect-ttl.c | 3 +- src/tests/detect.c | 16 +- src/tests/fuzz/fuzz_applayerparserparse.c | 1 + src/tests/fuzz/fuzz_decodepcapfile.c | 1 + src/tests/fuzz/fuzz_predefpcap_aware.c | 3 +- src/tests/fuzz/fuzz_sigpcap.c | 4 +- src/tests/fuzz/fuzz_sigpcap_aware.c | 3 +- src/threads-profile.h | 11 ++ src/threads.h | 7 - src/tm-threads.h | 1 + src/tmqh-packetpool.c | 37 ++--- src/unix-manager.c | 4 +- src/unix-manager.h | 2 + src/util-affinity.c | 7 +- src/util-affinity.h | 1 + src/util-base64.c | 1 + src/util-bpf.c | 3 +- src/util-checksum.c | 1 - src/util-checksum.h | 2 + src/util-cidr.c | 1 + src/util-conf.c | 1 + src/util-coredump-config.c | 5 + src/util-datalink.c | 2 +- src/util-debug-filters.c | 2 + src/util-debug-filters.h | 2 +- src/util-debug.c | 21 +-- src/util-decode-mime.c | 2 +- src/util-decode-mime.h | 6 +- src/util-device.c | 1 + src/util-dpdk-i40e.c | 2 + src/util-dpdk-ice.c | 1 + src/util-dpdk-ixgbe.c | 1 + src/util-dpdk.c | 1 + src/util-exception-policy.h | 2 + src/util-file.h | 1 + src/util-hash-string.h | 2 + src/util-hash.c | 1 + src/util-host-info.c | 1 + src/util-ioctl.c | 5 +- src/util-ip.c | 1 + src/util-landlock.c | 3 +- src/util-log-redis.c | 1 + src/util-logopenfile.c | 2 + src/util-logopenfile.h | 1 + src/util-lua-common.c | 1 + src/util-lua.h | 7 +- src/util-magic.c | 3 +- src/util-mem.c | 1 + src/util-memcmp.c | 3 +- src/util-memcmp.h | 1 - src/util-mpm-ac.h | 2 + src/util-mpm.h | 5 - src/util-pages.c | 1 + src/util-pidfile.c | 1 + src/util-plugin.c | 1 + src/util-pool-thread.h | 1 + src/util-prefilter.c | 1 + src/util-prefilter.h | 8 + src/util-privs.h | 2 + src/util-profiling-keywords.c | 18 +-- src/util-profiling-locks.c | 4 +- src/util-profiling-locks.h | 9 -- src/util-profiling-prefilter.c | 15 +- src/util-profiling-rulegroups.c | 13 +- src/util-profiling-rules.c | 13 +- src/util-profiling.c | 13 +- src/util-profiling.h | 4 + src/util-proto-name.c | 1 + src/util-random.c | 2 +- src/util-reference-config.h | 2 + src/util-rohash.c | 2 +- src/util-spm-hs.c | 4 +- src/util-spm.c | 2 +- src/util-storage.c | 1 + src/util-streaming-buffer.c | 1 + src/util-thash.h | 1 + src/util-unittest-helper.h | 13 ++ 189 files changed, 700 insertions(+), 907 deletions(-) create mode 100644 src/packet.c create mode 100644 src/packet.h diff --git a/configure.ac b/configure.ac index 6a28ea10b9..1685f2de30 100644 --- a/configure.ac +++ b/configure.ac @@ -1321,12 +1321,6 @@ fi AC_DEFINE([HAVE_DPDK],[1],(DPDK support enabled)) - PKG_CHECK_EXISTS(libdpdk >= 20.11, [pkgconfig_libdpdk_above20=yes], ) - if test "$pkgconfig_libdpdk_above20" = "yes"; then - AC_DEFINE([HAVE_STRLCAT],[1],[STRLCAT is predefined by DPDK 20.11+]) - AC_DEFINE([HAVE_STRLCPY],[1],[STRLCPY is predefined by DPDK 20.11+]) - fi - PKG_CHECK_EXISTS(libdpdk >= 19.11, , [with_pkgconfig_libdpdk=no]) if test "$with_pkgconfig_libdpdk" = "no"; then echo diff --git a/qa/coccinelle/pktnotset-packet.cocci b/qa/coccinelle/pktnotset-packet.cocci index ab6a98c1d0..87f7a605c0 100644 --- a/qa/coccinelle/pktnotset-packet.cocci +++ b/qa/coccinelle/pktnotset-packet.cocci @@ -17,7 +17,7 @@ memset(p@p1, 0, ...); ( p->pkt | -PACKET_INITIALIZE(p) +PacketInit(p) ) @script:python depends on !isset@ diff --git a/src/Makefile.am b/src/Makefile.am index e5a855486b..f348e89f22 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -433,6 +433,7 @@ noinst_HEADERS = \ output-stats.h \ output-streaming.h \ output-tx.h \ + packet.h \ packet-queue.h \ pkt-var.h \ queue.h \ @@ -1035,6 +1036,7 @@ libsuricata_c_a_SOURCES = \ output-stats.c \ output-streaming.c \ output-tx.c \ + packet.c \ packet-queue.c \ pkt-var.c \ reputation.c \ diff --git a/src/app-layer-detect-proto.c b/src/app-layer-detect-proto.c index f94b379835..ceb0474a81 100644 --- a/src/app-layer-detect-proto.c +++ b/src/app-layer-detect-proto.c @@ -2266,6 +2266,7 @@ void AppLayerRegisterExpectationProto(uint8_t proto, AppProto alproto) #ifdef UNITTESTS #include "app-layer-htp.h" +#include "detect-engine-alert.h" static AppLayerProtoDetectCtx alpd_ctx_ut; diff --git a/src/app-layer-detect-proto.h b/src/app-layer-detect-proto.h index 7d1430d541..e97b35cc4e 100644 --- a/src/app-layer-detect-proto.h +++ b/src/app-layer-detect-proto.h @@ -25,6 +25,9 @@ #ifndef __APP_LAYER_DETECT_PROTO__H__ #define __APP_LAYER_DETECT_PROTO__H__ +#include "flow.h" +#include "app-layer-protos.h" + typedef struct AppLayerProtoDetectThreadCtx_ AppLayerProtoDetectThreadCtx; typedef AppProto (*ProbingParserFPtr)( diff --git a/src/app-layer-frames.c b/src/app-layer-frames.c index 52fb8c8cca..62e150eb34 100644 --- a/src/app-layer-frames.c +++ b/src/app-layer-frames.c @@ -25,6 +25,7 @@ #include "suricata-common.h" #include "util-print.h" +#include "flow.h" #include "stream-tcp.h" #include "app-layer-frames.h" #include "app-layer-parser.h" diff --git a/src/app-layer-ftp.c b/src/app-layer-ftp.c index 72be86cf41..8980b6ccc4 100644 --- a/src/app-layer-ftp.c +++ b/src/app-layer-ftp.c @@ -26,42 +26,18 @@ */ #include "suricata-common.h" -#include "decode.h" -#include "threads.h" - -#include "util-print.h" -#include "util-pool.h" - -#include "flow-util.h" -#include "flow-storage.h" - -#include "detect-engine-state.h" - -#include "stream-tcp-private.h" -#include "stream-tcp-reassemble.h" -#include "stream-tcp.h" -#include "stream.h" - +#include "app-layer-ftp.h" #include "app-layer.h" -#include "app-layer-protos.h" #include "app-layer-parser.h" -#include "app-layer-ftp.h" #include "app-layer-expectation.h" #include "app-layer-detect-proto.h" -#include "util-spm.h" -#include "util-mpm.h" -#include "util-unittest.h" -#include "util-debug.h" -#include "util-memcmp.h" -#include "util-memrchr.h" -#include "util-mem.h" +#include "rust.h" + #include "util-misc.h" +#include "util-mpm.h" #include "util-validate.h" -#include "output-json.h" -#include "rust.h" - typedef struct FTPThreadCtx_ { MpmThreadCtx *ftp_mpm_thread_ctx; PrefilterRuleStore *pmq; @@ -1539,6 +1515,7 @@ void FTPParserCleanup(void) /* UNITTESTS */ #ifdef UNITTESTS +#include "stream-tcp.h" /** \test Send a get request in one chunk. */ static int FTPParserTest01(void) diff --git a/src/app-layer-htp-body.c b/src/app-layer-htp-body.c index 828550e636..caed4ff9c2 100644 --- a/src/app-layer-htp-body.c +++ b/src/app-layer-htp-body.c @@ -26,42 +26,12 @@ * This file provides a HTTP protocol support for the engine using HTP library. */ -#include "suricata.h" #include "suricata-common.h" -#include "decode.h" -#include "threads.h" - -#include "util-print.h" -#include "util-pool.h" -#include "util-radix-tree.h" - -#include "stream-tcp-private.h" -#include "stream-tcp-reassemble.h" -#include "stream-tcp.h" -#include "stream.h" - -#include "app-layer-protos.h" -#include "app-layer-parser.h" #include "app-layer-htp.h" -#include "app-layer-htp-body.h" #include "app-layer-htp-mem.h" - -#include "util-spm.h" -#include "util-debug.h" -#include "app-layer-htp-file.h" -#include "util-time.h" - -#include "util-unittest.h" -#include "util-unittest-helper.h" -#include "flow-util.h" - -#include "detect-engine.h" -#include "detect-engine-state.h" -#include "detect-parse.h" - -#include "conf.h" - -#include "util-memcmp.h" +#include "app-layer-htp-body.h" +#include "util-streaming-buffer.h" +#include "util-print.h" static StreamingBufferConfig default_cfg = { 0, 3072, HTPCalloc, HTPRealloc, HTPFree }; diff --git a/src/app-layer-htp-file.c b/src/app-layer-htp-file.c index 03fe1c378b..78e8799d71 100644 --- a/src/app-layer-htp-file.c +++ b/src/app-layer-htp-file.c @@ -24,43 +24,10 @@ * using the HTP library. */ -#include "suricata.h" #include "suricata-common.h" -#include "util-validate.h" -#include "decode.h" -#include "threads.h" - -#include "util-print.h" -#include "util-pool.h" -#include "util-radix-tree.h" - -#include "stream-tcp-private.h" -#include "stream-tcp-reassemble.h" -#include "stream-tcp.h" -#include "stream.h" - -#include "app-layer.h" -#include "app-layer-protos.h" -#include "app-layer-parser.h" -#include "app-layer-htp.h" #include "app-layer-htp-file.h" #include "app-layer-htp-range.h" - -#include "util-spm.h" -#include "util-debug.h" -#include "util-time.h" - -#include "util-unittest.h" -#include "util-unittest-helper.h" -#include "flow-util.h" - -#include "detect-engine.h" -#include "detect-engine-state.h" -#include "detect-parse.h" - -#include "conf.h" - -#include "util-memcmp.h" +#include "util-validate.h" /** * \brief Open the file with "filename" and pass the first chunk @@ -374,6 +341,10 @@ end: } #ifdef UNITTESTS +#include "stream-tcp.h" +#include "app-layer-parser.h" +#include "util-unittest-helper.h" + static int HTPFileParserTest01(void) { uint8_t httpbuf1[] = "POST /upload.cgi HTTP/1.1\r\n" diff --git a/src/app-layer-htp-libhtp.c b/src/app-layer-htp-libhtp.c index a4ef784b0e..f7daf70c92 100644 --- a/src/app-layer-htp-libhtp.c +++ b/src/app-layer-htp-libhtp.c @@ -39,8 +39,8 @@ * Anoop Saldanha */ -#include "suricata.h" #include "suricata-common.h" +#include #include "app-layer-htp-libhtp.h" /** diff --git a/src/app-layer-htp-mem.c b/src/app-layer-htp-mem.c index e1893f1e90..7d06db0b1f 100644 --- a/src/app-layer-htp-mem.c +++ b/src/app-layer-htp-mem.c @@ -30,13 +30,11 @@ */ #include "suricata-common.h" -#include "suricata.h" +#include "app-layer-htp-mem.h" #include "conf.h" -#include "util-mem.h" #include "util-misc.h" - -#include "app-layer-htp-mem.h" +#include "util-debug.h" SC_ATOMIC_DECLARE(uint64_t, htp_config_memcap); SC_ATOMIC_DECLARE(uint64_t, htp_memuse); diff --git a/src/app-layer-htp.c b/src/app-layer-htp.c index d7a8cd0a38..c3dec401d7 100644 --- a/src/app-layer-htp.c +++ b/src/app-layer-htp.c @@ -3233,6 +3233,8 @@ void RegisterHTPParsers(void) } #ifdef UNITTESTS +#include "detect-engine-alert.h" + static HTPCfgRec cfglist_backup; void HtpConfigCreateBackup(void) diff --git a/src/app-layer-htp.h b/src/app-layer-htp.h index 51dae0b811..6c6c60e0ba 100644 --- a/src/app-layer-htp.h +++ b/src/app-layer-htp.h @@ -33,8 +33,6 @@ #ifndef __APP_LAYER_HTP_H__ #define __APP_LAYER_HTP_H__ -#include "util-file.h" -#include "util-streaming-buffer.h" #include "rust.h" #include "app-layer-frames.h" diff --git a/src/app-layer-modbus.c b/src/app-layer-modbus.c index 0f608c9c09..2534d72bf6 100644 --- a/src/app-layer-modbus.c +++ b/src/app-layer-modbus.c @@ -40,7 +40,6 @@ #include "app-layer-parser.h" #include "app-layer-modbus.h" -#include "detect-engine-build.h" void ModbusParserRegisterTests(void); @@ -62,6 +61,7 @@ void RegisterModbusParsers(void) #include "detect.h" #include "detect-engine.h" #include "detect-parse.h" +#include "detect-engine-build.h" #include "flow-util.h" diff --git a/src/app-layer-parser.c b/src/app-layer-parser.c index 3b33912bd1..31c4c8ade5 100644 --- a/src/app-layer-parser.c +++ b/src/app-layer-parser.c @@ -24,34 +24,28 @@ */ #include "suricata-common.h" -#include "util-unittest.h" -#include "decode.h" -#include "threads.h" - -#include "util-print.h" -#include "util-pool.h" +#include "app-layer-parser.h" -#include "flow-util.h" +#include "flow.h" #include "flow-private.h" +#include "flow-util.h" -#include "detect-engine-state.h" -#include "detect-engine-port.h" +#include "app-layer-frames.h" #include "stream-tcp.h" -#include "stream-tcp-private.h" -#include "stream.h" -#include "stream-tcp-reassemble.h" + +#include "util-validate.h" #include "app-layer.h" #include "app-layer-detect-proto.h" -#include "app-layer-protos.h" -#include "app-layer-parser.h" + +#include "app-layer-ftp.h" +#include "app-layer-smtp.h" + #include "app-layer-smb.h" #include "app-layer-htp.h" -#include "app-layer-ftp.h" #include "app-layer-ssl.h" #include "app-layer-ssh.h" -#include "app-layer-smtp.h" #include "app-layer-modbus.h" #include "app-layer-enip.h" #include "app-layer-dnp3.h" @@ -61,28 +55,16 @@ #include "app-layer-tftp.h" #include "app-layer-ike.h" #include "app-layer-krb5.h" -#include "app-layer-snmp.h" #include "app-layer-sip.h" #include "app-layer-rfb.h" #include "app-layer-mqtt.h" +#include "app-layer-snmp.h" #include "app-layer-quic.h" #include "app-layer-template.h" #include "app-layer-template-rust.h" #include "app-layer-rdp.h" #include "app-layer-http2.h" -#include "conf.h" -#include "util-spm.h" - -#include "util-debug.h" -#include "decode-events.h" -#include "util-unittest-helper.h" -#include "util-validate.h" - -#include "runmodes.h" - -#include "rust.h" - struct AppLayerParserThreadCtx_ { void *alproto_local_storage[FLOW_PROTO_MAX][ALPROTO_MAX]; }; @@ -1840,6 +1822,7 @@ void AppLayerParserStatePrintDetails(AppLayerParserState *pstate) /***** Unittests *****/ #ifdef UNITTESTS +#include "util-unittest-helper.h" static AppLayerParserCtx alp_ctx_backup_unittest; diff --git a/src/app-layer.c b/src/app-layer.c index e7ac4d2eb3..fb0d407d22 100644 --- a/src/app-layer.c +++ b/src/app-layer.c @@ -25,7 +25,7 @@ */ #include "suricata-common.h" - +#include "suricata.h" #include "app-layer.h" #include "app-layer-parser.h" #include "app-layer-protos.h" diff --git a/src/conf.c b/src/conf.c index 202a25da04..671da0f808 100644 --- a/src/conf.c +++ b/src/conf.c @@ -41,6 +41,7 @@ #include "util-unittest.h" #include "util-debug.h" #include "util-path.h" +#include "util-conf.h" /** Maximum size of a complete domain name. */ #define NODE_NAME_MAX 1024 diff --git a/src/counters.c b/src/counters.c index 6960fe06e9..d323bb2d5e 100644 --- a/src/counters.c +++ b/src/counters.c @@ -25,24 +25,22 @@ */ #include "suricata-common.h" -#include "suricata.h" #include "counters.h" + +#include "suricata.h" #include "threadvars.h" -#include "tm-threads.h" -#include "conf.h" -#include "util-time.h" -#include "util-unittest.h" -#include "util-debug.h" -#include "util-byte.h" -#include "util-privs.h" -#include "util-signal.h" -#include "unix-manager.h" -#include "runmodes.h" #include "output.h" -#include "output-stats.h" #include "output-json-stats.h" +#include "util-byte.h" +#include "util-conf.h" +#include "util-hash.h" +#include "util-time.h" + +#include "tm-threads.h" +#include "util-privs.h" + /* Time interval for syncing the local counters with the global ones */ #define STATS_WUT_TTS 3 diff --git a/src/counters.h b/src/counters.h index f6b6bc07a7..74a505ffc9 100644 --- a/src/counters.h +++ b/src/counters.h @@ -25,6 +25,8 @@ #ifndef __COUNTERS_H__ #define __COUNTERS_H__ +#include "threads.h" + /* forward declaration of the ThreadVars structure */ struct ThreadVars_; diff --git a/src/datasets.c b/src/datasets.c index 5ae1a9f1f3..15a5f6f36c 100644 --- a/src/datasets.c +++ b/src/datasets.c @@ -28,11 +28,14 @@ #include "datasets-md5.h" #include "datasets-sha256.h" #include "datasets-reputation.h" +#include "util-conf.h" #include "util-thash.h" #include "util-print.h" #include "util-base64.h" // decode base64 #include "util-byte.h" #include "util-misc.h" +#include "util-path.h" +#include "util-debug.h" SCMutex sets_lock = SCMUTEX_INITIALIZER; static Dataset *sets = NULL; diff --git a/src/decode-geneve.c b/src/decode-geneve.c index 19c8baf98f..a41d33c46f 100644 --- a/src/decode-geneve.c +++ b/src/decode-geneve.c @@ -31,6 +31,7 @@ #include "decode-geneve.h" #include "decode-events.h" +#include "detect.h" #include "detect-engine-port.h" #include "flow.h" diff --git a/src/decode-icmpv6.c b/src/decode-icmpv6.c index 4325dadf53..36666c9867 100644 --- a/src/decode-icmpv6.c +++ b/src/decode-icmpv6.c @@ -33,21 +33,10 @@ #include "suricata-common.h" #include "decode-icmpv6.h" #include "decode.h" -#include "decode-tcp.h" -#include "decode-sctp.h" -#include "decode-udp.h" -#include "decode-events.h" -#include "util-unittest.h" #include "flow.h" -#include "util-debug.h" #include "util-print.h" #include "util-validate.h" -#include "pkt-var.h" -#include "util-profiling.h" -#include "host.h" - - /** * \brief Get variables and do some checks of the embedded IPV6 packet * @@ -531,6 +520,7 @@ int DecodeICMPV6(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, } #ifdef UNITTESTS +#include "util-unittest-helper.h" static int ICMPV6CalculateValidChecksumtest01(void) { @@ -640,7 +630,7 @@ static int ICMPV6ParamProbTest01(void) p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]); } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -698,7 +688,7 @@ static int ICMPV6PktTooBigTest01(void) SCLogDebug("ICMPV6 IPV6 src and dst properly set"); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -756,7 +746,7 @@ static int ICMPV6TimeExceedTest01(void) SCLogDebug("ICMPV6 IPV6 src and dst properly set"); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -812,7 +802,7 @@ static int ICMPV6DestUnreachTest01(void) p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]); } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -856,7 +846,7 @@ static int ICMPV6EchoReqTest01(void) FAIL; } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -902,7 +892,7 @@ static int ICMPV6EchoRepTest01(void) FAIL; } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -945,7 +935,7 @@ static int ICMPV6ParamProbTest02(void) FAIL_IF(ICMPV6_GET_TYPE(p) != 4 || ICMPV6_GET_CODE(p) != 0); FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_IPV6_UNKNOWN_VER)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -986,7 +976,7 @@ static int ICMPV6PktTooBigTest02(void) FAIL_IF_NULL(p->icmpv6h); FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1023,7 +1013,7 @@ static int ICMPV6TimeExceedTest02(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_PKT_TOO_SMALL)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1063,7 +1053,7 @@ static int ICMPV6DestUnreachTest02(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_IPV6_TRUNC_PKT)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1099,7 +1089,7 @@ static int ICMPV6EchoReqTest02(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1135,7 +1125,7 @@ static int ICMPV6EchoRepTest02(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1175,7 +1165,7 @@ static int ICMPV6PayloadTest01(void) FAIL_IF_NULL(p->payload); FAIL_IF(p->payload_len != 37); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1207,7 +1197,7 @@ static int ICMPV6RouterSolicitTestKnownCode(void) FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1239,7 +1229,7 @@ static int ICMPV6RouterSolicitTestUnknownCode(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1271,7 +1261,7 @@ static int ICMPV6RouterAdvertTestKnownCode(void) FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1303,7 +1293,7 @@ static int ICMPV6RouterAdvertTestUnknownCode(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1335,7 +1325,7 @@ static int ICMPV6NeighbourSolicitTestKnownCode(void) FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1367,7 +1357,7 @@ static int ICMPV6NeighbourSolicitTestUnknownCode(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1399,7 +1389,7 @@ static int ICMPV6NeighbourAdvertTestKnownCode(void) FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1431,7 +1421,7 @@ static int ICMPV6NeighbourAdvertTestUnknownCode(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1463,7 +1453,7 @@ static int ICMPV6RedirectTestKnownCode(void) FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1495,7 +1485,7 @@ static int ICMPV6RedirectTestUnknownCode(void) FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; @@ -1549,7 +1539,7 @@ static int ICMPV6CalculateValidChecksumWithFCS(void) FAIL_IF(ICMPV6CalculateChecksum(p->ip6h->s_ip6_addrs, (uint16_t *)p->icmpv6h, icmpv6_len) != csum); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; diff --git a/src/decode-ipv4.c b/src/decode-ipv4.c index 2c3d781de4..7b84964917 100644 --- a/src/decode-ipv4.c +++ b/src/decode-ipv4.c @@ -32,19 +32,11 @@ */ #include "suricata-common.h" -#include "packet-queue.h" -#include "decode.h" #include "decode-ipv4.h" -#include "decode-events.h" +#include "decode.h" #include "defrag.h" -#include "pkt-var.h" -#include "host.h" - -#include "util-unittest.h" -#include "util-debug.h" -#include "util-optimize.h" +#include "flow.h" #include "util-print.h" -#include "util-profiling.h" /* Generic validation * @@ -624,6 +616,7 @@ int DecodeIPV4(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, /* UNITTESTS */ #ifdef UNITTESTS +#include "packet.h" /** \test IPV4 with no options. */ static int DecodeIPV4OptionsNONETest01(void) @@ -1312,7 +1305,7 @@ static int DecodeIPV4DefragTest01(void) result = 0; goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); PacketCopyData(p, pkt2, sizeof(pkt2)); DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN, @@ -1322,7 +1315,7 @@ static int DecodeIPV4DefragTest01(void) result = 0; goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); PacketCopyData(p, pkt3, sizeof(pkt3)); DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN, @@ -1363,12 +1356,12 @@ static int DecodeIPV4DefragTest01(void) goto end; } - PACKET_RECYCLE(tp); + PacketRecycle(tp); SCFree(tp); end: DefragDestroy(); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return result; @@ -1446,7 +1439,7 @@ static int DecodeIPV4DefragTest02(void) printf("tcp header should be NULL for ip fragment, but it isn't\n"); goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); PacketCopyData(p, pkt2, sizeof(pkt2)); DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN, @@ -1455,7 +1448,7 @@ static int DecodeIPV4DefragTest02(void) printf("tcp header should be NULL for ip fragment, but it isn't\n"); goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); p->recursion_level = 3; PacketCopyData(p, pkt3, sizeof(pkt3)); @@ -1493,12 +1486,12 @@ static int DecodeIPV4DefragTest02(void) } result = 1; - PACKET_RECYCLE(tp); + PacketRecycle(tp); SCFree(tp); end: DefragDestroy(); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return result; @@ -1577,7 +1570,7 @@ static int DecodeIPV4DefragTest03(void) result = 0; goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); PacketCopyData(p, pkt1, sizeof(pkt1)); DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN, @@ -1587,7 +1580,7 @@ static int DecodeIPV4DefragTest03(void) result = 0; goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); PacketCopyData(p, pkt2, sizeof(pkt2)); DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN, @@ -1597,7 +1590,7 @@ static int DecodeIPV4DefragTest03(void) result = 0; goto end; } - PACKET_RECYCLE(p); + PacketRecycle(p); PacketCopyData(p, pkt3, sizeof(pkt3)); DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN, @@ -1648,12 +1641,12 @@ static int DecodeIPV4DefragTest03(void) goto end; } - PACKET_RECYCLE(tp); + PacketRecycle(tp); SCFree(tp); end: DefragDestroy(); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return result; diff --git a/src/decode-ipv6.c b/src/decode-ipv6.c index 5872e762e3..65fedc22d3 100644 --- a/src/decode-ipv6.c +++ b/src/decode-ipv6.c @@ -31,19 +31,11 @@ */ #include "suricata-common.h" -#include "packet-queue.h" -#include "decode.h" #include "decode-ipv6.h" -#include "decode-icmpv6.h" -#include "decode-events.h" +#include "decode.h" #include "defrag.h" -#include "pkt-var.h" -#include "util-debug.h" #include "util-print.h" -#include "util-unittest.h" -#include "util-profiling.h" #include "util-validate.h" -#include "host.h" /** * \brief Function to decode IPv4 in IPv6 packets @@ -657,6 +649,7 @@ int DecodeIPV6(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const uint8_t * } #ifdef UNITTESTS +#include "util-unittest-helper.h" /** * \test fragment decoding @@ -809,13 +802,13 @@ static int DecodeIPV6FragTest01 (void) result = 1; end: - PACKET_RECYCLE(p1); - PACKET_RECYCLE(p2); + PacketRecycle(p1); + PacketRecycle(p2); SCFree(p1); SCFree(p2); pkt = PacketDequeueNoLock(&tv.decode_pq); while (pkt != NULL) { - PACKET_RECYCLE(pkt); + PacketRecycle(pkt); SCFree(pkt); pkt = PacketDequeueNoLock(&tv.decode_pq); } @@ -857,7 +850,7 @@ static int DecodeIPV6RouteTest01 (void) FAIL_IF (!(IPV6_EXTHDR_ISSET_RH(p1))); FAIL_IF (p1->ip6eh.rh_type != 0); - PACKET_RECYCLE(p1); + PacketRecycle(p1); SCFree(p1); FlowShutdown(); PASS; @@ -892,7 +885,7 @@ static int DecodeIPV6HopTest01 (void) FAIL_IF (!(ENGINE_ISSET_EVENT(p1, IPV6_HOPOPTS_UNKNOWN_OPT))); - PACKET_RECYCLE(p1); + PacketRecycle(p1); SCFree(p1); FlowShutdown(); PASS; diff --git a/src/decode-null.c b/src/decode-null.c index dc7051edc3..d926516fdc 100644 --- a/src/decode-null.c +++ b/src/decode-null.c @@ -40,10 +40,6 @@ #include "util-unittest.h" #include "util-debug.h" -#include "pkt-var.h" -#include "util-profiling.h" -#include "host.h" - #define HDR_SIZE 4 #define AF_INET6_BSD 24 diff --git a/src/decode-raw.c b/src/decode-raw.c index 2eaa700f28..bb34b43236 100644 --- a/src/decode-raw.c +++ b/src/decode-raw.c @@ -31,19 +31,14 @@ */ #include "suricata-common.h" -#include "decode.h" #include "decode-raw.h" +#include "decode.h" #include "decode-events.h" #include "util-validate.h" #include "util-unittest.h" #include "util-debug.h" -#include "pkt-var.h" -#include "util-profiling.h" -#include "host.h" - - int DecodeRaw(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const uint8_t *pkt, uint32_t len) { @@ -79,8 +74,7 @@ int DecodeRaw(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, } #ifdef UNITTESTS -#include "flow.h" -#include "flow-util.h" +#include "util-unittest-helper.h" /** DecodeRawtest01 * \brief Valid Raw packet @@ -125,7 +119,7 @@ static int DecodeRawTest01 (void) return 0; } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return 1; @@ -166,13 +160,13 @@ static int DecodeRawTest02 (void) DecodeRaw(&tv, &dtv, p, raw_ip, GET_PKT_LEN(p)); if (p->ip4h == NULL) { printf("expected a valid ipv4 header but it was NULL: "); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return 0; } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return 1; @@ -218,7 +212,7 @@ static int DecodeRawTest03 (void) SCFree(p); return 0; } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return 1; diff --git a/src/decode-tcp.c b/src/decode-tcp.c index 8fa8fd99ac..1df718d2ed 100644 --- a/src/decode-tcp.c +++ b/src/decode-tcp.c @@ -31,16 +31,13 @@ */ #include "suricata-common.h" -#include "decode.h" #include "decode-tcp.h" +#include "decode.h" #include "decode-events.h" #include "util-unittest.h" #include "util-debug.h" #include "util-optimize.h" #include "flow.h" -#include "util-profiling.h" -#include "pkt-var.h" -#include "host.h" #define SET_OPTS(dst, src) \ (dst).type = (src).type; \ @@ -273,6 +270,8 @@ int DecodeTCP(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, } #ifdef UNITTESTS +#include "util-unittest-helper.h" + static int TCPCalculateValidChecksumtest01(void) { uint16_t csum = 0; @@ -404,7 +403,7 @@ static int TCPGetWscaleTest01(void) retval = 1; end: - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return retval; @@ -450,7 +449,7 @@ static int TCPGetWscaleTest02(void) retval = 1; end: - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return retval; @@ -495,7 +494,7 @@ static int TCPGetWscaleTest03(void) retval = 1; end: - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return retval; @@ -560,7 +559,7 @@ static int TCPGetSackTest01(void) retval = 1; end: - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return retval; diff --git a/src/decode-teredo.c b/src/decode-teredo.c index 194d09a92e..8364a2e1e2 100644 --- a/src/decode-teredo.c +++ b/src/decode-teredo.c @@ -40,6 +40,8 @@ #include "util-validate.h" #include "util-debug.h" #include "conf.h" + +#include "detect.h" #include "detect-engine-port.h" #define TEREDO_ORIG_INDICATION_LENGTH 8 diff --git a/src/decode-vlan.c b/src/decode-vlan.c index 351fcf9e7c..820b316d98 100644 --- a/src/decode-vlan.c +++ b/src/decode-vlan.c @@ -35,16 +35,10 @@ #include "decode-vlan.h" #include "decode-events.h" -#include "flow.h" - #include "util-validate.h" #include "util-unittest.h" #include "util-debug.h" -#include "pkt-var.h" -#include "util-profiling.h" -#include "host.h" - /** * \internal * \brief this function is used to decode IEEE802.1q packets @@ -140,6 +134,8 @@ int DecodeIEEE8021ah(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, } #ifdef UNITTESTS +#include "util-unittest-helper.h" + /** \todo Must GRE+VLAN and Multi-Vlan packets to * create more tests */ @@ -252,13 +248,13 @@ static int DecodeVLANtest03 (void) goto error; } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return 1; error: - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); return 0; diff --git a/src/decode-vntag.c b/src/decode-vntag.c index 56f536a804..0b0eb28f43 100644 --- a/src/decode-vntag.c +++ b/src/decode-vntag.c @@ -30,20 +30,14 @@ */ #include "suricata-common.h" -#include "decode.h" #include "decode-vntag.h" +#include "decode.h" #include "decode-events.h" -#include "flow.h" - #include "util-validate.h" #include "util-unittest.h" #include "util-debug.h" -#include "pkt-var.h" -#include "util-profiling.h" -#include "host.h" - /** * \internal * \brief this function is used to decode 802.1Qbh packets @@ -89,6 +83,7 @@ int DecodeVNTag(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const uint8_t } #ifdef UNITTESTS +#include "util-unittest-helper.h" /** * \test DecodeVNTagTest01 test if vntag header is too small. @@ -166,7 +161,7 @@ static int DecodeVNTagtest03(void) FAIL_IF(TM_ECODE_OK != DecodeVNTag(&tv, &dtv, p, raw_vntag, sizeof(raw_vntag))); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); PacketFree(p); PASS; diff --git a/src/decode-vxlan.c b/src/decode-vxlan.c index 6a7322993e..e73bc5642b 100644 --- a/src/decode-vxlan.c +++ b/src/decode-vxlan.c @@ -31,6 +31,7 @@ #include "decode-vxlan.h" #include "decode-events.h" +#include "detect.h" #include "detect-engine-port.h" #include "flow.h" @@ -39,10 +40,6 @@ #include "util-unittest.h" #include "util-debug.h" -#include "pkt-var.h" -#include "util-profiling.h" -#include "host.h" - #define VXLAN_HEADER_LEN sizeof(VXLANHeader) #define VXLAN_MAX_PORTS 4 diff --git a/src/decode.c b/src/decode.c index f7fb514123..303349625b 100644 --- a/src/decode.c +++ b/src/decode.c @@ -48,28 +48,24 @@ */ #include "suricata-common.h" -#include "suricata.h" -#include "conf.h" #include "decode.h" -#include "decode-teredo.h" -#include "decode-erspan.h" -#include "decode-geneve.h" -#include "decode-vxlan.h" -#include "util-debug.h" -#include "util-mem.h" -#include "app-layer-detect-proto.h" + +#include "packet.h" +#include "flow.h" +#include "flow-storage.h" +#include "tmqh-packetpool.h" #include "app-layer.h" -#include "tm-threads.h" -#include "util-error.h" +#include "output.h" + +#include "decode-vxlan.h" +#include "decode-geneve.h" +#include "decode-erspan.h" +#include "decode-teredo.h" + +#include "util-hash.h" +#include "util-hash-string.h" #include "util-print.h" -#include "tmqh-packetpool.h" #include "util-profiling.h" -#include "pkt-var.h" -#include "util-mpm-ac.h" -#include "util-hash-string.h" -#include "output.h" -#include "output-flow.h" -#include "flow-storage.h" #include "util-validate.h" uint32_t default_packet_size = 0; @@ -136,7 +132,7 @@ static int DecodeTunnel(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p, const */ void PacketFree(Packet *p) { - PACKET_DESTRUCTOR(p); + PacketDestructor(p); SCFree(p); } @@ -181,7 +177,7 @@ Packet *PacketGetFromAlloc(void) } memset(p, 0, SIZE_OF_PACKET); - PACKET_INITIALIZE(p); + PacketInit(p); p->ReleasePacket = PacketFree; p->flags |= PKT_ALLOC; diff --git a/src/decode.h b/src/decode.h index e205cb195b..f59570e14a 100644 --- a/src/decode.h +++ b/src/decode.h @@ -223,6 +223,7 @@ typedef struct Address_ { #define GET_TCP_SRC_PORT(p) ((p)->sp) #define GET_TCP_DST_PORT(p) ((p)->dp) +#define RESET_PKT_LEN(p) ((p)->pktlen = 0) #define GET_PKT_LEN(p) ((p)->pktlen) #define GET_PKT_DATA(p) ((((p)->ext_pkt) == NULL ) ? (uint8_t *)((p) + 1) : (p)->ext_pkt) #define GET_PKT_DIRECT_DATA(p) (uint8_t *)((p) + 1) @@ -777,123 +778,6 @@ void CaptureStatsSetup(ThreadVars *tv, CaptureStats *s); } \ } while(0) -/** - * \brief Initialize a packet structure for use. - */ -#define PACKET_INITIALIZE(p) \ - { \ - SCMutexInit(&(p)->tunnel_mutex, NULL); \ - (p)->alerts.alerts = PacketAlertCreate(); \ - PACKET_RESET_CHECKSUMS((p)); \ - (p)->livedev = NULL; \ - } - -#define PACKET_RELEASE_REFS(p) do { \ - FlowDeReference(&((p)->flow)); \ - HostDeReference(&((p)->host_src)); \ - HostDeReference(&((p)->host_dst)); \ - } while (0) - -/** - * \brief Recycle a packet structure for reuse. - */ -#define PACKET_REINIT(p) \ - do { \ - CLEAR_ADDR(&(p)->src); \ - CLEAR_ADDR(&(p)->dst); \ - (p)->sp = 0; \ - (p)->dp = 0; \ - (p)->proto = 0; \ - (p)->recursion_level = 0; \ - PACKET_FREE_EXTDATA((p)); \ - (p)->flags = (p)->flags & PKT_ALLOC; \ - (p)->flowflags = 0; \ - (p)->pkt_src = 0; \ - (p)->vlan_id[0] = 0; \ - (p)->vlan_id[1] = 0; \ - (p)->vlan_idx = 0; \ - (p)->ts.tv_sec = 0; \ - (p)->ts.tv_usec = 0; \ - (p)->datalink = 0; \ - (p)->drop_reason = 0; \ - (p)->action = 0; \ - if ((p)->pktvar != NULL) { \ - PktVarFree((p)->pktvar); \ - (p)->pktvar = NULL; \ - } \ - (p)->ethh = NULL; \ - if ((p)->ip4h != NULL) { \ - CLEAR_IPV4_PACKET((p)); \ - } \ - if ((p)->ip6h != NULL) { \ - CLEAR_IPV6_PACKET((p)); \ - } \ - if ((p)->tcph != NULL) { \ - CLEAR_TCP_PACKET((p)); \ - } \ - if ((p)->udph != NULL) { \ - CLEAR_UDP_PACKET((p)); \ - } \ - if ((p)->sctph != NULL) { \ - CLEAR_SCTP_PACKET((p)); \ - } \ - if ((p)->esph != NULL) { \ - CLEAR_ESP_PACKET((p)); \ - } \ - if ((p)->icmpv4h != NULL) { \ - CLEAR_ICMPV4_PACKET((p)); \ - } \ - if ((p)->icmpv6h != NULL) { \ - CLEAR_ICMPV6_PACKET((p)); \ - } \ - (p)->ppph = NULL; \ - (p)->pppoesh = NULL; \ - (p)->pppoedh = NULL; \ - (p)->greh = NULL; \ - (p)->payload = NULL; \ - (p)->payload_len = 0; \ - (p)->BypassPacketsFlow = NULL; \ - (p)->pktlen = 0; \ - (p)->alerts.cnt = 0; \ - (p)->alerts.discarded = 0; \ - (p)->alerts.suppressed = 0; \ - (p)->alerts.drop.action = 0; \ - (p)->pcap_cnt = 0; \ - (p)->tunnel_rtv_cnt = 0; \ - (p)->tunnel_tpr_cnt = 0; \ - (p)->events.cnt = 0; \ - AppLayerDecoderEventsResetEvents((p)->app_layer_events); \ - (p)->next = NULL; \ - (p)->prev = NULL; \ - (p)->root = NULL; \ - (p)->livedev = NULL; \ - PACKET_RESET_CHECKSUMS((p)); \ - PACKET_PROFILING_RESET((p)); \ - p->tenant_id = 0; \ - p->nb_decoded_layers = 0; \ - } while (0) - -#define PACKET_RECYCLE(p) do { \ - PACKET_RELEASE_REFS((p)); \ - PACKET_REINIT((p)); \ - } while (0) - -/** - * \brief Cleanup a packet so that we can free it. No memset needed.. - */ -#define PACKET_DESTRUCTOR(p) \ - do { \ - PACKET_RELEASE_REFS((p)); \ - if ((p)->pktvar != NULL) { \ - PktVarFree((p)->pktvar); \ - } \ - PacketAlertFree((p)->alerts.alerts); \ - PACKET_FREE_EXTDATA((p)); \ - SCMutexDestroy(&(p)->tunnel_mutex); \ - AppLayerDecoderEventsFreeEvents(&(p)->app_layer_events); \ - PACKET_PROFILING_RESET((p)); \ - } while (0) - /* macro's for setting the action * handle the case of a root packet * for tunnels */ diff --git a/src/defrag-config.c b/src/defrag-config.c index f5d0f89e0b..beafe962f6 100644 --- a/src/defrag-config.c +++ b/src/defrag-config.c @@ -23,12 +23,9 @@ */ #include "suricata-common.h" -#include "queue.h" -#include "suricata.h" -#include "conf.h" -#include "util-debug.h" -#include "util-misc.h" #include "defrag-config.h" +#include "util-misc.h" +#include "util-radix-tree.h" static SCRadixTree *defrag_tree = NULL; diff --git a/src/defrag-config.h b/src/defrag-config.h index 08abd00b9c..2a0fb4e964 100644 --- a/src/defrag-config.h +++ b/src/defrag-config.h @@ -25,6 +25,8 @@ #ifndef DEFRAG_CONFIG_H_ #define DEFRAG_CONFIG_H_ +#include "decode.h" + void DefragSetDefaultTimeout(intmax_t timeout); void DefragPolicyLoadFromConfig(void); int DefragPolicyGetHostTimeout(Packet *p); diff --git a/src/defrag-hash.h b/src/defrag-hash.h index 2307ef9710..ec4fbe6988 100644 --- a/src/defrag-hash.h +++ b/src/defrag-hash.h @@ -26,6 +26,7 @@ #include "decode.h" #include "defrag.h" +#include "util-exception-policy.h" /** Spinlocks or Mutex for the flow buckets. */ //#define DRLOCK_SPIN diff --git a/src/defrag-queue.c b/src/defrag-queue.c index 54dd84e7f2..b4e8ea237d 100644 --- a/src/defrag-queue.c +++ b/src/defrag-queue.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" -#include "threads.h" #include "defrag-queue.h" #include "util-error.h" #include "util-debug.h" diff --git a/src/defrag-queue.h b/src/defrag-queue.h index 63a58d0786..4607770bdf 100644 --- a/src/defrag-queue.h +++ b/src/defrag-queue.h @@ -25,6 +25,7 @@ #define __DEFRAG_QUEUE_H__ #include "suricata-common.h" +#include "decode.h" #include "defrag.h" /** Spinlocks or Mutex for the defrag tracker queues. */ diff --git a/src/defrag-timeout.c b/src/defrag-timeout.c index f9428e0fe9..25d1b6315c 100644 --- a/src/defrag-timeout.c +++ b/src/defrag-timeout.c @@ -22,6 +22,7 @@ */ #include "suricata-common.h" +#include "decode.h" #include "defrag.h" #include "defrag-hash.h" #include "defrag-timeout.h" diff --git a/src/defrag.c b/src/defrag.c index a096ea58d8..9920ed3740 100644 --- a/src/defrag.c +++ b/src/defrag.c @@ -1081,6 +1081,7 @@ void DefragDestroy(void) } #ifdef UNITTESTS +#include "util-unittest-helper.h" #define IP_MF 0x2000 /** @@ -1100,7 +1101,7 @@ static Packet *BuildTestPacket(uint8_t proto, uint16_t id, uint16_t off, int mf, if (unlikely(p == NULL)) return NULL; - PACKET_INITIALIZE(p); + PacketInit(p); gettimeofday(&p->ts, NULL); //p->ip4h = (IPV4Hdr *)GET_PKT_DATA(p); @@ -1170,7 +1171,7 @@ static Packet *IPV6BuildTestPacket(uint8_t proto, uint32_t id, uint16_t off, if (unlikely(p == NULL)) return NULL; - PACKET_INITIALIZE(p); + PacketInit(p); gettimeofday(&p->ts, NULL); diff --git a/src/defrag.h b/src/defrag.h index fe452dec32..ac964823b8 100644 --- a/src/defrag.h +++ b/src/defrag.h @@ -24,6 +24,7 @@ #ifndef __DEFRAG_H__ #define __DEFRAG_H__ +#include "threads.h" #include "util-pool.h" /** diff --git a/src/detect-byte.h b/src/detect-byte.h index a43ccf0b8b..373a57d7e5 100644 --- a/src/detect-byte.h +++ b/src/detect-byte.h @@ -23,6 +23,8 @@ #ifndef __DETECT_BYTE_H__ #define __DETECT_BYTE_H__ +#include "detect.h" + typedef uint8_t DetectByteIndexType; bool DetectByteRetrieveSMVar(const char *, const Signature *, DetectByteIndexType *); diff --git a/src/detect-content.c b/src/detect-content.c index d3c7935e11..f5229ab7bc 100644 --- a/src/detect-content.c +++ b/src/detect-content.c @@ -1125,7 +1125,7 @@ end: DetectEngineThreadCtxDeinit(&th_v, (void *)det_ctx); DetectEngineCtxFree(de_ctx); } - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); diff --git a/src/detect-csum.c b/src/detect-csum.c index 34b2764b89..d0071cd2b5 100644 --- a/src/detect-csum.c +++ b/src/detect-csum.c @@ -898,7 +898,7 @@ static void DetectICMPV6CsumFree(DetectEngineCtx *de_ctx, void *ptr) /* ---------------------------------- Unit Tests --------------------------- */ #ifdef UNITTESTS -#include "detect-engine.h" +#include "util-unittest-helper.h" #define mystr(s) #s #define TEST1(kwstr) {\ @@ -1055,7 +1055,7 @@ static int DetectCsumICMPV6Test01(void) DetectEngineCtxFree(de_ctx); StreamTcpFreeConfig(true); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; diff --git a/src/detect-datarep.c b/src/detect-datarep.c index 171566eded..746f245c56 100644 --- a/src/detect-datarep.c +++ b/src/detect-datarep.c @@ -39,6 +39,7 @@ #include "util-debug.h" #include "util-print.h" #include "util-misc.h" +#include "util-path.h" #define PARSE_REGEX "([a-z]+)(?:,\\s*([\\-_A-z0-9\\s\\.]+)){1,4}" static DetectParseRegex parse_regex; diff --git a/src/detect-dataset.c b/src/detect-dataset.c index 45efc062b2..aa0470c3db 100644 --- a/src/detect-dataset.c +++ b/src/detect-dataset.c @@ -38,6 +38,8 @@ #include "util-debug.h" #include "util-print.h" #include "util-misc.h" +#include "util-path.h" +#include "util-conf.h" int DetectDatasetMatch (ThreadVars *, DetectEngineThreadCtx *, Packet *, const Signature *, const SigMatchCtx *); diff --git a/src/detect-dsize.c b/src/detect-dsize.c index 8702f99493..b86140e5c4 100644 --- a/src/detect-dsize.c +++ b/src/detect-dsize.c @@ -332,7 +332,7 @@ void SigParseApplyDsizeToContent(Signature *s) */ #ifdef UNITTESTS -#include "detect-engine.h" +#include "util-unittest-helper.h" /** * \test this is a test for a valid dsize value 1 @@ -597,7 +597,7 @@ static int DetectDsizeIcmpv6Test01(void) DetectEngineThreadCtxDeinit(&th_v, (void *)det_ctx); DetectEngineCtxFree(de_ctx); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); diff --git a/src/detect-engine-analyzer.c b/src/detect-engine-analyzer.c index 8376286612..56a7a72f9d 100644 --- a/src/detect-engine-analyzer.c +++ b/src/detect-engine-analyzer.c @@ -40,6 +40,7 @@ #include "util-print.h" #include "util-time.h" #include "util-validate.h" +#include "util-conf.h" static int rule_warnings_only = 0; static FILE *rule_engine_analysis_FD = NULL; diff --git a/src/detect-engine-build.c b/src/detect-engine-build.c index 4d92565577..f9b95eb6cf 100644 --- a/src/detect-engine-build.c +++ b/src/detect-engine-build.c @@ -41,6 +41,7 @@ #include "util-profiling.h" #include "util-validate.h" #include "util-var-name.h" +#include "util-conf.h" void SigCleanSignatures(DetectEngineCtx *de_ctx) { diff --git a/src/detect-engine-loader.c b/src/detect-engine-loader.c index f7db03ad48..9e1d39bd4d 100644 --- a/src/detect-engine-loader.c +++ b/src/detect-engine-loader.c @@ -42,6 +42,7 @@ #include "util-detect.h" #include "util-threshold-config.h" +#include "util-path.h" #ifdef HAVE_GLOB_H #include diff --git a/src/detect-engine-port.c b/src/detect-engine-port.c index 29d649b8f1..8fc084539c 100644 --- a/src/detect-engine-port.c +++ b/src/detect-engine-port.c @@ -2186,7 +2186,7 @@ static int PortTestMatchReal(uint8_t *raw_eth_pkt, uint16_t pktsize, const char FlowInitConfig(FLOW_QUIET); Packet *p = UTHBuildPacketFromEth(raw_eth_pkt, pktsize); result = UTHPacketMatchSig(p, sig); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); return result; } diff --git a/src/detect-engine-prefilter.h b/src/detect-engine-prefilter.h index 44344468ae..2f38c8bdd1 100644 --- a/src/detect-engine-prefilter.h +++ b/src/detect-engine-prefilter.h @@ -24,6 +24,7 @@ #ifndef __DETECT_ENGINE_PREFILTER_H__ #define __DETECT_ENGINE_PREFILTER_H__ +#include "detect.h" #include "detect-engine-state.h" // TODO diff --git a/src/detect-engine-profile.c b/src/detect-engine-profile.c index 3fcc2a6b32..36cf6e106b 100644 --- a/src/detect-engine-profile.c +++ b/src/detect-engine-profile.c @@ -23,16 +23,12 @@ */ #include "suricata-common.h" -#include "suricata.h" -#include "detect.h" -#include "detect-parse.h" -#include "detect-content.h" -#include "output-json.h" -#include "util-buffer.h" -#include "util-print.h" #include "detect-engine-profile.h" #ifdef PROFILING +#include "output-json.h" +#include "util-conf.h" + SCMutex g_rule_dump_write_m = SCMUTEX_INITIALIZER; void RulesDumpTxMatchArray(const DetectEngineThreadCtx *det_ctx, const SigGroupHead *sgh, diff --git a/src/detect-engine-profile.h b/src/detect-engine-profile.h index cd5ec04617..2699a24357 100644 --- a/src/detect-engine-profile.h +++ b/src/detect-engine-profile.h @@ -24,6 +24,8 @@ #ifndef _DETECT_ENGINE_PROFILE_H #define _DETECT_ENGINE_PROFILE_H +#include "detect.h" + void RulesDumpTxMatchArray(const DetectEngineThreadCtx *det_ctx, const SigGroupHead *sgh, const Packet *p, const uint64_t tx_id, const uint32_t rule_cnt, const uint32_t pkt_prefilter_cnt); diff --git a/src/detect-engine.c b/src/detect-engine.c index cbb35ba684..f2f6273d2c 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -81,6 +81,7 @@ #include "util-validate.h" #include "util-hash-string.h" #include "util-enum.h" +#include "util-conf.h" #include "tm-threads.h" #include "runmodes.h" diff --git a/src/detect-filename.c b/src/detect-filename.c index 11c8b69231..e953b03dbe 100644 --- a/src/detect-filename.c +++ b/src/detect-filename.c @@ -49,6 +49,7 @@ #include "util-profiling.h" #include "app-layer.h" +#include "app-layer-htp.h" #include "stream-tcp.h" diff --git a/src/detect-flowbits.c b/src/detect-flowbits.c index c7516f7652..1d0bea34cf 100644 --- a/src/detect-flowbits.c +++ b/src/detect-flowbits.c @@ -45,6 +45,7 @@ #include "util-var-name.h" #include "util-unittest.h" #include "util-debug.h" +#include "util-conf.h" #define PARSE_REGEX "^([a-z]+)(?:,\\s*(.*))?" static DetectParseRegex parse_regex; diff --git a/src/detect-fragbits.c b/src/detect-fragbits.c index 302f94e631..623df8ceba 100644 --- a/src/detect-fragbits.c +++ b/src/detect-fragbits.c @@ -385,6 +385,8 @@ static bool PrefilterFragBitsIsPrefilterable(const Signature *s) */ #ifdef UNITTESTS +#include "util-unittest-helper.h" + /** * \test FragBitsTestParse01 is a test for a valid fragbits value * @@ -590,7 +592,7 @@ static int FragBitsTestParse04 (void) FAIL_IF(ret); SCFree(de); SCFree(sm); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); PASS; diff --git a/src/detect-fragoffset.c b/src/detect-fragoffset.c index ed7d42caae..794de4099c 100644 --- a/src/detect-fragoffset.c +++ b/src/detect-fragoffset.c @@ -327,8 +327,7 @@ static bool PrefilterFragOffsetIsPrefilterable(const Signature *s) } #ifdef UNITTESTS -#include "detect-engine.h" -#include "detect-engine-mpm.h" +#include "util-unittest-helper.h" /** * \test DetectFragOffsetParseTest01 is a test for setting a valid fragoffset value diff --git a/src/detect-http-headers-stub.h b/src/detect-http-headers-stub.h index d1f472718a..f158a2c0e0 100644 --- a/src/detect-http-headers-stub.h +++ b/src/detect-http-headers-stub.h @@ -29,6 +29,8 @@ #include "suricata-common.h" #include "flow.h" +#include "app-layer-htp.h" + #include "detect.h" #include "detect-parse.h" #include "detect-engine.h" diff --git a/src/detect-parse.c b/src/detect-parse.c index bc208b0c84..f25a9f1efa 100644 --- a/src/detect-parse.c +++ b/src/detect-parse.c @@ -3603,7 +3603,7 @@ static int SigTestBidirec03 (void) end: if (p != NULL) { - PACKET_RECYCLE(p); + PacketRecycle(p); SCFree(p); } FlowShutdown(); @@ -3741,7 +3741,7 @@ static int SigTestBidirec04 (void) } if (p != NULL) { - PACKET_RECYCLE(p); + PacketRecycle(p); } FlowShutdown(); DetectEngineThreadCtxDeinit(&th_v, (void *)det_ctx); diff --git a/src/detect-parse.h b/src/detect-parse.h index 021dcbf4b8..95b4514bbc 100644 --- a/src/detect-parse.h +++ b/src/detect-parse.h @@ -24,6 +24,8 @@ #ifndef __DETECT_PARSE_H__ #define __DETECT_PARSE_H__ +#include "detect.h" + /** Flags to indicate if the Signature parsing must be done * switching the source and dest (for ip addresses and ports) * or otherwise as normal */ diff --git a/src/detect-replace.c b/src/detect-replace.c index 4164a651a9..06117058b3 100644 --- a/src/detect-replace.c +++ b/src/detect-replace.c @@ -321,7 +321,7 @@ end: if (det_ctx != NULL) DetectEngineThreadCtxDeinit(&th_v, (void *)det_ctx); DetectEnginePruneFreeList(); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); diff --git a/src/device-storage.h b/src/device-storage.h index 49fb59761d..87ef61ff44 100644 --- a/src/device-storage.h +++ b/src/device-storage.h @@ -27,6 +27,7 @@ #define __DEVICE_STORAGE_H__ #include "util-device.h" +#include "util-storage.h" typedef struct LiveDevStorageId_ { int id; diff --git a/src/feature.c b/src/feature.c index 0cc2786126..8505d9c0f6 100644 --- a/src/feature.c +++ b/src/feature.c @@ -24,10 +24,11 @@ */ #include "suricata-common.h" -#include "suricata.h" #include "feature.h" +#include "threads.h" -#include "util-hash.h" +#include "util-debug.h" +#include "util-hashlist.h" typedef struct FeatureEntryType { const char *feature; diff --git a/src/flow-bypass.h b/src/flow-bypass.h index 50acc0ddce..4e2721583f 100644 --- a/src/flow-bypass.h +++ b/src/flow-bypass.h @@ -24,6 +24,9 @@ #ifndef __FLOW_BYPASS_H__ #define __FLOW_BYPASS_H__ +#include "threadvars.h" +#include "flow.h" + struct flows_stats { uint64_t count; uint64_t packets; diff --git a/src/flow-hash.h b/src/flow-hash.h index cad46652b1..20bd2d9013 100644 --- a/src/flow-hash.h +++ b/src/flow-hash.h @@ -24,6 +24,8 @@ #ifndef __FLOW_HASH_H__ #define __FLOW_HASH_H__ +#include "flow.h" + /** Spinlocks or Mutex for the flow buckets. */ //#define FBLOCK_SPIN #define FBLOCK_MUTEX diff --git a/src/flow-storage.h b/src/flow-storage.h index f6111ab9bc..f896f2311d 100644 --- a/src/flow-storage.h +++ b/src/flow-storage.h @@ -27,6 +27,7 @@ #define __FLOW_STORAGE_H__ #include "flow.h" +#include "util-storage.h" typedef struct FlowStorageId { int id; diff --git a/src/flow-util.h b/src/flow-util.h index 919ab95ef3..c2f858709f 100644 --- a/src/flow-util.h +++ b/src/flow-util.h @@ -24,6 +24,7 @@ #ifndef __FLOW_UTIL_H__ #define __FLOW_UTIL_H__ +#include "flow.h" #include "stream-tcp-private.h" #define COPY_TIMESTAMP(src,dst) ((dst)->tv_sec = (src)->tv_sec, (dst)->tv_usec = (src)->tv_usec) diff --git a/src/log-cf-common.c b/src/log-cf-common.c index 236926613a..891dfdc00e 100644 --- a/src/log-cf-common.c +++ b/src/log-cf-common.c @@ -29,6 +29,7 @@ #include "util-print.h" #include "util-unittest.h" #include "util-time.h" +#include "util-debug.h" /** * \brief Creates a custom format node diff --git a/src/log-pcap.c b/src/log-pcap.c index ebf4335782..e1d8d65c4c 100644 --- a/src/log-pcap.c +++ b/src/log-pcap.c @@ -25,14 +25,9 @@ */ #include "suricata-common.h" -#include "util-buffer.h" -#include "util-fmemopen.h" -#include "util-datalink.h" -#include "stream-tcp-util.h" -#include "stream.h" - #ifdef HAVE_LIBLZ4 #include +#include "util-fmemopen.h" #endif /* HAVE_LIBLZ4 */ #if defined(HAVE_DIRENT_H) && defined(HAVE_FNMATCH_H) @@ -41,31 +36,25 @@ #include #endif -#include "detect.h" -#include "flow.h" -#include "conf.h" +#include "log-pcap.h" #include "threads.h" #include "threadvars.h" -#include "tm-threads.h" +#include "decode.h" +#include "stream.h" +#include "stream-tcp-reassemble.h" -#include "util-unittest.h" -#include "log-pcap.h" -#include "decode-ipv4.h" +#include "output.h" -#include "util-error.h" -#include "util-debug.h" -#include "util-time.h" +#include "util-buffer.h" #include "util-byte.h" -#include "util-misc.h" +#include "util-conf.h" #include "util-cpu.h" -#include "util-atomic.h" - -#include "source-pcap.h" - -#include "output.h" - -#include "queue.h" +#include "util-datalink.h" +#include "util-misc.h" +#include "util-path.h" +#include "util-profiling.h" +#include "util-time.h" #define DEFAULT_LOG_FILENAME "pcaplog" #define MODULE_NAME "PcapLog" diff --git a/src/log-tcp-data.c b/src/log-tcp-data.c index 0901ee79c4..56195a26d1 100644 --- a/src/log-tcp-data.c +++ b/src/log-tcp-data.c @@ -22,29 +22,14 @@ */ #include "suricata-common.h" -#include "detect.h" -#include "pkt-var.h" -#include "conf.h" +#include "log-tcp-data.h" -#include "threads.h" #include "threadvars.h" -#include "tm-threads.h" - -#include "util-print.h" -#include "util-unittest.h" - -#include "util-debug.h" - -#include "output.h" -#include "log-tcp-data.h" -#include "app-layer-htp.h" -#include "app-layer.h" -#include "app-layer-parser.h" -#include "util-privs.h" -#include "util-buffer.h" +#include "util-conf.h" #include "util-logopenfile.h" -#include "util-time.h" +#include "util-path.h" +#include "util-print.h" #define DEFAULT_LOG_FILENAME "tcp-data.log" diff --git a/src/log-tcp-data.h b/src/log-tcp-data.h index d23f8e7d7b..608dbef309 100644 --- a/src/log-tcp-data.h +++ b/src/log-tcp-data.h @@ -24,6 +24,9 @@ #ifndef __LOG_TCPDATALOG_H__ #define __LOG_TCPDATALOG_H__ +#include "conf.h" +#include "output.h" + void LogTcpDataLogRegister(void); OutputInitResult LogTcpDataLogInitCtx(ConfNode *); diff --git a/src/log-tlsstore.c b/src/log-tlsstore.c index c9366471a4..e743828e8a 100644 --- a/src/log-tlsstore.c +++ b/src/log-tlsstore.c @@ -27,29 +27,18 @@ */ #include "suricata-common.h" -#include "detect.h" -#include "pkt-var.h" -#include "conf.h" - -#include "threads.h" -#include "threadvars.h" -#include "tm-threads.h" +#include "log-tlsstore.h" -#include "util-print.h" -#include "util-unittest.h" +#include "decode.h" -#include "util-debug.h" +#include "app-layer-parser.h" +#include "app-layer-ssl.h" #include "output.h" #include "log-tlslog.h" -#include "log-tlsstore.h" -#include "app-layer-ssl.h" -#include "app-layer.h" -#include "app-layer-parser.h" -#include "util-privs.h" -#include "util-buffer.h" -#include "util-logopenfile.h" +#include "util-conf.h" +#include "util-path.h" #include "util-time.h" #define MODULE_NAME "LogTlsStoreLog" diff --git a/src/output-file.c b/src/output-file.c index c6d176dfb8..317e1139a5 100644 --- a/src/output-file.c +++ b/src/output-file.c @@ -24,15 +24,17 @@ */ #include "suricata-common.h" -#include "tm-modules.h" #include "output.h" #include "output-file.h" +#if 0 #include "app-layer.h" -#include "app-layer-parser.h" +#endif +#include "app-layer-parser.h" // FileApplyTxFlags #include "detect-filemagic.h" +#include "util-file.h" +#include "util-magic.h" #include "util-profiling.h" #include "util-validate.h" -#include "util-magic.h" bool g_file_logger_enabled = false; diff --git a/src/output-file.h b/src/output-file.h index c9e428a020..13735b282d 100644 --- a/src/output-file.h +++ b/src/output-file.h @@ -26,9 +26,7 @@ #ifndef __OUTPUT_FILE_H__ #define __OUTPUT_FILE_H__ -#include "decode.h" #include "rust.h" -#include "util-file.h" /** per thread data for this module, contains a list of per thread * data for the packet loggers. */ diff --git a/src/output-filedata.c b/src/output-filedata.c index 5adba43bc5..cec89ec83d 100644 --- a/src/output-filedata.c +++ b/src/output-filedata.c @@ -24,16 +24,15 @@ */ #include "suricata-common.h" -#include "tm-modules.h" #include "output.h" #include "output-filedata.h" -#include "app-layer.h" #include "app-layer-parser.h" #include "detect-filemagic.h" #include "conf.h" #include "util-profiling.h" #include "util-validate.h" #include "util-magic.h" +#include "util-path.h" bool g_filedata_logger_enabled = false; diff --git a/src/output-filedata.h b/src/output-filedata.h index 9359e0eb71..6d2d544664 100644 --- a/src/output-filedata.h +++ b/src/output-filedata.h @@ -26,9 +26,6 @@ #ifndef __OUTPUT_FILEDATA_H__ #define __OUTPUT_FILEDATA_H__ -#include "decode.h" -#include "util-file.h" - #define OUTPUT_FILEDATA_FLAG_OPEN 0x01 #define OUTPUT_FILEDATA_FLAG_CLOSE 0x02 diff --git a/src/output-filestore.c b/src/output-filestore.c index 47ff0d7357..5a10344b78 100644 --- a/src/output-filestore.c +++ b/src/output-filestore.c @@ -16,21 +16,19 @@ */ #include "suricata-common.h" +#include "output-filestore.h" #include "stream-tcp.h" -#include "app-layer-parser.h" -#include "app-layer-htp.h" -#include "app-layer-htp-xff.h" -#include "app-layer-smtp.h" #include "feature.h" #include "output.h" -#include "output-filestore.h" #include "output-json-file.h" -#include "util-print.h" +#include "util-conf.h" #include "util-misc.h" +#include "util-path.h" +#include "util-print.h" #define MODULE_NAME "OutputFilestore" diff --git a/src/output-flow.c b/src/output-flow.c index ebef951ad5..fa60f3c579 100644 --- a/src/output-flow.c +++ b/src/output-flow.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" -#include "tm-modules.h" #include "output.h" #include "output-flow.h" #include "util-profiling.h" diff --git a/src/output-json-common.c b/src/output-json-common.c index ece4452c1b..60295ea2be 100644 --- a/src/output-json-common.c +++ b/src/output-json-common.c @@ -22,23 +22,9 @@ */ #include "suricata-common.h" -#include "pkt-var.h" -#include "conf.h" - -#include "threads.h" -#include "threadvars.h" -#include "tm-threads.h" - -#include "util-unittest.h" -#include "util-buffer.h" -#include "util-debug.h" -#include "util-byte.h" - #include "output.h" #include "output-json.h" - -#include "app-layer.h" -#include "app-layer-parser.h" +#include "util-buffer.h" OutputJsonThreadCtx *CreateEveThreadCtx(ThreadVars *t, OutputJsonCtx *ctx) { diff --git a/src/output-json-dcerpc.c b/src/output-json-dcerpc.c index 1265d6a053..6ad9fe78d1 100644 --- a/src/output-json-dcerpc.c +++ b/src/output-json-dcerpc.c @@ -16,26 +16,11 @@ */ #include "suricata-common.h" -#include "pkt-var.h" -#include "conf.h" - -#include "threads.h" -#include "threadvars.h" -#include "tm-threads.h" - -#include "util-unittest.h" #include "util-buffer.h" -#include "util-debug.h" -#include "util-byte.h" - #include "output.h" #include "output-json.h" - -#include "app-layer.h" #include "app-layer-parser.h" -#include "app-layer-dcerpc-common.h" #include "output-json-dcerpc.h" - #include "rust.h" diff --git a/src/output-json-smb.c b/src/output-json-smb.c index 0f8b60e423..1ab6f5c7ee 100644 --- a/src/output-json-smb.c +++ b/src/output-json-smb.c @@ -24,26 +24,11 @@ */ #include "suricata-common.h" -#include "pkt-var.h" -#include "conf.h" - -#include "threads.h" -#include "threadvars.h" -#include "tm-threads.h" - -#include "util-unittest.h" #include "util-buffer.h" -#include "util-debug.h" -#include "util-byte.h" - #include "output.h" #include "output-json.h" - -#include "app-layer.h" #include "app-layer-parser.h" - #include "output-json-smb.h" - #include "rust.h" bool EveSMBAddMetadata(const Flow *f, uint64_t tx_id, JsonBuilder *jb) diff --git a/src/output-lua.c b/src/output-lua.c index 1f752d73cd..c6b09e53a0 100644 --- a/src/output-lua.c +++ b/src/output-lua.c @@ -23,18 +23,12 @@ */ #include "suricata-common.h" -#include "pkt-var.h" -#include "conf.h" - -#include "threads.h" -#include "threadvars.h" -#include "tm-threads.h" +#include "output-lua.h" +#ifdef HAVE_LUA #include "util-print.h" #include "util-unittest.h" - #include "util-debug.h" - #include "output.h" #include "app-layer-htp.h" #include "app-layer.h" @@ -46,15 +40,6 @@ #include "util-proto-name.h" #include "util-logopenfile.h" #include "util-time.h" - -#include "output-lua.h" - -#ifdef HAVE_LUA - -#include -#include -#include - #include "util-lua.h" #include "util-lua-common.h" #include "util-lua-http.h" diff --git a/src/output-packet.c b/src/output-packet.c index c7b509520d..232be2697e 100644 --- a/src/output-packet.c +++ b/src/output-packet.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" -#include "tm-modules.h" #include "output.h" #include "output-packet.h" #include "util-profiling.h" diff --git a/src/output-packet.h b/src/output-packet.h index 3953b9d939..adba556891 100644 --- a/src/output-packet.h +++ b/src/output-packet.h @@ -26,9 +26,6 @@ #ifndef __OUTPUT_PACKET_H__ #define __OUTPUT_PACKET_H__ -#include "decode.h" -#include "tm-modules.h" - /** packet logger function pointer type */ typedef int (*PacketLogger)(ThreadVars *, void *thread_data, const Packet *); diff --git a/src/output-stats.c b/src/output-stats.c index 7079c785ad..839606f2bd 100644 --- a/src/output-stats.c +++ b/src/output-stats.c @@ -24,15 +24,10 @@ */ #include "suricata-common.h" -#include "tm-modules.h" +#include "output.h" #include "output-stats.h" #include "util-validate.h" -typedef struct OutputLoggerThreadStore_ { - void *thread_data; - struct OutputLoggerThreadStore_ *next; -} OutputLoggerThreadStore; - /** per thread data for this module, contains a list of per thread * data for the packet loggers. */ typedef struct OutputStatsLoggerThreadData_ { diff --git a/src/output-streaming.c b/src/output-streaming.c index 60efef5791..4aca9546d4 100644 --- a/src/output-streaming.c +++ b/src/output-streaming.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" -#include "tm-modules.h" #include "output.h" #include "output-streaming.h" #include "app-layer.h" diff --git a/src/output-tx.c b/src/output-tx.c index 2e2d3a578d..00eb6d8b01 100644 --- a/src/output-tx.c +++ b/src/output-tx.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" -#include "tm-modules.h" #include "output.h" #include "output-tx.h" #include "stream.h" diff --git a/src/output-tx.h b/src/output-tx.h index ae2c6d9063..8d58156bef 100644 --- a/src/output-tx.h +++ b/src/output-tx.h @@ -27,6 +27,7 @@ #define __OUTPUT_TX_H__ #include "decode.h" +#include "flow.h" /** tx logger function pointer type */ typedef int (*TxLogger)(ThreadVars *, void *thread_data, const Packet *, Flow *f, void *state, void *tx, uint64_t tx_id); diff --git a/src/output.h b/src/output.h index e7234ddfbc..5c2d7bc90e 100644 --- a/src/output.h +++ b/src/output.h @@ -24,6 +24,9 @@ #ifndef __OUTPUT_H__ #define __OUTPUT_H__ +#include "decode.h" +#include "tm-modules.h" + #define DEFAULT_LOG_MODE_APPEND "yes" #define DEFAULT_LOG_FILETYPE "regular" diff --git a/src/packet-queue.h b/src/packet-queue.h index c7070d3e51..4089870643 100644 --- a/src/packet-queue.h +++ b/src/packet-queue.h @@ -24,6 +24,8 @@ #ifndef __PACKET_QUEUE_H__ #define __PACKET_QUEUE_H__ +#include "threads.h" + /** \brief simple fifo queue for packets * * \note PacketQueueNoLock and PacketQueue need to keep identical diff --git a/src/packet.c b/src/packet.c new file mode 100644 index 0000000000..b419b5dc11 --- /dev/null +++ b/src/packet.c @@ -0,0 +1,141 @@ +/* Copyright (C) 2007-2022 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. + */ + +#include "packet.h" +#include "pkt-var.h" +#include "flow.h" +#include "host.h" +#include "util-profiling.h" + +/** + * \brief Initialize a packet structure for use. + */ +void PacketInit(Packet *p) +{ + SCMutexInit(&p->tunnel_mutex, NULL); + p->alerts.alerts = PacketAlertCreate(); + PACKET_RESET_CHECKSUMS(p); + p->livedev = NULL; +} + +void PacketReleaseRefs(Packet *p) +{ + FlowDeReference(&p->flow); + HostDeReference(&p->host_src); + HostDeReference(&p->host_dst); +} + +/** + * \brief Recycle a packet structure for reuse. + */ +void PacketReinit(Packet *p) +{ + CLEAR_ADDR(&p->src); + CLEAR_ADDR(&p->dst); + p->sp = 0; + p->dp = 0; + p->proto = 0; + p->recursion_level = 0; + PACKET_FREE_EXTDATA(p); + p->flags = p->flags & PKT_ALLOC; + p->flowflags = 0; + p->pkt_src = 0; + p->vlan_id[0] = 0; + p->vlan_id[1] = 0; + p->vlan_idx = 0; + p->ts.tv_sec = 0; + p->ts.tv_usec = 0; + p->datalink = 0; + p->drop_reason = 0; + PACKET_SET_ACTION(p, 0); + if (p->pktvar != NULL) { + PktVarFree(p->pktvar); + p->pktvar = NULL; + } + p->ethh = NULL; + if (p->ip4h != NULL) { + CLEAR_IPV4_PACKET(p); + } + if (p->ip6h != NULL) { + CLEAR_IPV6_PACKET(p); + } + if (p->tcph != NULL) { + CLEAR_TCP_PACKET(p); + } + if (p->udph != NULL) { + CLEAR_UDP_PACKET(p); + } + if (p->sctph != NULL) { + CLEAR_SCTP_PACKET(p); + } + if (p->esph != NULL) { + CLEAR_ESP_PACKET(p); + } + if (p->icmpv4h != NULL) { + CLEAR_ICMPV4_PACKET(p); + } + if (p->icmpv6h != NULL) { + CLEAR_ICMPV6_PACKET(p); + } + p->ppph = NULL; + p->pppoesh = NULL; + p->pppoedh = NULL; + p->greh = NULL; + p->payload = NULL; + p->payload_len = 0; + p->BypassPacketsFlow = NULL; + RESET_PKT_LEN(p); + p->alerts.cnt = 0; + p->alerts.discarded = 0; + p->alerts.suppressed = 0; + p->alerts.drop.action = 0; + p->pcap_cnt = 0; + p->tunnel_rtv_cnt = 0; + p->tunnel_tpr_cnt = 0; + p->events.cnt = 0; + AppLayerDecoderEventsResetEvents(p->app_layer_events); + p->next = NULL; + p->prev = NULL; + p->root = NULL; + p->livedev = NULL; + PACKET_RESET_CHECKSUMS(p); + PACKET_PROFILING_RESET(p); + p->tenant_id = 0; + p->nb_decoded_layers = 0; +} + +void PacketRecycle(Packet *p) +{ + PacketReleaseRefs(p); + PacketReinit(p); +} + +/** + * \brief Cleanup a packet so that we can free it. No memset needed.. + */ +void PacketDestructor(Packet *p) +{ + PacketReleaseRefs(p); + if (p->pktvar != NULL) { + PktVarFree(p->pktvar); + } + PacketAlertFree(p->alerts.alerts); + PACKET_FREE_EXTDATA(p); + SCMutexDestroy(&p->tunnel_mutex); + AppLayerDecoderEventsFreeEvents(&p->app_layer_events); + PACKET_PROFILING_RESET(p); +} diff --git a/src/packet.h b/src/packet.h new file mode 100644 index 0000000000..fa7e8ce587 --- /dev/null +++ b/src/packet.h @@ -0,0 +1,29 @@ +/* Copyright (C) 2007-2022 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. + */ + +#ifndef __PACKET_H__ +#define __PACKET_H__ + +#include "decode.h" + +void PacketInit(Packet *p); +void PacketReleaseRefs(Packet *p); +void PacketReinit(Packet *p); +void PacketRecycle(Packet *p); +void PacketDestructor(Packet *p); + +#endif diff --git a/src/reputation.c b/src/reputation.c index 101f580ae7..18c5c15741 100644 --- a/src/reputation.c +++ b/src/reputation.c @@ -26,18 +26,17 @@ */ #include "suricata-common.h" -#include "util-error.h" -#include "util-debug.h" +#include "reputation.h" +#include "threads.h" +#include "conf.h" + #include "util-byte.h" +#include "util-debug.h" +#include "util-error.h" #include "util-ip.h" -#include "util-radix-tree.h" -#include "util-unittest.h" -#include "threads.h" +#include "util-path.h" #include "util-print.h" -#include "host.h" -#include "conf.h" -#include "detect.h" -#include "reputation.h" +#include "util-unittest.h" #include "util-validate.h" /** effective reputation version, atomic as the host diff --git a/src/reputation.h b/src/reputation.h index 52c0756e80..8c8369dd74 100644 --- a/src/reputation.h +++ b/src/reputation.h @@ -27,6 +27,7 @@ #define __REPUTATION_H__ #include "host.h" +#include "util-radix-tree.h" #define SREP_MAX_CATS 60 #define SREP_MAX_VAL 127 @@ -41,6 +42,8 @@ typedef struct SReputation_ { uint8_t rep[SREP_MAX_CATS]; } SReputation; +#include "detect.h" + void SRepFreeHostData(Host *h); uint8_t SRepCatGetByShortname(char *shortname); int SRepInit(struct DetectEngineCtx_ *de_ctx); diff --git a/src/runmode-af-packet.c b/src/runmode-af-packet.c index ac0b570a9b..f2500d3d3b 100644 --- a/src/runmode-af-packet.c +++ b/src/runmode-af-packet.c @@ -44,6 +44,7 @@ #include "flow-bypass.h" +#include "util-conf.h" #include "util-debug.h" #include "util-time.h" #include "util-cpu.h" diff --git a/src/runmode-dpdk.c b/src/runmode-dpdk.c index 170679ae32..7b8d2341d5 100644 --- a/src/runmode-dpdk.c +++ b/src/runmode-dpdk.c @@ -33,10 +33,13 @@ #include "suricata-common.h" #include "runmodes.h" #include "runmode-dpdk.h" +#include "decode.h" #include "source-dpdk.h" #include "util-runmodes.h" #include "util-byte.h" #include "util-cpu.h" +#include "util-debug.h" +#include "util-device.h" #include "util-dpdk.h" #include "util-dpdk-i40e.h" #include "util-dpdk-ice.h" diff --git a/src/runmode-netmap.c b/src/runmode-netmap.c index 709ac0ffd9..f5f66fe998 100644 --- a/src/runmode-netmap.c +++ b/src/runmode-netmap.c @@ -32,6 +32,7 @@ */ #include "suricata-common.h" +#include "decode.h" #include "runmodes.h" #include "runmode-netmap.h" #include "util-runmodes.h" @@ -45,6 +46,7 @@ #endif /* HAVE_NETMAP */ #include "source-netmap.h" +#include "util-conf.h" extern int max_pending_packets; diff --git a/src/runmode-pcap.c b/src/runmode-pcap.c index de451a78fa..942277e36e 100644 --- a/src/runmode-pcap.c +++ b/src/runmode-pcap.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2012 Open Information Security Foundation +/* Copyright (C) 2007-2022 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 @@ -16,20 +16,16 @@ */ #include "suricata-common.h" -#include "tm-threads.h" -#include "conf.h" -#include "runmodes.h" #include "runmode-pcap.h" +#include "runmodes.h" #include "output.h" -#include "log-httplog.h" +#include "util-conf.h" #include "util-debug.h" #include "util-time.h" #include "util-cpu.h" -#include "util-affinity.h" #include "util-device.h" #include "util-runmodes.h" -#include "util-atomic.h" #include "util-misc.h" #include "util-byte.h" diff --git a/src/runmode-pfring.c b/src/runmode-pfring.c index 528d850760..95a837783a 100644 --- a/src/runmode-pfring.c +++ b/src/runmode-pfring.c @@ -16,21 +16,20 @@ */ #include "suricata-common.h" +#include "runmode-pfring.h" #include "tm-threads.h" #include "conf.h" #include "runmodes.h" -#include "runmode-pfring.h" #include "source-pfring.h" -#include "output.h" #include "util-debug.h" #include "util-time.h" #include "util-cpu.h" -#include "util-affinity.h" #include "util-runmodes.h" #include "util-device.h" #include "util-ioctl.h" #include "util-byte.h" +#include "util-conf.h" #ifdef HAVE_PFRING #include diff --git a/src/runmode-unittests.c b/src/runmode-unittests.c index 42058329e7..5d4655bfec 100644 --- a/src/runmode-unittests.c +++ b/src/runmode-unittests.c @@ -21,11 +21,11 @@ */ #include "suricata-common.h" -#include "util-unittest.h" #include "runmode-unittests.h" +#include "util-unittest.h" +#include "util-debug.h" #ifdef UNITTESTS - #include "detect-parse.h" #include "detect-engine.h" #include "detect-engine-address.h" diff --git a/src/rust-context.h b/src/rust-context.h index 785175e632..750d69ce0c 100644 --- a/src/rust-context.h +++ b/src/rust-context.h @@ -18,13 +18,19 @@ #ifndef __RUST_CONTEXT_H__ #define __RUST_CONTEXT_H__ +#include "flow.h" +#include "detect.h" #include "detect-engine-state.h" //DetectEngineState + #include "app-layer-krb5.h" //KRB5State, KRB5Transaction #include "app-layer-ike.h" //IKEState, IKETransaction #include "app-layer-ntp.h" //NTPState, NTPTransaction #include "app-layer-snmp.h" //SNMPState, SNMPTransaction #include "app-layer-tftp.h" //TFTPState, TFTPTransaction +#include "util-debug.h" +#include "util-file.h" + // hack for include orders cf SCSha256 typedef struct HttpRangeContainerBlock HttpRangeContainerBlock; diff --git a/src/rust.h b/src/rust.h index a01e6e602b..39f94c4321 100644 --- a/src/rust.h +++ b/src/rust.h @@ -18,7 +18,9 @@ #ifndef __RUST_H__ #define __RUST_H__ -#include "util-lua.h" +#include "app-layer-events.h" +#include "util-file.h" + // hack for include orders cf SCSha256 typedef struct HttpRangeContainerBlock HttpRangeContainerBlock; #include "rust-context.h" diff --git a/src/source-dpdk.c b/src/source-dpdk.c index c22c68b3fc..97b938d7e0 100644 --- a/src/source-dpdk.c +++ b/src/source-dpdk.c @@ -32,6 +32,7 @@ #include "suricata-common.h" #include "runmodes.h" +#include "decode.h" #include "source-dpdk.h" #include "suricata.h" #include "threads.h" diff --git a/src/source-dpdk.h b/src/source-dpdk.h index b20b7fc609..a17111ce4d 100644 --- a/src/source-dpdk.h +++ b/src/source-dpdk.h @@ -24,6 +24,8 @@ #ifndef __SOURCE_DPDK_H__ #define __SOURCE_DPDK_H__ +#include "suricata-common.h" + #ifdef HAVE_DPDK #include #endif diff --git a/src/source-napatech.c b/src/source-napatech.c index 39863aa251..6ac232b6dd 100644 --- a/src/source-napatech.c +++ b/src/source-napatech.c @@ -26,6 +26,7 @@ * */ #include "suricata-common.h" +#include "decode.h" #include "suricata.h" #include "threadvars.h" #include "util-datalink.h" diff --git a/src/stream-tcp-inline.c b/src/stream-tcp-inline.c index 36374c5566..9bdb90f34e 100644 --- a/src/stream-tcp-inline.c +++ b/src/stream-tcp-inline.c @@ -24,6 +24,7 @@ */ #include "suricata-common.h" +#include "decode.h" #include "stream-tcp-private.h" #include "stream-tcp-inline.h" diff --git a/src/stream-tcp-reassemble.h b/src/stream-tcp-reassemble.h index ce7cf16bcb..11bdd63851 100644 --- a/src/stream-tcp-reassemble.h +++ b/src/stream-tcp-reassemble.h @@ -25,12 +25,9 @@ #ifndef __STREAM_TCP_REASSEMBLE_H__ #define __STREAM_TCP_REASSEMBLE_H__ -#include "stream-tcp-private.h" -#include "stream-tcp-private.h" - -#ifdef UNITTESTS #include "suricata.h" -#endif +#include "flow.h" +#include "stream-tcp-private.h" /** Supported OS list and default OS policy is BSD */ enum diff --git a/src/stream.h b/src/stream.h index 53f1f6e0cc..51ae39daf2 100644 --- a/src/stream.h +++ b/src/stream.h @@ -24,6 +24,7 @@ #ifndef __STREAM_H__ #define __STREAM_H__ +#include "decode.h" #include "stream-tcp-private.h" #define STREAM_FLAGS_FOR_PACKET(p) PKT_IS_TOSERVER((p)) ? STREAM_TOSERVER : STREAM_TOCLIENT diff --git a/src/suricata-common.h b/src/suricata-common.h index 1e0b8698d0..ded159adc5 100644 --- a/src/suricata-common.h +++ b/src/suricata-common.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2010 Open Information Security Foundation +/* Copyright (C) 2007-2022 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 @@ -499,20 +499,30 @@ typedef enum { LOGGER_SIZE, } LoggerId; -#include "util-optimize.h" -#ifndef SURICATA_PLUGIN -#include +#ifndef HAVE_LUA + +/* If we don't have Lua, create a typedef for lua_State so the + * exported Lua functions don't fail the build. */ +typedef void lua_State; + +#else + +#include +#include +#include + #endif -#include "threads.h" + #include "tm-threads-common.h" -#include "util-debug.h" -#include "util-error.h" +#include "util-optimize.h" #include "util-mem.h" -#ifndef SURICATA_PLUGIN -#include "detect-engine-alert.h" -#endif -#include "util-path.h" -#include "util-conf.h" +#include "util-memcmp.h" +#include "util-atomic.h" +#include "util-unittest.h" + +// pseudo system headers +#include "queue.h" +#include "tree.h" #ifndef HAVE_STRLCAT size_t strlcat(char *, const char *src, size_t siz); @@ -542,4 +552,3 @@ extern int g_ut_covered; #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) #endif /* __SURICATA_COMMON_H__ */ - diff --git a/src/suricata.c b/src/suricata.c index 63dfd572da..81c2e6802d 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -32,159 +32,102 @@ #endif #include "suricata.h" -#include "decode.h" -#include "feature.h" -#include "detect.h" -#include "packet-queue.h" -#include "threads.h" -#include "threadvars.h" -#include "flow-worker.h" -#include "util-atomic.h" -#include "util-spm.h" -#include "util-cpu.h" -#include "util-action.h" -#include "util-pidfile.h" -#include "util-ioctl.h" -#include "util-device.h" -#include "util-misc.h" -#include "util-macset.h" -#include "util-running-modes.h" +#include "conf.h" +#include "conf-yaml-loader.h" -#include "detect-engine.h" +#include "decode.h" +#include "defrag.h" +#include "flow.h" +#include "stream-tcp.h" +#include "ippair.h" + +#include "detect.h" #include "detect-parse.h" -#include "detect-fast-pattern.h" -#include "detect-engine-tag.h" -#include "detect-engine-threshold.h" +#include "detect-engine.h" #include "detect-engine-address.h" +#include "detect-engine-alert.h" #include "detect-engine-port.h" -#include "detect-engine-mpm.h" +#include "detect-engine-tag.h" +#include "detect-engine-threshold.h" +#include "detect-fast-pattern.h" -#include "tm-queuehandlers.h" -#include "tm-queues.h" -#include "tm-threads.h" +#include "datasets.h" -#include "tmqh-flow.h" +#include "feature.h" -#include "conf.h" -#include "conf-yaml-loader.h" +#include "flow-bypass.h" +#include "flow-manager.h" +#include "flow-timeout.h" +#include "flow-worker.h" + +#include "flow-bit.h" +#include "host-bit.h" +#include "ippair-bit.h" +#include "app-layer.h" +#include "app-layer-parser.h" +#include "app-layer-htp.h" #include "app-layer-htp-range.h" -#include "datasets.h" -#include "stream-tcp.h" +#include "output.h" +#include "output-filestore.h" + +#include "respond-reject.h" + +#include "runmode-af-packet.h" +#include "runmode-netmap.h" +#include "runmode-unittests.h" #include "source-nfq.h" #include "source-nfq-prototypes.h" - #include "source-nflog.h" - #include "source-ipfw.h" - #include "source-pcap.h" #include "source-pcap-file.h" #include "source-pcap-file-helper.h" - #include "source-pfring.h" - #include "source-erf-file.h" #include "source-erf-dag.h" #include "source-napatech.h" - #include "source-af-packet.h" #include "source-netmap.h" - #include "source-dpdk.h" - #include "source-windivert.h" #include "source-windivert-prototypes.h" -#include "respond-reject.h" - -#include "flow.h" -#include "flow-timeout.h" -#include "flow-manager.h" -#include "flow-bypass.h" -#include "flow-var.h" -#include "flow-bit.h" -#include "pkt-var.h" -#include "host-bit.h" - -#include "ippair.h" -#include "ippair-bit.h" - -#include "host.h" #include "unix-manager.h" -#include "app-layer.h" -#include "app-layer-parser.h" -#include "app-layer-register.h" -#include "app-layer-htp.h" -#include "app-layer-ssl.h" -#include "app-layer-ssh.h" -#include "app-layer-ftp.h" -#include "app-layer-smtp.h" -#include "app-layer-enip.h" -#include "app-layer-dnp3.h" -#include "app-layer-smb.h" -#include "app-layer-htp-file.h" - -#include "output-filestore.h" - -#include "util-ebpf.h" -#include "util-radix-tree.h" -#include "util-host-os-info.h" -#include "util-cidr.h" -#include "util-unittest.h" -#include "util-unittest-helper.h" -#include "util-time.h" -#include "util-rule-vars.h" #include "util-classification-config.h" #include "util-threshold-config.h" #include "util-reference-config.h" -#include "util-profiling.h" -#include "util-magic.h" -#include "util-signal.h" - -#include "util-coredump-config.h" - -#include "util-decode-mime.h" - -#include "defrag.h" -#include "runmodes.h" -#include "runmode-unittests.h" -#include "runmode-af-packet.h" -#include "runmode-netmap.h" +#include "tmqh-packetpool.h" +#include "tm-queuehandlers.h" -#include "util-debug.h" -#include "util-error.h" -#include "util-daemon.h" #include "util-byte.h" -#include "util-luajit.h" +#include "util-conf.h" +#include "util-coredump-config.h" +#include "util-cpu.h" +#include "util-daemon.h" +#include "util-device.h" +#include "util-dpdk.h" +#include "util-ebpf.h" +#include "util-host-os-info.h" +#include "util-ioctl.h" #include "util-landlock.h" - -#include "reputation.h" - -#include "output.h" - -#include "util-privs.h" - -#include "tmqh-packetpool.h" - -#include "util-proto-name.h" +#include "util-luajit.h" +#include "util-macset.h" +#include "util-misc.h" #include "util-mpm-hs.h" -#include "util-storage.h" -#include "host-storage.h" - -#include "util-lua.h" - +#include "util-pidfile.h" #include "util-plugin.h" - -#include "util-dpdk.h" -#include "util-exception-policy.h" - -#include "rust.h" +#include "util-privs.h" +#include "util-profiling.h" +#include "util-proto-name.h" +#include "util-running-modes.h" +#include "util-signal.h" +#include "util-time.h" /* * we put this here, because we only use it here in main. diff --git a/src/tests/detect-ttl.c b/src/tests/detect-ttl.c index d8052ecd7a..fc9e5a5530 100644 --- a/src/tests/detect-ttl.c +++ b/src/tests/detect-ttl.c @@ -16,9 +16,8 @@ * 02110-1301, USA. */ -#include "../detect-engine.h" #include "../util-unittest.h" -#include "../detect-engine-build.h" +#include "../util-unittest-helper.h" /** * \test DetectTtlParseTest01 is a test for setting up an valid ttl value. diff --git a/src/tests/detect.c b/src/tests/detect.c index 30d653fa9e..16bf078c4c 100644 --- a/src/tests/detect.c +++ b/src/tests/detect.c @@ -3396,7 +3396,7 @@ static int SigTest36ContentAndIsdataatKeywords01 (void) DetectEngineThreadCtxDeinit(&th_v, (void *)det_ctx); DetectEngineCtxFree(de_ctx); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); @@ -3418,7 +3418,7 @@ end: DetectEngineCtxFree(de_ctx); if (p != NULL) - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); @@ -3521,7 +3521,7 @@ static int SigTest37ContentAndIsdataatKeywords02 (void) DetectEngineThreadCtxDeinit(&th_v, (void *)det_ctx); DetectEngineCtxFree(de_ctx); - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); SCFree(p); @@ -3541,7 +3541,7 @@ end: DetectEngineCtxFree(de_ctx); if (p != NULL) - PACKET_RECYCLE(p); + PacketRecycle(p); FlowShutdown(); @@ -4289,19 +4289,19 @@ end: DetectEngineCtxFree(de_ctx); if (p1 != NULL) { - PACKET_RECYCLE(p1); + PacketRecycle(p1); SCFree(p1); } if (p2 != NULL) { - PACKET_RECYCLE(p2); + PacketRecycle(p2); SCFree(p2); } if (p3 != NULL) { - PACKET_RECYCLE(p3); + PacketRecycle(p3); SCFree(p3); } if (p4 != NULL) { - PACKET_RECYCLE(p4); + PacketRecycle(p4); SCFree(p4); } FlowShutdown(); diff --git a/src/tests/fuzz/fuzz_applayerparserparse.c b/src/tests/fuzz/fuzz_applayerparserparse.c index 6da5b78b1c..3952c953a5 100644 --- a/src/tests/fuzz/fuzz_applayerparserparse.c +++ b/src/tests/fuzz/fuzz_applayerparserparse.c @@ -12,6 +12,7 @@ #include "util-unittest-helper.h" #include "util-byte.h" #include "conf-yaml-loader.h" +#include "util-conf.h" #define HEADER_LEN 6 diff --git a/src/tests/fuzz/fuzz_decodepcapfile.c b/src/tests/fuzz/fuzz_decodepcapfile.c index 3bf60af573..9685ea5106 100644 --- a/src/tests/fuzz/fuzz_decodepcapfile.c +++ b/src/tests/fuzz/fuzz_decodepcapfile.c @@ -14,6 +14,7 @@ #include "util-unittest-helper.h" #include "conf-yaml-loader.h" #include "util-time.h" +#include "util-conf.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); diff --git a/src/tests/fuzz/fuzz_predefpcap_aware.c b/src/tests/fuzz/fuzz_predefpcap_aware.c index 80dc3bb7e1..58ce96cc5c 100644 --- a/src/tests/fuzz/fuzz_predefpcap_aware.c +++ b/src/tests/fuzz/fuzz_predefpcap_aware.c @@ -26,6 +26,7 @@ #include "flow-util.h" #include "tm-modules.h" #include "tmqh-packetpool.h" +#include "util-conf.h" #include @@ -138,7 +139,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) } } r = FPC_next(&pkts, &header, &pkt); - PACKET_RECYCLE(p); + PacketRecycle(p); p->ts.tv_sec = header.ts.tv_sec; p->ts.tv_usec = header.ts.tv_usec % 1000000; p->datalink = pkts.datalink; diff --git a/src/tests/fuzz/fuzz_sigpcap.c b/src/tests/fuzz/fuzz_sigpcap.c index 04f2be6a1f..2509849aad 100644 --- a/src/tests/fuzz/fuzz_sigpcap.c +++ b/src/tests/fuzz/fuzz_sigpcap.c @@ -27,6 +27,8 @@ #include "flow-worker.h" #include "tm-modules.h" #include "tmqh-packetpool.h" +#include "util-file.h" +#include "util-conf.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); @@ -180,7 +182,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) } } r = pcap_next_ex(pkts, &header, &pkt); - PACKET_RECYCLE(p); + PacketRecycle(p); p->ts.tv_sec = header->ts.tv_sec; p->ts.tv_usec = header->ts.tv_usec % 1000000; p->datalink = pcap_datalink(pkts); diff --git a/src/tests/fuzz/fuzz_sigpcap_aware.c b/src/tests/fuzz/fuzz_sigpcap_aware.c index 611dba1e29..2f58060f18 100644 --- a/src/tests/fuzz/fuzz_sigpcap_aware.c +++ b/src/tests/fuzz/fuzz_sigpcap_aware.c @@ -27,6 +27,7 @@ #include "flow-worker.h" #include "tm-modules.h" #include "tmqh-packetpool.h" +#include "util-conf.h" #include @@ -179,7 +180,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) } } r = FPC_next(&pkts, &header, &pkt); - PACKET_RECYCLE(p); + PacketRecycle(p); p->pkt_src = PKT_SRC_WIRE; p->ts.tv_sec = header.ts.tv_sec; p->ts.tv_usec = header.ts.tv_usec % 1000000; diff --git a/src/threads-profile.h b/src/threads-profile.h index 1d66997f7d..6df3b4be67 100644 --- a/src/threads-profile.h +++ b/src/threads-profile.h @@ -26,8 +26,19 @@ #ifndef __THREADS_PROFILE_H__ #define __THREADS_PROFILE_H__ +#include "util-cpu.h" + +#define PROFILING_MAX_LOCKS 64 + /* profiling */ +enum { + LOCK_MUTEX, + LOCK_SPIN, + LOCK_RWW, /**< rwlock, writer */ + LOCK_RWR, /**< rwlock, reader */ +}; + typedef struct ProfilingLock_ { char *file; char *func; diff --git a/src/threads.h b/src/threads.h index c11c054bc8..3f8f109aab 100644 --- a/src/threads.h +++ b/src/threads.h @@ -44,13 +44,6 @@ #include #endif -#ifdef PROFILING -#include "util-cpu.h" -#ifdef PROFILE_LOCKING -#include "util-profiling-locks.h" -#endif /* PROFILE_LOCKING */ -#endif /* PROFILING */ - #if defined OS_FREEBSD || __OpenBSD__ #if ! defined __OpenBSD__ diff --git a/src/tm-threads.h b/src/tm-threads.h index f7a0a57d84..6249305611 100644 --- a/src/tm-threads.h +++ b/src/tm-threads.h @@ -28,6 +28,7 @@ #include "tmqh-packetpool.h" #include "tm-threads-common.h" #include "tm-modules.h" +#include "flow.h" // for the FlowQueue #ifdef OS_WIN32 static inline void SleepUsec(uint64_t usec) diff --git a/src/tmqh-packetpool.c b/src/tmqh-packetpool.c index e512aa114a..5c78968e61 100644 --- a/src/tmqh-packetpool.c +++ b/src/tmqh-packetpool.c @@ -23,32 +23,15 @@ * Packetpool queue handlers. Packet pool is implemented as a stack. */ -#include "suricata.h" -#include "packet-queue.h" -#include "decode.h" -#include "detect.h" -#include "detect-uricontent.h" -#include "threads.h" -#include "threadvars.h" -#include "flow.h" -#include "flow-util.h" -#include "host.h" - -#include "stream.h" -#include "stream-tcp-reassemble.h" - +#include "suricata-common.h" +#include "tmqh-packetpool.h" #include "tm-queuehandlers.h" #include "tm-threads.h" +#include "threads.h" +#include "decode.h" #include "tm-modules.h" - -#include "pkt-var.h" - -#include "tmqh-packetpool.h" - -#include "util-debug.h" -#include "util-error.h" +#include "packet.h" #include "util-profiling.h" -#include "util-device.h" #include "util-validate.h" /* Number of freed packet to save for one pool before freeing them. */ @@ -195,7 +178,7 @@ Packet *PacketPoolGetPacket(void) Packet *p = pool->head; pool->head = p->next; p->pool = pool; - PACKET_REINIT(p); + PacketReinit(p); return p; } @@ -211,7 +194,7 @@ Packet *PacketPoolGetPacket(void) Packet *p = pool->head; pool->head = p->next; p->pool = pool; - PACKET_REINIT(p); + PacketReinit(p); return p; } @@ -232,7 +215,7 @@ void PacketPoolReturnPacket(Packet *p) return; } - PACKET_RELEASE_REFS(p); + PacketReleaseRefs(p); #ifdef DEBUG_VALIDATION BUG_ON(pool->initialized == 0); @@ -463,14 +446,14 @@ void TmqhOutputPacketpool(ThreadVars *t, Packet *p) if (proot == true) { SCLogDebug("getting rid of root pkt... alloc'd %s", p->root->flags & PKT_ALLOC ? "true" : "false"); - PACKET_RELEASE_REFS(p->root); + PacketReleaseRefs(p->root); p->root->ReleasePacket(p->root); p->root = NULL; } PACKET_PROFILING_END(p); - PACKET_RELEASE_REFS(p); + PacketReleaseRefs(p); p->ReleasePacket(p); SCReturn; diff --git a/src/unix-manager.c b/src/unix-manager.c index 0f0c846c88..a377f5aa91 100644 --- a/src/unix-manager.c +++ b/src/unix-manager.c @@ -22,8 +22,8 @@ */ #include "suricata-common.h" -#include "suricata.h" #include "unix-manager.h" +#include "threads.h" #include "detect-engine.h" #include "tm-threads.h" #include "runmodes.h" @@ -32,12 +32,14 @@ #include "output-json-stats.h" +#include "util-conf.h" #include "util-privs.h" #include "util-debug.h" #include "util-device.h" #include "util-ebpf.h" #include "util-signal.h" #include "util-buffer.h" +#include "util-path.h" #if (defined BUILD_UNIX_SOCKET) && (defined HAVE_SYS_UN_H) && (defined HAVE_SYS_STAT_H) && (defined HAVE_SYS_TYPES_H) #include diff --git a/src/unix-manager.h b/src/unix-manager.h index 22f21923be..65857a65fd 100644 --- a/src/unix-manager.h +++ b/src/unix-manager.h @@ -24,6 +24,8 @@ #ifndef UNIX_MANAGER_H #define UNIX_MANAGER_H +#include "threads.h" + #define UNIX_CMD_TAKE_ARGS 1 extern SCCtrlCondT unix_manager_ctrl_cond; diff --git a/src/util-affinity.c b/src/util-affinity.c index 2ad03e6a73..302ab2d9c5 100644 --- a/src/util-affinity.c +++ b/src/util-affinity.c @@ -25,12 +25,11 @@ #include "suricata-common.h" #define _THREAD_AFFINITY #include "util-affinity.h" -#include "util-cpu.h" -#include "util-byte.h" #include "conf.h" -#include "threads.h" -#include "queue.h" #include "runmodes.h" +#include "util-cpu.h" +#include "util-byte.h" +#include "util-debug.h" ThreadsAffinityType thread_affinity[MAX_CPU_SET] = { { diff --git a/src/util-affinity.h b/src/util-affinity.h index de0ccb1586..cce7cebe02 100644 --- a/src/util-affinity.h +++ b/src/util-affinity.h @@ -25,6 +25,7 @@ #define __UTIL_AFFINITY_H__ #include "suricata-common.h" #include "conf.h" +#include "threads.h" #if defined OS_FREEBSD #include diff --git a/src/util-base64.c b/src/util-base64.c index 4ccbc1eb5a..dc3de2a1ea 100644 --- a/src/util-base64.c +++ b/src/util-base64.c @@ -23,6 +23,7 @@ */ #include "util-base64.h" +#include "util-debug.h" #include "util-unittest.h" /* Constants */ #define BASE64_TABLE_MAX 122 diff --git a/src/util-bpf.c b/src/util-bpf.c index 934aca9ad2..b57dd0f512 100644 --- a/src/util-bpf.c +++ b/src/util-bpf.c @@ -21,10 +21,9 @@ * \author Eric Leblond */ - #include "suricata-common.h" -#include "suricata.h" #include "util-bpf.h" +#include "threads.h" #if !defined __OpenBSD__ diff --git a/src/util-checksum.c b/src/util-checksum.c index 3580e85def..5bbb5d4837 100644 --- a/src/util-checksum.c +++ b/src/util-checksum.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" - #include "util-checksum.h" int ReCalculateChecksum(Packet *p) diff --git a/src/util-checksum.h b/src/util-checksum.h index eb2767e9b4..c7b056bdd8 100644 --- a/src/util-checksum.h +++ b/src/util-checksum.h @@ -24,6 +24,8 @@ #ifndef __UTIL_CHECKSUM_H__ #define __UTIL_CHECKSUM_H__ +#include "decode.h" + int ReCalculateChecksum(Packet *p); int ChecksumAutoModeCheck(uint64_t thread_count, uint64_t iface_count, uint64_t iface_fail); diff --git a/src/util-cidr.c b/src/util-cidr.c index 92f1d70876..de93a535e2 100644 --- a/src/util-cidr.c +++ b/src/util-cidr.c @@ -25,6 +25,7 @@ #include "suricata-common.h" #include "util-cidr.h" +#include "util-debug.h" #include "util-unittest.h" /** \brief turn 32 bit mask into CIDR diff --git a/src/util-conf.c b/src/util-conf.c index 4abdeca7c8..9807db0cae 100644 --- a/src/util-conf.c +++ b/src/util-conf.c @@ -27,6 +27,7 @@ #include "conf.h" #include "runmodes.h" #include "util-conf.h" +#include "util-debug.h" TmEcode ConfigSetLogDirectory(const char *name) { diff --git a/src/util-coredump-config.c b/src/util-coredump-config.c index e5b14a7568..ba00a9fca5 100644 --- a/src/util-coredump-config.c +++ b/src/util-coredump-config.c @@ -23,12 +23,17 @@ * Coredump configuration */ +#include "suricata-common.h" #define _FILE_OFFSET_BITS 64 #include "util-coredump-config.h" #include "conf.h" #ifdef HAVE_SYS_RESOURCE_H #include #endif +#ifdef HAVE_SYS_PRCTL_H +#include +#endif +#include "util-debug.h" #ifdef OS_WIN32 diff --git a/src/util-datalink.c b/src/util-datalink.c index f645ffb88f..ad34a2b3a7 100644 --- a/src/util-datalink.c +++ b/src/util-datalink.c @@ -16,8 +16,8 @@ */ #include "suricata-common.h" -#include "conf.h" #include "util-datalink.h" +#include "decode.h" int g_datalink_value = LINKTYPE_NULL; int g_datalink_is_multiple = 0; diff --git a/src/util-debug-filters.c b/src/util-debug-filters.c index cbf8d54262..ee3d566d8d 100644 --- a/src/util-debug-filters.c +++ b/src/util-debug-filters.c @@ -25,6 +25,8 @@ #include "suricata-common.h" #include "util-debug-filters.h" +#include "threads.h" +#include "util-debug.h" /* both of these are defined in util-debug.c */ extern int sc_log_module_initialized; diff --git a/src/util-debug-filters.h b/src/util-debug-filters.h index 5c6764c712..a7994dccd0 100644 --- a/src/util-debug-filters.h +++ b/src/util-debug-filters.h @@ -24,7 +24,7 @@ #ifndef __DEBUG_FILTERS_H__ #define __DEBUG_FILTERS_H__ -#include +#include "threads.h" /** * \brief Enum that holds the different kinds of filters available diff --git a/src/util-debug.c b/src/util-debug.c index f2beabd6cb..eb533badb2 100644 --- a/src/util-debug.c +++ b/src/util-debug.c @@ -24,30 +24,17 @@ */ #include "suricata-common.h" -#include "threads.h" #include "util-debug.h" -#include "util-error.h" -#include "util-enum.h" -#include "util-debug-filters.h" -#include "suricata.h" -#include "decode.h" -#include "detect.h" -#include "packet-queue.h" -#include "threadvars.h" #include "output.h" -#include "tm-queuehandlers.h" -#include "tm-queues.h" -#include "tm-threads.h" +#include "suricata.h" -#include "util-unittest.h" +#include "util-conf.h" +#include "util-enum.h" +#include "util-path.h" #include "util-syslog.h" #include "util-time.h" -#include "rust.h" - - -#include "conf.h" /* holds the string-enum mapping for the enums held in the table SCLogLevel */ SCEnumCharMap sc_log_level_map[ ] = { diff --git a/src/util-decode-mime.c b/src/util-decode-mime.c index 1dd2ee4c14..c9eb26570c 100644 --- a/src/util-decode-mime.c +++ b/src/util-decode-mime.c @@ -24,7 +24,7 @@ */ #include "suricata-common.h" - +#include "suricata.h" #include "util-decode-mime.h" #include "util-ip.h" #include "util-spm-bs.h" diff --git a/src/util-decode-mime.h b/src/util-decode-mime.h index 657a90b9d6..0dde13ca04 100644 --- a/src/util-decode-mime.h +++ b/src/util-decode-mime.h @@ -26,11 +26,9 @@ #ifndef MIME_DECODE_H_ #define MIME_DECODE_H_ -#include -#include -#include - +#include "conf.h" #include "util-base64.h" +#include "util-file.h" /* Content Flags */ #define CTNT_IS_MSG 1 diff --git a/src/util-device.c b/src/util-device.c index 48920197d3..89988c748a 100644 --- a/src/util-device.c +++ b/src/util-device.c @@ -23,6 +23,7 @@ #include "util-dpdk.h" #include "device-storage.h" +#include "util-debug.h" #define MAX_DEVNAME 10 diff --git a/src/util-dpdk-i40e.c b/src/util-dpdk-i40e.c index 77baf0b93c..ac5dd03a20 100644 --- a/src/util-dpdk-i40e.c +++ b/src/util-dpdk-i40e.c @@ -31,6 +31,8 @@ */ #include "util-dpdk-i40e.h" +#include "util-dpdk.h" +#include "util-debug.h" #ifdef HAVE_DPDK diff --git a/src/util-dpdk-ice.c b/src/util-dpdk-ice.c index 736361bd6c..060f1635d4 100644 --- a/src/util-dpdk-ice.c +++ b/src/util-dpdk-ice.c @@ -31,6 +31,7 @@ */ #include "util-dpdk-ice.h" +#include "util-dpdk.h" #ifdef HAVE_DPDK diff --git a/src/util-dpdk-ixgbe.c b/src/util-dpdk-ixgbe.c index 539f657a07..e7fcdd0805 100644 --- a/src/util-dpdk-ixgbe.c +++ b/src/util-dpdk-ixgbe.c @@ -31,6 +31,7 @@ */ #include "util-dpdk-ixgbe.h" +#include "util-dpdk.h" #ifdef HAVE_DPDK diff --git a/src/util-dpdk.c b/src/util-dpdk.c index ac9e3d8653..29479c1a2b 100644 --- a/src/util-dpdk.c +++ b/src/util-dpdk.c @@ -23,6 +23,7 @@ #include "suricata.h" #include "util-dpdk.h" +#include "util-debug.h" void DPDKCleanupEAL(void) { diff --git a/src/util-exception-policy.h b/src/util-exception-policy.h index 0a3b78d9f7..b10610ca07 100644 --- a/src/util-exception-policy.h +++ b/src/util-exception-policy.h @@ -22,6 +22,8 @@ #ifndef __UTIL_EXCEPTION_POLICY_H__ #define __UTIL_EXCEPTION_POLICY_H__ +#include "decode.h" + enum ExceptionPolicy { EXCEPTION_POLICY_IGNORE = 0, EXCEPTION_POLICY_PASS_PACKET, diff --git a/src/util-file.h b/src/util-file.h index d5dfa93fee..5bd1a18606 100644 --- a/src/util-file.h +++ b/src/util-file.h @@ -27,6 +27,7 @@ #include "conf.h" #include "util-streaming-buffer.h" +#include "flow.h" /* Hack: Pulling rust.h to get the SCSha256 causes all sorts of problems with * header include orders, which is something we'll have to resolve as we provide diff --git a/src/util-hash-string.h b/src/util-hash-string.h index 17fec82e1f..7153af800d 100644 --- a/src/util-hash-string.h +++ b/src/util-hash-string.h @@ -18,6 +18,8 @@ #ifndef __UTIL_HASH_STRING_H__ #define __UTIL_HASH_STRING_H__ +#include "util-hash.h" + uint32_t StringHashDjb2(const uint8_t *data, uint32_t datalen); uint32_t StringHashFunc(HashTable *ht, void *data, uint16_t datalen); char StringHashCompareFunc(void *data1, uint16_t datalen1, diff --git a/src/util-hash.c b/src/util-hash.c index 98765f5c3d..a2b72209ec 100644 --- a/src/util-hash.c +++ b/src/util-hash.c @@ -30,6 +30,7 @@ #include "util-hash.h" #include "util-unittest.h" #include "util-memcmp.h" +#include "util-debug.h" HashTable* HashTableInit(uint32_t size, uint32_t (*Hash)(struct HashTable_ *, void *, uint16_t), char (*Compare)(void *, uint16_t, void *, uint16_t), void (*Free)(void *)) { diff --git a/src/util-host-info.c b/src/util-host-info.c index 568e5e0640..eac28fe212 100644 --- a/src/util-host-info.c +++ b/src/util-host-info.c @@ -27,6 +27,7 @@ #include "suricata-common.h" #include "util-host-info.h" #include "util-byte.h" +#include "util-debug.h" #ifndef OS_WIN32 #include diff --git a/src/util-ioctl.c b/src/util-ioctl.c index e0f7009e32..b415e255f4 100644 --- a/src/util-ioctl.c +++ b/src/util-ioctl.c @@ -23,8 +23,9 @@ */ #include "suricata-common.h" +#include "util-ioctl.h" #include "conf.h" -#include "util-device.h" +#include "decode.h" #include "decode-sll.h" #ifdef HAVE_SYS_IOCTL_H @@ -49,8 +50,6 @@ #include "win32-syscall.h" #endif -#include "util-ioctl.h" - /** * \brief output a majorant of hardware header length * diff --git a/src/util-ip.c b/src/util-ip.c index aad49df0e1..36df15027d 100644 --- a/src/util-ip.c +++ b/src/util-ip.c @@ -27,6 +27,7 @@ #include "suricata-common.h" #include "util-ip.h" #include "util-byte.h" +#include "util-debug.h" /** \brief determine if a string is a valid ipv4 address * \retval bool is addr valid? diff --git a/src/util-landlock.c b/src/util-landlock.c index b0fa2f087d..fa15a08e04 100644 --- a/src/util-landlock.c +++ b/src/util-landlock.c @@ -22,11 +22,12 @@ */ #include "suricata.h" +#include "feature.h" #include "util-conf.h" #include "util-file.h" #include "util-landlock.h" #include "util-mem.h" -#include "feature.h" +#include "util-path.h" #ifndef HAVE_LINUX_LANDLOCK_H diff --git a/src/util-log-redis.c b/src/util-log-redis.c index 6814b142ab..bfaf29a5a9 100644 --- a/src/util-log-redis.c +++ b/src/util-log-redis.c @@ -27,6 +27,7 @@ #include "util-log-redis.h" #include "util-logopenfile.h" #include "util-byte.h" +#include "util-debug.h" #ifdef HAVE_LIBHIREDIS diff --git a/src/util-logopenfile.c b/src/util-logopenfile.c index d461684586..81da79b828 100644 --- a/src/util-logopenfile.c +++ b/src/util-logopenfile.c @@ -30,6 +30,8 @@ #include "conf.h" /* ConfNode, etc. */ #include "output.h" /* DEFAULT_LOG_* */ #include "util-byte.h" +#include "util-conf.h" +#include "util-path.h" #include "util-time.h" #if defined(HAVE_SYS_UN_H) && defined(HAVE_SYS_SOCKET_H) && defined(HAVE_SYS_TYPES_H) diff --git a/src/util-logopenfile.h b/src/util-logopenfile.h index b3b89c69e1..7f0d65ff03 100644 --- a/src/util-logopenfile.h +++ b/src/util-logopenfile.h @@ -24,6 +24,7 @@ #ifndef __UTIL_LOGOPENFILE_H__ #define __UTIL_LOGOPENFILE_H__ +#include "threads.h" #include "conf.h" /* ConfNode */ #include "util-buffer.h" diff --git a/src/util-lua-common.c b/src/util-lua-common.c index 228aeffcdd..a014ae7bba 100644 --- a/src/util-lua-common.c +++ b/src/util-lua-common.c @@ -46,6 +46,7 @@ #include "util-proto-name.h" #include "util-logopenfile.h" #include "util-time.h" +#include "util-conf.h" #ifdef HAVE_LUA diff --git a/src/util-lua.h b/src/util-lua.h index 019f254ae9..4de9400544 100644 --- a/src/util-lua.h +++ b/src/util-lua.h @@ -31,11 +31,8 @@ typedef void lua_State; #else - -#include -#include -#include - +#include "threadvars.h" +#include "detect.h" typedef struct LuaStreamingBuffer_ { const uint8_t *data; diff --git a/src/util-magic.c b/src/util-magic.c index 20ba08bb88..941c98f56c 100644 --- a/src/util-magic.c +++ b/src/util-magic.c @@ -28,11 +28,10 @@ */ #include "suricata-common.h" - #include "conf.h" - #include "util-unittest.h" #include "util-magic.h" +#include "util-debug.h" #ifdef HAVE_MAGIC diff --git a/src/util-mem.c b/src/util-mem.c index 2cf008e709..551d05b78e 100644 --- a/src/util-mem.c +++ b/src/util-mem.c @@ -18,6 +18,7 @@ #include "suricata-common.h" #include "suricata.h" #include "util-atomic.h" +#include "util-debug.h" #if defined(_WIN32) || defined(__WIN32) #include diff --git a/src/util-memcmp.c b/src/util-memcmp.c index 4342ac1f6c..bf3d8e56b3 100644 --- a/src/util-memcmp.c +++ b/src/util-memcmp.c @@ -24,7 +24,6 @@ */ #include "suricata-common.h" - #include "util-memcmp.h" #include "util-unittest.h" @@ -32,6 +31,7 @@ /* UNITTESTS */ #ifdef UNITTESTS +#include "util-debug.h" static int MemcmpTest01 (void) { @@ -372,7 +372,6 @@ static int MemcmpTest18 (void) if (SCMemcmpLowercase(t->a, t->b, strlen(t->a)-1) != t->result) return 0; - SCLogInfo("ok"); t++; } diff --git a/src/util-memcmp.h b/src/util-memcmp.h index 1ab636abae..bb6df86496 100644 --- a/src/util-memcmp.h +++ b/src/util-memcmp.h @@ -30,7 +30,6 @@ #define __UTIL_MEMCMP_H__ #include "util-optimize.h" -#include "suricata.h" /** \brief compare two patterns, converting the 2nd to lowercase * \warning *ONLY* the 2nd pattern is converted to lowercase diff --git a/src/util-mpm-ac.h b/src/util-mpm-ac.h index a9dbd6a090..46d0238fed 100644 --- a/src/util-mpm-ac.h +++ b/src/util-mpm-ac.h @@ -25,6 +25,8 @@ #ifndef __UTIL_MPM_AC__H__ #define __UTIL_MPM_AC__H__ +#include "util-mpm.h" + #define SC_AC_STATE_TYPE_U16 uint16_t #define SC_AC_STATE_TYPE_U32 uint32_t diff --git a/src/util-mpm.h b/src/util-mpm.h index f7a0c682cf..1c6b17f3e1 100644 --- a/src/util-mpm.h +++ b/src/util-mpm.h @@ -180,11 +180,6 @@ MpmCtx *MpmFactoryGetMpmCtxForProfile(const struct DetectEngineCtx_ *, int32_t, void MpmFactoryDeRegisterAllMpmCtxProfiles(struct DetectEngineCtx_ *); int32_t MpmFactoryIsMpmCtxAvailable(const struct DetectEngineCtx_ *, const MpmCtx *); -int PmqSetup(PrefilterRuleStore *); -void PmqReset(PrefilterRuleStore *); -void PmqCleanup(PrefilterRuleStore *); -void PmqFree(PrefilterRuleStore *); - void MpmTableSetup(void); void MpmRegisterTests(void); diff --git a/src/util-pages.c b/src/util-pages.c index afd9cb0495..170170b193 100644 --- a/src/util-pages.c +++ b/src/util-pages.c @@ -25,6 +25,7 @@ #include "suricata-common.h" #include "util-pages.h" +#include "util-debug.h" #ifndef HAVE_PAGESUPPORTSRWX_AS_MACRO diff --git a/src/util-pidfile.c b/src/util-pidfile.c index cbc57d6cb4..9642fe8cf7 100644 --- a/src/util-pidfile.c +++ b/src/util-pidfile.c @@ -28,6 +28,7 @@ #include "suricata-common.h" #include "util-pidfile.h" +#include "util-debug.h" /** * \brief Write a pid file (used at the startup) diff --git a/src/util-plugin.c b/src/util-plugin.c index 6a59f257c3..b0e9d62866 100644 --- a/src/util-plugin.c +++ b/src/util-plugin.c @@ -21,6 +21,7 @@ #include "runmodes.h" #include "output-eve-syslog.h" #include "util-plugin.h" +#include "util-debug.h" #ifdef HAVE_PLUGINS diff --git a/src/util-pool-thread.h b/src/util-pool-thread.h index a67fdf5d64..47e343b2c4 100644 --- a/src/util-pool-thread.h +++ b/src/util-pool-thread.h @@ -39,6 +39,7 @@ #ifndef __UTIL_POOL_THREAD_H__ #define __UTIL_POOL_THREAD_H__ +#include "threads.h" #include "util-pool.h" struct PoolThreadElement_ { diff --git a/src/util-prefilter.c b/src/util-prefilter.c index 42f323a6e8..ca59a1b48e 100644 --- a/src/util-prefilter.c +++ b/src/util-prefilter.c @@ -24,6 +24,7 @@ */ #include "suricata-common.h" +#include "util-prefilter.h" /** * \brief Setup a pmq diff --git a/src/util-prefilter.h b/src/util-prefilter.h index 379fd842b3..b956143114 100644 --- a/src/util-prefilter.h +++ b/src/util-prefilter.h @@ -24,6 +24,8 @@ #ifndef __UTIL_PREFILTER_H__ #define __UTIL_PREFILTER_H__ +#include "util-debug.h" + /** \brief structure for storing potential rule matches * * Helper structure for the prefilter engine. The Pattern Matchers @@ -79,4 +81,10 @@ PrefilterAddSids(PrefilterRuleStore *pmq, SigIntId *sids, uint32_t sids_size) } while (ptr != end); pmq->rule_id_array_cnt += sids_size; } + +int PmqSetup(PrefilterRuleStore *); +void PmqReset(PrefilterRuleStore *); +void PmqCleanup(PrefilterRuleStore *); +void PmqFree(PrefilterRuleStore *); + #endif /* __UTIL_PREFILTER_H__ */ diff --git a/src/util-privs.h b/src/util-privs.h index 6d1f0c60f9..05592f63f9 100644 --- a/src/util-privs.h +++ b/src/util-privs.h @@ -24,6 +24,8 @@ #ifndef _UTIL_PRIVS_H #define _UTIL_PRIVS_H +#include "threadvars.h" + #define SC_CAP_NONE 0x01 #define SC_CAP_SYS_ADMIN 0x02 #define SC_CAP_SYS_RAW_IO 0x04 diff --git a/src/util-profiling-keywords.c b/src/util-profiling-keywords.c index 1e55980df7..03f4d0243d 100644 --- a/src/util-profiling-keywords.c +++ b/src/util-profiling-keywords.c @@ -25,24 +25,14 @@ */ #include "suricata-common.h" -#include "decode.h" -#include "detect.h" -#include "detect-engine.h" -#include "conf.h" - -#include "tm-threads.h" - -#include "util-unittest.h" -#include "util-byte.h" #include "util-profiling.h" #include "util-profiling-locks.h" -#include "util-time.h" #ifdef PROFILING - -#ifndef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif +#include "detect-engine.h" +#include "tm-threads.h" +#include "util-conf.h" +#include "util-time.h" /** * Extra data for rule profiling. diff --git a/src/util-profiling-locks.c b/src/util-profiling-locks.c index 0840750596..a50570f746 100644 --- a/src/util-profiling-locks.c +++ b/src/util-profiling-locks.c @@ -26,10 +26,12 @@ #include "suricata-common.h" #include "util-profiling-locks.h" -#include "util-hashlist.h" #ifdef PROFILING #ifdef PROFILE_LOCKING +#include "threads.h" +#include "util-hashlist.h" +#include "util-debug.h" thread_local ProfilingLock locks[PROFILING_MAX_LOCKS]; thread_local int locks_idx = 0; diff --git a/src/util-profiling-locks.h b/src/util-profiling-locks.h index 0631681c62..08d745a721 100644 --- a/src/util-profiling-locks.h +++ b/src/util-profiling-locks.h @@ -26,15 +26,6 @@ #ifdef PROFILING -#define PROFILING_MAX_LOCKS 64 - -enum { - LOCK_MUTEX, - LOCK_SPIN, - LOCK_RWW, /**< rwlock, writer */ - LOCK_RWR, /**< rwlock, reader */ -}; - void SCProfilingAddPacketLocks(void *); int LockRecordInitHash(void); diff --git a/src/util-profiling-prefilter.c b/src/util-profiling-prefilter.c index c5e0cfd104..526cc2c873 100644 --- a/src/util-profiling-prefilter.c +++ b/src/util-profiling-prefilter.c @@ -25,21 +25,12 @@ */ #include "suricata-common.h" -#include "decode.h" -#include "detect.h" -#include "detect-engine.h" -#include "detect-engine-prefilter.h" -#include "conf.h" - -#include "tm-threads.h" - -#include "util-unittest.h" -#include "util-byte.h" #include "util-profiling.h" -#include "util-profiling-locks.h" -#include "util-time.h" #ifdef PROFILING +#include "detect-engine-prefilter.h" +#include "util-conf.h" +#include "util-time.h" typedef struct SCProfilePrefilterData_ { uint64_t called; diff --git a/src/util-profiling-rulegroups.c b/src/util-profiling-rulegroups.c index 1a89908cd4..d1d03962c9 100644 --- a/src/util-profiling-rulegroups.c +++ b/src/util-profiling-rulegroups.c @@ -25,20 +25,11 @@ */ #include "suricata-common.h" -#include "decode.h" -#include "detect.h" -#include "detect-engine.h" -#include "conf.h" - -#include "tm-threads.h" - -#include "util-unittest.h" -#include "util-byte.h" #include "util-profiling.h" -#include "util-profiling-locks.h" -#include "util-time.h" #ifdef PROFILING +#include "util-conf.h" +#include "util-time.h" /** * Extra data for rule profiling. diff --git a/src/util-profiling-rules.c b/src/util-profiling-rules.c index 6c3f31d967..2303a51326 100644 --- a/src/util-profiling-rules.c +++ b/src/util-profiling-rules.c @@ -25,19 +25,12 @@ */ #include "suricata-common.h" -#include "decode.h" -#include "detect.h" -#include "conf.h" - -#include "tm-threads.h" - -#include "util-unittest.h" -#include "util-byte.h" #include "util-profiling.h" -#include "util-profiling-locks.h" -#include "util-time.h" #ifdef PROFILING +#include "util-byte.h" +#include "util-conf.h" +#include "util-time.h" /** * Extra data for rule profiling. diff --git a/src/util-profiling.c b/src/util-profiling.c index 615b40b936..89bec12589 100644 --- a/src/util-profiling.c +++ b/src/util-profiling.c @@ -27,20 +27,15 @@ */ #include "suricata-common.h" -#include "decode.h" -#include "detect.h" -#include "detect-engine-prefilter.h" -#include "conf.h" -#include "flow-worker.h" +#include "util-profiling.h" +#ifdef PROFILING #include "tm-threads.h" - +#include "conf.h" #include "util-unittest.h" #include "util-byte.h" -#include "util-profiling.h" #include "util-profiling-locks.h" - -#ifdef PROFILING +#include "util-conf.h" #ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) diff --git a/src/util-profiling.h b/src/util-profiling.h index ad7c710169..b54f764d3a 100644 --- a/src/util-profiling.h +++ b/src/util-profiling.h @@ -27,6 +27,9 @@ #ifdef PROFILING +#include "detect.h" +#include "util-cpu.h" +#include "util-profiling-locks.h" extern int profiling_rules_enabled; extern int profiling_packets_enabled; @@ -305,6 +308,7 @@ extern thread_local int profiling_prefilter_entered; (det_ctx)->prefilter_bytes += (bytes); \ (det_ctx)->prefilter_bytes_called++ +struct SCProfileDetectCtx_; void SCProfilingRulesGlobalInit(void); void SCProfilingRuleDestroyCtx(struct SCProfileDetectCtx_ *); void SCProfilingRuleInitCounters(DetectEngineCtx *); diff --git a/src/util-proto-name.c b/src/util-proto-name.c index e63d964d5b..e74b01daf6 100644 --- a/src/util-proto-name.c +++ b/src/util-proto-name.c @@ -27,6 +27,7 @@ #include "suricata-common.h" #include "util-hash-string.h" #include "util-proto-name.h" +#include "util-debug.h" #ifdef UNITTESTS #include "util-unittest.h" diff --git a/src/util-random.c b/src/util-random.c index cac3f2864d..0beee32878 100644 --- a/src/util-random.c +++ b/src/util-random.c @@ -27,7 +27,7 @@ #include "suricata-common.h" #include "suricata.h" #include "util-random.h" - +#include "util-debug.h" #if !(defined(HAVE_WINCRYPT_H) && defined(OS_WIN32)) #if defined(HAVE_CLOCK_GETTIME) diff --git a/src/util-reference-config.h b/src/util-reference-config.h index 0bbab62af3..516e8cf9b5 100644 --- a/src/util-reference-config.h +++ b/src/util-reference-config.h @@ -24,6 +24,8 @@ #ifndef __UTIL_REFERENCE_CONFIG_H__ #define __UTIL_REFERENCE_CONFIG_H__ +#include "detect.h" + #define REFERENCE_SYSTEM_NAME_MAX 64 #define REFERENCE_CONTENT_NAME_MAX 1024 diff --git a/src/util-rohash.c b/src/util-rohash.c index 3b35201065..a48bb12e72 100644 --- a/src/util-rohash.c +++ b/src/util-rohash.c @@ -39,8 +39,8 @@ #include "util-unittest.h" #include "util-memcmp.h" #include "util-hash-lookup3.h" -#include "queue.h" #include "util-rohash.h" +#include "util-debug.h" /** item_size data beyond this header */ typedef struct ROHashTableItem_ { diff --git a/src/util-spm-hs.c b/src/util-spm-hs.c index 747a5d423e..d637437f7c 100644 --- a/src/util-spm-hs.c +++ b/src/util-spm-hs.c @@ -24,10 +24,10 @@ */ #include "suricata-common.h" -#include "suricata.h" - #include "util-hyperscan.h" +#include "util-spm.h" #include "util-spm-hs.h" +#include "util-debug.h" #ifdef BUILD_HYPERSCAN diff --git a/src/util-spm.c b/src/util-spm.c index b3b14d7f71..d3251a8e39 100644 --- a/src/util-spm.c +++ b/src/util-spm.c @@ -44,7 +44,6 @@ */ #include "suricata-common.h" -#include "suricata.h" #include "util-unittest.h" #include "conf.h" @@ -58,6 +57,7 @@ #ifdef BUILD_HYPERSCAN #include "hs.h" #endif +#include "util-debug.h" SpmTableElmt spm_table[SPM_TABLE_SIZE]; diff --git a/src/util-storage.c b/src/util-storage.c index 7080009d7f..4efc2333ae 100644 --- a/src/util-storage.c +++ b/src/util-storage.c @@ -26,6 +26,7 @@ #include "suricata-common.h" #include "util-unittest.h" #include "util-storage.h" +#include "util-debug.h" typedef struct StorageMapping_ { const char *name; diff --git a/src/util-streaming-buffer.c b/src/util-streaming-buffer.c index d4c3632037..5bd0dd6f81 100644 --- a/src/util-streaming-buffer.c +++ b/src/util-streaming-buffer.c @@ -20,6 +20,7 @@ #include "util-unittest.h" #include "util-print.h" #include "util-validate.h" +#include "util-debug.h" /** * \file diff --git a/src/util-thash.h b/src/util-thash.h index 644d7ac201..1668011348 100644 --- a/src/util-thash.h +++ b/src/util-thash.h @@ -26,6 +26,7 @@ #ifndef __THASH_H__ #define __THASH_H__ +#include "threads.h" /** Spinlocks or Mutex for the buckets. */ //#define HRLOCK_SPIN diff --git a/src/util-unittest-helper.h b/src/util-unittest-helper.h index fcecec3056..56f4501c96 100644 --- a/src/util-unittest-helper.h +++ b/src/util-unittest-helper.h @@ -24,6 +24,19 @@ #ifndef __UTIL_UNITTEST_HELPER__ #define __UTIL_UNITTEST_HELPER__ +#if defined(UNITTESTS) +#include "packet.h" +#include "flow.h" +#include "stream-tcp.h" +#include "detect.h" +#include "detect-engine.h" +#include "detect-engine-alert.h" +#include "detect-engine-build.h" +#elif defined(FUZZ) +#include "packet.h" +#include "flow.h" +#endif + #if defined(UNITTESTS) || defined(FUZZ) Flow *TestHelperBuildFlow(int family, const char *src, const char *dst, Port sp, Port dp); int TestHelperBufferToFile(const char *name, const uint8_t *data, size_t size); -- 2.47.2