31 static uint32_t PrefilterPacketHeaderHashFunc(
HashListTable *ht,
void *data, uint16_t datalen)
39 static char PrefilterPacketHeaderCompareFunc(
void *data1, uint16_t len1,
40 void *data2, uint16_t len2)
50 static void PrefilterPacketHeaderFreeFunc(
void *ptr)
55 static void PrefilterPacketHeaderFree(
void *pectx)
62 static void PrefilterPacketU8HashCtxFree(
void *vctx)
66 for (i = 0; i < 256; i++) {
76 static void GetExtraMatch(
const Signature *s, uint16_t *
type, uint16_t *value)
104 uint32_t sig_offset = 0;
130 GetExtraMatch(s, &
type, &value);
135 SCLogDebug(
"appending sid %u on %u", s->
id, sig_offset);
143 SCLogDebug(
"%s: ctx %p extra type %u extra value %u, sig cnt %u",
164 uint8_t x = v.
u8[1] - 1;
188 }
while (++x < v.
u8[2]);
216 for (
int i = 0; i < 256; i++) {
229 PrefilterPacketU8HashCtxFree(ctx);
241 memset(&v, 0,
sizeof(v));
244 ApplyToU8Hash(ctx, v, s);
251 PrefilterPacketU8HashCtxFree,
254 PrefilterPacketU8HashCtxFree(ctx);
266 Packet *p,
const void *pectx))
272 SetupEngineForPacketHeader(
de_ctx, sgh, sm_type,
273 ctx, Compare, Match);
285 Packet *p,
const void *pectx))
287 uint32_t counts[256];
288 memset(&counts, 0,
sizeof(counts));
294 switch (ctx->
v1.
u8[0]) {
296 counts[ctx->
v1.
u8[1]] += ctx->
cnt;
300 uint8_t v = ctx->
v1.
u8[1];
303 counts[v] += ctx->
cnt;
310 uint8_t v = ctx->
v1.
u8[1];
311 while (v < UINT8_MAX) {
313 counts[v] += ctx->
cnt;
320 if (ctx->
v1.
u8[1] < ctx->
v1.
u8[2]) {
322 uint8_t v = ctx->
v1.
u8[1] + 1;
323 while (v < ctx->v1.u8[2]) {
324 counts[v] += ctx->
cnt;
333 SetupEngineForPacketHeaderPrefilterPacketU8HashCtx(
de_ctx, sgh, sm_type,
334 counts, Set, Compare, Match);
342 Packet *p,
const void *pectx),
354 PrefilterPacketHeaderHashFunc,
355 PrefilterPacketHeaderCompareFunc,
356 PrefilterPacketHeaderFreeFunc);
357 if (hash_table == NULL)
368 memset(&ctx, 0,
sizeof(ctx));
395 SetupSingle(
de_ctx, hash_table, sgh, sm_type, Compare, Match);
397 SetupU8Hash(
de_ctx, hash_table, sgh, sm_type, Set, Compare, Match);
412 Packet *p,
const void *pectx))
414 return PrefilterSetupPacketHeaderCommon(
de_ctx, sgh, sm_type, Set, Compare, Match,
true);
422 Packet *p,
const void *pectx))
424 return PrefilterSetupPacketHeaderCommon(
de_ctx, sgh, sm_type, Set, Compare, Match,
false);