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}
#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;
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)
{
#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;
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)
{
--- /dev/null
+/* 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)
+
#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__)
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)