From: Kevin Darbyshire-Bryant Date: Sat, 13 Apr 2024 11:06:16 +0000 (+0100) Subject: dnsmasq:dump cache on sigusr2 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=6a18797ab23718315941addb6058e296f190a1b5;p=openwrt%2Fstaging%2Fldir.git dnsmasq:dump cache on sigusr2 Signed-off-by: Kevin Darbyshire-Bryant --- diff --git a/package/network/services/dnsmasq/patches/400-dump-cache-on-sigusr2.patch b/package/network/services/dnsmasq/patches/400-dump-cache-on-sigusr2.patch new file mode 100644 index 0000000000..40558a9284 --- /dev/null +++ b/package/network/services/dnsmasq/patches/400-dump-cache-on-sigusr2.patch @@ -0,0 +1,72 @@ +From bb7d39f44d8b2db69b4d6974abec7e85f6c689d1 Mon Sep 17 00:00:00 2001 +From: Kevin Darbyshire-Bryant +Date: Sun, 17 Dec 2023 13:00:20 +0000 +Subject: [PATCH 1/2] dump cache on sigusr2 + +--- + src/cache.c | 4 ++-- + src/dnsmasq.c | 5 ++++- + src/dnsmasq.h | 2 +- + 3 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/cache.c b/src/cache.c +index 0eacec9..c03bf6f 100644 +--- a/src/cache.c ++++ b/src/cache.c +@@ -1905,7 +1905,7 @@ static void dump_cache_entry(struct crec *cache, time_t now) + my_syslog(LOG_INFO, "%s", buff); + } + +-void dump_cache(time_t now) ++void dump_cache(time_t now, unsigned int force_dump) + { + struct server *serv, *serv1; + +@@ -1959,7 +1959,7 @@ void dump_cache(time_t now) + daemon->addrbuff, port, queries, retrys, failed_queries, nxdomain_replies, sigma_latency/count_latency); + } + +- if (option_bool(OPT_DEBUG) || option_bool(OPT_LOG)) ++ if (option_bool(OPT_DEBUG) || option_bool(OPT_LOG) || force_dump) + { + struct crec *cache; + int i; +diff --git a/src/dnsmasq.c b/src/dnsmasq.c +index a9f26ae..e1dbb6c 100644 +--- a/src/dnsmasq.c ++++ b/src/dnsmasq.c +@@ -1509,7 +1509,7 @@ static void async_event(int pipe, time_t now) + + case EVENT_DUMP: + if (daemon->port != 0) +- dump_cache(now); ++ dump_cache(now, 0); + break; + + case EVENT_ALARM: +@@ -1580,6 +1580,9 @@ static void async_event(int pipe, time_t now) + we leave them logging to the old file. */ + if (daemon->log_file != NULL) + log_reopen(daemon->log_file); ++ else ++ if (daemon->port != 0) ++ dump_cache(now, 1); + break; + + case EVENT_NEWADDR: +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index e455c3f..00eeb16 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -1355,7 +1355,7 @@ void cache_reload(void); + void cache_add_dhcp_entry(char *host_name, int prot, union all_addr *host_address, time_t ttd); + struct in_addr a_record_from_hosts(char *name, time_t now); + void cache_unhash_dhcp(void); +-void dump_cache(time_t now); ++void dump_cache(time_t now, unsigned int force_dump); + #ifndef NO_ID + int cache_make_stat(struct txt_record *t); + #endif +-- +2.39.2 +