aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/ndpi_main.c')
-rw-r--r--src/lib/ndpi_main.c126
1 files changed, 120 insertions, 6 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 173c98258..9d9c806af 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -2779,6 +2779,14 @@ struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs
return(NULL);
}
+ ndpi_str->ookla_cache_num_entries = 1024;
+ ndpi_str->bittorrent_cache_num_entries = 32768;
+ ndpi_str->zoom_cache_num_entries = 512;
+ ndpi_str->stun_cache_num_entries = 1024;
+ ndpi_str->tls_cert_cache_num_entries = 1024;
+ ndpi_str->mining_cache_num_entries = 1024;
+ ndpi_str->msteams_cache_num_entries = 1024;
+
ndpi_str->opportunistic_tls_smtp_enabled = 1;
ndpi_str->opportunistic_tls_imap_enabled = 1;
ndpi_str->opportunistic_tls_pop_enabled = 1;
@@ -2851,6 +2859,56 @@ void ndpi_finalize_initialization(struct ndpi_detection_module_struct *ndpi_str)
ndpi_add_domain_risk_exceptions(ndpi_str);
+ if(ndpi_str->ookla_cache_num_entries > 0) {
+ ndpi_str->ookla_cache = ndpi_lru_cache_init(ndpi_str->ookla_cache_num_entries);
+ if(!ndpi_str->ookla_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->ookla_cache_num_entries);
+ }
+ }
+ if(ndpi_str->bittorrent_cache_num_entries > 0) {
+ ndpi_str->bittorrent_cache = ndpi_lru_cache_init(ndpi_str->bittorrent_cache_num_entries);
+ if(!ndpi_str->bittorrent_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->bittorrent_cache_num_entries);
+ }
+ }
+ if(ndpi_str->zoom_cache_num_entries > 0) {
+ ndpi_str->zoom_cache = ndpi_lru_cache_init(ndpi_str->zoom_cache_num_entries);
+ if(!ndpi_str->zoom_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->zoom_cache_num_entries);
+ }
+ }
+ if(ndpi_str->stun_cache_num_entries > 0) {
+ ndpi_str->stun_cache = ndpi_lru_cache_init(ndpi_str->stun_cache_num_entries);
+ if(!ndpi_str->stun_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->stun_cache_num_entries);
+ }
+ }
+ if(ndpi_str->tls_cert_cache_num_entries > 0) {
+ ndpi_str->tls_cert_cache = ndpi_lru_cache_init(ndpi_str->tls_cert_cache_num_entries);
+ if(!ndpi_str->tls_cert_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->tls_cert_cache_num_entries);
+ }
+ }
+ if(ndpi_str->mining_cache_num_entries > 0) {
+ ndpi_str->mining_cache = ndpi_lru_cache_init(ndpi_str->mining_cache_num_entries);
+ if(!ndpi_str->mining_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->mining_cache_num_entries);
+ }
+ }
+ if(ndpi_str->msteams_cache_num_entries > 0) {
+ ndpi_str->msteams_cache = ndpi_lru_cache_init(ndpi_str->msteams_cache_num_entries);
+ if(!ndpi_str->msteams_cache) {
+ NDPI_LOG_ERR(ndpi_str, "Error allocating lru cache (num_entries %u)\n",
+ ndpi_str->msteams_cache_num_entries);
+ }
+ }
+
if(ndpi_str->ac_automa_finalized) return;
ndpi_automa * const automa[] = { &ndpi_str->host_automa,
@@ -5625,9 +5683,6 @@ static void ndpi_reconcile_protocols(struct ndpi_detection_module_struct *ndpi_s
if(flow->is_ipv6 == 0 && flow->l4_proto == IPPROTO_TCP) {
// printf("====>> NDPI_PROTOCOL_MSTEAMS\n");
- if(ndpi_str->msteams_cache == NULL)
- ndpi_str->msteams_cache = ndpi_lru_cache_init(1024);
-
if(ndpi_str->msteams_cache)
ndpi_lru_add_to_cache(ndpi_str->msteams_cache,
ntohl(flow->c_address.v4),
@@ -5769,9 +5824,6 @@ static u_int8_t ndpi_search_into_zoom_cache(struct ndpi_detection_module_struct
static void ndpi_add_connection_as_zoom(struct ndpi_detection_module_struct *ndpi_struct,
u_int32_t daddr /* Network byte order */) {
- if(ndpi_struct->zoom_cache == NULL)
- ndpi_struct->zoom_cache = ndpi_lru_cache_init(512);
-
if(ndpi_struct->zoom_cache)
ndpi_lru_add_to_cache(ndpi_struct->zoom_cache, daddr, NDPI_PROTOCOL_ZOOM);
}
@@ -8291,6 +8343,68 @@ int ndpi_get_lru_cache_stats(struct ndpi_detection_module_struct *ndpi_struct,
}
}
+int ndpi_set_lru_cache_size(struct ndpi_detection_module_struct *ndpi_struct,
+ lru_cache_type cache_type,
+ u_int32_t num_entries)
+{
+ switch(cache_type) {
+ case NDPI_LRUCACHE_OOKLA:
+ ndpi_struct->ookla_cache_num_entries = num_entries;
+ return 0;
+ case NDPI_LRUCACHE_BITTORRENT:
+ ndpi_struct->bittorrent_cache_num_entries = num_entries;
+ return 0;
+ case NDPI_LRUCACHE_ZOOM:
+ ndpi_struct->zoom_cache_num_entries = num_entries;
+ return 0;
+ case NDPI_LRUCACHE_STUN:
+ ndpi_struct->stun_cache_num_entries = num_entries;
+ return 0;
+ case NDPI_LRUCACHE_TLS_CERT:
+ ndpi_struct->tls_cert_cache_num_entries = num_entries;
+ return 0;
+ case NDPI_LRUCACHE_MINING:
+ ndpi_struct->mining_cache_num_entries = num_entries;
+ return 0;
+ case NDPI_LRUCACHE_MSTEAMS:
+ ndpi_struct->msteams_cache_num_entries = num_entries;
+ return 0;
+ default:
+ return -1;
+ }
+}
+
+int ndpi_get_lru_cache_size(struct ndpi_detection_module_struct *ndpi_struct,
+ lru_cache_type cache_type,
+ u_int32_t *num_entries)
+{
+ switch(cache_type) {
+ case NDPI_LRUCACHE_OOKLA:
+ *num_entries = ndpi_struct->ookla_cache_num_entries;
+ return 0;
+ case NDPI_LRUCACHE_BITTORRENT:
+ *num_entries = ndpi_struct->bittorrent_cache_num_entries;
+ return 0;
+ case NDPI_LRUCACHE_ZOOM:
+ *num_entries = ndpi_struct->zoom_cache_num_entries;
+ return 0;
+ case NDPI_LRUCACHE_STUN:
+ *num_entries = ndpi_struct->stun_cache_num_entries;
+ return 0;
+ case NDPI_LRUCACHE_TLS_CERT:
+ *num_entries = ndpi_struct->tls_cert_cache_num_entries;
+ return 0;
+ case NDPI_LRUCACHE_MINING:
+ *num_entries = ndpi_struct->mining_cache_num_entries;
+ return 0;
+ case NDPI_LRUCACHE_MSTEAMS:
+ *num_entries = ndpi_struct->msteams_cache_num_entries;
+ return 0;
+ default:
+ return -1;
+ }
+}
+
/* ******************************************************************** */
/*