diff --git a/lib/dns/adb.c b/lib/dns/adb.c index d035681df2..9a25dc2bd1 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -2351,6 +2351,16 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr, return (result); } +void +dns_adb_attach(dns_adb_t *adb, dns_adb_t **adbx) { + + REQUIRE(DNS_ADB_VALID(adb)); + REQUIRE(adbx != NULL && *adbx == NULL); + + inc_adb_erefcnt(adb, ISC_TRUE); + *adbx = adb; +} + void dns_adb_detach(dns_adb_t **adbx) { diff --git a/lib/dns/include/dns/adb.h b/lib/dns/include/dns/adb.h index ac602f0f36..76b2149444 100644 --- a/lib/dns/include/dns/adb.h +++ b/lib/dns/include/dns/adb.h @@ -249,6 +249,17 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *tmgr, * ISC_R_NOMEMORY after resource allocation failure. */ +void +dns_adb_attach(dns_adb_t *adb, dns_adb_t **adbp); +/* + * Attach to an 'adb' to 'adbp'. + * + * Requires: + * 'adb' to be a valid dns_adb_t, created via dns_adb_create(). + * 'adbp' to be a valid pointer to a *dns_adb_t which is initalized + * to NULL. + */ + void dns_adb_detach(dns_adb_t **adb); /*