diff options
author | lns <matzeton@googlemail.com> | 2022-05-27 22:09:58 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2022-08-24 11:47:46 +0200 |
commit | 71f91b5183f9a2735add7e1f0ec86f41f0b06845 (patch) | |
tree | d6808a59c8357973af9a164681f1f1737c7a725d /src/include | |
parent | ac24b35b1fa36f8df6d586742200a0dc2d54f59e (diff) |
Provide a generic reassembler interface.add/generic-reassembler-interface
* Shall be used for stream based protocols e.g. Kerberos, QUIC, etc.
Signed-off-by: lns <matzeton@googlemail.com>
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/ndpi_api.h.in | 15 | ||||
-rw-r--r-- | src/include/ndpi_typedefs.h | 25 |
2 files changed, 25 insertions, 15 deletions
diff --git a/src/include/ndpi_api.h.in b/src/include/ndpi_api.h.in index 9064ac627..a9c39313c 100644 --- a/src/include/ndpi_api.h.in +++ b/src/include/ndpi_api.h.in @@ -1823,6 +1823,21 @@ extern "C" { char *out, u_int out_len, u_int8_t use_json); + /* ******************************* */ + + void ndpi_reassemble_set_buffer_len(struct ndpi_reasm * const reasm, + u_int64_t buffer_len); + int ndpi_reassemble(struct ndpi_reasm * const reasm, uint8_t const * const frag, + uint64_t frag_len, uint64_t frag_offset); + int ndpi_reassemble_payload(struct ndpi_reasm * const reasm, + struct ndpi_packet_struct * packet); + void ndpi_reassemble_swap_payload(struct ndpi_packet_struct * packet, + struct ndpi_reasm const * reasm, + u_int8_t const ** const original_payload, + u_int16_t * original_payload_packet_len); + int ndpi_reassemble_in_progress(struct ndpi_reasm * const reasm); + int ndpi_reassemble_is_complete(struct ndpi_reasm * const reasm); + #ifdef __cplusplus } #endif diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index efea443d6..ee4eabbc2 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -647,6 +647,14 @@ struct ndpi_lru_cache { struct ndpi_lru_cache_entry *entries; }; +struct ndpi_reasm { + u_int8_t *buf; + u_int8_t *buf_bitmap; + u_int32_t buf_last_pos; + u_int32_t buf_req; + u_int32_t buf_len; +}; + /* ************************************************** */ struct ndpi_flow_tcp_struct { @@ -808,11 +816,6 @@ struct ndpi_flow_udp_struct { u_int8_t wireguard_stage; u_int32_t wireguard_peer_index[2]; - /* NDPI_PROTOCOL_QUIC */ - u_int8_t *quic_reasm_buf; - u_int8_t *quic_reasm_buf_bitmap; - u_int32_t quic_reasm_buf_last_pos; - /* NDPI_PROTOCOL_CSGO */ u_int8_t csgo_strid[18],csgo_state,csgo_s2; u_int32_t csgo_id2; @@ -1293,6 +1296,8 @@ struct ndpi_flow_struct { struct ndpi_flow_udp_struct udp; } l4; + struct ndpi_reasm reassemble; + /* Some protocols calculate the entropy. */ float entropy; @@ -1330,16 +1335,6 @@ struct ndpi_flow_struct { char *nat_ip; /* Via HTTP X-Forwarded-For */ } http; - /* - Put outside of the union to avoid issues in case the protocol - is remapped to somethign pther than Kerberos due to a faulty - dissector - */ - struct { - char *pktbuf; - u_int16_t pktbuf_maxlen, pktbuf_currlen; - } kerberos_buf; - struct { u_int8_t num_udp_pkts, num_binding_requests; u_int16_t num_processed_pkts; |