From: Victor Julien Date: Tue, 13 Oct 2015 08:27:26 +0000 (+0200) Subject: detect: remove stream pmq array X-Git-Tag: suricata-3.1RC1~337 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1ad08d11e70f02b6f913c51ec59a6748ce177c5;p=thirdparty%2Fsuricata.git detect: remove stream pmq array --- diff --git a/src/detect-engine-mpm.c b/src/detect-engine-mpm.c index e996a290e6..889f499353 100644 --- a/src/detect-engine-mpm.c +++ b/src/detect-engine-mpm.c @@ -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); diff --git a/src/detect-engine-mpm.h b/src/detect-engine-mpm.h index 7231caf6ae..3f88c16412 100644 --- a/src/detect-engine-mpm.h +++ b/src/detect-engine-mpm.h @@ -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); diff --git a/src/detect-engine.c b/src/detect-engine.c index 842e8db261..5827af8900 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -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); diff --git a/src/detect.c b/src/detect.c index 7a3f657538..e975f6d31b 100644 --- a/src/detect.c +++ b/src/detect.c @@ -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) { diff --git a/src/detect.h b/src/detect.h index faa752f8a1..6f41f72478 100644 --- a/src/detect.h +++ b/src/detect.h @@ -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;