return 0;
}
- sgh->non_mpm_id_array = SCMalloc(non_mpm * sizeof(uint32_t));
+ sgh->non_mpm_id_array = SCMalloc(non_mpm * sizeof(SigIntId));
BUG_ON(sgh->non_mpm_id_array == NULL);
- memset(sgh->non_mpm_id_array, 0, non_mpm * sizeof(uint32_t));
+ memset(sgh->non_mpm_id_array, 0, non_mpm * sizeof(SigIntId));
for (sig = 0; sig < sgh->sig_cnt; sig++) {
s = sgh->match_array[sig];
static inline void DetectPrefilterMergeSort(DetectEngineCtx *de_ctx,
DetectEngineThreadCtx *det_ctx, SigGroupHead *sgh)
{
- uint32_t mpm = -1;
- uint32_t nonmpm = -1;
+ SigIntId mpm = (SigIntId)-1;
+ SigIntId nonmpm = (SigIntId)-1;
det_ctx->match_array_cnt = 0;
- uint32_t *mpm_ptr = det_ctx->pmq.rule_id_array;
- uint32_t *nonmpm_ptr = sgh->non_mpm_id_array;
+ SigIntId *mpm_ptr = det_ctx->pmq.rule_id_array;
+ SigIntId *nonmpm_ptr = sgh->non_mpm_id_array;
uint32_t m_cnt = det_ctx->pmq.rule_id_array_cnt;
uint32_t n_cnt = sgh->non_mpm_id_cnt;
SCLogDebug("PMQ rule id array count %d", det_ctx->pmq.rule_id_array_cnt);
mpm = *(mpm_ptr++);
m_cnt--;
} else
- mpm = -1;
+ mpm = (SigIntId)-1;
if (likely(n_cnt)) {
nonmpm = *(nonmpm_ptr++);
n_cnt--;
} else
- nonmpm = -1;
+ nonmpm = (SigIntId)-1;
- uint32_t previous_id = (uint32_t)-1;
+ SigIntId previous_id = (SigIntId)-1;
Signature **sig_array = de_ctx->sig_array;
Signature **match_array = det_ctx->match_array;
Signature *s;
while (1) {
- uint32_t id = MIN(mpm, nonmpm);
+ SigIntId id = MIN(mpm, nonmpm);
- if (unlikely(id == (uint32_t)-1))
+ if (unlikely(id == (SigIntId)-1))
break;
else {
s = sig_array[id];
BUG_ON((det_ctx->pmq.rule_id_array_cnt + sgh->non_mpm_id_cnt) < det_ctx->match_array_cnt);
}
-static int DoSort(const void *a, const void *b)
+static int DoSortSigIntId(const void *a, const void *b)
{
- uint32_t x = *(uint32_t *)a;
- uint32_t y = *(uint32_t *)b;
+ SigIntId x = *(SigIntId *)a;
+ SigIntId y = *(SigIntId *)b;
return x - y;
}
* NOTE due to merging of 'stream' pmqs we *MAY* have duplicate entries */
if (det_ctx->pmq.rule_id_array_cnt) {
qsort(det_ctx->pmq.rule_id_array, det_ctx->pmq.rule_id_array_cnt,
- sizeof(uint32_t), DoSort);
+ sizeof(SigIntId), DoSortSigIntId);
}
}
* signatures to be inspected in a cache efficient way. */
SignatureHeader *head_array;
- uint32_t *non_mpm_id_array;
+ SigIntId *non_mpm_id_array;
uint32_t non_mpm_id_cnt; // size is cnt * sizeof(uint32_t)
/* pattern matcher instances */
void SCACBSDestroyCtx(MpmCtx *);
void SCACBSDestroyThreadCtx(MpmCtx *, MpmThreadCtx *);
int SCACBSAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACBSAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACBSPreparePatterns(MpmCtx *mpm_ctx);
uint32_t SCACBSSearch(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx,
PatternMatcherQueue *pmq, uint8_t *buf, uint16_t buflen);
* \retval hash A 32 bit unsigned hash.
*/
static inline SCACBSPattern *SCACBSInitHashLookup(SCACBSCtx *ctx, uint8_t *pat,
- uint16_t patlen, char flags,
- uint32_t pid)
+ uint16_t patlen, char flags,
+ uint32_t pid)
{
uint32_t hash = SCACBSInitHashRaw(pat, patlen);
* \retval -1 On failure.
*/
static int SCACBSAddPattern(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid,
+ SigIntId sid, uint8_t flags)
{
SCACBSCtx *ctx = (SCACBSCtx *)mpm_ctx->ctx;
ctx->max_pat_id = pid;
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
} else {
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
* \param mpm_ctx Pointer to the mpm context.
*/
static inline void SCACBSEnter(uint8_t *pattern, uint16_t pattern_len, uint32_t pid,
- MpmCtx *mpm_ctx)
+ MpmCtx *mpm_ctx)
{
SCACBSCtx *ctx = (SCACBSCtx *)mpm_ctx->ctx;
int32_t state = 0;
*/
int SCACBSAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return SCACBSAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
*/
int SCACBSAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
return SCACBSAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
struct SCACBSPattern_ *next;
} SCACBSPattern;
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
} SCACBSPatternList;
typedef struct SCACBSOutputTable_ {
void SCACGfbsDestroyCtx(MpmCtx *);
void SCACGfbsDestroyThreadCtx(MpmCtx *, MpmThreadCtx *);
int SCACGfbsAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACGfbsAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACGfbsPreparePatterns(MpmCtx *mpm_ctx);
uint32_t SCACGfbsSearch(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx,
PatternMatcherQueue *pmq, uint8_t *buf, uint16_t buflen);
*/
static int SCACGfbsAddPattern(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
SCACGfbsCtx *ctx = (SCACGfbsCtx *)mpm_ctx->ctx;
ctx->max_pat_id = pid;
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
} else {
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
* \param mpm_ctx Pointer to the mpm context.
*/
static inline void SCACGfbsEnter(uint8_t *pattern, uint16_t pattern_len, uint32_t pid,
- MpmCtx *mpm_ctx)
+ MpmCtx *mpm_ctx)
{
SCACGfbsCtx *ctx = (SCACGfbsCtx *)mpm_ctx->ctx;
int32_t state = 0;
*/
int SCACGfbsAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return SCACGfbsAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
*/
int SCACGfbsAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
return SCACGfbsAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
struct SCACGfbsPattern_ *next;
} SCACGfbsPattern;
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
} SCACGfbsPatternList;
typedef struct SCACGfbsOutputTable_ {
void SCACTileDestroyCtx(MpmCtx *);
void SCACTileDestroyThreadCtx(MpmCtx *, MpmThreadCtx *);
int SCACTileAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACTileAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACTilePreparePatterns(MpmCtx *mpm_ctx);
uint32_t SCACTileSearch(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx,
PatternMatcherQueue *pmq, uint8_t *buf,
}
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
//SCLogInfo("MPM added %u:%u", pid, sid);
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
SCACTilePatternList *pattern_list = ctx->pattern_list;
uint8_t *buf_offset = buf + i + 1; // Lift out of loop
uint32_t no_of_entries = ctx->output_table[state].no_of_entries;
- uint32_t *patterns = ctx->output_table[state].patterns;
+ MpmPatternIndex *patterns = ctx->output_table[state].patterns;
uint8_t *pmq_bitarray = pmq->pattern_id_bitarray;
uint32_t k;
*/
int SCACTileAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return SCACTileAddPattern(mpm_ctx, pat, patlen, offset, depth,
*/
int SCACTileAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
return SCACTileAddPattern(mpm_ctx, pat, patlen, offset, depth,
pid, sid, flags);
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
struct SCACTilePattern_ *next;
} SCACTilePattern;
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
} SCACTilePatternList;
typedef struct SCACTileOutputTable_ {
void SCACDestroyCtx(MpmCtx *);
void SCACDestroyThreadCtx(MpmCtx *, MpmThreadCtx *);
int SCACAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t,
- uint32_t, uint32_t, uint8_t);
+ uint32_t, SigIntId, uint8_t);
int SCACPreparePatterns(MpmCtx *mpm_ctx);
uint32_t SCACSearch(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx,
PatternMatcherQueue *pmq, uint8_t *buf, uint16_t buflen);
*/
static int SCACAddPattern(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
SCACCtx *ctx = (SCACCtx *)mpm_ctx->ctx;
ctx->max_pat_id = pid;
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
//SCLogInfo("MPM added %u:%u", pid, sid);
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
*/
int SCACAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return SCACAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
*/
int SCACAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth, uint32_t pid,
- uint32_t sid, uint8_t flags)
+ SigIntId sid, uint8_t flags)
{
return SCACAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
struct SCACPattern_ *next;
} SCACPattern;
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
} SCACPatternList;
typedef struct SCACOutputTable_ {
void B2gThreadInitCtx(MpmCtx *, MpmThreadCtx *, uint32_t);
void B2gDestroyCtx(MpmCtx *);
void B2gThreadDestroyCtx(MpmCtx *, MpmThreadCtx *);
-int B2gAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
-int B2gAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
+int B2gAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags);
+int B2gAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags);
int B2gPreparePatterns(MpmCtx *mpm_ctx);
uint32_t B2gSearchWrap(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx, PatternMatcherQueue *, uint8_t *buf, uint16_t buflen);
uint32_t B2gSearch1(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx, PatternMatcherQueue *, uint8_t *buf, uint16_t buflen);
if (p && p->sids) {
SCFree(p->sids);
mpm_ctx->memory_cnt--;
- mpm_ctx->memory_size -= p->sids_size * sizeof(uint32_t);
+ mpm_ctx->memory_size -= p->sids_size * sizeof(SigIntId);
}
if (p) {
*
* \initonly
*/
-static int B2gAddPattern(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen, uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+static int B2gAddPattern(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen, uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
B2gCtx *ctx = (B2gCtx *)mpm_ctx->ctx;
}
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
mpm_ctx->memory_cnt++;
- mpm_ctx->memory_size += sizeof(uint32_t);
+ mpm_ctx->memory_size += sizeof(SigIntId);
//printf("B2gAddPattern: ci \""); prt(p->ci,p->len);
//printf("\" cs \""); prt(p->cs,p->len);
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
p->sids_size++;
- mpm_ctx->memory_size += sizeof(uint32_t);
+ mpm_ctx->memory_size += sizeof(SigIntId);
}
}
}
int B2gAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return B2gAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
int B2gAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
return B2gAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
struct B2gPattern_ *next;
} B2gPattern;
void B3gThreadInitCtx(MpmCtx *, MpmThreadCtx *, uint32_t);
void B3gDestroyCtx(MpmCtx *);
void B3gThreadDestroyCtx(MpmCtx *, MpmThreadCtx *);
-int B3gAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
-int B3gAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
+int B3gAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, SigIntId, uint8_t);
+int B3gAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, SigIntId, uint8_t);
int B3gPreparePatterns(MpmCtx *);
uint32_t B3gSearchWrap(MpmCtx *, MpmThreadCtx *, PatternMatcherQueue *, uint8_t *, uint16_t);
uint32_t B3gSearch1(MpmCtx *, MpmThreadCtx *, PatternMatcherQueue *, uint8_t *, uint16_t);
if (p && p->sids) {
SCFree(p->sids);
mpm_ctx->memory_cnt--;
- mpm_ctx->memory_size -= p->sids_size * sizeof(uint32_t);
+ mpm_ctx->memory_size -= p->sids_size * sizeof(SigIntId);
}
if (p) {
//printf("\" prefix_ci %" PRIu32 ", prefix_cs %" PRIu32 "\n", p->prefix_ci, p->prefix_cs);
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
mpm_ctx->memory_cnt++;
- mpm_ctx->memory_size += sizeof(uint32_t);
+ mpm_ctx->memory_size += sizeof(SigIntId);
/* put in the pattern hash */
B3gInitHashAdd(ctx, p);
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
p->sids_size++;
- mpm_ctx->memory_size += sizeof(uint32_t);
+ mpm_ctx->memory_size += sizeof(SigIntId);
}
}
}
int B3gAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return B3gAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
int B3gAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
return B3gAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
struct B3gPattern_ *next;
void WmThreadInitCtx(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx, uint32_t);
void WmDestroyCtx(MpmCtx *mpm_ctx);
void WmThreadDestroyCtx(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx);
-int WmAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
-int WmAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
+int WmAddPatternCI(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, SigIntId, uint8_t);
+int WmAddPatternCS(MpmCtx *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, SigIntId, uint8_t);
int WmPreparePatterns(MpmCtx *mpm_ctx);
uint32_t WmSearch(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx, PatternMatcherQueue *, uint8_t *buf, uint16_t buflen);
uint32_t WmSearch1(MpmCtx *mpm_ctx, MpmThreadCtx *mpm_thread_ctx, PatternMatcherQueue *, uint8_t *buf, uint16_t buflen);
else if (mpm_ctx->minlen > patlen) mpm_ctx->minlen = patlen;
p->sids_size = 1;
- p->sids = SCMalloc(p->sids_size * sizeof(uint32_t));
+ p->sids = SCMalloc(p->sids_size * sizeof(SigIntId));
BUG_ON(p->sids == NULL);
p->sids[0] = sid;
mpm_ctx->memory_cnt++;
- mpm_ctx->memory_size += sizeof(uint32_t);
+ mpm_ctx->memory_size += sizeof(SigIntId);
} else {
/* TODO figure out how we can be called multiple times for the same CTX with the same sid */
}
}
if (!found) {
- uint32_t *sids = SCRealloc(p->sids, (sizeof(uint32_t) * (p->sids_size + 1)));
+ SigIntId *sids = SCRealloc(p->sids, (sizeof(SigIntId) * (p->sids_size + 1)));
BUG_ON(sids == NULL);
p->sids = sids;
p->sids[p->sids_size] = sid;
}
int WmAddPatternCI(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
flags |= MPM_PATTERN_FLAG_NOCASE;
return WmAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
int WmAddPatternCS(MpmCtx *mpm_ctx, uint8_t *pat, uint16_t patlen,
- uint16_t offset, uint16_t depth, uint32_t pid, uint32_t sid, uint8_t flags)
+ uint16_t offset, uint16_t depth, uint32_t pid, SigIntId sid, uint8_t flags)
{
return WmAddPattern(mpm_ctx, pat, patlen, offset, depth, pid, sid, flags);
}
/* sid(s) for this pattern */
uint32_t sids_size;
- uint32_t *sids;
+ SigIntId *sids;
} WmPattern;
pmq->rule_id_array_size = 128; /* Initial size, TODO: Make configure option. */
pmq->rule_id_array_cnt = 0;
- uint32_t bytes = pmq->rule_id_array_size * sizeof(uint32_t);
- pmq->rule_id_array = SCMalloc(bytes);
+ size_t bytes = pmq->rule_id_array_size * sizeof(SigIntId);
+ pmq->rule_id_array = (SigIntId*)SCMalloc(bytes);
if (pmq->rule_id_array == NULL) {
pmq->rule_id_array_size = 0;
SCReturnInt(-1);
* larger than the old size.
*/
new_size = new_size * 2;
- uint32_t *new_array = (uint32_t*)SCRealloc(pmq->rule_id_array,
- new_size * sizeof(uint32_t));
+ SigIntId *new_array = (SigIntId*)SCRealloc(pmq->rule_id_array,
+ new_size * sizeof(SigIntId));
if (unlikely(new_array == NULL)) {
/* Try again just big enough. */
new_size = new_size / 2;
*/
int
MpmVerifyMatch(MpmThreadCtx *thread_ctx, PatternMatcherQueue *pmq, uint32_t patid,
- uint8_t *bitarray, uint32_t *sids, uint32_t sids_size)
+ uint8_t *bitarray, SigIntId *sids, uint32_t sids_size)
{
SCEnter();
int MpmAddPatternCS(struct MpmCtx_ *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth,
- uint32_t pid, uint32_t sid, uint8_t flags)
+ uint32_t pid, SigIntId sid, uint8_t flags)
{
return mpm_table[mpm_ctx->mpm_type].AddPattern(mpm_ctx, pat, patlen,
offset, depth,
int MpmAddPatternCI(struct MpmCtx_ *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth,
- uint32_t pid, uint32_t sid, uint8_t flags)
+ uint32_t pid, SigIntId sid, uint8_t flags)
{
return mpm_table[mpm_ctx->mpm_type].AddPatternNocase(mpm_ctx, pat, patlen,
offset, depth,
/* used for storing rule id's */
/* Array of rule IDs found. */
- uint32_t *rule_id_array;
+ SigIntId *rule_id_array;
/* Number of rule IDs in the array. */
uint32_t rule_id_array_cnt;
/* The number of slots allocated for storing rule IDs */
* \param sid signature _internal_ id
* \param flags pattern flags
*/
- int (*AddPattern)(struct MpmCtx_ *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
- int (*AddPatternNocase)(struct MpmCtx_ *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, uint32_t, uint8_t);
+ int (*AddPattern)(struct MpmCtx_ *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, SigIntId, uint8_t);
+ int (*AddPatternNocase)(struct MpmCtx_ *, uint8_t *, uint16_t, uint16_t, uint16_t, uint32_t, SigIntId, uint8_t);
int (*Prepare)(struct MpmCtx_ *);
uint32_t (*Search)(struct MpmCtx_ *, struct MpmThreadCtx_ *, PatternMatcherQueue *, uint8_t *, uint16_t);
void (*Cleanup)(struct MpmThreadCtx_ *);
void MpmTableSetup(void);
void MpmRegisterTests(void);
-int MpmVerifyMatch(MpmThreadCtx *, PatternMatcherQueue *, uint32_t,
- uint8_t *bitarray, uint32_t *sids, uint32_t sid_size);
+int MpmVerifyMatch(MpmThreadCtx *thread_ctx, PatternMatcherQueue *pmq, uint32_t patid,
+ uint8_t *bitarray, SigIntId *sids, uint32_t sids_size);
void MpmInitCtx(MpmCtx *mpm_ctx, uint16_t matcher);
void MpmInitThreadCtx(MpmThreadCtx *mpm_thread_ctx, uint16_t, uint32_t);
uint32_t MpmGetHashSize(const char *);
int MpmAddPatternCS(struct MpmCtx_ *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth,
- uint32_t pid, uint32_t sid, uint8_t flags);
+ uint32_t pid, SigIntId sid, uint8_t flags);
int MpmAddPatternCI(struct MpmCtx_ *mpm_ctx, uint8_t *pat, uint16_t patlen,
uint16_t offset, uint16_t depth,
- uint32_t pid, uint32_t sid, uint8_t flags);
+ uint32_t pid, SigIntId sid, uint8_t flags);
/* Resize Signature ID array. Only called from MpmAddSids(). */
int MpmAddSidsResize(PatternMatcherQueue *pmq, uint32_t new_size);
*
*/
static inline void
-MpmAddSids(PatternMatcherQueue *pmq, uint32_t *sids, uint32_t sids_size)
+MpmAddSids(PatternMatcherQueue *pmq, SigIntId *sids, uint32_t sids_size)
{
if (sids_size == 0)
return;
}
SCLogDebug("Adding %u sids", sids_size);
// Add SIDs for this pattern to the end of the array
- uint32_t *ptr = pmq->rule_id_array + pmq->rule_id_array_cnt;
- uint32_t *end = ptr + sids_size;
+ SigIntId *ptr = pmq->rule_id_array + pmq->rule_id_array_cnt;
+ SigIntId *end = ptr + sids_size;
do {
*ptr++ = *sids++;
} while (ptr != end);