Skip to content

Commit 354e998

Browse files
kaddujames501-ship-itvictorjulien
authored andcommitted
detect/analyzer: add details for the xbits keyword
Add xbits keyword details. Exposes cmd, name, track, and expire properties, following the same pattern as byte_jump and flowbits. Task OISF#6351
1 parent 6c06ab6 commit 354e998

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

src/detect-engine-analyzer.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
#include "util-conf.h"
5454
#include "detect-flowbits.h"
5555
#include "detect-flowint.h"
56+
#include "detect-xbits.h"
5657
#include "util-var-name.h"
5758
#include "detect-icmp-id.h"
5859
#include "detect-tcp-window.h"
@@ -918,6 +919,47 @@ static void DumpMatches(RuleAnalyzer *ctx, SCJsonBuilder *js, const SigMatchData
918919
SCJbClose(js); // object
919920
break;
920921
}
922+
case DETECT_XBITS: {
923+
const DetectXbitsData *xd = (const DetectXbitsData *)smd->ctx;
924+
925+
SCJbOpenObject(js, "xbits");
926+
switch (xd->cmd) {
927+
case DETECT_XBITS_CMD_ISSET:
928+
SCJbSetString(js, "cmd", "isset");
929+
break;
930+
case DETECT_XBITS_CMD_ISNOTSET:
931+
SCJbSetString(js, "cmd", "isnotset");
932+
break;
933+
case DETECT_XBITS_CMD_SET:
934+
SCJbSetString(js, "cmd", "set");
935+
break;
936+
case DETECT_XBITS_CMD_UNSET:
937+
SCJbSetString(js, "cmd", "unset");
938+
break;
939+
case DETECT_XBITS_CMD_TOGGLE:
940+
SCJbSetString(js, "cmd", "toggle");
941+
break;
942+
}
943+
SCJbSetString(js, "name", VarNameStoreSetupLookup(xd->idx, xd->type));
944+
switch (xd->tracker) {
945+
case DETECT_XBITS_TRACK_IPSRC:
946+
SCJbSetString(js, "track", "ip_src");
947+
break;
948+
case DETECT_XBITS_TRACK_IPDST:
949+
SCJbSetString(js, "track", "ip_dst");
950+
break;
951+
case DETECT_XBITS_TRACK_IPPAIR:
952+
SCJbSetString(js, "track", "ip_pair");
953+
break;
954+
case DETECT_XBITS_TRACK_TX:
955+
SCJbSetString(js, "track", "tx");
956+
break;
957+
}
958+
// always log expire value
959+
SCJbSetUint(js, "expire", xd->expire);
960+
SCJbClose(js); // object
961+
break;
962+
}
921963
case DETECT_FLOWINT: {
922964
const DetectFlowintData *cd = (const DetectFlowintData *)smd->ctx;
923965

0 commit comments

Comments
 (0)