aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMosder <xmosder12@gmail.com>2026-07-16 17:44:57 +0200
committerMosder <xmosder12@gmail.com>2026-07-16 17:44:57 +0200
commit165efd111591dbe44ebf057d6680a219b5657df5 (patch)
tree0f14b7fe1f065db6373e6502c416a7136e3223b9
parent53601c541cd4abb95f07e55f1e4b9ce8ef96b9de (diff)
feat: added state to the analyzer loop and data handling function
-rw-r--r--analyzer/analyzer.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/analyzer/analyzer.c b/analyzer/analyzer.c
index 9ca2d6a..bd24613 100644
--- a/analyzer/analyzer.c
+++ b/analyzer/analyzer.c
@@ -8,7 +8,9 @@
#include "utils/tcp.h"
// loop through packets received from pcap_handle and analyze the TCP stream
-void analyzer_loop(TCPStream *stream, pcap_t *pcap_handle, void (*parsed_data_handler)(ParsedData *parsed_data, size_t n_parsed_data)) {
+void analyzer_loop(
+ TCPStream *stream, pcap_t *pcap_handle, void *state, void (*parsed_data_handler)(void *state, ParsedData *parsed_data, size_t n_parsed_data)
+) {
// read packets from handle
struct pcap_pkthdr *packet_data;
const byte_t *packet;
@@ -29,7 +31,7 @@ void analyzer_loop(TCPStream *stream, pcap_t *pcap_handle, void (*parsed_data_ha
// if there's parsed data - call the parsed data handler
if (n_parsed_data > 0)
- parsed_data_handler(parsed_data, n_parsed_data);
+ parsed_data_handler(state, parsed_data, n_parsed_data);
// free the entire parsed data memory
free_parsed_data(parsed_data, n_parsed_data);
@@ -38,11 +40,12 @@ void analyzer_loop(TCPStream *stream, pcap_t *pcap_handle, void (*parsed_data_ha
}
// file analyzer parsed data handler
-void file_parsed_data_handler(ParsedData *parsed_data, size_t n_parsed_data) {
+void file_parsed_data_handler(void *state, ParsedData *parsed_data, size_t n_parsed_data) {
+ int *fights_count = state;
for (size_t i = 0; i < n_parsed_data; i++) {
switch (parsed_data[i].data_type) {
case TYPE_FIGHT_RESULTS:
- printf("\nFIGHT:\n");
+ printf("\nFIGHT %d:\n", ++*fights_count);
render_fight_results(*(FightResults *)parsed_data[i].data);
break;
}
@@ -62,7 +65,8 @@ void analyze_file(char *path) {
// analyze the file
TCPStream stream = new_stream();
- analyzer_loop(&stream, handle, file_parsed_data_handler);
+ int state = 0;
+ analyzer_loop(&stream, handle, &state, file_parsed_data_handler);
destroy_stream(stream);
pcap_close(handle);
}