Go to the documentation of this file.
40 #define PARSE_REGEX "([0x]*[0-9a-f]+)/([0x]*[0-9a-f]+)"
48 #if defined UNITTESTS && defined NFQ
49 static void MarkRegisterTests(
void);
62 #if defined UNITTESTS && defined NFQ
78 static void * DetectMarkParse (
const char *rawstr)
82 const char *str_ptr = NULL;
88 pcre2_match_data *match = NULL;
91 SCLogError(
"pcre_exec parse error, ret %" PRId32
", string %s", ret, rawstr);
92 pcre2_match_data_free(match);
96 res = pcre2_substring_get_bynumber(match, 1, (PCRE2_UCHAR8 **)&str_ptr, &pcre2_len);
98 SCLogError(
"pcre2_substring_get_bynumber failed");
102 ptr = (
char *)str_ptr;
108 SCLogError(
"invalid input as arg to nfq_set_mark keyword");
109 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
113 res = pcre2_substring_get_bynumber(match, 2, (PCRE2_UCHAR8 **)&str_ptr, &pcre2_len);
115 SCLogError(
"pcre2_substring_get_bynumber failed");
119 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
120 ptr = (
char *)str_ptr;
129 pcre2_match_data_free(match);
134 SCLogError(
"invalid input as arg to nfq_set_mark keyword");
135 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
139 SCLogDebug(
"Rule will set mark 0x%x with mask 0x%x", mark, mask);
140 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
148 pcre2_match_data_free(match);
153 pcre2_match_data_free(match);
205 if (PacketIsNotTunnel(
p)) {
237 #if defined UNITTESTS && defined NFQ
242 static int MarkTestParse01 (
void)
246 data = DetectMarkParse(
"1/1");
260 static int MarkTestParse02 (
void)
264 data = DetectMarkParse(
"4");
276 static int MarkTestParse03 (
void)
280 data = DetectMarkParse(
"0x10/0xff");
294 static int MarkTestParse04 (
void)
298 data = DetectMarkParse(
"0x1g/0xff");
309 static void MarkRegisterTests(
void)
#define FAIL_IF_NULL(expr)
Fail a test if expression evaluates to NULL.
SigTableElmt * sigmatch_table
void(* Free)(DetectEngineCtx *, void *)
void UtRegisterTest(const char *name, int(*TestFn)(void))
Register unit test.
main detection engine ctx
int ByteExtractStringUint32(uint32_t *res, int base, size_t len, const char *str)
int DetectParsePcreExec(DetectParseRegex *parse_regex, pcre2_match_data **match, const char *str, int start_offset, int options)
int(* Setup)(DetectEngineCtx *, Signature *, const char *)
@ DETECT_SM_LIST_POSTMATCH
#define FAIL_IF_NOT_NULL(expr)
Fail a test if expression evaluates to non-NULL.
#define PASS
Pass the test.
void DetectSetupParseRegexes(const char *parse_str, DetectParseRegex *detect_parse)
SigMatch * SCSigMatchAppendSMToList(DetectEngineCtx *de_ctx, Signature *s, uint16_t type, SigMatchCtx *ctx, const int list)
Append a SigMatch to the list type.
int(* Match)(DetectEngineThreadCtx *, Packet *, const Signature *, const SigMatchCtx *)
void DetectMarkRegister(void)
Registration function for nfq_set_mark: keyword.
Used to start a pointer to SigMatch context Should never be dereferenced without casting to something...
#define FAIL_IF(expr)
Fail a test if expression evaluates to true.
void DetectMarkDataFree(DetectEngineCtx *, void *ptr)
struct Packet_::@38 persistent
#define PKT_REBUILT_FRAGMENT
#define SCLogError(...)
Macro used to log ERROR messages.
void(* RegisterTests)(void)