]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/kru-utils.h: new header to deduplicate stuff
authorVladimír Čunát <vladimir.cunat@nic.cz>
Tue, 23 Sep 2025 07:30:34 +0000 (09:30 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Thu, 9 Oct 2025 09:04:34 +0000 (11:04 +0200)
I don't like that these defines were repeated three times now already.
This new header is specific to Knot Resolver:
 - kr_require() can be used, for example
 - the defines maybe aren't worth deduplicating between knot-{dns,resolver}

daemon/defer.c
daemon/ratelimiting.c
lib/kru-utils.h [new file with mode: 0644]
modules/dns_tunnel_filter/dns_tunnel_filter.c

index 5d0c2a43f113ffab9a619eb1917dbcb64a7a5d0a..ed732e5a53fc0dd5eff25de01b727ff4c6eda797 100644 (file)
@@ -8,22 +8,15 @@
 #include "daemon/session2.h"
 #include "daemon/udp_queue.h"
 #include "lib/kru.h"
+#include "lib/kru-utils.h"
 #include "lib/mmapped.h"
 #include "lib/resolve.h"
 #include "lib/utils.h"
 
-#define V4_PREFIXES  (uint8_t[])       {  18,  20, 24, 32 }
-#define V4_RATE_MULT (kru_price_t[])   { 768, 256, 32,  1 }
+// see ../lib/kru-utils.h for the closely related V4_* and V6_* defines.
 #define V4_SUBPRIO   (uint8_t[])       {   0,   1,  3,  7 }
-
-#define V6_PREFIXES  (uint8_t[])       { 32, 48, 56, 64, 128 }
-#define V6_RATE_MULT (kru_price_t[])   { 64,  4,  3,  2,   1 }
 #define V6_SUBPRIO   (uint8_t[])       {  2,  4,  5,  6,   7 }
-
 #define SUBPRIO_CNT 8
-#define V4_PREFIXES_CNT (sizeof(V4_PREFIXES) / sizeof(*V4_PREFIXES))
-#define V6_PREFIXES_CNT (sizeof(V6_PREFIXES) / sizeof(*V6_PREFIXES))
-#define MAX_PREFIXES_CNT ((V4_PREFIXES_CNT > V6_PREFIXES_CNT) ? V4_PREFIXES_CNT : V6_PREFIXES_CNT)
 
 struct kru_conf {
        uint8_t namespace;
@@ -140,14 +133,6 @@ struct pl_defer_iter_data {
        size_t size;
 };
 
-/// Return whether we're using optimized variant right now.
-static bool using_avx2(void)
-{
-       bool result = (KRU.initialize == KRU_AVX2.initialize);
-       kr_require(result || KRU.initialize == KRU_GENERIC.initialize);
-       return result;
-}
-
 /// Print configuration into desc array.
 void defer_str_conf(char *desc, int desc_len)
 {
index d182658e49b5aa090ea49a8dac23440eb6605036..a98221abe0a7d90681f327bf6f5f8efb92f802a0 100644 (file)
@@ -5,20 +5,11 @@
 #include <stdatomic.h>
 #include "daemon/ratelimiting.h"
 #include "lib/kru.h"
+#include "lib/kru-utils.h"
 #include "lib/mmapped.h"
 #include "lib/utils.h"
 #include "lib/resolve.h"
 
-#define V4_PREFIXES  (uint8_t[])       {  18,  20, 24, 32 }
-#define V4_RATE_MULT (kru_price_t[])   { 768, 256, 32,  1 }
-
-#define V6_PREFIXES  (uint8_t[])       { 32, 48, 56, 64, 128 }
-#define V6_RATE_MULT (kru_price_t[])   { 64,  4,  3,  2,   1 }
-
-#define V4_PREFIXES_CNT (sizeof(V4_PREFIXES) / sizeof(*V4_PREFIXES))
-#define V6_PREFIXES_CNT (sizeof(V6_PREFIXES) / sizeof(*V6_PREFIXES))
-#define MAX_PREFIXES_CNT ((V4_PREFIXES_CNT > V6_PREFIXES_CNT) ? V4_PREFIXES_CNT : V6_PREFIXES_CNT)
-
 struct ratelimiting {
        size_t capacity;
        uint32_t instant_limit;
@@ -35,14 +26,6 @@ struct ratelimiting {
 struct ratelimiting *ratelimiting = NULL;
 struct mmapped ratelimiting_mmapped = {0};
 
-/// return whether we're using optimized variant right now
-static bool using_avx2(void)
-{
-       bool result = (KRU.initialize == KRU_AVX2.initialize);
-       kr_require(result || KRU.initialize == KRU_GENERIC.initialize);
-       return result;
-}
-
 int ratelimiting_init(const char *mmap_file, size_t capacity, uint32_t instant_limit,
                uint32_t rate_limit, uint16_t slip, uint32_t log_period, bool dry_run)
 {
diff --git a/lib/kru-utils.h b/lib/kru-utils.h
new file mode 100644 (file)
index 0000000..48a72d7
--- /dev/null
@@ -0,0 +1,30 @@
+/*  Copyright (C) CZ.NIC, z.s.p.o. <knot-resolver@labs.nic.cz>
+ *  SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#pragma once
+
+#include "lib/kru.h"
+#include "lib/utils.h"
+
+/// Return whether we're using optimized variant right now
+static inline bool using_avx2(void)
+{
+       bool result = (KRU.initialize == KRU_AVX2.initialize);
+       kr_require(result || KRU.initialize == KRU_GENERIC.initialize);
+       return result;
+}
+
+
+// In various applications we classify IP addresses by prefix lengths
+// and associate multiplicative coefficients with them.
+#define V4_PREFIXES  (uint8_t[])       {  18,  20, 24, 32 }
+#define V4_RATE_MULT (kru_price_t[])   { 768, 256, 32,  1 }
+
+#define V6_PREFIXES  (uint8_t[])       { 32, 48, 56, 64, 128 }
+#define V6_RATE_MULT (kru_price_t[])   { 64,  4,  3,  2,   1 }
+
+#define V4_PREFIXES_CNT (sizeof(V4_PREFIXES) / sizeof(*V4_PREFIXES))
+#define V6_PREFIXES_CNT (sizeof(V6_PREFIXES) / sizeof(*V6_PREFIXES))
+#define MAX_PREFIXES_CNT ((V4_PREFIXES_CNT > V6_PREFIXES_CNT) ? V4_PREFIXES_CNT : V6_PREFIXES_CNT)
+
index e60768ab3fa974f0e0fcf6b7f1cd449aa999af33..3debd17d2e118cd97709e4f0bd0e057037bbc662 100644 (file)
@@ -5,20 +5,11 @@
 #include <stdatomic.h>
 #include "dns_tunnel_filter.h"
 #include "libblcnn.h"
+#include "lib/kru-utils.h"
 #include "lib/mmapped.h"
 #include "lib/utils.h"
 #include "lib/resolve.h"
 
-#define V4_PREFIXES  (uint8_t[])       {  18,  20, 24, 32 }
-#define V4_RATE_MULT (kru_price_t[])   { 768, 256, 32,  1 }
-
-#define V6_PREFIXES  (uint8_t[])       { 32, 48, 56, 64, 128 }
-#define V6_RATE_MULT (kru_price_t[])   { 64,  4,  3,  2,   1 }
-
-#define V4_PREFIXES_CNT (sizeof(V4_PREFIXES) / sizeof(*V4_PREFIXES))
-#define V6_PREFIXES_CNT (sizeof(V6_PREFIXES) / sizeof(*V6_PREFIXES))
-#define MAX_PREFIXES_CNT ((V4_PREFIXES_CNT > V6_PREFIXES_CNT) ? V4_PREFIXES_CNT : V6_PREFIXES_CNT)
-
 #define DNAME_SCALE_FACTOR 25
 
 #define VERBOSE_LOG(...) kr_log_debug(TUNNEL, " | " __VA_ARGS__)
@@ -40,13 +31,6 @@ struct dns_tunnel_filter {
 struct dns_tunnel_filter *dns_tunnel_filter = NULL;
 struct mmapped dns_tunnel_filter_mmapped = {0};
 bool dns_tunnel_filter_initialized = false;
-/// return whether we're using optimized variant right now
-static bool using_avx2(void)
-{
-       bool result = (KRU.initialize == KRU_AVX2.initialize);
-       kr_require(result || KRU.initialize == KRU_GENERIC.initialize);
-       return result;
-}
 
 int dns_tunnel_filter_init(const char *mmap_file, size_t capacity, uint32_t instant_limit,
                uint32_t rate_limit, uint16_t slip, uint32_t log_period, bool dry_run)