51 static bool PrefilterTcpFlagsIsPrefilterable(
const Signature *s);
54 static void FlagsRegisterTests(
void);
99 if (!(PacketIsTCP(p))) {
103 const TCPHdr *tcph = PacketGetTCP(p);
137 DetectFlagsFree(NULL, du8);
149 SCDetectU8Free(de_ptr);
180 if (!(fl->mode == DetectUintModeNegBitmask) && (fl->arg1 ==
TH_SYN)) {
194 if (!(PacketIsTCP(p))) {
199 if (!PrefilterPacketHeaderExtraMatch(
ctx, p))
202 const TCPHdr *tcph = PacketGetTCP(p);
205 du8.mode =
ctx->v1.u8[0];
206 du8.arg1 =
ctx->v1.u8[1];
207 du8.arg2 =
ctx->v1.u8[2];
210 PrefilterAddSids(&det_ctx->
pmq,
ctx->sigs_array,
ctx->sigs_cnt);
228 if (v.
u8[0] == a->mode && v.
u8[1] == a->arg1 && v.
u8[2] == a->arg2)
236 PrefilterPacketFlagsSet, PrefilterPacketFlagsCompare, PrefilterPacketFlagsMatch);
239 static bool PrefilterTcpFlagsIsPrefilterable(
const Signature *s)
262 static int FlagsTestParse03 (
void)
269 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
270 memset(&tcph, 0,
sizeof(
TCPHdr));
280 FAIL_IF(de->mode != DetectUintModeBitmask);
289 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
303 static int FlagsTestParse04 (
void)
310 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
311 memset(&tcph, 0,
sizeof(
TCPHdr));
321 FAIL_IF(de->mode != DetectUintModeBitmask);
330 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
343 static int FlagsTestParse05 (
void)
350 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
351 memset(&tcph, 0,
sizeof(
TCPHdr));
361 FAIL_IF(de->mode != DetectUintModeBitmask);
370 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
384 static int FlagsTestParse06 (
void)
391 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
392 memset(&tcph, 0,
sizeof(
TCPHdr));
402 FAIL_IF(de->mode != DetectUintModeBitmask);
411 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
425 static int FlagsTestParse07 (
void)
432 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
433 memset(&tcph, 0,
sizeof(
TCPHdr));
443 FAIL_IF(de->mode != DetectUintModeNegBitmask);
452 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
466 static int FlagsTestParse08 (
void)
473 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
474 memset(&tcph, 0,
sizeof(
TCPHdr));
484 FAIL_IF(de->mode != DetectUintModeNegBitmask);
492 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
506 static int FlagsTestParse09 (
void)
513 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
514 memset(&tcph, 0,
sizeof(
TCPHdr));
524 FAIL_IF(de->mode != DetectUintModeNegBitmask);
533 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
547 static int FlagsTestParse10 (
void)
554 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
555 memset(&tcph, 0,
sizeof(
TCPHdr));
566 FAIL_IF(de->mode != DetectUintModeNegBitmask);
574 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
588 static int FlagsTestParse11 (
void)
595 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
596 memset(&tcph, 0,
sizeof(
TCPHdr));
606 FAIL_IF(de->mode != DetectUintModeBitmask);
615 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
629 static int FlagsTestParse12 (
void)
636 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
637 memset(&tcph, 0,
sizeof(
TCPHdr));
655 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
663 static int FlagsTestParse15(
void)
670 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
671 memset(&tcph, 0,
sizeof(
TCPHdr));
690 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
698 static int FlagsTestParse16(
void)
705 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
706 memset(&tcph, 0,
sizeof(
TCPHdr));
725 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
737 static int FlagsTestParse17(
void)
744 memset(&ipv4h, 0,
sizeof(
IPV4Hdr));
745 memset(&tcph, 0,
sizeof(
TCPHdr));
764 int ret = DetectFlagsMatch(NULL, p, NULL, sm->
ctx);
775 static void FlagsRegisterTests(
void)