44 #define DETECT_FLOWVAR_NOT_USED 1
45 #define DETECT_FLOWVAR_TYPE_READ 2
46 #define DETECT_FLOWVAR_TYPE_SET_READ 3
47 #define DETECT_FLOWVAR_TYPE_SET 4
49 #define DETECT_PKTVAR_NOT_USED 1
50 #define DETECT_PKTVAR_TYPE_READ 2
51 #define DETECT_PKTVAR_TYPE_SET_READ 3
52 #define DETECT_PKTVAR_TYPE_SET 4
54 #define DETECT_FLOWBITS_NOT_USED 1
55 #define DETECT_FLOWBITS_TYPE_READ 2
56 #define DETECT_FLOWBITS_TYPE_SET_READ 3
57 #define DETECT_FLOWBITS_TYPE_SET 4
59 #define DETECT_FLOWINT_NOT_USED 1
60 #define DETECT_FLOWINT_TYPE_READ 2
61 #define DETECT_FLOWINT_TYPE_SET_READ 3
62 #define DETECT_FLOWINT_TYPE_SET 4
64 #define DETECT_XBITS_NOT_USED 1
65 #define DETECT_XBITS_TYPE_READ 2
66 #define DETECT_XBITS_TYPE_SET_READ 3
67 #define DETECT_XBITS_TYPE_SET 4
130 while (curr != NULL) {
140 FatalError(
"Fatal error encountered in SCSigRegisterSignatureOrderingFunc. Exiting...");
166 static inline int SCSigGetFlowbitsType(
Signature *sig)
206 if (read > 0 && write == 0) {
208 }
else if (read == 0 && write > 0) {
210 }
else if (read > 0 && write > 0) {
214 SCLogDebug(
"Sig %s typeval %d", sig->
msg, flowbits_user_type);
216 return flowbits_user_type;
219 static inline int SCSigGetFlowintType(
Signature *sig)
264 if (read > 0 && write == 0) {
266 }
else if (read == 0 && write > 0) {
268 }
else if (read > 0 && write > 0) {
272 SCLogDebug(
"Sig %s typeval %d", sig->
msg, flowint_user_type);
274 return flowint_user_type;
291 static inline int SCSigGetFlowvarType(
Signature *sig)
303 for (x = 0; x < pd->
idx; x++) {
324 if (read > 0 && write == 0) {
326 }
else if (read == 0 && write > 0) {
328 }
else if (read > 0 && write > 0) {
349 static inline int SCSigGetPktvarType(
Signature *sig)
361 for (x = 0; x < pd->
idx; x++) {
382 if (read > 0 && write == 0) {
384 }
else if (read == 0 && write > 0) {
386 }
else if (read > 0 && write > 0) {
453 if (read > 0 && write == 0) {
455 }
else if (read == 0 && write > 0) {
457 }
else if (read > 0 && write > 0) {
463 return xbits_user_type;
538 while (funcs != NULL) {
589 subA = SCSigOrder(subA, cmp_func_list);
590 subB = SCSigOrder(subB, cmp_func_list);
595 while (subA != NULL && subB != NULL) {
596 if (SCSigLessThan(subA, subB, cmp_func_list)) {
605 if (result == NULL) {
616 else if (subB == NULL)
742 if (sw1dir > sw2dir) {
744 }
else if (sw1dir < sw2dir) {
786 SCSigProcessUserDataForFlowbits(sw);
787 SCSigProcessUserDataForFlowvar(sw);
788 SCSigProcessUserDataForFlowint(sw);
789 SCSigProcessUserDataForPktvar(sw);
790 SCSigProcessUserDataForHostbits(sw);
791 SCSigProcessUserDataForIPPairbits(sw);
817 while (sig != NULL) {
818 sigw = SCSigAllocSignatureWrapper(sig);
822 sigw->
next = fw_pf_sigw_list;
823 fw_pf_sigw_list = sigw;
826 sigw->
next = fw_af_sigw_list;
827 fw_af_sigw_list = sigw;
830 sigw->
next = td_sigw_list;
839 if (fw_pf_sigw_list) {
841 fw_pf_sigw_list = SCSigOrder(fw_pf_sigw_list, &OrderFn);
843 if (fw_af_sigw_list) {
845 fw_af_sigw_list = SCSigOrder(fw_af_sigw_list, &OrderFn);
855 for (sigw = fw_pf_sigw_list; sigw != NULL;) {
872 for (sigw = fw_af_sigw_list; sigw != NULL;) {
889 for (sigw = td_sigw_list; sigw != NULL;) {
919 SCLogDebug(
"registering signature ordering functions");
921 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
922 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
923 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowintCompare);
924 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
925 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
926 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByHostbitsCompare);
927 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByIPPairbitsCompare);
928 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
944 while (funcs != NULL) {
961 static int SCSigOrderingTest01(
void)
969 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
970 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
971 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
972 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
973 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
974 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
975 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
976 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
977 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
978 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
979 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
982 while (temp != NULL) {
994 static int SCSigOrderingTest02(
void)
1002 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:1;)");
1006 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:2;)");
1010 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:10; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:3;)");
1014 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; flowvar:http_host,\"www.oisf.net\"; rev:4; priority:1; sid:4;)");
1018 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:1; sid:5;)");
1022 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering\"; pcre:\"/^User-Agent: (?P<flow_http_host>.*)\\r\\n/m\"; content:\"220\"; offset:10; depth:4; rev:4; priority:3; sid:6;)");
1026 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:10; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:3; sid:7;)");
1030 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:10; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:8;)");
1034 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:10; depth:4; pcre:\"/^User-Agent: (?P<pkt_http_host>.*)\\r\\n/m\"; rev:4; priority:3; flowbits:set,TEST.one; flowbits:noalert; sid:9;)");
1038 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:3; sid:10;)");
1042 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:11;)");
1046 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:12;)");
1050 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; pktvar:http_host,\"www.oisf.net\"; priority:2; flowbits:isnotset,TEST.two; sid:13;)");
1054 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; flowbits:set,TEST.two; sid:14;)");
1057 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1058 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1059 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1060 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1061 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1067 while (sig != NULL) {
1068 printf(
"sid: %d\n", sig->
id);
1113 static int SCSigOrderingTest03(
void)
1121 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1122 "offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:3; sid:1;)");
1126 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1127 "offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:2;)");
1131 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1132 "offset:10; depth:4; pcre:\"/^User-Agent: (?P<flow_http_host>.*)\\r\\n/m\"; "
1133 "flowbits:unset,TEST.one; rev:4; priority:2; sid:3;)");
1137 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1138 "offset:0; depth:4; pcre:\"/^User-Agent: (?P<pkt_http_host>.*)\\r\\n/m\"; "
1139 "flowbits:isset,TEST.one; rev:4; priority:1; sid:4;)");
1143 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1144 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; priority:2; sid:5;)");
1148 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1149 "content:\"220\"; offset:10; flowbits:isnotset,TEST.one; pcre:\"/^User-Agent: "
1150 "(?P<flow_http_host>.*)\\r\\n/m\"; rev:4; sid:6;)");
1154 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1155 "content:\"220\"; offset:10; depth:4; pcre:\"/220[- ]/\"; "
1156 "flowbits:unset,TEST.one; rev:4; priority:3; sid:7;)");
1160 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1161 "offset:10; depth:4; pcre:\"/220[- ]/\"; flowbits:unset,TEST.one; rev:4; priority:1; "
1162 "pktvar:http_host,\"www.oisf.net\"; sid:8;)");
1166 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1167 "content:\"220\"; offset:10; depth:4; rev:4; flowbits:set,TEST.one; "
1168 "flowbits:noalert; pktvar:http_host,\"www.oisf.net\"; sid:9;)");
1172 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1173 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:3; sid:10;)");
1177 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1178 "content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:11;)");
1182 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1183 "content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:12;)");
1187 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1188 "offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; flowbits:isnotset,TEST.one; sid:13;)");
1192 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1193 "offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; flowbits:set,TEST.one; sid:14;)");
1196 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1197 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1198 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1199 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1200 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1206 while (sig != NULL) {
1207 printf(
"sid: %d\n", sig->
id);
1250 static int SCSigOrderingTest04(
void)
1259 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1260 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:1;)");
1264 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1265 "pcre:\"/^User-Agent: (?P<flow_http_host>.*)\\r\\n/m\"; content:\"220\"; "
1266 "offset:10; rev:4; priority:3; sid:2;)");
1270 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1271 "content:\"220\"; offset:10; depth:4; pcre:\"/^User-Agent: "
1272 "(?P<flow_http_host>.*)\\r\\n/m\"; rev:4; priority:3; sid:3;)");
1276 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1277 "offset:10; depth:4; pcre:\"/^User-Agent: (?P<flow_http_host>.*)\\r\\n/m\"; rev:4; "
1278 "priority:3; flowvar:http_host,\"www.oisf.net\"; sid:4;)");
1282 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1283 "offset:11; depth:4; pcre:\"/^User-Agent: (?P<pkt_http_host>.*)\\r\\n/m\"; "
1284 "pcre:\"/220[- ]/\"; rev:4; priority:3; sid:5;)");
1288 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1289 "offset:11; depth:4; pcre:\"/^User-Agent: (?P<pkt_http_host>.*)\\r\\n/m\"; "
1290 "pktvar:http_host,\"www.oisf.net\"; rev:4; priority:1; sid:6;)");
1294 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1295 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; flowvar:http_host,\"www.oisf.net\"; "
1296 "pktvar:http_host,\"www.oisf.net\"; priority:1; sid:7;)");
1300 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1301 "content:\"220\"; offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; "
1302 "flowvar:http_host,\"www.oisf.net\"; sid:8;)");
1306 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1307 "content:\"220\"; offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; "
1308 "flowvar:http_host,\"www.oisf.net\"; sid:9;)");
1311 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1312 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1313 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1314 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1315 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1321 while (sig != NULL) {
1322 printf(
"sid: %d\n", sig->
id);
1357 static int SCSigOrderingTest05(
void)
1365 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1366 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:1;)");
1370 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1371 "pcre:\"/^User-Agent: (?P<pkt_http_host>.*)\\r\\n/m\"; content:\"220\"; "
1372 "offset:10; rev:4; priority:3; sid:2;)");
1376 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1377 "content:\"220\"; offset:10; depth:4; pcre:\"/^User-Agent: "
1378 "(?P<pkt_http_host>.*)\\r\\n/m\"; rev:4; priority:3; sid:3;)");
1382 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1383 "offset:10; depth:4; pcre:\"/^User-Agent: (?P<pkt_http_host>.*)\\r\\n/m\"; rev:4; "
1384 "priority:3; pktvar:http_host,\"www.oisf.net\"; sid:4;)");
1388 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1389 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:3; sid:5;)");
1393 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1394 "content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:6;)");
1398 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1399 "content:\"220\"; offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; "
1400 "pktvar:http_host,\"www.oisf.net\"; sid:7;)");
1404 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1405 "content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; "
1406 "pktvar:http_host,\"www.oisf.net\"; sid:8;)");
1409 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1410 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1411 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1412 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1413 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1419 while (sig != NULL) {
1420 printf(
"sid: %d\n", sig->
id);
1451 static int SCSigOrderingTest06(
void)
1460 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1461 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:1;)");
1465 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1466 "content:\"220\"; offset:10; rev:4; priority:2; sid:2;)");
1470 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1471 "content:\"220\"; offset:10; depth:4; rev:4; priority:3; sid:3;)");
1475 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; "
1476 "content:\"220\"; offset:10; depth:4; rev:4; priority:2; sid:4;)");
1480 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1481 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:5;)");
1485 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1486 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:1; sid:6;)");
1489 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1490 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:7;)");
1494 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering\"; content:\"220\"; "
1495 "offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:8;)");
1498 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1499 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1500 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1501 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1502 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1508 while (sig != NULL) {
1509 printf(
"sid: %d\n", sig->
id);
1537 static int SCSigOrderingTest07(
void)
1546 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1547 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; sid:1; rev:4;)");
1551 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1552 "content:\"220\"; offset:10; sid:2; rev:4; priority:2;)");
1556 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1557 "content:\"220\"; offset:10; depth:4; sid:3; rev:4; priority:3;)");
1561 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1562 "content:\"220\"; offset:10; depth:4; sid:4; rev:4; priority:2;)");
1566 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; content:\"220\"; "
1567 "offset:11; depth:4; pcre:\"/220[- ]/\"; sid:5; rev:4; priority:2;)");
1571 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering drop\"; content:\"220\"; "
1572 "offset:11; depth:4; pcre:\"/220[- ]/\"; sid:6; rev:4; priority:1;)");
1576 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering reject\"; content:\"220\"; "
1577 "offset:11; depth:4; pcre:\"/220[- ]/\"; sid:7; rev:4; priority:2;)");
1581 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; content:\"220\"; "
1582 "offset:12; depth:4; pcre:\"/220[- ]/\"; sid:8; rev:4; priority:2;)");
1585 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1586 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1587 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1588 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1589 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1595 while (sig != NULL) {
1596 printf(
"sid: %d\n", sig->
id);
1629 static int SCSigOrderingTest08(
void)
1631 #ifdef HAVE_LIBNET11
1646 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1647 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; sid:1; rev:4;)");
1651 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1652 "content:\"220\"; offset:10; sid:2; rev:4; priority:2;)");
1656 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1657 "content:\"220\"; offset:10; depth:4; sid:3; rev:4; priority:3;)");
1661 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1662 "content:\"220\"; offset:10; depth:4; sid:4; rev:4; priority:2;)");
1666 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; content:\"220\"; "
1667 "offset:11; depth:4; pcre:\"/220[- ]/\"; sid:5; rev:4; priority:2;)");
1671 "reject tcp any !21:902 -> any any (msg:\"Testing sigordering drop\"; content:\"220\"; "
1672 "offset:11; depth:4; pcre:\"/220[- ]/\"; sid:6; rev:4; priority:1;)");
1676 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering reject\"; "
1677 "content:\"220\"; offset:11; depth:4; pcre:\"/220[- ]/\"; sid:7; rev:4;)");
1681 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; content:\"220\"; "
1682 "offset:12; depth:4; pcre:\"/220[- ]/\"; sid:8; rev:4; priority:2;)");
1685 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1686 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1687 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1688 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1689 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1695 while (sig != NULL) {
1696 printf(
"sid: %d\n", sig->
id);
1736 static int SCSigOrderingTest09(
void)
1752 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1753 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; sid:1;)");
1757 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1758 "content:\"220\"; offset:10; priority:2; sid:2;)");
1762 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1763 "content:\"220\"; offset:10; depth:4; priority:3; sid:3;)");
1767 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1768 "content:\"220\"; offset:10; depth:4; rev:4; priority:2; sid:4;)");
1772 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; content:\"220\"; "
1773 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:5;)");
1777 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering drop\"; content:\"220\"; "
1778 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:1; sid:6;)");
1782 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering reject\"; content:\"220\"; "
1783 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:7;)");
1787 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; content:\"220\"; "
1788 "offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:8;)");
1791 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1792 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1793 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1794 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1795 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1801 while (sig != NULL) {
1802 printf(
"sid: %d\n", sig->
id);
1840 static int SCSigOrderingTest10(
void)
1856 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1857 "content:\"220\"; offset:0; depth:4; pcre:\"/220[- ]/\"; rev:4; sid:1;)");
1861 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1862 "content:\"220\"; offset:10; rev:4; priority:2; sid:2;)");
1866 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; "
1867 "content:\"220\"; offset:10; depth:4; rev:4; priority:3; sid:3;)");
1871 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; "
1872 "content:\"220\"; offset:10; depth:4; rev:4; priority:2; sid:4;)");
1876 "pass tcp any !21:902 -> any any (msg:\"Testing sigordering pass\"; content:\"220\"; "
1877 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:5;)");
1881 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering drop\"; content:\"220\"; "
1882 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:1; sid:6;)");
1886 "drop tcp any !21:902 -> any any (msg:\"Testing sigordering reject\"; content:\"220\"; "
1887 "offset:11; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:7;)");
1891 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering alert\"; content:\"220\"; "
1892 "offset:12; depth:4; pcre:\"/220[- ]/\"; rev:4; priority:2; sid:8;)");
1895 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1896 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1897 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1898 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1899 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1905 while (sig != NULL) {
1906 printf(
"sid: %d\n", sig->
id);
1940 static int SCSigOrderingTest11(
void)
1949 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering set\"; "
1950 "flowbits:isnotset,myflow1; rev:4; sid:1;)");
1954 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering unset\"; "
1955 "flowbits:unset,myflow2; rev:4; sid:2;)");
1959 "alert tcp any !21:902 -> any any (msg:\"Testing sigordering unset\"; "
1960 "flowbits:isset, myflow1; flowbits:unset,myflow2; rev:4; priority:3; sid:3;)");
1963 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByActionCompare);
1964 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
1965 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowvarCompare);
1966 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPktvarCompare);
1967 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByPriorityCompare);
1973 while (sig != NULL) {
1974 printf(
"sid: %d\n", sig->
id);
1992 static int SCSigOrderingTest12(
void)
1996 uint8_t buf[] =
"test message";
1998 memset(&f, 0,
sizeof(f));
2002 f.
proto = IPPROTO_TCP;
2008 const char *sigs[2];
2009 sigs[0] =
"alert tcp any any -> any any (content:\"test\"; dsize:>0; flowbits:isset,one; flowbits:set,two; sid:1;)";
2010 sigs[1] =
"alert tcp any any -> any any (content:\"test\"; dsize:>0; flowbits:set,one; sid:2;)";
2030 uint32_t sids[2] = {1, 2};
2031 uint32_t results[2] = {1, 1};
2043 static int SCSigOrderingTest13(
void)
2051 sig =
DetectEngineAppendSig(
de_ctx,
"alert tcp any any -> any any (flowbits:isset,bit1; flowbits:set,bit2; flowbits:set,bit3; sid:6;)");
2055 sig =
DetectEngineAppendSig(
de_ctx,
"alert tcp any any -> any any (flowbits:isset,bit1; flowbits:isset,bit2; flowbits:isset,bit3; sid:5;)");
2058 SCSigRegisterSignatureOrderingFunc(
de_ctx, SCSigOrderByFlowbitsCompare);
2063 while (sig != NULL) {
2064 printf(
"sid: %d\n", sig->
id);