diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2024-03-15 10:12:51 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-15 10:12:51 +0100 |
commit | 231748bb0e6f274eb91824bf1e3b1693370ec0de (patch) | |
tree | c770ac00021102d87d13f1af87aa05d2459699f1 /src/include | |
parent | 97fae6e00ad5b529ecc94a0bde2328da43426080 (diff) |
LRU cache: move to 64 bits long keys (#2346)
Tradeoff between key comparison efficiency (i.e. no `memcmp`) and key
length.
At least in the ipv4 cases, we have no more different entries with the
same key.
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/ndpi_api.h | 4 | ||||
-rw-r--r-- | src/include/ndpi_private.h | 6 | ||||
-rw-r--r-- | src/include/ndpi_typedefs.h | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h index 33a2c0e84..db1e12ebd 100644 --- a/src/include/ndpi_api.h +++ b/src/include/ndpi_api.h @@ -1058,9 +1058,9 @@ extern "C" { /* LRU cache */ struct ndpi_lru_cache* ndpi_lru_cache_init(u_int32_t num_entries, u_int32_t ttl, int shared); void ndpi_lru_free_cache(struct ndpi_lru_cache *c); - u_int8_t ndpi_lru_find_cache(struct ndpi_lru_cache *c, u_int32_t key, + u_int8_t ndpi_lru_find_cache(struct ndpi_lru_cache *c, u_int64_t key, u_int16_t *value, u_int8_t clean_key_when_found, u_int32_t now_sec); - void ndpi_lru_add_to_cache(struct ndpi_lru_cache *c, u_int32_t key, u_int16_t value, u_int32_t now_sec); + void ndpi_lru_add_to_cache(struct ndpi_lru_cache *c, u_int64_t key, u_int16_t value, u_int32_t now_sec); void ndpi_lru_get_stats(struct ndpi_lru_cache *c, struct ndpi_lru_cache_stats *stats); int ndpi_get_lru_cache_stats(struct ndpi_global_context *g_ctx, diff --git a/src/include/ndpi_private.h b/src/include/ndpi_private.h index bb704e63e..25ff5c4a7 100644 --- a/src/include/ndpi_private.h +++ b/src/include/ndpi_private.h @@ -660,8 +660,8 @@ int is_rtp_or_rtcp(struct ndpi_detection_module_struct *ndpi_struct, u_int8_t rtp_get_stream_type(u_int8_t payloadType, ndpi_multimedia_flow_type *s_type); /* Bittorrent */ -u_int32_t make_bittorrent_host_key(struct ndpi_flow_struct *flow, int client, int offset); -u_int32_t make_bittorrent_peers_key(struct ndpi_flow_struct *flow); +u_int64_t make_bittorrent_host_key(struct ndpi_flow_struct *flow, int client, int offset); +u_int64_t make_bittorrent_peers_key(struct ndpi_flow_struct *flow); int search_into_bittorrent_cache(struct ndpi_detection_module_struct *ndpi_struct, struct ndpi_flow_struct *flow); @@ -673,7 +673,7 @@ int stun_search_into_zoom_cache(struct ndpi_detection_module_struct *ndpi_struct int tpkt_verify_hdr(const struct ndpi_packet_struct * const packet); /* Mining Protocols (Ethereum, Monero, ...) */ -u_int32_t mining_make_lru_cache_key(struct ndpi_flow_struct *flow); +u_int64_t mining_make_lru_cache_key(struct ndpi_flow_struct *flow); /* Protocols init */ diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index c0c933101..7ed2ae3d5 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -757,7 +757,7 @@ typedef enum { } lru_cache_scope; struct ndpi_lru_cache_entry { - u_int32_t key; /* Store the whole key to avoid ambiguities */ + u_int64_t key; /* Store the whole key to avoid ambiguities */ u_int32_t is_full:1, value:16, pad:15; u_int32_t timestamp; /* sec */ }; |