]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Move the library init and shutdown to executables
authorOndřej Surý <ondrej@isc.org>
Tue, 4 Feb 2025 12:17:31 +0000 (13:17 +0100)
committerOndřej Surý <ondrej@isc.org>
Sat, 22 Feb 2025 15:19:00 +0000 (16:19 +0100)
Instead of relying on unreliable order of execution of the library
constructors and destructors, move them to individual binaries.  The
advantage is that the execution time and order will remain constant and
will not depend on the dynamic load dependency solver.

This requires more work, but that was mitigated by a simple requirement,
any executable using libisc and libdns, must include <isc/lib.h> and
<dns/lib.h> respectively (in this particular order).  In turn, these two
headers must not be included from within any library as they contain
inlined functions marked with constructor/destructor attributes.

163 files changed:
bin/check/named-checkconf.c
bin/check/named-checkzone.c
bin/confgen/rndc-confgen.c
bin/confgen/tsig-keygen.c
bin/delv/delv.c
bin/dig/dig.c
bin/dig/host.c
bin/dig/nslookup.c
bin/dnssec/dnssec-cds.c
bin/dnssec/dnssec-dsfromkey.c
bin/dnssec/dnssec-importkey.c
bin/dnssec/dnssec-keyfromlabel.c
bin/dnssec/dnssec-keygen.c
bin/dnssec/dnssec-ksr.c
bin/dnssec/dnssec-revoke.c
bin/dnssec/dnssec-settime.c
bin/dnssec/dnssec-signzone.c
bin/dnssec/dnssec-verify.c
bin/named/main.c
bin/named/server.c
bin/named/statschannel.c
bin/nsupdate/nsupdate.c
bin/rndc/rndc.c
bin/tests/system/feature-test.c
bin/tests/system/makejournal.c
bin/tests/system/pipelined/pipequeries.c
bin/tests/system/rsabigexponent/bigkey.c
bin/tests/test_client.c
bin/tests/test_server.c
bin/tests/wire_test.c
bin/tools/arpaname.c
bin/tools/dnstap-read.c
bin/tools/mdig.c
bin/tools/named-journalprint.c
bin/tools/named-nzd2nzf.c
bin/tools/named-rrchecker.c
bin/tools/nsec3hash.c
doc/misc/cfg_test.c
fuzz/main.c
lib/dns/Makefile.am
lib/dns/acl.c
lib/dns/acl_p.h [new file with mode: 0644]
lib/dns/db.c
lib/dns/db_p.h
lib/dns/dlz.c
lib/dns/dlz_p.h [new file with mode: 0644]
lib/dns/dst_api.c
lib/dns/dst_internal.h
lib/dns/dyndb.c
lib/dns/dyndb_p.h [new file with mode: 0644]
lib/dns/include/dns/dyndb.h
lib/dns/include/dns/lib.h [new file with mode: 0644]
lib/dns/include/dst/dst.h
lib/dns/lib.c [new file with mode: 0644]
lib/dns/qp.c
lib/dns/qp_p.h
lib/dns/rdata/in_1/wks_11.c
lib/isc/Makefile.am
lib/isc/include/isc/lib.h [new file with mode: 0644]
lib/isc/include/isc/once.h
lib/isc/include/isc/util.h
lib/isc/lib.c
lib/isc/mem.c
lib/isc/mutex.c
tests/bench/ascii.c
tests/bench/compress.c
tests/bench/dns_name_fromwire.c
tests/bench/iterated_hash.c
tests/bench/load-names.c
tests/bench/qp-dump.c
tests/bench/qplookups.c
tests/bench/qpmulti.c
tests/bench/siphash.c
tests/dns/acl_test.c
tests/dns/badcache_test.c
tests/dns/db_test.c
tests/dns/dbdiff_test.c
tests/dns/dbiterator_test.c
tests/dns/dbversion_test.c
tests/dns/diff_test.c
tests/dns/dispatch_test.c
tests/dns/dns64_test.c
tests/dns/dnstap_test.c
tests/dns/dst_test.c
tests/dns/ede_test.c
tests/dns/geoip_test.c
tests/dns/keytable_test.c
tests/dns/master_test.c
tests/dns/name_test.c
tests/dns/nametree_test.c
tests/dns/nsec3_test.c
tests/dns/nsec3param_test.c
tests/dns/private_test.c
tests/dns/qp_test.c
tests/dns/qpdb_test.c
tests/dns/qpmulti_test.c
tests/dns/qpzone_test.c
tests/dns/rdata_test.c
tests/dns/rdataset_test.c
tests/dns/rdatasetstats_test.c
tests/dns/resconf_test.c
tests/dns/resolver_test.c
tests/dns/rsa_test.c
tests/dns/sigs_test.c
tests/dns/skr_test.c
tests/dns/time_test.c
tests/dns/transport_test.c
tests/dns/tsig_test.c
tests/dns/update_test.c
tests/dns/zonemgr_test.c
tests/dns/zt_test.c
tests/isc/ascii_test.c
tests/isc/async_test.c
tests/isc/buffer_test.c
tests/isc/counter_test.c
tests/isc/dnsstream_utils_test.c
tests/isc/doh_test.c
tests/isc/errno_test.c
tests/isc/file_test.c
tests/isc/hash_test.c
tests/isc/hashmap_test.c
tests/isc/heap_test.c
tests/isc/histo_test.c
tests/isc/hmac_test.c
tests/isc/ht_test.c
tests/isc/job_test.c
tests/isc/lex_test.c
tests/isc/loop_test.c
tests/isc/md_test.c
tests/isc/mem_test.c
tests/isc/mutex_test.c
tests/isc/netaddr_test.c
tests/isc/parse_test.c
tests/isc/proxyheader_test.c
tests/isc/proxystream_test.c
tests/isc/proxyudp_test.c
tests/isc/quota_test.c
tests/isc/radix_test.c
tests/isc/random_test.c
tests/isc/ratelimiter_test.c
tests/isc/regex_test.c
tests/isc/result_test.c
tests/isc/rwlock_test.c
tests/isc/safe_test.c
tests/isc/siphash_test.c
tests/isc/sockaddr_test.c
tests/isc/spinlock_test.c
tests/isc/stats_test.c
tests/isc/symtab_test.c
tests/isc/tcp_test.c
tests/isc/tcpdns_test.c
tests/isc/time_test.c
tests/isc/timer_test.c
tests/isc/tls_test.c
tests/isc/tlsdns_test.c
tests/isc/udp_test.c
tests/isc/work_test.c
tests/isccfg/duration_test.c
tests/isccfg/grammar_test.c
tests/isccfg/parser_test.c
tests/ns/notify_test.c
tests/ns/plugin_test.c
tests/ns/query_test.c

index 26c3106547ff0f1ae5c66a3efb9327fe762e8011..e0210cfbd382a8f8ff1add01de087a721338c17d 100644 (file)
@@ -22,6 +22,7 @@
 #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>
@@ -30,6 +31,7 @@
 
 #include <dns/db.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/rdataclass.h>
 #include <dns/rootns.h>
index db5289d1e3157a09a80e6087a9cc9f0101ad8681..998171662cc5a332603854f50de569f62111fe9e 100644 (file)
@@ -22,6 +22,7 @@
 #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>
@@ -31,6 +32,7 @@
 
 #include <dns/db.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/master.h>
 #include <dns/masterdump.h>
 #include <dns/name.h>
index 31cfe21aa54b68cc7311f9fa68475a0252e3c508..a6526268b4df64c22043eeb5c1d335d5cd9e9b0e 100644 (file)
@@ -32,6 +32,7 @@
 #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>
@@ -40,6 +41,7 @@
 #include <isc/util.h>
 
 #include <dns/keyvalues.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 
 #include <dst/dst.h>
index 9dede3e3cf7b2f3e8cfe58b47a797f062e80ae00..ee6470d9e9bf03b76fabe4b83d8c514da2887105 100644 (file)
@@ -28,6 +28,7 @@
 #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>
@@ -36,6 +37,7 @@
 #include <isc/util.h>
 
 #include <dns/keyvalues.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 
 #include <dst/dst.h>
index 64bbfa7d4235c5e159599533361a12beb2d5e320..2088088d46469c966c364f03072d1a19b2e4c407 100644 (file)
@@ -37,6 +37,7 @@
 #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>
@@ -59,6 +60,7 @@
 #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>
index 67056ec490b02d16ab48bb2ee813f0c6b2ee9783..eb4290a0dd528072ce93ef1dd2046d52de29bc7c 100644 (file)
@@ -22,6 +22,7 @@
 #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>
@@ -33,6 +34,7 @@
 #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>
index 6ecf441e8db939cf4483a97b0bd046d142002b93..1f93d8eb720b86d36644cb5d689c3b0717abf54b 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <isc/attributes.h>
 #include <isc/commandline.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/netaddr.h>
 #include <isc/string.h>
@@ -28,6 +29,7 @@
 
 #include <dns/byaddr.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/message.h>
 #include <dns/name.h>
 #include <dns/rdata.h>
index bef5822b3751a5100298c69a89f47ea73ec4f144..ca362918814342ad219cebb4bbe2c210479710c6 100644 (file)
@@ -21,6 +21,7 @@
 #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>
@@ -30,6 +31,7 @@
 
 #include <dns/byaddr.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/message.h>
 #include <dns/name.h>
 #include <dns/rdata.h>
index 70f8f477c7f98f1338b3bbf5ce3fc0993ac319a7..fbf319c356b26283fc531e321451b3fe3d03cf6d 100644 (file)
@@ -29,6 +29,7 @@
 #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>
@@ -44,6 +45,7 @@
 #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>
index 8a8b03c2d9a92a92be0ab7ef88b4867e423ef251..00c1bab86e4be3896a7053aeb747d04bea9ef3b5 100644 (file)
@@ -22,6 +22,7 @@
 #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>
@@ -34,6 +35,7 @@
 #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>
index 6e9f3e3af138d438401d4724e1de8578794de7e7..95ac0256bae97d2a005b5ad7cf382eb2f233fccc 100644 (file)
@@ -20,6 +20,7 @@
 #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>
@@ -32,6 +33,7 @@
 #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>
index c302528c77fe2545e3f8711fbb89f88888039938..3b8899960ba10bb08f307513a5bfae340205cdfd 100644 (file)
@@ -21,6 +21,7 @@
 #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>
@@ -31,6 +32,7 @@
 #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>
index 849327e61dbb04770f8f5d95da85ded934d51dcb..36ed720ec8f800b067bee1f5731c34ffd825adb5 100644 (file)
@@ -39,6 +39,7 @@
 #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>
@@ -50,6 +51,7 @@
 #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>
index 0a929ee3b266d9e88ffb6f8d316edde3194c3ab8..95b1e4b7e5487f0eabe799583cd43874b8a4fa52 100644 (file)
@@ -20,6 +20,7 @@
 #include <isc/commandline.h>
 #include <isc/fips.h>
 #include <isc/lex.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 
 #include <dns/callbacks.h>
@@ -27,6 +28,7 @@
 #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>
index 603ec000e4206a1e5630e717d55097d1a71d9293..5f54ad297cf5edeb366095a94ae4f35226c80551 100644 (file)
 #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>
 
index e70e95cbda1727589f4fffcb15f911981779c041..7f14e0fc38bbfe90fa3e03e5b256fec7fa45dfa4 100644 (file)
@@ -25,6 +25,7 @@
 #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>
@@ -33,6 +34,7 @@
 #include <isc/util.h>
 
 #include <dns/keyvalues.h>
+#include <dns/lib.h>
 
 #include <dst/dst.h>
 
index 748f28f3bcd5ae7906b6144c56009376e58396de..8461134e6743b0636b2ed41eedf2216833bfaf57 100644 (file)
@@ -45,6 +45,7 @@
 #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>
@@ -71,6 +72,7 @@
 #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>
index 2c22e3f8cf8bb621de9c5309223dae5840198fc7..14a19277b0e9e329434fe332283bfe54a24832fe 100644 (file)
@@ -23,6 +23,7 @@
 #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>
@@ -43,6 +44,7 @@
 #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>
index c7547da9c96c9dbc4e51270669f8d08d8e357855..81af56c15389271d3b99f70e1483a20cc37d4c1c 100644 (file)
@@ -33,6 +33,7 @@
 #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>
@@ -47,6 +48,7 @@
 
 #include <dns/dispatch.h>
 #include <dns/dyndb.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/resolver.h>
 #include <dns/view.h>
index 14bf29d826758a3ec95c88b51baac16608533513..2310b167ec231122faf7625b6221ea083c889bb5 100644 (file)
@@ -7912,7 +7912,7 @@ load_configuration(const char *filename, named_server_t *server,
        /*
         * Shut down all dyndb instances.
         */
-       dns_dyndb_cleanup(false);
+       dns_dyndb_cleanup();
 
        /*
         * Parse the global default pseudo-config file.
@@ -9591,7 +9591,7 @@ shutdown_server(void *arg) {
        /*
         * 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);
index 8b1a1cd91ca092245479ca700693576bd83ecded..4df131de2f939215ea8072ebfb1a43f8b5453d82 100644 (file)
@@ -97,7 +97,7 @@ typedef struct stats_dumparg {
        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
index 524c9ac3f3ec245f862732dc165ccd90e56f03d5..93e05a30fa03aafedd578c146b167d99ef35855d 100644 (file)
@@ -30,6 +30,7 @@
 #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>
@@ -52,6 +53,7 @@
 #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>
index 38b1caf7755e406c9827351eac76897cea25e34a..1e9e1f0d1a0cfdbddc40d233ec7c71cc71140801 100644 (file)
@@ -22,6 +22,7 @@
 #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>
@@ -36,6 +37,7 @@
 #include <isc/thread.h>
 #include <isc/util.h>
 
+#include <dns/lib.h>
 #include <dns/name.h>
 
 #include <isccc/alist.h>
index 11481f3bbb6b8bf0b99f4404306ff9139ba0c90d..f39922dcbc1c36b4d3aece6d8c6c2293484ff29e 100644 (file)
 #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>
 
index 1cbe75b699d19a6ae615bcc54887e56e6a1e7e7a..94a92b9a7376e13b3ceb386d45b1256aa558f41b 100644 (file)
@@ -17,6 +17,7 @@
 #include <stdlib.h>
 
 #include <isc/hash.h>
+#include <isc/lib.h>
 #include <isc/log.h>
 #include <isc/mem.h>
 #include <isc/result.h>
@@ -25,6 +26,7 @@
 #include <dns/db.h>
 #include <dns/fixedname.h>
 #include <dns/journal.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/types.h>
 
index c9b7f6a1198bdaf086f8098c47d5a08c0724345c..fcfb50ccd021c42aeac33f88133b3499cd8cb993 100644 (file)
@@ -20,6 +20,7 @@
 #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>
@@ -33,6 +34,7 @@
 
 #include <dns/dispatch.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/message.h>
 #include <dns/name.h>
 #include <dns/rdataset.h>
index a8d4241c2a0afc23e6e49f4d5626b484c5364701..2ae0f3dec09d0992c972023d511c2540b39cfe49 100644 (file)
 #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>
index 25a341d177c66a7b71cd66da85b03025a8d26f49..4d737bc054947bfba63ac5c3c67d57fa7c271ea2 100644 (file)
@@ -25,6 +25,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/managers.h>
 #include <isc/mem.h>
index beb723a65c2519273256eadb9c62e7528299a6b1..b26ea20dab863844c275e703bc97bc7bdc7c5878 100644 (file)
@@ -19,6 +19,7 @@
 #include <stdlib.h>
 #include <strings.h>
 
+#include <isc/lib.h>
 #include <isc/managers.h>
 #include <isc/mem.h>
 #include <isc/netaddr.h>
index 26a84c4baceecfd55d11184fa89346befadd1d86..bf130c7fc3c90e8c3b2adc8214d77f7a9e2139cd 100644 (file)
 #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;
index 5428c97672ae476b6937a511b082e9fa1ac4bc5b..bf47f601b64c641e995feac01ac4a36bfb2ff26b 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <stdio.h>
 
+#include <isc/lib.h>
 #include <isc/net.h>
 
 #define UNUSED(x) (void)(x)
index 9127fba967e20a538a8586faf9aeb59060ad68ad..501d70ad96d5f6e675d3cb569143bb23eb39d2a5 100644 (file)
@@ -40,6 +40,7 @@
 #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>
@@ -47,6 +48,7 @@
 
 #include <dns/dnstap.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/masterdump.h>
 #include <dns/message.h>
 #include <dns/name.h>
index c4880041a9034b69311869ff4d94516888dd53ec..58d60b42b559aaf4c0b4af12c63f24d57f66ffb6 100644 (file)
@@ -22,6 +22,7 @@
 #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>
@@ -41,6 +42,7 @@
 #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>
index f5eb1e23689a3d5e9f4a3cde1d749a0501c7acd7..c8fcc2b75e6a7131e64871091b8f969c9b65d945 100644 (file)
 #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;
index 42be33f7fcd1d51ea4bcb1f765c7ef0d484e69ee..18a5791ea88b9e950ef95321891cf6fa2267a9fd 100644 (file)
@@ -19,6 +19,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include <isc/lib.h>
+
+/* Included just to get DNS_LMDB_FLAGS definition */
 #include <dns/view.h>
 
 int
index d856756a5c1fa9abc1d7e38463d228441ad814d7..2de1d31bf86e4dae966e8303d254e92f8a07005d 100644 (file)
 #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>
index dbba2d91b46bb89e798c6da42744465f05fdb223..0ddc6fa067f90ccd5f3da9177615fd23280b7595 100644 (file)
@@ -23,6 +23,7 @@
 #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>
@@ -30,6 +31,7 @@
 #include <isc/util.h>
 
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/nsec3.h>
 #include <dns/types.h>
index e0df72edb400d763fe0b4d1ad8d42933e261f1d7..64c64d27000b9742c9e9ceef4996c6da377ee28e 100644 (file)
@@ -17,6 +17,7 @@
 #include <stdbool.h>
 #include <stdlib.h>
 
+#include <isc/lib.h>
 #include <isc/log.h>
 #include <isc/mem.h>
 #include <isc/string.h>
index 9863df52f2a6b51b05b890c3671bc92323634d5a..86fa159e33bf634708daa323062e2989b3835ad1 100644 (file)
 #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
index 1733fdccf4179a3d6074a17636426d4be9211c69..a93feaebfb0ac664c357ba4272f1f154795ed2a2 100644 (file)
@@ -86,6 +86,7 @@ libdns_la_HEADERS =                   \
        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           \
@@ -153,6 +154,7 @@ libdns_la_SOURCES =                 \
        $(dst_HEADERS)                  \
        $(irs_HEADERS)                  \
        acl.c                           \
+       acl_p.h                         \
        adb.c                           \
        badcache.c                      \
        byaddr.c                        \
@@ -168,6 +170,7 @@ libdns_la_SOURCES =                 \
        diff.c                          \
        dispatch.c                      \
        dlz.c                           \
+       dlz_p.h                         \
        dns64.c                         \
        dnssec.c                        \
        ds.c                            \
@@ -177,6 +180,7 @@ libdns_la_SOURCES =                 \
        dst_parse.c                     \
        dst_parse.h                     \
        dyndb.c                         \
+       dyndb_p.h                       \
        ecs.c                           \
        ede.c                           \
        fixedname.c                     \
@@ -192,6 +196,7 @@ libdns_la_SOURCES =                 \
        keymgr.c                        \
        keystore.c                      \
        keytable.c                      \
+       lib.c                           \
        master.c                        \
        masterdump.c                    \
        message.c                       \
index 244995c99570796c36bdae46dcbe13c20bb942a4..c0e51f55a71421d43f3bd98edd08dfe36b4a703a 100644 (file)
@@ -25,6 +25,8 @@
 #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)
 
@@ -507,15 +509,19 @@ ISC_REFCOUNT_TRACE_IMPL(dns_acl, dns__acl_destroy);
 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.
@@ -566,8 +572,6 @@ dns_acl_isinsecure(const dns_acl_t *a) {
        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.
diff --git a/lib/dns/acl_p.h b/lib/dns/acl_p.h
new file mode 100644 (file)
index 0000000..8ab305f
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * 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);
index 8add76f644151f24fab55b0e36ae3105d24a751c..90ac276bc53fb036343b788fb5499753ef0d57a0 100644 (file)
@@ -24,7 +24,6 @@
 #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>
@@ -69,13 +68,12 @@ unsigned int dns_pps = 0U;
 
 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);
@@ -96,6 +94,11 @@ initialize(void) {
        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;
@@ -123,8 +126,6 @@ dns_db_create(isc_mem_t *mctx, const char *db_type, const dns_name_t *origin,
              char *argv[], dns_db_t **dbp) {
        dns_dbimplementation_t *impinfo = NULL;
 
-       isc_once_do(&once, initialize);
-
        /*
         * Create a new database using implementation 'db_type'.
         */
@@ -831,8 +832,6 @@ dns_db_register(const char *name, dns_dbcreatefunc_t create, void *driverarg,
        REQUIRE(name != NULL);
        REQUIRE(dbimp != NULL && *dbimp == NULL);
 
-       isc_once_do(&once, initialize);
-
        RWLOCK(&implock, isc_rwlocktype_write);
        imp = impfind(name);
        if (imp != NULL) {
@@ -861,8 +860,6 @@ dns_db_unregister(dns_dbimplementation_t **dbimp) {
 
        REQUIRE(dbimp != NULL && *dbimp != NULL);
 
-       isc_once_do(&once, initialize);
-
        imp = *dbimp;
        *dbimp = NULL;
        RWLOCK(&implock, isc_rwlocktype_write);
index 132f8e0464082233d8c3b28fe4ce7b175c0d37c7..2db152ec1f942281f2b83c67852699925dfc4440 100644 (file)
@@ -193,3 +193,11 @@ dns__db_logtoomanyrecords(dns_db_t *db, const dns_name_t *name,
  * '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);
index 1525db56b64476849ad239a126777c5796d6fabc..b6d41678edd3d7c2942bac91dda6a126f866fea9 100644 (file)
@@ -60,7 +60,6 @@
 #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.
  */
@@ -162,12 +167,6 @@ dns_dlzcreate(isc_mem_t *mctx, const char *dlzname, const char *drivername,
        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.
         */
@@ -291,12 +290,6 @@ dns_dlzregister(const char *drivername, const dns_dlzmethods_t *methods,
        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);
 
@@ -372,12 +365,6 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp) {
         */
        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. */
diff --git a/lib/dns/dlz_p.h b/lib/dns/dlz_p.h
new file mode 100644 (file)
index 0000000..030aa5d
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * 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);
index 4db3ea2901324f24c3bd00adfedbc6683e2e9698..59209873376498b4aeddd57261c5d446a763894c 100644 (file)
@@ -190,12 +190,7 @@ addsuffix(char *filename, int len, const char *dirname, const char *ofilename,
 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]);
@@ -224,7 +219,7 @@ dst__lib_init(void) {
 }
 
 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();
index cc57468f4f8b566f48ec8611bd7164c7032a6554..731d4b86027838ac0094b86dd02822abafa66e94 100644 (file)
@@ -224,4 +224,12 @@ dst_key_close(char *tmpname, FILE *fp, char *filename);
 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 */
index 6535c1d045b37b1e26bcbc88e9617ee0a7ce56c3..b4ead8dcfa175b216e7928fafaa70333c3f73673 100644 (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>
@@ -29,6 +26,8 @@
 #include <dns/view.h>
 #include <dns/zone.h>
 
+#include "dyndb_p.h"
+
 #define CHECK(op)                            \
        do {                                 \
                result = (op);               \
@@ -57,14 +56,18 @@ static LIST(dyndb_implementation_t) dyndb_implementations;
 
 /* 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;
@@ -211,8 +214,6 @@ dns_dyndb_load(const char *libname, const char *name, const char *parameters,
        REQUIRE(DNS_DYNDBCTX_VALID(dctx));
        REQUIRE(name != NULL);
 
-       isc_once_do(&once, dyndb_initialize);
-
        LOCK(&dyndb_lock);
 
        /* duplicate instance names are not allowed */
@@ -239,12 +240,10 @@ cleanup:
 }
 
 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) {
@@ -259,10 +258,6 @@ dns_dyndb_cleanup(bool exiting) {
                elem = prev;
        }
        UNLOCK(&dyndb_lock);
-
-       if (exiting) {
-               isc_mutex_destroy(&dyndb_lock);
-       }
 }
 
 void
diff --git a/lib/dns/dyndb_p.h b/lib/dns/dyndb_p.h
new file mode 100644 (file)
index 0000000..09bd7db
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * 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);
index a54f710533c1d80904f3b5ac4da9cd3bcdc52c93..fe90baf1771c26ba7a8fd67a06c52731e5b5340d 100644 (file)
@@ -117,12 +117,9 @@ dns_dyndb_load(const char *libname, const char *name, const char *parameters,
  */
 
 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
diff --git a/lib/dns/include/dns/lib.h b/lib/dns/include/dns/lib.h
new file mode 100644 (file)
index 0000000..cb88744
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * 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();
+}
index 5eb60380595582a4844087a59dd95c3b25582915..4bcb026b1c187b6019942ef049d3979f48d61e35 100644 (file)
@@ -1226,7 +1226,7 @@ dst_key_setdirectory(dst_key_t *key, const char *dir);
 
 const char *
 dst_hmac_algorithm_totext(dst_algorithm_t alg);
-/*$<
+/*%<
  * Return the name associtated with the HMAC algorithm 'alg'
  * or return "unknown".
  */
diff --git a/lib/dns/lib.c b/lib/dns/lib.c
new file mode 100644 (file)
index 0000000..4825e37
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * 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();
+}
index 888d8f5653ab4fdcea80d7e36874e046fff6e932..f7f38afb25be7b73d841339f67a76e708badff12 100644 (file)
@@ -135,8 +135,6 @@ uint8_t dns_qp_byte_for_bit[SHIFT_OFFSET] = { 0 };
  * 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
@@ -153,8 +151,8 @@ initialize_bits_for_byte(void) ISC_CONSTRUCTOR;
  * 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 */
@@ -193,6 +191,11 @@ initialize_bits_for_byte(void) {
        ENSURE(bit_one < SHIFT_OFFSET);
 }
 
+void
+dns__qp_shutdown(void) {
+       /* Nothing */
+}
+
 /*
  * Convert a DNS name into a trie lookup key.
  *
index d7c65131e727290a96255a606a92660694a00a9b..0206c5fd56bcf6c99d198dc48f23cbfb139a5451 100644 (file)
@@ -19,6 +19,8 @@
 
 #pragma once
 
+#include <dns/qp.h>
+
 /***********************************************************************
  *
  *  interior node basics
@@ -925,3 +927,8 @@ extern uint16_t dns_qp_bits_for_byte[];
 extern uint8_t dns_qp_byte_for_bit[];
 
 /**********************************************************************/
+
+void
+dns__qp_initialize(void);
+void
+dns__qp_shutdown(void);
index 4d6f22db9a197ff7291562ca27e5be85218ba893..23eb3b032a70f6163299becae67b98af372e8a52 100644 (file)
@@ -58,7 +58,7 @@ mygetservbyname(const char *name, const char *proto, long *port) {
 
 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;
index d60ccd03b16639b55f7553c56bc17621f9d0e0c3..7cdca91b475a011309911b730ba7be4a27430023 100644 (file)
@@ -42,6 +42,7 @@ libisc_la_HEADERS =                   \
        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              \
diff --git a/lib/isc/include/isc/lib.h b/lib/isc/include/isc/lib.h
new file mode 100644 (file)
index 0000000..ee918e7
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * 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();
+}
index 4771b5cb5eaf5573e80e7ada940be59e0710fe01..d5cb73f2d76971db1b9c4343d9637b1eac7c3709 100644 (file)
@@ -21,7 +21,7 @@
 
 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)                                  \
        {                                                   \
index 5eec716ea2676d49d9e38958a5d38a6291c87228..6d0b537c0e2f0359597c2d48fe0f91fcc9050da5 100644 (file)
 #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.
  */
index 9f1c6492df7ecd98a3bb9a9b5ee618729862475b..4553f4a3b500329b125d5ea350033dbabb8d2229 100644 (file)
@@ -19,6 +19,7 @@
 #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();
@@ -54,11 +58,14 @@ isc__initialize(void) {
        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();
index 8a23b0f46ad34ead79f9f126caccaed445268aa0..2651c503abaa535c2a4d5ab28d3d96691d7d4deb 100644 (file)
@@ -24,7 +24,6 @@
 #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>
@@ -112,8 +111,6 @@ struct element {
 
 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 {
@@ -413,8 +410,8 @@ mem_jemalloc_arena_destroy(unsigned int arenano) {
 #endif /* JEMALLOC_API_SUPPORTED */
 }
 
-static void
-mem_initialize(void) {
+void
+isc__mem_initialize(void) {
 /*
  * Check if the values copied from jemalloc still match
  */
@@ -427,12 +424,7 @@ mem_initialize(void) {
 }
 
 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();
@@ -446,11 +438,6 @@ mem_shutdown(void) {
        }
 }
 
-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) {
index e31ba1339cc7ae40c5362aa6c2e796047d4e5213..ad1c4ce2cc67a2e5966a951380e40b8eef5ec006 100644 (file)
 #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,
@@ -43,11 +42,6 @@ mutex_initialize(void) {
 #endif
 }
 
-void
-isc__mutex_initialize(void) {
-       isc_once_do(&init_once, mutex_initialize);
-}
-
 void
 isc__mutex_shutdown(void) {
        /* noop */;
index e2123cb294f7eea79e8bf13c76d47975a390eb88..4379e846c265e700f7adeefeb04bde843c19f910 100644 (file)
 #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
index 0df6abd22df111e11a20c71c9cc2eae47ee7a296..0660785ddc5e6236772573c2ae3a70cae5775614 100644 (file)
@@ -18,6 +18,7 @@
 #include <stdlib.h>
 
 #include <isc/buffer.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/result.h>
 #include <isc/time.h>
@@ -25,6 +26,7 @@
 
 #include <dns/compress.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 
 static void
index a1d25b156a70cd1aa46c2b5f635e42e58c72947e..ef7d39366149a918f62902fe13b9f6086ba75a46 100644 (file)
 
 #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"
index 7d11c93a4cfc3b7cfe3b1d047323f2e5cc58a984..1cc5755e8fb1b48448b94dc98430ffd6a26beb00 100644 (file)
 #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
index b4790961b7466ea2da92b35f27f20470feee1837..86772841ad25e0437ce1353b7e19a37917b1bc4e 100644 (file)
@@ -18,6 +18,7 @@
 #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>
@@ -26,6 +27,7 @@
 #include <isc/util.h>
 
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/qp.h>
 #include <dns/types.h>
 
index 795fb3a662eac830d7e9b2d4928f0726dead5a93..5356511a132dacfbb49bd57637fde374e48d4f16 100644 (file)
 #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>
 
index fd478f3e6fa96b2ce677781040dd9f8e21bb47b8..12421c22f8f02489d9d2ef6499fea42ccd4c3b55 100644 (file)
 #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>
 
index ec4d3e4244a53c8a8d3705eac7b889e869f44cd3..13aded4098a0c5535612f3a9fa39fa18d8b3d43c 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <isc/async.h>
 #include <isc/barrier.h>
+#include <isc/lib.h>
 #include <isc/list.h>
 #include <isc/log.h>
 #include <isc/loop.h>
@@ -37,6 +38,7 @@
 #include <isc/util.h>
 #include <isc/uv.h>
 
+#include <dns/lib.h>
 #include <dns/qp.h>
 #include <dns/types.h>
 
index 8c1238537b56e5696589fe284a9e7a6e67aa88a1..c6a6f4d88b2a0ed6be9b27316c21f275b7b0743a 100644 (file)
@@ -17,6 +17,7 @@
 #include <string.h>
 
 #include <isc/ascii.h>
+#include <isc/lib.h>
 #include <isc/random.h>
 #include <isc/siphash.h>
 #include <isc/time.h>
index 443dd62748d5dd4e38ac116349b1e2e070074a37..85a08b0c23bfb257f4fe93041351fb91c56841e8 100644 (file)
 #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>
 
index 2e2695b0b7c165c0bbfc98fd06b27e43528c102f..07baa49e903f3e16fb1608b682d4a58af05f98f8 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <isc/buffer.h>
 #include <isc/commandline.h>
+#include <isc/lib.h>
 #include <isc/md.h>
 #include <isc/mem.h>
 #include <isc/os.h>
@@ -38,6 +39,7 @@
 #include <dns/badcache.h>
 #include <dns/compress.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/rdatatype.h>
 
index f3be8a66145ebe65bed7a5caf6551405acb41779..d9b7a1047a847bb54183b5f65ceb05a0a143fb78 100644 (file)
 #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>
 
index f0fb8804f82db0426e5f8e1ffb45a7911ef00e94..3c3f7ddd90ec6e024b2a3ebab5c8a4296524b30e 100644 (file)
 #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>
index 30980700b9d955bc3d7a91262cca68891a144964..67e19c71e55b9a352f58632350d66da6503ce9e1 100644 (file)
 #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>
index 690cca80366ca6d572fdb306bd66fce3439e3375..4ec3063f048e1173a3aea6bf6a861b63761ee0fc 100644 (file)
@@ -24,6 +24,7 @@
 #include <cmocka.h>
 
 #include <isc/file.h>
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/serial.h>
 #include <isc/stdtime.h>
@@ -31,6 +32,7 @@
 #include <isc/util.h>
 
 #include <dns/db.h>
+#include <dns/lib.h>
 #include <dns/nsec3.h>
 #include <dns/rdatalist.h>
 #include <dns/rdataset.h>
index 66d6d9b0154a3fc8628edf113e9a9a1a5fafa0af..ec93bb8c29bd5f505742ae7db15a064a11848c2a 100644 (file)
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
+
 #include <dns/diff.h>
+#include <dns/lib.h>
 
 #include <tests/dns.h>
 
index 20530e9e9135cab5e4a126502943b2aa3c8bff9f..7eecbc8bac7392abcf28e76777aca47373983c16 100644 (file)
@@ -25,6 +25,7 @@
 #include <cmocka.h>
 
 #include <isc/buffer.h>
+#include <isc/lib.h>
 #include <isc/managers.h>
 #include <isc/refcount.h>
 #include <isc/tls.h>
@@ -32,6 +33,7 @@
 #include <isc/uv.h>
 
 #include <dns/dispatch.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/view.h>
 
index ad547ae060b46762a16c72308c0fdc30b27340ed..82b92c651720f673468d89c2fc0377a3222bce20 100644 (file)
 #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>
index 45bdf2005fdc2c0ce2fc865abaab8200327abf6d..a7156b7ba94ecc1e66df4deaaaecae1c77528fd0 100644 (file)
 
 #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>
index 2121e3883ec519ad278e6a442b24888f6ad09cf9..871a4931ce50c3fef50a55e9ebdde1e3cbb9b8f4 100644 (file)
 #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"
index 76761cfb8fb5ca6923934e847b695833f52465c3..bbfad7d8440d0b2d3f605dcb9455ab66a2bb175a 100644 (file)
 #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"
 
index 89a7fc6e30cec7ec5ca996e583243acc8410bd72..defca69c8fb94550f28b0b49536ba8ad338a9a81 100644 (file)
 #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"
 
index 581e161b800a06598657037b0befce517b59053e..5b0ba19a3af7f2d1879bc7445cbf74b70f18df89 100644 (file)
 
 #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>
index 5c1a9bcc0bef07321af3bc7ac2ccd04578112176..0de8a9e02e7e49899ee0f3d94b02cf7c3b7569ac 100644 (file)
 #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>
index 4cb3b9cce7247fe1d4a096f641a93ae424df1ce1..8f159b9d278dd1b3f58673d37fcf09e30d5ba93a 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/buffer.h>
 #include <isc/commandline.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/os.h>
 #include <isc/thread.h>
@@ -33,6 +34,7 @@
 
 #include <dns/compress.h>
 #include <dns/fixedname.h>
+#include <dns/lib.h>
 #include <dns/name.h>
 
 #include <tests/dns.h>
index 71197ba345f647baed34537d7e6bb15405cb7a53..e0384d0c85cac9896fecd05cf9b25cc09796cdd0 100644 (file)
 
 #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>
 
index dd772d1cff2c9fb3b7bd938d9cb5a3615f0569c8..957237e5cb3873a1c664a44158296519b8cbb656 100644 (file)
 #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>
index 0892d931a362199b1ee91ea775795a85bebd309d..35e3ce034302e9d7d4095b7421279c1337a7d715 100644 (file)
 #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"
index c40bd7f23cf0f19641585d1c58f90fec07797705..2bd8b366fb0d3e841aa016257970dc220b6ea474 100644 (file)
 #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>
index f8c0954beef2a0c55494f2bc8e79bcf789f1b9b0..8abfdd11fdc9d826e4e26c7e2e444f4cb9d5b379 100644 (file)
@@ -23,6 +23,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/random.h>
 #include <isc/refcount.h>
 #include <isc/result.h>
@@ -30,6 +31,7 @@
 #include <isc/urcu.h>
 #include <isc/util.h>
 
+#include <dns/lib.h>
 #include <dns/name.h>
 #include <dns/qp.h>
 
index 6adac9faca65d08f3921ec1b33017679e417781b..73931889dfce7ebfac27c3a76794e10962f6f06c 100644 (file)
 #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>
index 90d246ec7ad18ed8779c51ea857cc52d7443581b..11ff466e348c3d62f815d8450aad7c8d4247ffdb 100644 (file)
@@ -23,6 +23,7 @@
 #include <cmocka.h>
 
 #include <isc/assertions.h>
+#include <isc/lib.h>
 #include <isc/log.h>
 #include <isc/loop.h>
 #include <isc/magic.h>
@@ -33,6 +34,7 @@
 #include <isc/urcu.h>
 #include <isc/util.h>
 
+#include <dns/lib.h>
 #include <dns/qp.h>
 #include <dns/types.h>
 
index 13a885016fd5a7feeb15cd06b1d7ede69a94e854..e3c693d4a91197d0962d24bfe56e917bbec4f335 100644 (file)
 #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>
index 85ed8056ed9a52cbacd9a3d31414e7952f66bd05..8a22fb9e4c404f4f095b60d16f5385d55659bdcb 100644 (file)
 #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"
index fc21b29f9d3ad26ce18f465289e96e483b3a581b..bd5674446ce7374f326ebfed505e492b9d52de94 100644 (file)
 #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>
 
index 8cfbebcc9ad17880b4fae915e93345c795ef6b87..57acff6ac1c5effc6253181c80d6299e8a563285 100644 (file)
 #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>
index dae666a6a5aa4aec61ebe59b061dc3e2551869ae..33e6aa8b47b97814423beda162e66370257953c3 100644 (file)
 #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>
index 200c20e1c197110c182267ee3fd8ee2e61ab8bc5..86c5931f7846adc5af65b86924f0a5ea49ed7238 100644 (file)
 #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>
index f634621943b634ca8fe02bc78cba54fc500dbb50..c1d44fa3f58d5226c445ffe3831ac3702a8449db 100644 (file)
 #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>
index f5679d983203da070deac3a0ac6630d0a012f595..277d4e9db7d5395dbe76d9527763651b0732567e 100644 (file)
@@ -24,6 +24,7 @@
 #include <cmocka.h>
 
 #include <isc/buffer.h>
+#include <isc/lib.h>
 #include <isc/list.h>
 #include <isc/region.h>
 #include <isc/result.h>
@@ -35,6 +36,7 @@
 #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>
index c00baaa5ee5b664eed2c077943ca8a335279c220..a0038c6ddc085766a8e6f54d81255b60b66ae7f3 100644 (file)
 #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>
index f6e19481f45d2a6041297169d646a242c606e88a..8002c0ed21e51f01f480348ee92d69daffce8ee5 100644 (file)
 #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>
index 5bf07a149f85dd6a22032db34d7644225641fe28..e2186971d477ca8c89df98c16e2c22925f22ec7e 100644 (file)
 #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>
index 5dd7a423b57639384411fee19a3bd302a9ed1637..7a52f7d2f5e5d4b67f28fef231990c07dee22d8f 100644 (file)
 #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>
index 653f34ebbed1340bf51543411ae1b207d3f825eb..37cad328901e67bd0fd7882057e7531a4040106a 100644 (file)
 #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
 
index 0424e911d5b44cb37801f551afa605cdba18aa30..fff8322482e075b558ed720d2751f4ae504e3188 100644 (file)
 #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>
index 3e4dc37b06650d4d7d85a3874cf3137a40536dd5..eea991afd645d2bb09986f9dbe96a04d971bce6f 100644 (file)
 
 #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>
index f49b64b9e2ffd0757fac308344a08b65f29860f5..141eae4c64da7122bb613f27a03cc46341f48c5f 100644 (file)
@@ -22,6 +22,7 @@
 #include <cmocka.h>
 
 #include <isc/ascii.h>
+#include <isc/lib.h>
 
 #include <tests/isc.h>
 
index bfc417362d6ce816541161740c2957131bc39405..ea8d543919418df79a35b9b692279d1a5d6fdd02 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/async.h>
 #include <isc/atomic.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/os.h>
 #include <isc/result.h>
index fe6d2bcc2763445ecf7362b4d78d471998f91c98..3edc8dd1b24798e6933eb6affc64d4110242ff58 100644 (file)
@@ -27,6 +27,7 @@
 #include <cmocka.h>
 
 #include <isc/buffer.h>
+#include <isc/lib.h>
 #include <isc/region.h>
 #include <isc/result.h>
 #include <isc/types.h>
index 594d948f479fcdd08b6ad0cdf36e55f7a4a2ede1..f9654e4e0cba886d57ef29331f3d641ccd6a5002 100644 (file)
@@ -23,6 +23,7 @@
 #include <cmocka.h>
 
 #include <isc/counter.h>
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/util.h>
 
index 68a0133eaed05297852e05b6d8dd1d4470022212..d46c9727fe3282871d8b87c2ad4d7ac92ba1ce2a 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/buffer.h>
 #include <isc/dnsstream.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/os.h>
 #include <isc/random.h>
index 339f4559d102c69c198c7e7a7c13a6bb3883b664..9ccc11f777120847912a2ce63c1da581bae06b20 100644 (file)
@@ -35,6 +35,7 @@
 #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>
index fbfe56ad4e11d40612ef2af98039e172ad83a66d..cdb44270b2a2947447ccab2021b786503c98bbc4 100644 (file)
@@ -24,6 +24,7 @@
 #include <cmocka.h>
 
 #include <isc/errno.h>
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/util.h>
 
index 6b75ba24905173186143ac8c3e267f4258389d27..c569dbd9cdc7d418395c9f3dda0a619274697b5d 100644 (file)
@@ -25,6 +25,7 @@
 #include <cmocka.h>
 
 #include <isc/file.h>
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/util.h>
 
index 6d04943866f32c88c880a3de6968bdb466944f66..996d355cc7c056fffc64c519a7238259783376e8 100644 (file)
@@ -27,6 +27,7 @@
 #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>
index 7ff9327351b341aa4ca96ea39911629a7f087aea..c03a5724921eb9ce017912a4166edb7cf9676f8b 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <isc/hash.h>
 #include <isc/hashmap.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/string.h>
 #include <isc/util.h>
index eba2b6b97aaf3a756408db3140df94c8e567f85d..b6757c14b4a08228f31acbee8bdd5097ce0f0daa 100644 (file)
@@ -25,6 +25,7 @@
 #include <cmocka.h>
 
 #include <isc/heap.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/util.h>
 
index 88c322f1601e85407e7a70a2dcd1fb9e039c256a..ff586ca59970ef94f3f6c34836544d1243a4f07c 100644 (file)
@@ -26,6 +26,7 @@
 #include <cmocka.h>
 
 #include <isc/histo.h>
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/time.h>
 
index 5784a8aec13066a282875b536b76dc8948d809a9..75c604b50d65c2fdf541d9e8b2e4ef24fc97a0b7 100644 (file)
@@ -35,6 +35,7 @@
 #include <isc/fips.h>
 #include <isc/hex.h>
 #include <isc/hmac.h>
+#include <isc/lib.h>
 #include <isc/region.h>
 #include <isc/result.h>
 
index 2303def0089c48b76cd21df67ae3cbd1dca130b6..40a6ef6c682cd4a4c512c3336e16db61ba70566a 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <isc/hash.h>
 #include <isc/ht.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/string.h>
 #include <isc/util.h>
index 6376bcc1353d201398345b8ba8e8307853564844..9b5315575c4cab222cff6364f6a0d328207f91d3 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/atomic.h>
 #include <isc/job.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/os.h>
 #include <isc/result.h>
index ee0a08434190d7ab69f0ef5fe3e65296ed355448..ce35f382e6b46206cf06b327f6c7774a80bea214 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <isc/buffer.h>
 #include <isc/lex.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/util.h>
 
index f7e1d28e8b344eef1c304d63fecb2e3d10dcb9b0..b41c4f804d94ab901831041112b043910f3d27b4 100644 (file)
@@ -25,6 +25,7 @@
 #include <cmocka.h>
 
 #include <isc/atomic.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/os.h>
 #include <isc/result.h>
index 69051b93c937e5691b791a84faa628c7d58d8026..4ef72383df0d26204cb7d9972f1af48d37702cd1 100644 (file)
@@ -27,6 +27,7 @@
 #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>
index cdf2546656869ac962a916d30736f400fd571ad1..ddb655440de8a5be0e7e38d85fd7b6e77b0b3642 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <isc/atomic.h>
 #include <isc/file.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/mutex.h>
 #include <isc/os.h>
index d45c694abab7fb6eb2b5b7e1ddba84d00a222267..7b4ca86a3c05c7f966f004077a2abe53503ced98 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <isc/atomic.h>
 #include <isc/file.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/mutex.h>
 #include <isc/os.h>
index 2394e111666f275d6086c656e01ab714147cd908..3d2d2363bfac6010c7c2cbc10c7b98cfcb18b2a0 100644 (file)
@@ -24,6 +24,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/netaddr.h>
 #include <isc/sockaddr.h>
 #include <isc/util.h>
index a5b516a0271ed130a087be669590875fe91b1839..19e453b76f1c17d1aacc0ea34c624609eb1c0fe3 100644 (file)
@@ -26,6 +26,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/parseint.h>
 #include <isc/util.h>
 
index 1f15dd63947a7bc85d76b5315a260b04f9ef175a..670dc4d2388861c74a616239298891d4fbd29ccd 100644 (file)
@@ -21,6 +21,7 @@
 #include <cmocka.h>
 
 #include <isc/buffer.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/os.h>
 #include <isc/proxy2.h>
index 295f63718c5205fbcfe2aa73f2aad16b5ce7b77f..03fca07d8f82658b674271838b93ef8aa39a8121 100644 (file)
@@ -28,6 +28,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
index 2e5bcfce34b88026427d110c0db8c5422c7b3e2e..9ebd499fb2474e69ec67f49614e24af52f0e9db5 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <isc/async.h>
 #include <isc/job.h>
+#include <isc/lib.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
 #include <isc/quota.h>
index 1f802e06eef55612fa765f896daa254eda73204f..6b9677978df32850ad14b8bc1a0919446fd849bf 100644 (file)
@@ -25,6 +25,7 @@
 #include <cmocka.h>
 
 #include <isc/job.h>
+#include <isc/lib.h>
 #include <isc/quota.h>
 #include <isc/result.h>
 #include <isc/thread.h>
index def5e9cf58317e83bdcf94c6927327655f7b5297..23671d1454df888da336d6f91494da15e893fb28 100644 (file)
@@ -22,6 +22,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/netaddr.h>
 #include <isc/radix.h>
index 21a33167d9668f1a8e6b412d7c965e4bda7d7911..eb4ff1dcafc850dff984da021fd909f5faf0bc80 100644 (file)
@@ -31,6 +31,7 @@
 #include <cmocka.h>
 
 #include <isc/commandline.h>
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/nonce.h>
 #include <isc/random.h>
index 4183fb23a7716833497ad833431e318072dbcb45..542d257ca30a6119dbeee706b5bf752d582599b9 100644 (file)
@@ -24,6 +24,7 @@
 #include <cmocka.h>
 
 #include <isc/job.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/ratelimiter.h>
 #include <isc/time.h>
index 379dfdcc152e014b3a2d1c354398bf7a96bc4cf0..2cc4d9e8d9ab2d7b6a871161c5c2be611ae5d3b2 100644 (file)
@@ -29,6 +29,7 @@
 #include <cmocka.h>
 
 #include <isc/commandline.h>
+#include <isc/lib.h>
 #include <isc/regex.h>
 #include <isc/util.h>
 
index cec195bef4bcc2e207ede63d807e9e4df8e571d7..bc8f86b81ff3ee7a1267aeee81238992e66796fe 100644 (file)
@@ -23,6 +23,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/util.h>
 
index dee4e382f3273598c4736da23a3ba2314ea42471..74f9e4ca22af3cb08719523bb0c8fff1f27c8c3a 100644 (file)
@@ -25,6 +25,7 @@
 #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>
index a3f01fe9affe0b0014cd7498f69d4192d3ae5872..d91b30cf0f562c7269b2153ff4faf318a691aa04 100644 (file)
@@ -24,6 +24,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/safe.h>
 #include <isc/util.h>
 
index 6970ca98a79aa4668b24af97b6982bcd1f4a84fa..9645c953ae194cfa708cdc565e781f27fe75b148 100644 (file)
@@ -22,6 +22,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/siphash.h>
 
 #include <tests/isc.h>
index 4dd70602a8d0cefbad6c870af0854fae7c591326..210efb0a872108492afea7d54b94a01e87bf41f8 100644 (file)
@@ -24,6 +24,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/netaddr.h>
 #include <isc/sockaddr.h>
 #include <isc/util.h>
index 89db2887741f34dff37935095b82f62d07d3e0ca..273e33cebe42e5b18435499c8c5fb5f2a4e99b64 100644 (file)
@@ -23,6 +23,8 @@
 #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
index 4bc541f33ced12521dfc2207c09f9d1b1af8edc9..8942f0d21eddffcb64cd9d32125e57bdd17cbf1f 100644 (file)
@@ -22,6 +22,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/mem.h>
 #include <isc/result.h>
 #include <isc/stats.h>
index 24da351bc849ef1691450866910885cf1e7e3473..87d7f58bc204a950c674183a27f598d2d7cabec7 100644 (file)
@@ -23,6 +23,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/symtab.h>
 #include <isc/util.h>
 
index 2538907e04a56129d1fc1f010bdfd95aee3ee939..05f9316ae3576836dbb095e1a702e7058f65cffd 100644 (file)
@@ -29,6 +29,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
index f2d3eed9dd1e50d60503f9df9b0b3976371c13b7..b0d213f4bdcc5a94d9b5ffcb71d4b3e11b5b26fe 100644 (file)
@@ -30,6 +30,7 @@
 #include <cmocka.h>
 
 #include <isc/async.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
index 3b5113b84493e31fbdebc0a113887302a2c0c1e4..2bd85a636e3aa609b15f4f52ba01f471663fa570 100644 (file)
@@ -23,6 +23,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/result.h>
 #include <isc/time.h>
 #include <isc/util.h>
index 66fbbc7d7acf92d5ec7b4cedf02f42bbcd9512ed..4a6ee8045cf733d5b97431d20d54e69624014c53 100644 (file)
@@ -27,6 +27,7 @@
 #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>
index 425a76765112f944aaf940df82a49af356a9c33c..9a4df5becda037fdefe77583006f696f8d7bdc88 100644 (file)
@@ -29,6 +29,7 @@
 #define UNIT_TESTING
 #include <cmocka.h>
 
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
index e8da5b04fd9a770958976347518c9df23247668d..831c8c1d262774d842aa945d43838243f02c3392 100644 (file)
@@ -30,6 +30,7 @@
 #include <cmocka.h>
 
 #include <isc/async.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
index 610139b96a78a65e60191e8d904d792d9695c9d0..aaacd6d3835d10624eda7291f6aa36f713680271 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <isc/async.h>
 #include <isc/job.h>
+#include <isc/lib.h>
 #include <isc/nonce.h>
 #include <isc/os.h>
 #include <isc/quota.h>
index 3c126ee613e7dc437694d6a3befda2e420a3ffa5..046cccb1b9050468d44aace374f92c23992f52b7 100644 (file)
@@ -25,6 +25,7 @@
 #include <cmocka.h>
 
 #include <isc/atomic.h>
+#include <isc/lib.h>
 #include <isc/loop.h>
 #include <isc/os.h>
 #include <isc/result.h>
index 660a278e485dfcb8ecffbfead3be1f5fa875ba56..8808b0d0856e172f7feebd3c024c6440c4fb903f 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/buffer.h>
 #include <isc/lex.h>
+#include <isc/lib.h>
 #include <isc/log.h>
 #include <isc/mem.h>
 #include <isc/types.h>
index e276287b594f2cf30eb02abc9ae5b6b4995c61bf..d2424b2afe71657bfb206ade62a66ea0a03be55e 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/buffer.h>
 #include <isc/lex.h>
+#include <isc/lib.h>
 #include <isc/log.h>
 #include <isc/mem.h>
 #include <isc/string.h>
index 403b3176db5b77159e28d43a29785350d581dce3..d7fdba0d862247f6db9f2ab6da42dfda0bdc7a45 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <isc/buffer.h>
 #include <isc/lex.h>
+#include <isc/lib.h>
 #include <isc/log.h>
 #include <isc/mem.h>
 #include <isc/string.h>
index 806470a62428e6df47a9d2652047adab100888c7..03d78c3abbf812ca9797fb0841593202f9bba516 100644 (file)
 #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>
 
index 92b9b78b8d1bc33194c2f2a63dda1b3f58ca4a2e..a7427c4c850220293fc0b1410fff69249a856074 100644 (file)
 
 #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>
index 812c23350d8643c354b1a6bce28eb6bd51f8fe63..18801bc7429739bf5a87694b8a2254509f8c73c6 100644 (file)
 #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>