]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
defrag: don't use message for repetitive error 65/head
authorEric Leblond <eric@regit.org>
Sun, 9 Sep 2012 20:48:46 +0000 (22:48 +0200)
committerEric Leblond <eric@regit.org>
Sun, 9 Sep 2012 20:50:15 +0000 (22:50 +0200)
When nothing can be fetch from the pool, this can repeat frequently.
Thus displaying a message in the log will not help. This patch
uses a counter instead of a log message. As this is a sort of memcap
this is conformed to what is done for other issues of the same type.

src/decode.c
src/decode.h
src/defrag.c

index 79ec96a72ce5f1fb61683b08cfdb8e94773c2531..91fca2869a1714af660064ac9f5db6870c150357 100644 (file)
@@ -363,6 +363,9 @@ void DecodeRegisterPerfCounters(DecodeThreadVars *dtv, ThreadVars *tv)
     dtv->counter_defrag_ipv6_timeouts =
         SCPerfTVRegisterCounter("defrag.ipv6.timeouts", tv,
             SC_PERF_TYPE_UINT64, "NULL");
+    dtv->counter_defrag_max_hit =
+        SCPerfTVRegisterCounter("defrag.max_frag_hits", tv,
+            SC_PERF_TYPE_UINT64, "NULL");
 
     tv->sc_perf_pca = SCPerfGetAllCountersArray(&tv->sc_perf_pctx);
     SCPerfAddToClubbedTMTable(tv->name, &tv->sc_perf_pctx);
index 4814afc5867da5a868eee4b869c9e6977fe1f406..719d452116eb9167f1ea49093443ae56a7e61565 100644 (file)
@@ -574,6 +574,7 @@ typedef struct DecodeThreadVars_
     uint16_t counter_defrag_ipv6_fragments;
     uint16_t counter_defrag_ipv6_reassembled;
     uint16_t counter_defrag_ipv6_timeouts;
+    uint16_t counter_defrag_max_hit;
 } DecodeThreadVars;
 
 /**
index 3b56ee40b3bc9c776b495d9abdefbeb4da784436..e37b4e8709388e2ddeb5210ebff80b8481131cea 100644 (file)
@@ -1151,8 +1151,8 @@ DefragGetTracker(ThreadVars *tv, DecodeThreadVars *dtv, DefragContext *dc,
         }
         SCMutexUnlock(&dc->tracker_pool_lock);
         if (tracker == NULL) {
-            /* Report memory error - actually a pool allocation error. */
-            SCLogError(SC_ERR_MEM_ALLOC, "Defrag: Failed to allocate tracker.");
+            SCPerfCounterIncr(dtv->counter_defrag_max_hit,
+                tv->sc_perf_pca);
             goto done;
         }
         DefragTrackerReset(tracker);