Go to the documentation of this file.
41 #define PARSE_REGEX "([0x]*[0-9a-f]+)/([0x]*[0-9a-f]+)"
49 #if defined UNITTESTS && defined NFQ
50 static void MarkRegisterTests(
void);
63 #if defined UNITTESTS && defined NFQ
79 static void * DetectMarkParse (
const char *rawstr)
83 const char *str_ptr = NULL;
89 pcre2_match_data *match = NULL;
92 SCLogError(
"pcre_exec parse error, ret %" PRId32
", string %s", ret, rawstr);
93 pcre2_match_data_free(match);
97 res = pcre2_substring_get_bynumber(match, 1, (PCRE2_UCHAR8 **)&str_ptr, &pcre2_len);
99 SCLogError(
"pcre2_substring_get_bynumber failed");
103 ptr = (
char *)str_ptr;
109 SCLogError(
"invalid input as arg to nfq_set_mark keyword");
110 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
114 res = pcre2_substring_get_bynumber(match, 2, (PCRE2_UCHAR8 **)&str_ptr, &pcre2_len);
116 SCLogError(
"pcre2_substring_get_bynumber failed");
120 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
121 ptr = (
char *)str_ptr;
130 pcre2_match_data_free(match);
135 SCLogError(
"invalid input as arg to nfq_set_mark keyword");
136 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
140 SCLogDebug(
"Rule will set mark 0x%x with mask 0x%x", mark, mask);
141 pcre2_substring_free((PCRE2_UCHAR8 *)ptr);
149 pcre2_match_data_free(match);
154 pcre2_match_data_free(match);
206 if (PacketIsNotTunnel(p)) {
238 #if defined UNITTESTS && defined NFQ
243 static int MarkTestParse01 (
void)
247 data = DetectMarkParse(
"1/1");
261 static int MarkTestParse02 (
void)
265 data = DetectMarkParse(
"4");
277 static int MarkTestParse03 (
void)
281 data = DetectMarkParse(
"0x10/0xff");
295 static int MarkTestParse04 (
void)
299 data = DetectMarkParse(
"0x1g/0xff");
310 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
struct Packet_::@39 persistent
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)
#define PKT_REBUILT_FRAGMENT
#define SCLogError(...)
Macro used to log ERROR messages.
void(* RegisterTests)(void)