]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect: remove stream pmq array
authorVictor Julien <victor@inliniac.net>
Tue, 13 Oct 2015 08:27:26 +0000 (10:27 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 5 Apr 2016 07:30:11 +0000 (09:30 +0200)
src/detect-engine-mpm.c
src/detect-engine-mpm.h
src/detect-engine.c
src/detect.c
src/detect.h

index e996a290e65f223963feff9c0b4998ae87846d34..889f4993532894d5854a7be63d859a2ef89262bf 100644 (file)
@@ -745,14 +745,9 @@ uint32_t StreamPatternSearch(DetectEngineThreadCtx *det_ctx, Packet *p,
         for ( ; smsg != NULL; smsg = smsg->next) {
             r = mpm_table[det_ctx->sgh->mpm_stream_ctx_ts->mpm_type].
                 Search(det_ctx->sgh->mpm_stream_ctx_ts, &det_ctx->mtcs,
-                       &det_ctx->smsg_pmq[cnt], smsg->data, smsg->data_len);
+                       &det_ctx->pmq, smsg->data, smsg->data_len);
             if (r > 0) {
                 ret += r;
-
-                SCLogDebug("smsg match stored in det_ctx->smsg_pmq[%u]", cnt);
-
-                /* merge results with overall pmq */
-                PmqMerge(&det_ctx->smsg_pmq[cnt], &det_ctx->pmq);
             }
 
             cnt++;
@@ -761,14 +756,9 @@ uint32_t StreamPatternSearch(DetectEngineThreadCtx *det_ctx, Packet *p,
         for ( ; smsg != NULL; smsg = smsg->next) {
             r = mpm_table[det_ctx->sgh->mpm_stream_ctx_tc->mpm_type].
                 Search(det_ctx->sgh->mpm_stream_ctx_tc, &det_ctx->mtcs,
-                       &det_ctx->smsg_pmq[cnt], smsg->data, smsg->data_len);
+                       &det_ctx->pmq, smsg->data, smsg->data_len);
             if (r > 0) {
                 ret += r;
-
-                SCLogDebug("smsg match stored in det_ctx->smsg_pmq[%u]", cnt);
-
-                /* merge results with overall pmq */
-                PmqMerge(&det_ctx->smsg_pmq[cnt], &det_ctx->pmq);
             }
 
             cnt++;
@@ -854,18 +844,6 @@ void PacketPatternCleanup(ThreadVars *t, DetectEngineThreadCtx *det_ctx)
     return;
 }
 
-void StreamPatternCleanup(ThreadVars *t, DetectEngineThreadCtx *det_ctx, StreamMsg *smsg)
-{
-    uint8_t cnt = 0;
-
-    while (smsg != NULL) {
-        PmqReset(&det_ctx->smsg_pmq[cnt]);
-
-        smsg = smsg->next;
-        cnt++;
-    }
-}
-
 void PatternMatchDestroy(MpmCtx *mpm_ctx, uint16_t mpm_matcher)
 {
     SCLogDebug("mpm_ctx %p, mpm_matcher %"PRIu16"", mpm_ctx, mpm_matcher);
index 7231caf6ae9f21596e49dab8b5a140167b2bded9..3f88c164127d92ed1cf33451190a54e7758ad0fd 100644 (file)
@@ -58,7 +58,6 @@ uint32_t DnsQueryPatternSearch(DetectEngineThreadCtx *det_ctx, uint8_t *buffer,
 uint32_t SMTPFiledataPatternSearch(DetectEngineThreadCtx *det_ctx, uint8_t *buffer, uint32_t buffer_len, uint8_t flags);
 
 void PacketPatternCleanup(ThreadVars *, DetectEngineThreadCtx *);
-void StreamPatternCleanup(ThreadVars *t, DetectEngineThreadCtx *det_ctx, StreamMsg *smsg);
 
 void PatternMatchPrepare(MpmCtx *, uint16_t);
 void PatternMatchThreadPrepare(MpmThreadCtx *, uint16_t type);
index 842e8db261256ca5afdb5d3a2b2b3c75988e87c3..5827af8900b0023de5cf2112df2d22813ecac972 100644 (file)
@@ -1324,16 +1324,11 @@ error:
  */
 static TmEcode ThreadCtxDoInit (DetectEngineCtx *de_ctx, DetectEngineThreadCtx *det_ctx)
 {
-    int i;
-
     PatternMatchThreadPrepare(&det_ctx->mtc, de_ctx->mpm_matcher);
     PatternMatchThreadPrepare(&det_ctx->mtcs, de_ctx->mpm_matcher);
     PatternMatchThreadPrepare(&det_ctx->mtcu, de_ctx->mpm_matcher);
 
     PmqSetup(&det_ctx->pmq);
-    for (i = 0; i < DETECT_SMSG_PMQ_NUM; i++) {
-        PmqSetup(&det_ctx->smsg_pmq[i]);
-    }
 
     /* sized to the max of our sgh settings. A max setting of 0 implies that all
      * sgh's have: sgh->non_mpm_store_cnt == 0 */
@@ -1525,6 +1520,8 @@ static DetectEngineThreadCtx *DetectEngineThreadCtxInitForReload(
 
 void DetectEngineThreadCtxFree(DetectEngineThreadCtx *det_ctx)
 {
+    int i;
+
     if (det_ctx->tenant_array != NULL) {
         SCFree(det_ctx->tenant_array);
         det_ctx->tenant_array = NULL;
@@ -1545,10 +1542,6 @@ void DetectEngineThreadCtxFree(DetectEngineThreadCtx *det_ctx)
     }
 
     PmqFree(&det_ctx->pmq);
-    int i;
-    for (i = 0; i < DETECT_SMSG_PMQ_NUM; i++) {
-        PmqFree(&det_ctx->smsg_pmq[i]);
-    }
 
     if (det_ctx->non_mpm_id_array != NULL)
         SCFree(det_ctx->non_mpm_id_array);
index 7a3f6575388e856eea2c139bd7b6f490d8824f1f..e975f6d31ba4892e7f88763ee0cbc6a7bba4be51 100644 (file)
@@ -847,7 +847,6 @@ static void QuickSortSigIntId(SigIntId *sids, uint32_t n)
 
 #define SMS_USE_FLOW_SGH        0x01
 #define SMS_USED_PM             0x02
-#define SMS_USED_STREAM_PM      0x04
 
 /**
  * \internal
@@ -1064,8 +1063,6 @@ static inline void DetectMpmPrefilter(DetectEngineCtx *de_ctx,
             PACKET_PROFILING_DETECT_START(p, PROF_DETECT_MPM_STREAM);
             StreamPatternSearch(det_ctx, p, smsg, flags);
             PACKET_PROFILING_DETECT_END(p, PROF_DETECT_MPM_STREAM);
-
-            *sms_runflags |= SMS_USED_STREAM_PM;
         } else {
             SCLogDebug("smsg NULL or no stream mpm for this sgh");
         }
@@ -1808,10 +1805,6 @@ end:
      * up again for the next packet. Also return any stream chunk we processed
      * to the pool. */
     if (p->flags & PKT_HAS_FLOW) {
-        if (sms_runflags & SMS_USED_STREAM_PM) {
-            StreamPatternCleanup(th_v, det_ctx, smsg);
-        }
-
         FLOWLOCK_WRLOCK(pflow);
         if (debuglog_enabled) {
             if (p->alerts.cnt > 0) {
index faa752f8a1012d54076cde5077f6123dc954a79f..6f41f7247851da6ef44be21b0b79b56846ad8259 100644 (file)
@@ -712,8 +712,6 @@ typedef struct FiledataReassembledBody_ {
 } FiledataReassembledBody;
 
 #define DETECT_FILESTORE_MAX 15
-/** \todo review how many we actually need here */
-#define DETECT_SMSG_PMQ_NUM 256
 
 typedef struct SignatureNonMpmStore_ {
     SigIntId id;
@@ -827,7 +825,6 @@ typedef struct DetectEngineThreadCtx_ {
     MpmThreadCtx mtcu;  /**< thread ctx for uricontent mpm */
     MpmThreadCtx mtcs;  /**< thread ctx for stream mpm */
     PatternMatcherQueue pmq;
-    PatternMatcherQueue smsg_pmq[DETECT_SMSG_PMQ_NUM];
 
     /** ip only rules ctx */
     DetectEngineIPOnlyThreadCtx io_ctx;