#include <isc/commandline.h>
#include <isc/dir.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <dns/db.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdataclass.h>
#include <dns/rootns.h>
#include <isc/dir.h>
#include <isc/file.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <dns/db.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/masterdump.h>
#include <dns/name.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/net.h>
#include <isc/result.h>
#include <isc/util.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dst/dst.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/net.h>
#include <isc/result.h>
#include <isc/util.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dst/dst.h>
#include <isc/buffer.h>
#include <isc/fips.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/managers.h>
#include <isc/md.h>
#include <dns/fixedname.h>
#include <dns/keytable.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <isc/attributes.h>
#include <isc/dir.h>
#include <isc/fips.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/netaddr.h>
#include <isc/parseint.h>
#include <dns/byaddr.h>
#include <dns/dns64.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <isc/attributes.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/netaddr.h>
#include <isc/string.h>
#include <dns/byaddr.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/condition.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/netaddr.h>
#include <isc/parseint.h>
#include <dns/byaddr.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <isc/dir.h>
#include <isc/file.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <dns/ds.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <isc/commandline.h>
#include <isc/dir.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <dns/ds.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <dns/ds.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <isc/attributes.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/region.h>
#include <dns/dnssec.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdataclass.h>
#include <dns/secalg.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/fips.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/region.h>
#include <dns/fixedname.h>
#include <dns/kasp.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdataclass.h>
#include <dns/secalg.h>
#include <isc/commandline.h>
#include <isc/fips.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <dns/callbacks.h>
#include <dns/fixedname.h>
#include <dns/keymgr.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/rdataclass.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <isc/commandline.h>
#include <isc/file.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dst/dst.h>
#include <isc/commandline.h>
#include <isc/file.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/util.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dst/dst.h>
#include <isc/fips.h>
#include <isc/hash.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/managers.h>
#include <dns/fixedname.h>
#include <dns/kasp.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/masterdump.h>
#include <dns/nsec.h>
#include <isc/file.h>
#include <isc/hash.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <dns/ds.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/masterdump.h>
#include <dns/nsec.h>
#include <isc/fips.h>
#include <isc/hash.h>
#include <isc/httpd.h>
+#include <isc/lib.h>
#include <isc/managers.h>
#include <isc/netmgr.h>
#include <isc/os.h>
#include <dns/dispatch.h>
#include <dns/dyndb.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/resolver.h>
#include <dns/view.h>
/*
* Shut down all dyndb instances.
*/
- dns_dyndb_cleanup(false);
+ dns_dyndb_cleanup();
/*
* Parse the global default pseudo-config file.
/*
* Shut down all dyndb instances.
*/
- dns_dyndb_cleanup(true);
+ dns_dyndb_cleanup();
while ((nsc = ISC_LIST_HEAD(server->cachelist)) != NULL) {
ISC_LIST_UNLINK(server->cachelist, nsc, link);
isc_result_t result;
} stats_dumparg_t;
-static isc_once_t once = ISC_ONCE_INIT;
+static isc_once_t once = ISC_ONCE_INITIALIZER;
#if defined(HAVE_LIBXML2) || defined(HAVE_JSON_C)
#define EXTENDED_STATS
#include <isc/getaddresses.h>
#include <isc/hash.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/managers.h>
#include <dns/dispatch.h>
#include <dns/dnssec.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <isc/commandline.h>
#include <isc/file.h>
#include <isc/getaddresses.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/managers.h>
#include <isc/thread.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <isccc/alist.h>
#endif
#include <isc/fips.h>
+#include <isc/lib.h>
#include <isc/md.h>
#include <isc/mem.h>
#include <isc/net.h>
#include <isc/util.h>
#include <dns/edns.h>
+#include <dns/lib.h>
#include <dst/dst.h>
#include <stdlib.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <dns/db.h>
#include <dns/fixedname.h>
#include <dns/journal.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/types.h>
#include <isc/base64.h>
#include <isc/commandline.h>
#include <isc/hash.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/managers.h>
#include <dns/dispatch.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdataset.h>
#include <stdlib.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/region.h>
#include <isc/stdio.h>
#include <isc/string.h>
#include <isc/util.h>
+#include <dns/lib.h>
+
#define DST_KEY_INTERNAL
#include <openssl/bn.h>
#include <sys/types.h>
#include <unistd.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/managers.h>
#include <isc/mem.h>
#include <stdlib.h>
#include <strings.h>
+#include <isc/lib.h>
#include <isc/managers.h>
#include <isc/mem.h>
#include <isc/netaddr.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/string.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/message.h>
int parseflags = 0;
#include <stdio.h>
+#include <isc/lib.h>
#include <isc/net.h>
#define UNUSED(x) (void)(x)
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/string.h>
#include <dns/dnstap.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <isc/getaddresses.h>
#include <isc/hash.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/managers.h>
#include <dns/byaddr.h>
#include <dns/dispatch.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <stdlib.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/util.h>
#include <dns/journal.h>
+#include <dns/lib.h>
#include <dns/types.h>
const char *progname = NULL;
#include <stdio.h>
#include <stdlib.h>
+#include <isc/lib.h>
+
+/* Included just to get DNS_LMDB_FLAGS definition */
#include <dns/view.h>
int
#include <isc/buffer.h>
#include <isc/commandline.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
#include <isc/file.h>
#include <isc/hex.h>
#include <isc/iterated_hash.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/string.h>
#include <isc/tls.h>
#include <isc/util.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/nsec3.h>
#include <dns/types.h>
#include <stdbool.h>
#include <stdlib.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/string.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <isc/lib.h>
+
+#include <dns/lib.h>
+
#include "fuzz.h"
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
include/dns/keystore.h \
include/dns/keytable.h \
include/dns/keyvalues.h \
+ include/dns/lib.h \
include/dns/master.h \
include/dns/masterdump.h \
include/dns/message.h \
$(dst_HEADERS) \
$(irs_HEADERS) \
acl.c \
+ acl_p.h \
adb.c \
badcache.c \
byaddr.c \
diff.c \
dispatch.c \
dlz.c \
+ dlz_p.h \
dns64.c \
dnssec.c \
ds.c \
dst_parse.c \
dst_parse.h \
dyndb.c \
+ dyndb_p.h \
ecs.c \
ede.c \
fixedname.c \
keymgr.c \
keystore.c \
keytable.c \
+ lib.c \
master.c \
masterdump.c \
message.c \
#include <dns/acl.h>
#include <dns/iptable.h>
+#include "acl_p.h"
+
#define DNS_ACLENV_MAGIC ISC_MAGIC('a', 'c', 'n', 'v')
#define VALID_ACLENV(a) ISC_MAGIC_VALID(a, DNS_ACLENV_MAGIC)
ISC_REFCOUNT_IMPL(dns_acl, dns__acl_destroy);
#endif
-static isc_once_t insecure_prefix_once = ISC_ONCE_INIT;
static isc_mutex_t insecure_prefix_lock;
static bool insecure_prefix_found;
-static void
-initialize_action(void) {
+void
+dns__acl_initialize(void) {
isc_mutex_init(&insecure_prefix_lock);
}
+void
+dns__acl_shutdown(void) {
+ isc_mutex_destroy(&insecure_prefix_lock);
+}
+
/*
* Called via isc_radix_process() to find IP table nodes that are
* insecure.
unsigned int i;
bool insecure;
- isc_once_do(&insecure_prefix_once, initialize_action);
-
/*
* Walk radix tree to find out if there are any non-negated,
* non-loopback prefixes.
--- /dev/null
+/*
+ * 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
+
+/*! \file */
+
+void
+dns__acl_initialize(void);
+void
+dns__acl_shutdown(void);
#include <isc/hash.h>
#include <isc/log.h>
#include <isc/mem.h>
-#include <isc/once.h>
#include <isc/result.h>
#include <isc/rwlock.h>
#include <isc/string.h>
static ISC_LIST(dns_dbimplementation_t) implementations;
static isc_rwlock_t implock;
-static isc_once_t once = ISC_ONCE_INIT;
static dns_dbimplementation_t qpimp;
static dns_dbimplementation_t qpzoneimp;
-static void
-initialize(void) {
+void
+dns__db_initialize(void) {
isc_rwlock_init(&implock);
ISC_LIST_INIT(implementations);
ISC_LIST_APPEND(implementations, &qpzoneimp, link);
}
+void
+dns__db_shutdown(void) {
+ isc_rwlock_destroy(&implock);
+}
+
static dns_dbimplementation_t *
impfind(const char *name) {
dns_dbimplementation_t *imp;
char *argv[], dns_db_t **dbp) {
dns_dbimplementation_t *impinfo = NULL;
- isc_once_do(&once, initialize);
-
/*
* Create a new database using implementation 'db_type'.
*/
REQUIRE(name != NULL);
REQUIRE(dbimp != NULL && *dbimp == NULL);
- isc_once_do(&once, initialize);
-
RWLOCK(&implock, isc_rwlocktype_write);
imp = impfind(name);
if (imp != NULL) {
REQUIRE(dbimp != NULL && *dbimp != NULL);
- isc_once_do(&once, initialize);
-
imp = *dbimp;
*dbimp = NULL;
RWLOCK(&implock, isc_rwlocktype_write);
* 'maxrrperset' limit. 'op' is 'adding' or 'updating' depending on whether
* the addition is to create a new rdataset or to merge to an existing one.
*/
+
+/*%
+ * Internal dns_db constructor and destructor.
+ */
+void
+dns__db_initialize(void);
+void
+dns__db_shutdown(void);
#include <isc/magic.h>
#include <isc/mem.h>
#include <isc/netmgr.h>
-#include <isc/once.h>
#include <isc/random.h>
#include <isc/rwlock.h>
#include <isc/string.h>
#include <dns/ssu.h>
#include <dns/zone.h>
+#include "dlz_p.h"
+
/***
*** Supported DLZ DB Implementations Registry
***/
static ISC_LIST(dns_dlzimplementation_t) dlz_implementations;
static isc_rwlock_t dlz_implock;
-static isc_once_t once = ISC_ONCE_INIT;
-static void
-dlz_initialize(void) {
+void
+dns__dlz_initialize(void) {
isc_rwlock_init(&dlz_implock);
ISC_LIST_INIT(dlz_implementations);
}
+void
+dns__dlz_shutdown(void) {
+ isc_rwlock_destroy(&dlz_implock);
+}
+
/*%
* Searches the dlz_implementations list for a driver matching name.
*/
isc_result_t result;
dns_dlzdb_t *db = NULL;
- /*
- * initialize the dlz_implementations list, this is guaranteed
- * to only really happen once.
- */
- isc_once_do(&once, dlz_initialize);
-
/*
* Performs checks to make sure data is as we expect it to be.
*/
REQUIRE(mctx != NULL);
REQUIRE(dlzimp != NULL && *dlzimp == NULL);
- /*
- * initialize the dlz_implementations list, this is guaranteed
- * to only really happen once.
- */
- isc_once_do(&once, dlz_initialize);
-
/* lock the dlz_implementations list so we can modify it. */
RWLOCK(&dlz_implock, isc_rwlocktype_write);
*/
REQUIRE(dlzimp != NULL && *dlzimp != NULL);
- /*
- * initialize the dlz_implementations list, this is guaranteed
- * to only really happen once.
- */
- isc_once_do(&once, dlz_initialize);
-
dlz_imp = *dlzimp;
/* lock the dlz_implementations list so we can modify it. */
--- /dev/null
+/*
+ * 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
+
+/*! \file */
+
+void
+dns__dlz_initialize(void);
+void
+dns__dlz_shutdown(void);
static isc_mem_t *dst__mctx = NULL;
void
-dst__lib_init(void) ISC_CONSTRUCTOR;
-void
-dst__lib_destroy(void) ISC_DESTRUCTOR;
-
-void
-dst__lib_init(void) {
+dst__lib_initialize(void) {
isc_mem_create(&dst__mctx);
dst__hmacmd5_init(&dst_t_func[DST_ALG_HMACMD5]);
}
void
-dst__lib_destroy(void) {
+dst__lib_shutdown(void) {
for (size_t i = 0; i < DST_MAX_ALGS; i++) {
if (dst_t_func[i] != NULL && dst_t_func[i]->cleanup != NULL) {
dst_t_func[i]->cleanup();
isc_result_t
dst_key_cleanup(char *tmpname, FILE *fp);
+/*%
+ * Library constructor and destructor.
+ */
+void
+dst__lib_initialize(void);
+void
+dst__lib_shutdown(void);
+
/*! \file */
* information regarding copyright ownership.
*/
-#include <string.h>
-
#include <isc/buffer.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/mutex.h>
-#include <isc/once.h>
#include <isc/region.h>
#include <isc/result.h>
#include <isc/types.h>
#include <dns/view.h>
#include <dns/zone.h>
+#include "dyndb_p.h"
+
#define CHECK(op) \
do { \
result = (op); \
/* Locks dyndb_implementations. */
static isc_mutex_t dyndb_lock;
-static isc_once_t once = ISC_ONCE_INIT;
-static void
-dyndb_initialize(void) {
+void
+dns__dyndb_initialize(void) {
isc_mutex_init(&dyndb_lock);
INIT_LIST(dyndb_implementations);
}
+void
+dns__dyndb_shutdown(void) {
+ isc_mutex_destroy(&dyndb_lock);
+}
+
static dyndb_implementation_t *
impfind(const char *name) {
dyndb_implementation_t *imp;
REQUIRE(DNS_DYNDBCTX_VALID(dctx));
REQUIRE(name != NULL);
- isc_once_do(&once, dyndb_initialize);
-
LOCK(&dyndb_lock);
/* duplicate instance names are not allowed */
}
void
-dns_dyndb_cleanup(bool exiting) {
+dns_dyndb_cleanup(void) {
dyndb_implementation_t *elem;
dyndb_implementation_t *prev;
- isc_once_do(&once, dyndb_initialize);
-
LOCK(&dyndb_lock);
elem = TAIL(dyndb_implementations);
while (elem != NULL) {
elem = prev;
}
UNLOCK(&dyndb_lock);
-
- if (exiting) {
- isc_mutex_destroy(&dyndb_lock);
- }
}
void
--- /dev/null
+/*
+ * 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
+
+/*! \file */
+
+void
+dns__dyndb_initialize(void);
+void
+dns__dyndb_shutdown(void);
*/
void
-dns_dyndb_cleanup(bool exiting);
+dns_dyndb_cleanup(void);
/*%
* Shut down and destroy all running dyndb modules.
- *
- * 'exiting' indicates whether the server is shutting down,
- * as opposed to merely being reconfigured.
*/
void
--- /dev/null
+/*
+ * 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 <stdlib.h>
+
+#include <isc/lib.h>
+#include <isc/util.h>
+
+void
+dns__lib_initialize(void);
+void
+dns__lib_shutdown(void);
+
+void
+dns_lib_initialize(void) __attribute__((__constructor__));
+void
+dns_lib_shutdown(void) __attribute__((__destructor__));
+
+void
+dns_lib_initialize(void) {
+ isc__lib_initialize();
+ dns__lib_initialize();
+}
+void
+dns_lib_shutdown(void) {
+ dns__lib_shutdown();
+ isc__lib_shutdown();
+}
const char *
dst_hmac_algorithm_totext(dst_algorithm_t alg);
-/*$<
+/*%<
* Return the name associtated with the HMAC algorithm 'alg'
* or return "unknown".
*/
--- /dev/null
+/*
+ * 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.
+ */
+
+/*! \file */
+
+#include <isc/once.h>
+#include <isc/refcount.h>
+
+#include "acl_p.h"
+#include "db_p.h"
+#include "dlz_p.h"
+#include "dst_internal.h"
+#include "dyndb_p.h"
+#include "qp_p.h"
+
+/***
+ *** Functions
+ ***/
+
+static isc_refcount_t dns__lib_references = 0;
+
+void
+dns__lib_initialize(void);
+void
+dns__lib_shutdown(void);
+
+void
+dns__lib_initialize(void) {
+ if (isc_refcount_increment0(&dns__lib_references) > 0) {
+ return;
+ }
+
+ dst__lib_initialize();
+ dns__acl_initialize();
+ dns__dlz_initialize();
+ dns__db_initialize();
+ dns__dyndb_initialize();
+ dns__qp_initialize();
+}
+
+void
+dns__lib_shutdown(void) {
+ if (isc_refcount_decrement(&dns__lib_references) > 1) {
+ return;
+ }
+
+ dns__qp_shutdown();
+ dns__dyndb_shutdown();
+ dns__db_shutdown();
+ dns__dlz_shutdown();
+ dns__acl_shutdown();
+ dst__lib_shutdown();
+}
* Fill in the lookup tables at program startup. (It doesn't matter
* when this is initialized relative to other startup code.)
*/
-static void
-initialize_bits_for_byte(void) ISC_CONSTRUCTOR;
/*
* The bit positions for bytes inside labels have to be between
* After filling the table we ensure that the bit positions for
* hostname characters and escape characters all fit.
*/
-static void
-initialize_bits_for_byte(void) {
+void
+dns__qp_initialize(void) {
/* zero common character marker not a valid shift position */
INSIST(0 < SHIFT_BITMAP);
/* first bit is common byte or escape byte */
ENSURE(bit_one < SHIFT_OFFSET);
}
+void
+dns__qp_shutdown(void) {
+ /* Nothing */
+}
+
/*
* Convert a DNS name into a trie lookup key.
*
#pragma once
+#include <dns/qp.h>
+
/***********************************************************************
*
* interior node basics
extern uint8_t dns_qp_byte_for_bit[];
/**********************************************************************/
+
+void
+dns__qp_initialize(void);
+void
+dns__qp_shutdown(void);
static isc_result_t
fromtext_in_wks(ARGS_FROMTEXT) {
- static isc_once_t once = ISC_ONCE_INIT;
+ static isc_once_t once = ISC_ONCE_INITIALIZER;
isc_token_t token;
isc_region_t region;
struct in_addr addr;
include/isc/iterated_hash.h \
include/isc/job.h \
include/isc/lex.h \
+ include/isc/lib.h \
include/isc/list.h \
include/isc/log.h \
include/isc/loop.h \
--- /dev/null
+/*
+ * 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 <isc/util.h>
+
+void
+isc__lib_initialize(void);
+void
+isc__lib_shutdown(void);
+
+void
+isc_lib_initialize(void) __attribute__((__constructor__));
+void
+isc_lib_shutdown(void) __attribute__((__destructor__));
+
+void
+isc_lib_initialize(void) {
+ isc__lib_initialize();
+}
+
+void
+isc_lib_shutdown(void) {
+ isc__lib_shutdown();
+}
typedef pthread_once_t isc_once_t;
-#define ISC_ONCE_INIT PTHREAD_ONCE_INIT
+#define ISC_ONCE_INITIALIZER PTHREAD_ONCE_INIT
#define isc_once_do(op, f) \
{ \
#define ISC_NONSTRING
#endif /* __GNUC__ */
-#if HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR && HAVE_FUNC_ATTRIBUTE_DESTRUCTOR
-#define ISC_CONSTRUCTOR __attribute__((constructor))
-#define ISC_DESTRUCTOR __attribute__((destructor))
-#else
-#define ISC_CONSTRUCTOR
-#define ISC_DESTRUCTOR
-#endif
-
/*%
* The opposite: silent warnings about stored values which are never read.
*/
#include <isc/md.h>
#include <isc/mem.h>
#include <isc/os.h>
+#include <isc/refcount.h>
#include <isc/tls.h>
#include <isc/urcu.h>
#include <isc/util.h>
#include "mutex_p.h"
#include "os_p.h"
-#ifndef ISC_CONSTRUCTOR
-#error Either __attribute__((constructor|destructor))__ or DllMain support needed to compile BIND 9.
-#endif
-
/***
*** Functions
***/
+static isc_refcount_t isc__lib_references = 0;
+
void
-isc__initialize(void) ISC_CONSTRUCTOR;
+isc__lib_initialize(void);
void
-isc__shutdown(void) ISC_DESTRUCTOR;
+isc__lib_shutdown(void);
void
-isc__initialize(void) {
+isc__lib_initialize(void) {
+ if (isc_refcount_increment0(&isc__lib_references) > 0) {
+ return;
+ }
+
+ rcu_register_thread();
isc__os_initialize();
isc__mutex_initialize();
isc__mem_initialize();
isc__hash_initialize();
isc__iterated_hash_initialize();
(void)isc_os_ncpus();
- rcu_register_thread();
}
void
-isc__shutdown(void) {
+isc__lib_shutdown(void) {
+ if (isc_refcount_decrement(&isc__lib_references) > 1) {
+ return;
+ }
+
isc__iterated_hash_shutdown();
isc__xml_shutdown();
isc__uv_shutdown();
#include <isc/magic.h>
#include <isc/mem.h>
#include <isc/mutex.h>
-#include <isc/once.h>
#include <isc/os.h>
#include <isc/overflow.h>
#include <isc/refcount.h>
static ISC_LIST(isc_mem_t) contexts;
-static isc_once_t init_once = ISC_ONCE_INIT;
-static isc_once_t shut_once = ISC_ONCE_INIT;
static isc_mutex_t contextslock;
struct isc_mem {
#endif /* JEMALLOC_API_SUPPORTED */
}
-static void
-mem_initialize(void) {
+void
+isc__mem_initialize(void) {
/*
* Check if the values copied from jemalloc still match
*/
}
void
-isc__mem_initialize(void) {
- isc_once_do(&init_once, mem_initialize);
-}
-
-static void
-mem_shutdown(void) {
+isc__mem_shutdown(void) {
bool empty;
isc__mem_checkdestroyed();
}
}
-void
-isc__mem_shutdown(void) {
- isc_once_do(&shut_once, mem_shutdown);
-}
-
static void
mem_create(isc_mem_t **ctxp, unsigned int debugging, unsigned int flags,
unsigned int jemalloc_flags) {
#include "mutex_p.h"
pthread_mutexattr_t isc__mutex_init_attr;
-static isc_once_t init_once = ISC_ONCE_INIT;
-static void
-mutex_initialize(void) {
+void
+isc__mutex_initialize(void) {
RUNTIME_CHECK(pthread_mutexattr_init(&isc__mutex_init_attr) == 0);
#if ISC_MUTEX_ERROR_CHECK
RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
#endif
}
-void
-isc__mutex_initialize(void) {
- isc_once_do(&init_once, mutex_initialize);
-}
-
void
isc__mutex_shutdown(void) {
/* noop */;
#include <string.h>
#include <isc/ascii.h>
+#include <isc/lib.h>
#include <isc/random.h>
#include <isc/time.h>
+#include <dns/lib.h>
+
#define SIZE (1024 * 1024)
typedef void
#include <stdlib.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/time.h>
#include <dns/compress.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
static void
#include <isc/ascii.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/random.h>
#include <isc/time.h>
#include <isc/util.h>
#include <dns/compress.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include "old.h"
#include <string.h>
#include <isc/iterated_hash.h>
+#include <isc/lib.h>
#include <isc/random.h>
#include <isc/time.h>
+#include <dns/lib.h>
#include <dns/name.h>
static void
#include <isc/file.h>
#include <isc/hashmap.h>
#include <isc/ht.h>
+#include <isc/lib.h>
#include <isc/list.h>
#include <isc/refcount.h>
#include <isc/rwlock.h>
#include <isc/util.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/qp.h>
#include <dns/types.h>
#include <isc/commandline.h>
#include <isc/file.h>
#include <isc/ht.h>
+#include <isc/lib.h>
#include <isc/rwlock.h>
#include <isc/util.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/qp.h>
#include <dns/types.h>
#include <isc/commandline.h>
#include <isc/file.h>
#include <isc/ht.h>
+#include <isc/lib.h>
#include <isc/rwlock.h>
#include <isc/time.h>
#include <isc/util.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/qp.h>
#include <dns/types.h>
#include <isc/async.h>
#include <isc/barrier.h>
+#include <isc/lib.h>
#include <isc/list.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/util.h>
#include <isc/uv.h>
+#include <dns/lib.h>
#include <dns/qp.h>
#include <dns/types.h>
#include <string.h>
#include <isc/ascii.h>
+#include <isc/lib.h>
#include <isc/random.h>
#include <isc/siphash.h>
#include <isc/time.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/acl.h>
+#include <dns/lib.h>
#include <tests/dns.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/md.h>
#include <isc/mem.h>
#include <isc/os.h>
#include <dns/badcache.h>
#include <dns/compress.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdatatype.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
+
#include <dns/db.h>
#include <dns/dbiterator.h>
#include <dns/journal.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdatalist.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
#include <dns/db.h>
#include <dns/dbiterator.h>
#include <dns/journal.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <tests/dns.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
#include <dns/db.h>
#include <dns/dbiterator.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <tests/dns.h>
#include <cmocka.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/serial.h>
#include <isc/stdtime.h>
#include <isc/util.h>
#include <dns/db.h>
+#include <dns/lib.h>
#include <dns/nsec3.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
+
#include <dns/diff.h>
+#include <dns/lib.h>
#include <tests/dns.h>
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/managers.h>
#include <isc/refcount.h>
#include <isc/tls.h>
#include <isc/uv.h>
#include <dns/dispatch.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/view.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/netaddr.h>
#include <isc/result.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/dns64.h>
+#include <dns/lib.h>
#include <dns/rdata.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <isc/buffer.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/stdio.h>
#include <isc/types.h>
#include <isc/util.h>
#include <dns/dnstap.h>
+#include <dns/lib.h>
#include <dns/view.h>
#include <tests/dns.h>
#include <isc/file.h>
#include <isc/fips.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/stdio.h>
#include <isc/string.h>
#include <isc/util.h>
+#include <dns/lib.h>
+
#include <dst/dst.h>
#include "dst_internal.h"
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/list.h>
#include <dns/ede.h>
+#include <dns/lib.h>
#include "../../lib/dns/ede.c"
#include <maxminddb.h>
#include <isc/dir.h>
+#include <isc/lib.h>
#include <isc/string.h>
#include <isc/types.h>
#include <isc/util.h>
#include <dns/geoip.h>
+#include <dns/lib.h>
#include "geoip2.c"
#include <isc/base64.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/md.h>
#include <isc/util.h>
#include <dns/fixedname.h>
#include <dns/keytable.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/nta.h>
#include <dns/rdataclass.h>
#include <cmocka.h>
#include <isc/dir.h>
+#include <isc/lib.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/cache.h>
#include <dns/callbacks.h>
#include <dns/db.h>
+#include <dns/lib.h>
#include <dns/master.h>
#include <dns/masterdump.h>
#include <dns/name.h>
#include <isc/buffer.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/os.h>
#include <isc/thread.h>
#include <dns/compress.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <tests/dns.h>
#include <isc/base64.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/md.h>
#include <isc/util.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/nametree.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/db.h>
+#include <dns/lib.h>
#include <dns/nsec3.h>
#include <tests/dns.h>
#include <cmocka.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/db.h>
+#include <dns/lib.h>
#include <dns/nsec3.h>
#include "zone_p.h"
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/nsec3.h>
#include <dns/private.h>
#include <dns/rdataclass.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/random.h>
#include <isc/refcount.h>
#include <isc/result.h>
#include <isc/urcu.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/qp.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <dns/rdatastruct.h>
#include <cmocka.h>
#include <isc/assertions.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/loop.h>
#include <isc/magic.h>
#include <isc/urcu.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/qp.h>
#include <dns/types.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/qp.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <isc/commandline.h>
#include <isc/hex.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/stdio.h>
#include <isc/types.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/rdata.h>
#include "../isc/openssl_shim.c"
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/rdataset.h>
#include <dns/rdatastruct.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/stats.h>
#include <tests/dns.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/util.h>
+#include <dns/lib.h>
+
#include <irs/resconf.h>
#include <tests/isc.h>
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/net.h>
#include <isc/timer.h>
#include <isc/tls.h>
#include <isc/util.h>
#include <dns/dispatch.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/resolver.h>
#include <dns/view.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
+
#include "dst_internal.h"
#include <tests/dns.h>
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/list.h>
#include <isc/region.h>
#include <isc/result.h>
#include <dns/diff.h>
#include <dns/dnssec.h>
#include <dns/fixedname.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdata.h>
#include <dns/rdatastruct.h>
#include <isc/file.h>
#include <isc/hex.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/stdio.h>
#include <isc/string.h>
#include <isc/util.h>
#include <dns/dnssec.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/time.h>
#include <tests/dns.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/string.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/transport.h>
#include <tests/dns.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/random.h>
#include <isc/result.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/rdatalist.h>
#include <dns/rdataset.h>
#include <dns/tsig.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/serial.h>
#include <isc/stdtime.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/update.h>
#define KEEP_BEFORE
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/timer.h>
#include <isc/util.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/view.h>
#include <dns/zone.h>
#include <isc/atomic.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/timer.h>
#include <isc/urcu.h>
#include <isc/util.h>
#include <dns/db.h>
+#include <dns/lib.h>
#include <dns/name.h>
#include <dns/view.h>
#include <dns/zone.h>
#include <cmocka.h>
#include <isc/ascii.h>
+#include <isc/lib.h>
#include <tests/isc.h>
#include <isc/async.h>
#include <isc/atomic.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/os.h>
#include <isc/result.h>
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/region.h>
#include <isc/result.h>
#include <isc/types.h>
#include <cmocka.h>
#include <isc/counter.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/util.h>
#include <isc/buffer.h>
#include <isc/dnsstream.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/os.h>
#include <isc/random.h>
#include <isc/atomic.h>
#include <isc/buffer.h>
#include <isc/condition.h>
+#include <isc/lib.h>
#include <isc/mutex.h>
#include <isc/netmgr.h>
#include <isc/nonce.h>
#include <cmocka.h>
#include <isc/errno.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/util.h>
#include <cmocka.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/util.h>
#include <isc/buffer.h>
#include <isc/hash.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/region.h>
#include <isc/string.h>
#include <isc/util.h>
#include <isc/hash.h>
#include <isc/hashmap.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/string.h>
#include <isc/util.h>
#include <cmocka.h>
#include <isc/heap.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/util.h>
#include <cmocka.h>
#include <isc/histo.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/time.h>
#include <isc/fips.h>
#include <isc/hex.h>
#include <isc/hmac.h>
+#include <isc/lib.h>
#include <isc/region.h>
#include <isc/result.h>
#include <isc/hash.h>
#include <isc/ht.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/string.h>
#include <isc/util.h>
#include <isc/atomic.h>
#include <isc/job.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/os.h>
#include <isc/result.h>
#include <isc/buffer.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/util.h>
#include <cmocka.h>
#include <isc/atomic.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/os.h>
#include <isc/result.h>
#include <isc/buffer.h>
#include <isc/fips.h>
#include <isc/hex.h>
+#include <isc/lib.h>
#include <isc/md.h>
#include <isc/region.h>
#include <isc/result.h>
#include <isc/atomic.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/os.h>
#include <isc/atomic.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/os.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/netaddr.h>
#include <isc/sockaddr.h>
#include <isc/util.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/parseint.h>
#include <isc/util.h>
#include <cmocka.h>
#include <isc/buffer.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/os.h>
#include <isc/proxy2.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/nonce.h>
#include <isc/os.h>
#include <isc/async.h>
#include <isc/job.h>
+#include <isc/lib.h>
#include <isc/nonce.h>
#include <isc/os.h>
#include <isc/quota.h>
#include <cmocka.h>
#include <isc/job.h>
+#include <isc/lib.h>
#include <isc/quota.h>
#include <isc/result.h>
#include <isc/thread.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/netaddr.h>
#include <isc/radix.h>
#include <cmocka.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/nonce.h>
#include <isc/random.h>
#include <cmocka.h>
#include <isc/job.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/ratelimiter.h>
#include <isc/time.h>
#include <cmocka.h>
#include <isc/commandline.h>
+#include <isc/lib.h>
#include <isc/regex.h>
#include <isc/util.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/util.h>
#include <isc/atomic.h>
#include <isc/barrier.h>
#include <isc/file.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/os.h>
#include <isc/pause.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/safe.h>
#include <isc/util.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/siphash.h>
#include <tests/isc.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/netaddr.h>
#include <isc/sockaddr.h>
#include <isc/util.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
+
#ifdef HAVE_PTHREAD_SPIN_INIT
#define HAD_PTHREAD_SPIN_INIT 1
#undef HAVE_PTHREAD_SPIN_INIT
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/stats.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/symtab.h>
#include <isc/util.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/nonce.h>
#include <isc/os.h>
#include <cmocka.h>
#include <isc/async.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/nonce.h>
#include <isc/os.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/result.h>
#include <isc/time.h>
#include <isc/util.h>
#include <isc/commandline.h>
#include <isc/condition.h>
#include <isc/job.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/mem.h>
#include <isc/os.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/nonce.h>
#include <isc/os.h>
#include <cmocka.h>
#include <isc/async.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/nonce.h>
#include <isc/os.h>
#include <isc/async.h>
#include <isc/job.h>
+#include <isc/lib.h>
#include <isc/nonce.h>
#include <isc/os.h>
#include <isc/quota.h>
#include <cmocka.h>
#include <isc/atomic.h>
+#include <isc/lib.h>
#include <isc/loop.h>
#include <isc/os.h>
#include <isc/result.h>
#include <isc/buffer.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/types.h>
#include <isc/buffer.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/string.h>
#include <isc/buffer.h>
#include <isc/lex.h>
+#include <isc/lib.h>
#include <isc/log.h>
#include <isc/mem.h>
#include <isc/string.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/thread.h>
#include <isc/util.h>
#include <dns/acl.h>
+#include <dns/lib.h>
#include <dns/rcode.h>
#include <dns/view.h>
#include <isc/attributes.h>
#include <isc/dir.h>
+#include <isc/lib.h>
#include <isc/mem.h>
#include <isc/result.h>
#include <isc/types.h>
#include <isc/util.h>
+#include <dns/lib.h>
+
#include <ns/hooks.h>
#include <tests/ns.h>
#define UNIT_TESTING
#include <cmocka.h>
+#include <isc/lib.h>
#include <isc/quota.h>
#include <isc/util.h>
#include <dns/badcache.h>
+#include <dns/lib.h>
#include <dns/view.h>
#include <dns/zone.h>