From: Victor Julien Date: Wed, 7 Jan 2015 22:00:52 +0000 (+0100) Subject: stream: make tcp.reassembly_memuse counter global X-Git-Tag: suricata-3.0RC1~382 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b5bd3dee1385e30b2c5cf2c39b2e4675fc808672;p=thirdparty%2Fsuricata.git stream: make tcp.reassembly_memuse counter global Fixes bugs #632 and #1178 --- diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index 20074e6807..7331db1bd3 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -135,12 +135,10 @@ void StreamTcpReassembleDecrMemuse(uint64_t size) return; } -void StreamTcpReassembleMemuseCounter(ThreadVars *tv, TcpReassemblyThreadCtx *rtv) +uint64_t StreamTcpReassembleMemuseGlobalCounter(void) { uint64_t smemuse = SC_ATOMIC_GET(ra_memuse); - if (tv != NULL && rtv != NULL) - SCPerfCounterSetUI64(tv, rtv->counter_tcp_reass_memuse, smemuse); - return; + return smemuse; } /** @@ -515,6 +513,9 @@ int StreamTcpReassembleInit(char quiet) SCMutexInit(&segment_pool_memuse_mutex, NULL); SCMutexInit(&segment_pool_cnt_mutex, NULL); #endif + + SCPerfTVRegisterGlobalCounter("tcp.reassembly_memuse", + StreamTcpReassembleMemuseGlobalCounter); return 0; } @@ -3419,7 +3420,6 @@ int StreamTcpReassembleHandleSegment(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ } } - StreamTcpReassembleMemuseCounter(tv, ra_ctx); SCReturnInt(0); } diff --git a/src/stream-tcp-reassemble.h b/src/stream-tcp-reassemble.h index c934f4fabd..c5e926fc9c 100644 --- a/src/stream-tcp-reassemble.h +++ b/src/stream-tcp-reassemble.h @@ -57,8 +57,6 @@ typedef struct TcpReassemblyThreadCtx_ { uint16_t counter_tcp_segment_memcap; /** number of streams that stop reassembly because their depth is reached */ uint16_t counter_tcp_stream_depth; - /** account memory usage for the reassembly portion of the stream engine */ - uint16_t counter_tcp_reass_memuse; /** count number of streams with a unrecoverable stream gap (missing pkts) */ uint16_t counter_tcp_reass_gap; /** account memory usage by suricata to handle HTTP protocol (not counting diff --git a/src/stream-tcp.c b/src/stream-tcp.c index 5586c7a52c..2136a8f5d5 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -115,6 +115,7 @@ static SCMutex ssn_pool_mutex = SCMUTEX_INITIALIZER; /**< init only, protect ini static uint64_t ssn_pool_cnt = 0; /** counts ssns, protected by ssn_pool_mutex */ #endif +uint64_t StreamTcpReassembleMemuseGlobalCounter(void); SC_ATOMIC_DECLARE(uint64_t, st_memuse); /* stream engine running in "inline" mode. */ @@ -5102,8 +5103,6 @@ TmEcode StreamTcpThreadInit(ThreadVars *tv, void *initdata, void **data) SC_PERF_TYPE_UINT64); stt->ra_ctx->counter_tcp_stream_depth = SCPerfTVRegisterCounter("tcp.stream_depth_reached", tv, SC_PERF_TYPE_UINT64); - stt->ra_ctx->counter_tcp_reass_memuse = SCPerfTVRegisterCounter("tcp.reassembly_memuse", tv, - SC_PERF_TYPE_UINT64); stt->ra_ctx->counter_tcp_reass_gap = SCPerfTVRegisterCounter("tcp.reassembly_gap", tv, SC_PERF_TYPE_UINT64); /** \fixme Find a better place in 2.1 as it is linked with app layer */