From: Ondřej Surý Date: Tue, 12 Aug 2025 10:21:56 +0000 (+0200) Subject: Move the slabheader attribute helpers to private header X-Git-Tag: v9.21.12~42^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eba76df247eae9838ffcf817c0c218e4a98eaccf;p=thirdparty%2Fbind9.git Move the slabheader attribute helpers to private header The slabheader.c, qpzone.c and qpcache.c had couple of shared macros that were copied and paste between the units. Move these common attributes access macros into private header, so these can be shared among the three compilation units. --- diff --git a/lib/dns/qpcache.c b/lib/dns/qpcache.c index 9d02239a248..c5de17203a0 100644 --- a/lib/dns/qpcache.c +++ b/lib/dns/qpcache.c @@ -59,6 +59,7 @@ #include "db_p.h" #include "qpcache_p.h" +#include "rdataslab_p.h" #ifndef DNS_QPCACHE_LOG_STATS_LEVEL #define DNS_QPCACHE_LOG_STATS_LEVEL 3 @@ -71,37 +72,6 @@ goto failure; \ } while (0) -#define EXISTS(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_NONEXISTENT) == 0) -#define NXDOMAIN(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_NXDOMAIN) != 0) -#define STALE(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_STALE) != 0) -#define STALE_WINDOW(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_STALE_WINDOW) != 0) -#define OPTOUT(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_OPTOUT) != 0) -#define NEGATIVE(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_NEGATIVE) != 0) -#define PREFETCH(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_PREFETCH) != 0) -#define ZEROTTL(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_ZEROTTL) != 0) -#define ANCIENT(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_ANCIENT) != 0) -#define STATCOUNT(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_STATCOUNT) != 0) - #define STALE_TTL(header, qpdb) \ (NXDOMAIN(header) ? 0 : qpdb->common.serve_stale_ttl) diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index 65f6c211b6e..76eb96c9d55 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -62,6 +62,7 @@ #include "db_p.h" #include "qpzone_p.h" +#include "rdataslab_p.h" #define CHECK(op) \ do { \ @@ -70,22 +71,6 @@ goto failure; \ } while (0) -#define EXISTS(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_NONEXISTENT) == 0) -#define IGNORE(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_IGNORE) != 0) -#define RESIGN(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_RESIGN) != 0) -#define OPTOUT(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_OPTOUT) != 0) -#define STATCOUNT(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_STATCOUNT) != 0) - #define HEADERNODE(h) ((qpznode_t *)((h)->node)) #define QPDB_ATTR_LOADED 0x01 diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c index f5d4cb24543..82e810c3efc 100644 --- a/lib/dns/rdataslab.c +++ b/lib/dns/rdataslab.c @@ -30,18 +30,7 @@ #include #include -#define CASESET(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_CASESET) != 0) -#define CASEFULLYLOWER(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_CASEFULLYLOWER) != 0) -#define NONEXISTENT(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_NONEXISTENT) != 0) -#define NEGATIVE(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_NEGATIVE) != 0) +#include "rdataslab_p.h" /* * The rdataslab structure allows iteration to occur in both load order @@ -915,10 +904,10 @@ dns_slabheader_destroy(dns_slabheader_t **headerp) { isc_mem_t *mctx = header->node->mctx; dns_db_deletedata(header->node, header); - if (NONEXISTENT(header)) { - size = sizeof(*header); - } else { + if (EXISTS(header)) { size = dns_rdataslab_size(header); + } else { + size = sizeof(*header); } isc_mem_put(mctx, header, size); diff --git a/lib/dns/rdataslab_p.h b/lib/dns/rdataslab_p.h new file mode 100644 index 00000000000..e3b4fbb573d --- /dev/null +++ b/lib/dns/rdataslab_p.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) Internet Systems Consortium, Inc. ("ISC") + * + * SPDX-License-Identifier: MPL-2.0 + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * See the COPYRIGHT file distributed with this work for additional + * information regarding copyright ownership. + */ + +#pragma once + +#include + +#define ANCIENT(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_ANCIENT) != 0) +#define CASEFULLYLOWER(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_CASEFULLYLOWER) != 0) +#define CASESET(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_CASESET) != 0) +#define EXISTS(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_NONEXISTENT) == 0) +#define IGNORE(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_IGNORE) != 0) +#define NEGATIVE(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_NEGATIVE) != 0) +#define NXDOMAIN(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_NXDOMAIN) != 0) +#define OPTOUT(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_OPTOUT) != 0) +#define PREFETCH(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_PREFETCH) != 0) +#define RESIGN(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_RESIGN) != 0) +#define STALE(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_STALE) != 0) +#define STALE_WINDOW(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_STALE_WINDOW) != 0) +#define STATCOUNT(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_STATCOUNT) != 0) +#define ZEROTTL(header) \ + ((atomic_load_acquire(&(header)->attributes) & \ + DNS_SLABHEADERATTR_ZEROTTL) != 0) diff --git a/tests/dns/qpzone_test.c b/tests/dns/qpzone_test.c index 73cd7514a1b..ad3d5b972a6 100644 --- a/tests/dns/qpzone_test.c +++ b/tests/dns/qpzone_test.c @@ -34,6 +34,8 @@ #include #define KEEP_BEFORE +#include "rdataslab_p.h" + /* Include the main file */ #pragma GCC diagnostic push @@ -45,10 +47,6 @@ #undef CHECK #include -#define CASESET(header) \ - ((atomic_load_acquire(&(header)->attributes) & \ - DNS_SLABHEADERATTR_CASESET) != 0) - const char *ownercase_vectors[12][2] = { { "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",