]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: make tcp.reassembly_memuse counter global
authorVictor Julien <victor@inliniac.net>
Wed, 7 Jan 2015 22:00:52 +0000 (23:00 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 26 May 2015 20:05:38 +0000 (22:05 +0200)
Fixes bugs #632 and #1178

src/stream-tcp-reassemble.c
src/stream-tcp-reassemble.h
src/stream-tcp.c

index 20074e6807c7cf5c52864d129ada1e48b09f2f96..7331db1bd3b7a7932aac9b621a2cac25cc314b87 100644 (file)
@@ -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);
 }
 
index c934f4fabd83d8c15a29f4298b871bf32137b724..c5e926fc9c9104379f68e11180c2374f3f633505 100644 (file)
@@ -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
index 5586c7a52c853d72392f95214843319b6cf0bf6d..2136a8f5d525425e0715896cafa2b6c92ff332de 100644 (file)
@@ -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 */