diff options
| author | Mosder <xmosder12@gmail.com> | 2026-07-16 17:44:57 +0200 |
|---|---|---|
| committer | Mosder <xmosder12@gmail.com> | 2026-07-16 17:44:57 +0200 |
| commit | 165efd111591dbe44ebf057d6680a219b5657df5 (patch) | |
| tree | 0f14b7fe1f065db6373e6502c416a7136e3223b9 | |
| parent | 53601c541cd4abb95f07e55f1e4b9ce8ef96b9de (diff) | |
feat: added state to the analyzer loop and data handling function
| -rw-r--r-- | analyzer/analyzer.c | 14 |
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); } |
