]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Refactor dns_kasp_attach/detach
authorMatthijs Mekking <matthijs@isc.org>
Tue, 20 Jan 2026 15:11:48 +0000 (16:11 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Fri, 23 Jan 2026 09:59:52 +0000 (09:59 +0000)
Replace implementation with ISC_REFCOUNT_IMPL.

lib/dns/include/dns/kasp.h
lib/dns/kasp.c

index eeb97b95ef088183213e6444dabc1c7d380e7c1a..0b354a45cd796e8984c5d00f9b9e9f03fc7c4b28 100644 (file)
 #include <dns/name.h>
 #include <dns/types.h>
 
+/* Add -DDNS_KASP_TRACE=1 to CFLAGS for detailed reference tracing */
+
+#if DNS_KASP_TRACE
+#define dns_kasp_ref(ptr)   dns_kasp_ref(ptr, __func__, __FILE__, __LINE__)
+#define dns_kasp_unref(ptr) dns_kasp__unref(ptr, __func__, __FILE__, __LINE__)
+#define dns_kasp_attach(ptr, ptrp) \
+       dns_kasp__attach(ptr, ptrp, __func__, __FILE__, __LINE__)
+#define dns_kasp_detach(ptrp) \
+       dns_kasp__detach(ptrp, __func__, __FILE__, __LINE__)
+ISC_REFCOUNT_TRACE_DECL(dns_kasp);
+#else
+ISC_REFCOUNT_DECL(dns_kasp);
+#endif
+
 /* For storing a list of digest types */
 struct dns_kasp_digest {
        dns_dsdigest_t digest;
@@ -156,38 +170,6 @@ dns_kasp_create(isc_mem_t *mctx, const char *name, dns_kasp_t **kaspp);
  * Returns:
  */
 
-void
-dns_kasp_attach(dns_kasp_t *source, dns_kasp_t **targetp);
-/*%<
- * Attach '*targetp' to 'source'.
- *
- * Requires:
- *
- *\li   'source' is a valid, frozen kasp.
- *
- *\li   'targetp' points to a NULL dns_kasp_t *.
- *
- * Ensures:
- *
- *\li   *targetp is attached to source.
- *
- *\li   While *targetp is attached, the kasp will not shut down.
- */
-
-void
-dns_kasp_detach(dns_kasp_t **kaspp);
-/*%<
- * Detach KASP.
- *
- * Requires:
- *
- *\li   'kaspp' points to a valid dns_kasp_t *
- *
- * Ensures:
- *
- *\li   *kaspp is NULL.
- */
-
 void
 dns_kasp_freeze(dns_kasp_t *kasp);
 /*%<
index f3ea00eb967e3b1bf89c5384e9ec76255d9db7d2..528c3d7c215fec5cd1c1e0d197e18965e9a945e2 100644 (file)
@@ -56,15 +56,6 @@ dns_kasp_create(isc_mem_t *mctx, const char *name, dns_kasp_t **kaspp) {
        *kaspp = kasp;
 }
 
-void
-dns_kasp_attach(dns_kasp_t *source, dns_kasp_t **targetp) {
-       REQUIRE(DNS_KASP_VALID(source));
-       REQUIRE(targetp != NULL && *targetp == NULL);
-
-       isc_refcount_increment(&source->references);
-       *targetp = source;
-}
-
 static void
 destroy(dns_kasp_t *kasp) {
        REQUIRE(!ISC_LINK_LINKED(kasp, link));
@@ -86,17 +77,11 @@ destroy(dns_kasp_t *kasp) {
        isc_mem_putanddetach(&kasp->mctx, kasp, sizeof(*kasp));
 }
 
-void
-dns_kasp_detach(dns_kasp_t **kaspp) {
-       REQUIRE(kaspp != NULL && DNS_KASP_VALID(*kaspp));
-
-       dns_kasp_t *kasp = *kaspp;
-       *kaspp = NULL;
-
-       if (isc_refcount_decrement(&kasp->references) == 1) {
-               destroy(kasp);
-       }
-}
+#if DNS_KASP_TRACE
+ISC_REFCOUNT_TRACE_IMPL(dns_kasp, destroy);
+#else
+ISC_REFCOUNT_IMPL(dns_kasp, destroy);
+#endif
 
 const char *
 dns_kasp_getname(dns_kasp_t *kasp) {