suricata
detect-flowbits.h
Go to the documentation of this file.
1 /* Copyright (C) 2007-2025 Open Information Security Foundation
2  *
3  * You can copy, redistribute or modify this Program under the terms of
4  * the GNU General Public License version 2 as published by the Free
5  * Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * version 2 along with this program; if not, write to the Free Software
14  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15  * 02110-1301, USA.
16  */
17 
18 /**
19  * \file
20  *
21  * \author Victor Julien <victor@inliniac.net>
22  * \author Breno Silva <breno.silva@gmail.com>
23  */
24 
25 #ifndef SURICATA_DETECT_FLOWBITS_H
26 #define SURICATA_DETECT_FLOWBITS_H
27 
28 #define DETECT_FLOWBITS_CMD_SET 0
29 #define DETECT_FLOWBITS_CMD_UNSET 1
30 #define DETECT_FLOWBITS_CMD_ISNOTSET 2
31 #define DETECT_FLOWBITS_CMD_ISSET 3
32 #define DETECT_FLOWBITS_CMD_MAX 4
33 
34 struct FBAnalyzer {
35  struct FBAnalyze *array;
36  uint32_t array_size;
37 };
38 
39 typedef struct SigIdentifier_ {
40  uint32_t iid;
41  uint32_t sid;
43 
44 struct FBAnalyze {
47 
49  uint32_t set_iids_idx;
50  uint32_t set_iids_size;
51 
53  uint32_t isset_iids_idx;
54  uint32_t isset_iids_size;
55 
59 
61  uint32_t unset_iids_idx;
62  uint32_t unset_iids_size;
63 };
64 
65 typedef struct DetectFlowbitsData_ {
66  uint32_t idx;
67  uint8_t cmd;
68  uint8_t or_list_size;
69  /** Flag to trigger post rule match prefilter following a 'set' match. */
70  bool post_rule_match_prefilter; /**< set command should trigger post-rule-match
71  "prefilter" */
72  uint32_t *or_list;
74 
75 /* prototypes */
76 void DetectFlowbitsRegister (void);
77 
79 void FBAnalyzerFree(struct FBAnalyzer *);
80 #endif /* SURICATA_DETECT_FLOWBITS_H */
FBAnalyze::cnts
uint16_t cnts[DETECT_FLOWBITS_CMD_MAX]
Definition: detect-flowbits.h:45
DetectFlowbitsData_::or_list_size
uint8_t or_list_size
Definition: detect-flowbits.h:68
DETECT_FLOWBITS_CMD_MAX
#define DETECT_FLOWBITS_CMD_MAX
Definition: detect-flowbits.h:32
DetectFlowbitsRegister
void DetectFlowbitsRegister(void)
Definition: detect-flowbits.c:72
FBAnalyze::isnotset_iids
SigIdentifier * isnotset_iids
Definition: detect-flowbits.h:56
DetectFlowbitsData_::cmd
uint8_t cmd
Definition: detect-flowbits.h:67
SigIdentifier
struct SigIdentifier_ SigIdentifier
SigIdentifier_::iid
uint32_t iid
Definition: detect-flowbits.h:40
FBAnalyze::isset_iids_size
uint32_t isset_iids_size
Definition: detect-flowbits.h:54
FBAnalyzerFree
void FBAnalyzerFree(struct FBAnalyzer *)
Definition: detect-flowbits.c:512
FBAnalyze::set_iids_size
uint32_t set_iids_size
Definition: detect-flowbits.h:50
DetectFlowbitsData_
Definition: detect-flowbits.h:65
FBAnalyze::unset_iids_idx
uint32_t unset_iids_idx
Definition: detect-flowbits.h:61
FBAnalyze::isset_iids_idx
uint32_t isset_iids_idx
Definition: detect-flowbits.h:53
FBAnalyzer::array
struct FBAnalyze * array
Definition: detect-flowbits.h:35
FBAnalyze::isset_iids
SigIdentifier * isset_iids
Definition: detect-flowbits.h:52
FBAnalyze::isnotset_iids_size
uint32_t isnotset_iids_size
Definition: detect-flowbits.h:58
FBAnalyzer
Definition: detect-flowbits.h:34
FBAnalyzer::array_size
uint32_t array_size
Definition: detect-flowbits.h:36
DetectFlowbitsData_::idx
uint32_t idx
Definition: detect-flowbits.h:66
FBAnalyze::set_iids_idx
uint32_t set_iids_idx
Definition: detect-flowbits.h:49
FBAnalyze::isnotset_iids_idx
uint32_t isnotset_iids_idx
Definition: detect-flowbits.h:57
FBAnalyze::unset_iids
SigIdentifier * unset_iids
Definition: detect-flowbits.h:60
FBAnalyze::state_cnts
uint16_t state_cnts[DETECT_FLOWBITS_CMD_MAX]
Definition: detect-flowbits.h:46
DetectFlowbitsData
struct DetectFlowbitsData_ DetectFlowbitsData
DetectFlowbitsData_::or_list
uint32_t * or_list
Definition: detect-flowbits.h:72
DetectFlowbitsAnalyzeSignature
int DetectFlowbitsAnalyzeSignature(const Signature *, struct FBAnalyzer *)
Definition: detect-flowbits.c:537
Signature_
Signature container.
Definition: detect.h:688
SigIdentifier_
Definition: detect-flowbits.h:39
SigIdentifier_::sid
uint32_t sid
Definition: detect-flowbits.h:41
FBAnalyze::set_iids
SigIdentifier * set_iids
Definition: detect-flowbits.h:48
FBAnalyze
Definition: detect-flowbits.h:44
FBAnalyze::unset_iids_size
uint32_t unset_iids_size
Definition: detect-flowbits.h:62
DetectFlowbitsData_::post_rule_match_prefilter
bool post_rule_match_prefilter
Definition: detect-flowbits.h:70