From 0fcfc7918f56635942bc715afa7cfdef8066e3f0 Mon Sep 17 00:00:00 2001 From: LapshinAE0 Date: Tue, 16 Jun 2026 12:26:29 +0300 Subject: [PATCH 1/2] fix: fixed ttl cache --- worker/include/dpdk_filter/constants.h | 2 ++ worker/src/dpdk_filter/domain_cache.c | 6 +++++- worker/src/dpdk_filter/ip_cache.c | 6 +++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/worker/include/dpdk_filter/constants.h b/worker/include/dpdk_filter/constants.h index 78d1ffa..db2c377 100644 --- a/worker/include/dpdk_filter/constants.h +++ b/worker/include/dpdk_filter/constants.h @@ -3,6 +3,8 @@ #include +#define DNS_CACHE_DEFAULT_TTL (7 * 24 * 60 * 60) // 7 дней +#define IP_CACHE_DEFAULT_TTL (7 * 24 * 60 * 60) // 7 дней #define FORWARD_TO_OUT_BURST_SIZE 32 #define MAX_CATEGORIES_BY_TRUST_LVL 64 #define MAX_DOMAINS 64 diff --git a/worker/src/dpdk_filter/domain_cache.c b/worker/src/dpdk_filter/domain_cache.c index 121d559..fe38d77 100644 --- a/worker/src/dpdk_filter/domain_cache.c +++ b/worker/src/dpdk_filter/domain_cache.c @@ -443,7 +443,11 @@ void add_to_dns_cache(const char *domain, struct node_cache_domain *node, strncpy(key_copy, domain, DOMAIN_MAX_LEN); key_copy[DOMAIN_MAX_LEN - 1] = '\0'; node->timestamp = rte_get_timer_cycles(); - node->ttl_seconds = ttl_dns; + if (ttl_dns <= 0) { + node->ttl_seconds = DNS_CACHE_DEFAULT_TTL; + } else { + node->ttl_seconds = ttl_dns; + } node->key_domain = key_copy; rte_spinlock_lock(&cache_spinlock_domain); diff --git a/worker/src/dpdk_filter/ip_cache.c b/worker/src/dpdk_filter/ip_cache.c index 2359a6d..7978202 100644 --- a/worker/src/dpdk_filter/ip_cache.c +++ b/worker/src/dpdk_filter/ip_cache.c @@ -487,7 +487,11 @@ void add_to_ip_cache(const struct ip_key *key, struct node_cache_ip *node, memcpy(key_copy, key, IP_MAX_LEN); node->timestamp = rte_get_timer_cycles(); - node->ttl_seconds = ttl_ip; + if (ttl_ip <= 0) { + node->ttl_seconds = IP_CACHE_DEFAULT_TTL; + } else { + node->ttl_seconds = ttl_ip; + } node->key = key_copy; rte_spinlock_lock(&cache_spinlock_ip); From 9f16b41457ff55cb9b0e860ce4cf041eafb92b7e Mon Sep 17 00:00:00 2001 From: LapshinAE0 Date: Thu, 18 Jun 2026 00:36:53 +0300 Subject: [PATCH 2/2] fix: more productive fix --- worker/src/dpdk_filter/domain_cache.c | 6 +----- worker/src/dpdk_filter/ip_cache.c | 6 +----- worker/src/worker.cpp | 6 ++++++ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/worker/src/dpdk_filter/domain_cache.c b/worker/src/dpdk_filter/domain_cache.c index fe38d77..121d559 100644 --- a/worker/src/dpdk_filter/domain_cache.c +++ b/worker/src/dpdk_filter/domain_cache.c @@ -443,11 +443,7 @@ void add_to_dns_cache(const char *domain, struct node_cache_domain *node, strncpy(key_copy, domain, DOMAIN_MAX_LEN); key_copy[DOMAIN_MAX_LEN - 1] = '\0'; node->timestamp = rte_get_timer_cycles(); - if (ttl_dns <= 0) { - node->ttl_seconds = DNS_CACHE_DEFAULT_TTL; - } else { - node->ttl_seconds = ttl_dns; - } + node->ttl_seconds = ttl_dns; node->key_domain = key_copy; rte_spinlock_lock(&cache_spinlock_domain); diff --git a/worker/src/dpdk_filter/ip_cache.c b/worker/src/dpdk_filter/ip_cache.c index 7978202..2359a6d 100644 --- a/worker/src/dpdk_filter/ip_cache.c +++ b/worker/src/dpdk_filter/ip_cache.c @@ -487,11 +487,7 @@ void add_to_ip_cache(const struct ip_key *key, struct node_cache_ip *node, memcpy(key_copy, key, IP_MAX_LEN); node->timestamp = rte_get_timer_cycles(); - if (ttl_ip <= 0) { - node->ttl_seconds = IP_CACHE_DEFAULT_TTL; - } else { - node->ttl_seconds = ttl_ip; - } + node->ttl_seconds = ttl_ip; node->key = key_copy; rte_spinlock_lock(&cache_spinlock_ip); diff --git a/worker/src/worker.cpp b/worker/src/worker.cpp index bd03edd..3c245fb 100644 --- a/worker/src/worker.cpp +++ b/worker/src/worker.cpp @@ -392,6 +392,12 @@ void Worker::MainLoop() { { std::lock_guard lock(policy_mutex); local_policy = current_policy; + if (local_policy.ttl_domain <= 0) { + local_policy.ttl_domain = DNS_CACHE_DEFAULT_TTL; + } + if (local_policy.ttl_ip <= 0) { + local_policy.ttl_ip = IP_CACHE_DEFAULT_TTL; + } } forward_to_out(port_exception, port_in, queue_number); pakage_processing(port_in, port_out, port_exception, queue_number, nb_pkts,