aboutsummaryrefslogtreecommitdiff
path: root/analyzer/parser/parser_defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'analyzer/parser/parser_defs.h')
-rw-r--r--analyzer/parser/parser_defs.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/analyzer/parser/parser_defs.h b/analyzer/parser/parser_defs.h
new file mode 100644
index 0000000..75b0366
--- /dev/null
+++ b/analyzer/parser/parser_defs.h
@@ -0,0 +1,42 @@
+// parser/parser_defs.h
+// useful definitions for parser files
+
+#include "utils/tcp.h"
+
+#ifndef PARSER_DEFS_H
+#define PARSER_DEFS_H
+
+typedef enum { TYPE_FIGHT_RESULTS } ResultsEnum;
+
+// "generic" type for parsed data
+typedef struct {
+ ResultsEnum data_type; // type of data represented by an enum
+ void *data; // pointer to the parsed data
+ void (*data_cleanup)(void *data); // function to cleanup internal allocations inside data
+ // if no internal allocations - this should be NULL
+} ParsedData;
+
+// find the first results data of specific type in stream
+// params:
+// - stream - stream to find the data in
+// - offset - offset to start finding data from
+// - length - length of the data or -1 if there's no end yet
+// returns:
+// pointer to the beginning of data or NULL if there's none
+typedef byte_t *find_function_t(TCPStream *stream, int offset, int *length);
+
+// parse given data of specifc type
+// params:
+// - data - data to parse
+// - length - length of data
+// returns:
+// ParsedData struct including the parsed data
+typedef ParsedData parse_function_t(byte_t *data, size_t length);
+
+// struct for holding the find and parse function for every result type
+typedef struct {
+ find_function_t *find_fn;
+ parse_function_t *parse_fn;
+} FindParseFunctions;
+
+#endif