aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorIvan Nardi <12729895+IvanNardi@users.noreply.github.com>2024-03-15 10:12:51 +0100
committerGitHub <noreply@github.com>2024-03-15 10:12:51 +0100
commit231748bb0e6f274eb91824bf1e3b1693370ec0de (patch)
treec770ac00021102d87d13f1af87aa05d2459699f1 /src/include
parent97fae6e00ad5b529ecc94a0bde2328da43426080 (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.h4
-rw-r--r--src/include/ndpi_private.h6
-rw-r--r--src/include/ndpi_typedefs.h2
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 */
};