diff --git a/.gitignore b/.gitignore
index 871997de02..11d5f33890 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,7 +39,6 @@ __pycache__/
/depcomp
/install-sh
/isc-config.sh
-/libltdl/*
/libtool
/ltmain.sh
/m4/libtool.m4
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b6fc343daa..99ba57ceeb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1527,9 +1527,9 @@ gcov:
# Generate XML file in the Cobertura XML format suitable for use by GitLab
# for the purpose of displaying code coverage information in the diff view
# of a given merge request.
- - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories libltdl --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' --xml -o coverage.xml
- - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories libltdl --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' --html-details -o coverage.html
- - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories libltdl --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' -o coverage.txt
+ - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' --xml -o coverage.xml
+ - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' --html-details -o coverage.html
+ - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' -o coverage.txt
- tail -n 3 coverage.txt
artifacts:
paths:
diff --git a/.lgtm.yml b/.lgtm.yml
index faf16513fa..3f36c409fa 100644
--- a/.lgtm.yml
+++ b/.lgtm.yml
@@ -29,7 +29,6 @@ path_classifiers:
- "**/*.5"
- "**/*.8"
queries:
- - exclude: libltdl/
- exclude: fuzz/
- exclude: "bin/tests/system/*/ans*/*.py"
- exclude: cpp/use-of-goto
diff --git a/Makefile.am b/Makefile.am
index 88c72f144d..f2005cfab7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
include $(top_srcdir)/Makefile.top
-SUBDIRS = . libltdl lib doc bin fuzz
+SUBDIRS = . lib doc bin fuzz
BUILT_SOURCES = bind.keys.h
CLEANFILES = bind.keys.h
diff --git a/Makefile.top b/Makefile.top
index 66aaecf7bd..c784c17518 100644
--- a/Makefile.top
+++ b/Makefile.top
@@ -93,9 +93,3 @@ LIBBIND9_CFLAGS = \
LIBBIND9_LIBS = \
$(top_builddir)/lib/bind9/libbind9.la
-
-LIBLTDL_CFLAGS = \
- -I$(top_srcdir)/libltdl
-
-LIBLTDL_LIBS = \
- $(top_builddir)/libltdl/libltdlc.la
diff --git a/README.md b/README.md
index 18a2ae3eb6..3921107923 100644
--- a/README.md
+++ b/README.md
@@ -201,7 +201,6 @@ installed:
autoconf (includes autoreconf)
automake
libtool
- libltdl-dev (Debian) / libtool-ltdl-dev (Fedora/CentOS) / libltdl (FreeBSD)
#### Compile-time options
diff --git a/bin/named/Makefile.am b/bin/named/Makefile.am
index ce783b8c30..1c9483a0c5 100644
--- a/bin/named/Makefile.am
+++ b/bin/named/Makefile.am
@@ -9,7 +9,6 @@ AM_CPPFLAGS += \
$(LIBISCCC_CFLAGS) \
$(LIBISCCFG_CFLAGS) \
$(LIBBIND9_CFLAGS) \
- $(LIBLTDL_CFLAGS) \
$(OPENSSL_CFLAGS) \
$(LIBCAP_CFLAGS) \
$(LMDB_CFLAGS) \
diff --git a/bin/named/unix/dlz_dlopen_driver.c b/bin/named/unix/dlz_dlopen_driver.c
index 4cee110f78..df11984970 100644
--- a/bin/named/unix/dlz_dlopen_driver.c
+++ b/bin/named/unix/dlz_dlopen_driver.c
@@ -10,11 +10,11 @@
*/
#include
-#include
#include
#include
#include
#include
+#include
#include
#include
@@ -34,7 +34,7 @@ typedef struct dlopen_data {
isc_mem_t *mctx;
char *dl_path;
char *dlzname;
- void *dl_handle;
+ uv_lib_t dl_handle;
void *dbdata;
unsigned int flags;
isc_mutex_t lock;
@@ -180,9 +180,10 @@ dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg,
*/
static void *
dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) {
- void *ptr = lt_dlsym((lt_dlhandle)cd->dl_handle, symbol);
- if (ptr == NULL) {
- const char *errmsg = lt_dlerror();
+ void *ptr = NULL;
+ int r = uv_dlsym(&cd->dl_handle, symbol, &ptr);
+ if (r != 0) {
+ const char *errmsg = uv_dlerror(&cd->dl_handle);
if (errmsg == NULL) {
errmsg = "returned function pointer is NULL";
}
@@ -209,6 +210,7 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
dlopen_data_t *cd;
isc_mem_t *mctx = NULL;
isc_result_t result = ISC_R_FAILURE;
+ int r;
UNUSED(driverarg);
@@ -220,10 +222,6 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
return (ISC_R_FAILURE);
}
- if (lt_dlinit() != 0) {
- return (ISC_R_FAILURE);
- }
-
isc_mem_create(&mctx);
cd = isc_mem_get(mctx, sizeof(*cd));
memset(cd, 0, sizeof(*cd));
@@ -236,9 +234,9 @@ dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[],
/* Initialize the lock */
isc_mutex_init(&cd->lock);
- cd->dl_handle = lt_dlopenext(cd->dl_path);
- if (cd->dl_handle == NULL) {
- const char *errmsg = lt_dlerror();
+ r = uv_dlopen(cd->dl_path, &cd->dl_handle);
+ if (r != 0) {
+ const char *errmsg = uv_dlerror(&cd->dl_handle);
if (errmsg == NULL) {
errmsg = "unknown error";
}
@@ -347,9 +345,7 @@ dlopen_dlz_destroy(void *driverarg, void *dbdata) {
MAYBE_UNLOCK(cd);
}
- if (cd->dl_handle) {
- lt_dlclose(cd->dl_handle);
- }
+ uv_dlclose(&cd->dl_handle);
isc_mutex_destroy(&cd->lock);
isc_mem_free(cd->mctx, cd->dl_path);
isc_mem_free(cd->mctx, cd->dlzname);
diff --git a/bin/plugins/filter-aaaa.c b/bin/plugins/filter-aaaa.c
index 3ba38f8fc2..f530b596ad 100644
--- a/bin/plugins/filter-aaaa.c
+++ b/bin/plugins/filter-aaaa.c
@@ -13,11 +13,6 @@
/* aliases for the exported symbols */
-#define plugin_destroy filter_aaaa_LTX_plugin_destroy
-#define plugin_register filter_aaaa_LTX_plugin_register
-#define plugin_version filter_aaaa_LTX_plugin_version
-#define plugin_check filter_aaaa_LTX_plugin_check
-
#include
#include
#include
diff --git a/bin/tests/system/dlzexternal/driver/driver.c b/bin/tests/system/dlzexternal/driver/driver.c
index 952171b38b..3a98a32f5b 100644
--- a/bin/tests/system/dlzexternal/driver/driver.c
+++ b/bin/tests/system/dlzexternal/driver/driver.c
@@ -32,21 +32,6 @@
/* aliases for exported symbols */
-#define dlz_version dlzexternal_LTX_dlz_version
-#define dlz_create dlzexternal_LTX_dlz_create
-#define dlz_destroy dlzexternal_LTX_dlz_destroy
-#define dlz_findzonedb dlzexternal_LTX_dlz_findzonedb
-#define dlz_lookup dlzexternal_LTX_dlz_lookup
-#define dlz_allowzonexfr dlzexternal_LTX_dlz_allowzonexfr
-#define dlz_allnodes dlzexternal_LTX_dlz_allnodes
-#define dlz_newversion dlzexternal_LTX_dlz_newversion
-#define dlz_closeversion dlzexternal_LTX_dlz_closeversion
-#define dlz_configure dlzexternal_LTX_dlz_configure
-#define dlz_ssumatch dlzexternal_LTX_dlz_ssumatch
-#define dlz_addrdataset dlzexternal_LTX_dlz_addrdataset
-#define dlz_sbrdataset dlzexternal_LTX_dlz_sbrdataset
-#define dlz_delrdataset dlzexternal_LTX_dlz_delrdataset
-
dlz_dlopen_version_t dlz_version;
dlz_dlopen_create_t dlz_create;
dlz_dlopen_destroy_t dlz_destroy;
diff --git a/bin/tests/system/dlzexternal/ns1/named.conf.in b/bin/tests/system/dlzexternal/ns1/named.conf.in
index 8eb46cc33f..1fa0d45809 100644
--- a/bin/tests/system/dlzexternal/ns1/named.conf.in
+++ b/bin/tests/system/dlzexternal/ns1/named.conf.in
@@ -35,29 +35,29 @@ controls {
};
dlz "example one" {
- database "dlopen ../driver/dlzexternal.la example.nil";
+ database "dlopen ../driver/.libs/dlzexternal.so example.nil";
};
dlz "example two" {
- database "dlopen ../driver/dlzexternal.la alternate.nil";
+ database "dlopen ../driver/.libs/dlzexternal.so alternate.nil";
};
dlz "example three" {
- database "dlopen ../driver/dlzexternal.la example.org";
+ database "dlopen ../driver/.libs/dlzexternal.so example.org";
};
dlz "unsearched1" {
- database "dlopen ../driver/dlzexternal.la other.nil";
+ database "dlopen ../driver/.libs/dlzexternal.so other.nil";
search no;
};
dlz "unsearched2" {
- database "dlopen ../driver/dlzexternal.la zone.nil";
+ database "dlopen ../driver/.libs/dlzexternal.so zone.nil";
search no;
};
dlz redzone {
- database "dlopen ../driver/dlzexternal.la .";
+ database "dlopen ../driver/.libs/dlzexternal.so .";
search no;
};
diff --git a/bin/tests/system/dyndb/driver/driver.c b/bin/tests/system/dyndb/driver/driver.c
index 0ed2937bce..1af50c6c14 100644
--- a/bin/tests/system/dyndb/driver/driver.c
+++ b/bin/tests/system/dyndb/driver/driver.c
@@ -33,10 +33,6 @@
/* aliases for the exported symbols */
-#define dyndb_init sample_LTX_dyndb_init
-#define dyndb_destroy sample_LTX_dyndb_destroy
-#define dyndb_version sample_LTX_dyndb_version
-
dns_dyndb_destroy_t dyndb_destroy;
dns_dyndb_register_t dyndb_init;
dns_dyndb_version_t dyndb_version;
diff --git a/bin/tests/system/dyndb/ns1/named.conf.in b/bin/tests/system/dyndb/ns1/named.conf.in
index 49828ef620..bc49e5d64a 100644
--- a/bin/tests/system/dyndb/ns1/named.conf.in
+++ b/bin/tests/system/dyndb/ns1/named.conf.in
@@ -33,5 +33,5 @@ controls {
inet 10.53.0.1 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
};
-dyndb sample "../driver/sample.la" { ipv4.example.nil. in-addr.arpa. };
-dyndb sample2 "../driver/sample.la" { ipv6.example.nil. 8.b.d.0.1.0.0.2.ip6.arpa. };
+dyndb sample "../driver/.libs/sample.so" { ipv4.example.nil. in-addr.arpa. };
+dyndb sample2 "../driver/.libs/sample.so" { ipv6.example.nil. 8.b.d.0.1.0.0.2.ip6.arpa. };
diff --git a/bin/tests/system/filter-aaaa/conf/bad1.conf b/bin/tests/system/filter-aaaa/conf/bad1.conf
index 97ce0dcad7..e09f27e6f3 100644
--- a/bin/tests/system/filter-aaaa/conf/bad1.conf
+++ b/bin/tests/system/filter-aaaa/conf/bad1.conf
@@ -9,7 +9,7 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { none; };
};
diff --git a/bin/tests/system/filter-aaaa/conf/bad2.conf b/bin/tests/system/filter-aaaa/conf/bad2.conf
index a9410aa523..bc22c3a9e7 100644
--- a/bin/tests/system/filter-aaaa/conf/bad2.conf
+++ b/bin/tests/system/filter-aaaa/conf/bad2.conf
@@ -9,7 +9,7 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
/*
* While this matches the defaults, it is not a good configuration
* to have in named.conf as the two options contradict each other
diff --git a/bin/tests/system/filter-aaaa/conf/bad3.conf b/bin/tests/system/filter-aaaa/conf/bad3.conf
index 091cf147aa..9d4aa9a6fd 100644
--- a/bin/tests/system/filter-aaaa/conf/bad3.conf
+++ b/bin/tests/system/filter-aaaa/conf/bad3.conf
@@ -10,7 +10,7 @@
*/
view myview {
- plugin query "../../../plugins/filter-aaaa.la" {
+ plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 no;
filter-aaaa { any; };
};
diff --git a/bin/tests/system/filter-aaaa/conf/bad4.conf b/bin/tests/system/filter-aaaa/conf/bad4.conf
index a21ac4fdfb..2db334c815 100644
--- a/bin/tests/system/filter-aaaa/conf/bad4.conf
+++ b/bin/tests/system/filter-aaaa/conf/bad4.conf
@@ -10,7 +10,7 @@
*/
view myview {
- plugin query "../../../plugins/filter-aaaa.la" {
+ plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { none; };
};
diff --git a/bin/tests/system/filter-aaaa/conf/bad5.conf b/bin/tests/system/filter-aaaa/conf/bad5.conf
index 54c3abb9ee..7aa2633e58 100644
--- a/bin/tests/system/filter-aaaa/conf/bad5.conf
+++ b/bin/tests/system/filter-aaaa/conf/bad5.conf
@@ -9,7 +9,7 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { 1.0.0.0/8; };
};
diff --git a/bin/tests/system/filter-aaaa/conf/good1.conf b/bin/tests/system/filter-aaaa/conf/good1.conf
index 9f29bfd15b..d1b26c55d4 100644
--- a/bin/tests/system/filter-aaaa/conf/good1.conf
+++ b/bin/tests/system/filter-aaaa/conf/good1.conf
@@ -9,6 +9,6 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
};
diff --git a/bin/tests/system/filter-aaaa/conf/good2.conf b/bin/tests/system/filter-aaaa/conf/good2.conf
index 93c7abdb48..fb9073a0fc 100644
--- a/bin/tests/system/filter-aaaa/conf/good2.conf
+++ b/bin/tests/system/filter-aaaa/conf/good2.conf
@@ -9,6 +9,6 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 break-dnssec;
};
diff --git a/bin/tests/system/filter-aaaa/conf/good3.conf b/bin/tests/system/filter-aaaa/conf/good3.conf
index 853f341aa1..4021d34e1e 100644
--- a/bin/tests/system/filter-aaaa/conf/good3.conf
+++ b/bin/tests/system/filter-aaaa/conf/good3.conf
@@ -9,7 +9,7 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 break-dnssec;
filter-aaaa { 1.0.0.0/8; };
};
diff --git a/bin/tests/system/filter-aaaa/conf/good4.conf b/bin/tests/system/filter-aaaa/conf/good4.conf
index dad7b5bfc3..0cdb747c21 100644
--- a/bin/tests/system/filter-aaaa/conf/good4.conf
+++ b/bin/tests/system/filter-aaaa/conf/good4.conf
@@ -9,7 +9,7 @@
* information regarding copyright ownership.
*/
-plugin query "../../../plugins/filter-aaaa.la" {
+plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { 1.0.0.0/8; };
};
diff --git a/bin/tests/system/filter-aaaa/conf/good5.conf b/bin/tests/system/filter-aaaa/conf/good5.conf
index c26e57a5d6..0c2cd6e52c 100644
--- a/bin/tests/system/filter-aaaa/conf/good5.conf
+++ b/bin/tests/system/filter-aaaa/conf/good5.conf
@@ -10,7 +10,7 @@
*/
view myview {
- plugin query "../../../plugins/filter-aaaa.la" {
+ plugin query "../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { 1.0.0.0/8; };
};
diff --git a/bin/tests/system/filter-aaaa/ns1/named1.conf.in b/bin/tests/system/filter-aaaa/ns1/named1.conf.in
index a72007d76e..6996b9601c 100644
--- a/bin/tests/system/filter-aaaa/ns1/named1.conf.in
+++ b/bin/tests/system/filter-aaaa/ns1/named1.conf.in
@@ -25,7 +25,7 @@ options {
acl filterees { 10.53.0.1; };
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { filterees; };
};
diff --git a/bin/tests/system/filter-aaaa/ns1/named2.conf.in b/bin/tests/system/filter-aaaa/ns1/named2.conf.in
index fbc4b721d5..7fcaec11e5 100644
--- a/bin/tests/system/filter-aaaa/ns1/named2.conf.in
+++ b/bin/tests/system/filter-aaaa/ns1/named2.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v6 yes;
filter-aaaa { fd92:7065:b8e:ffff::1; };
};
diff --git a/bin/tests/system/filter-aaaa/ns2/named1.conf.in b/bin/tests/system/filter-aaaa/ns2/named1.conf.in
index bd20634170..bb2f6cbfc2 100644
--- a/bin/tests/system/filter-aaaa/ns2/named1.conf.in
+++ b/bin/tests/system/filter-aaaa/ns2/named1.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 yes;
filter-aaaa { 10.53.0.2; };
};
diff --git a/bin/tests/system/filter-aaaa/ns2/named2.conf.in b/bin/tests/system/filter-aaaa/ns2/named2.conf.in
index 831e017f6f..9d779d9870 100644
--- a/bin/tests/system/filter-aaaa/ns2/named2.conf.in
+++ b/bin/tests/system/filter-aaaa/ns2/named2.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v6 yes;
filter-aaaa { fd92:7065:b8e:ffff::2; };
};
diff --git a/bin/tests/system/filter-aaaa/ns3/named1.conf.in b/bin/tests/system/filter-aaaa/ns3/named1.conf.in
index db30e0b469..602fadd573 100644
--- a/bin/tests/system/filter-aaaa/ns3/named1.conf.in
+++ b/bin/tests/system/filter-aaaa/ns3/named1.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 break-dnssec;
filter-aaaa { 10.53.0.3; };
};
diff --git a/bin/tests/system/filter-aaaa/ns3/named2.conf.in b/bin/tests/system/filter-aaaa/ns3/named2.conf.in
index 48dc568cf1..372cf66b11 100644
--- a/bin/tests/system/filter-aaaa/ns3/named2.conf.in
+++ b/bin/tests/system/filter-aaaa/ns3/named2.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v6 break-dnssec;
filter-aaaa { fd92:7065:b8e:ffff::3; };
};
diff --git a/bin/tests/system/filter-aaaa/ns4/named1.conf.in b/bin/tests/system/filter-aaaa/ns4/named1.conf.in
index 44fcd7cdbc..0f48a9e541 100644
--- a/bin/tests/system/filter-aaaa/ns4/named1.conf.in
+++ b/bin/tests/system/filter-aaaa/ns4/named1.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 break-dnssec;
filter-aaaa { 10.53.0.4; };
};
diff --git a/bin/tests/system/filter-aaaa/ns4/named2.conf.in b/bin/tests/system/filter-aaaa/ns4/named2.conf.in
index 93af1bae13..c11a8024ed 100644
--- a/bin/tests/system/filter-aaaa/ns4/named2.conf.in
+++ b/bin/tests/system/filter-aaaa/ns4/named2.conf.in
@@ -23,7 +23,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v6 break-dnssec;
filter-aaaa { fd92:7065:b8e:ffff::4; };
};
diff --git a/bin/tests/system/filter-aaaa/ns5/named.conf.in b/bin/tests/system/filter-aaaa/ns5/named.conf.in
index 4712c5aef4..4d3aa0b76e 100644
--- a/bin/tests/system/filter-aaaa/ns5/named.conf.in
+++ b/bin/tests/system/filter-aaaa/ns5/named.conf.in
@@ -28,7 +28,7 @@ options {
minimal-responses no;
};
-plugin query "../../../../plugins/filter-aaaa.la" {
+plugin query "../../../../plugins/.libs/filter-aaaa.so" {
filter-aaaa-on-v4 break-dnssec;
filter-aaaa { any; };
};
diff --git a/configure.ac b/configure.ac
index 54ea36f2c3..6c16a76c19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -124,10 +124,6 @@ LT_INIT([disable-static dlopen pic-only])
AS_IF([test "$enable_static" != "no" && test "$enable_developer" != "yes"],
[AC_MSG_ERROR([Static linking is not supported as it disables dlopen() and certain security features (e.g. RELRO, ASLR)])])
-LT_CONFIG_LTDL_DIR([libltdl])
-LTDL_INIT([recursive])
-AC_CONFIG_FILES([libltdl/Makefile])
-
#
# Set the default CFLAGS and CPPFLAGS
#
diff --git a/lib/dns/Makefile.am b/lib/dns/Makefile.am
index 78bd453f90..e830aed295 100644
--- a/lib/dns/Makefile.am
+++ b/lib/dns/Makefile.am
@@ -25,7 +25,7 @@ gen_SOURCES = gen.c gen-unix.h
gen_CPPFLAGS = \
$(AM_CPPFLAGS)
-EXTRA_DIST = \
+EXTRA_DIST = \
api \
dnstap.proto \
gen-win32.h \
@@ -277,10 +277,10 @@ endif
libdns_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
- $(LIBISC_CFLAGS) \
$(LIBDNS_CFLAGS) \
- $(OPENSSL_CFLAGS) \
- $(LIBLTDL_CFLAGS)
+ $(LIBISC_CFLAGS) \
+ $(LIBUV_CFLAGS) \
+ $(OPENSSL_CFLAGS)
libdns_la_LDFLAGS = \
$(AM_LDFLAGS) \
@@ -288,6 +288,7 @@ libdns_la_LDFLAGS = \
libdns_la_LIBADD = \
$(LIBISC_LIBS) \
+ $(LIBUV_LIBS) \
$(OPENSSL_LIBS)
if HAVE_JSON_C
diff --git a/lib/dns/dyndb.c b/lib/dns/dyndb.c
index b91a2b9f26..d9c536e91d 100644
--- a/lib/dns/dyndb.c
+++ b/lib/dns/dyndb.c
@@ -9,8 +9,8 @@
* information regarding copyright ownership.
*/
-#include
#include
+#include
#include
#include
@@ -38,7 +38,7 @@
typedef struct dyndb_implementation dyndb_implementation_t;
struct dyndb_implementation {
isc_mem_t *mctx;
- void *handle;
+ uv_lib_t handle;
dns_dyndb_register_t *register_func;
dns_dyndb_destroy_t *destroy_func;
char *name;
@@ -79,16 +79,17 @@ impfind(const char *name) {
}
static isc_result_t
-load_symbol(lt_dlhandle handle, const char *filename, const char *symbol_name,
+load_symbol(uv_lib_t *handle, const char *filename, const char *symbol_name,
void **symbolp) {
void *symbol;
+ int r;
REQUIRE(handle != NULL);
REQUIRE(symbolp != NULL && *symbolp == NULL);
- symbol = lt_dlsym(handle, symbol_name);
- if (symbol == NULL) {
- const char *errmsg = lt_dlerror();
+ r = uv_dlsym(handle, symbol_name, &symbol);
+ if (r != 0) {
+ const char *errmsg = uv_dlerror(handle);
if (errmsg == NULL) {
errmsg = "returned function pointer is NULL";
}
@@ -115,6 +116,7 @@ load_library(isc_mem_t *mctx, const char *filename, const char *instname,
dyndb_implementation_t *imp = NULL;
dns_dyndb_version_t *version_func = NULL;
int version;
+ int r;
REQUIRE(impp != NULL && *impp == NULL);
@@ -130,13 +132,9 @@ load_library(isc_mem_t *mctx, const char *filename, const char *instname,
INIT_LINK(imp, link);
- if (lt_dlinit() != 0) {
- CHECK(ISC_R_FAILURE);
- }
-
- imp->handle = lt_dlopen(filename);
- if (imp->handle == NULL) {
- const char *errmsg = lt_dlerror();
+ r = uv_dlopen(filename, &imp->handle);
+ if (r != 0) {
+ const char *errmsg = uv_dlerror(&imp->handle);
if (errmsg == NULL) {
errmsg = "unknown error";
}
@@ -148,7 +146,7 @@ load_library(isc_mem_t *mctx, const char *filename, const char *instname,
CHECK(ISC_R_FAILURE);
}
- CHECK(load_symbol(imp->handle, filename, "dyndb_version",
+ CHECK(load_symbol(&imp->handle, filename, "dyndb_version",
(void **)&version_func));
version = version_func(NULL);
@@ -162,9 +160,9 @@ load_library(isc_mem_t *mctx, const char *filename, const char *instname,
CHECK(ISC_R_FAILURE);
}
- CHECK(load_symbol(imp->handle, filename, "dyndb_init",
+ CHECK(load_symbol(&imp->handle, filename, "dyndb_init",
(void **)&imp->register_func));
- CHECK(load_symbol(imp->handle, filename, "dyndb_destroy",
+ CHECK(load_symbol(&imp->handle, filename, "dyndb_destroy",
(void **)&imp->destroy_func));
*impp = imp;
@@ -196,9 +194,7 @@ unload_library(dyndb_implementation_t **impp) {
* This is a resource leak, but there is nothing we can currently do
* about it due to how configuration loading/reloading is designed.
*/
- if (imp->handle != NULL) {
- (void)lt_dlclose(imp->handle);
- }
+ /* uv_dlclose(&imp->handle); */
isc_mem_free(imp->mctx, imp->name);
isc_mem_putanddetach(&imp->mctx, imp, sizeof(*imp));
}
diff --git a/lib/dns/win32/libdns.vcxproj.in b/lib/dns/win32/libdns.vcxproj.in
index 6c9fbd62b8..cc008979dd 100644
--- a/lib/dns/win32/libdns.vcxproj.in
+++ b/lib/dns/win32/libdns.vcxproj.in
@@ -61,7 +61,7 @@
Disabled
BIND9;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDNS_EXPORTS;%(PreprocessorDefinitions);%(PreprocessorDefinitions);%(PreprocessorDefinitions)
..\..\..\config.h
- .\;..\..\..\;include;..\include;..\..\isc;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;@LIBXML2_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
+ .\;..\..\..\;include;..\include;..\..\isc;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;@LIBXML2_INC@@LIBUV_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
true
.\$(Configuration)\$(TargetName).pch
.\$(Configuration)\
@@ -75,7 +75,7 @@
true
..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)
..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)
- @OPENSSL_LIB@libisc.lib;@LIBXML2_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
+ @LIBUV_LIB@@OPENSSL_LIB@libisc.lib;@LIBXML2_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
$(ProjectName).def
.\$(Configuration)\$(ProjectName).lib
@@ -91,7 +91,7 @@
@INTRINSIC@
BIND9;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDNS_EXPORTS;%(PreprocessorDefinitions);%(PreprocessorDefinitions);%(PreprocessorDefinitions)
..\..\..\config.h
- .\;..\..\..\;include;..\include;..\..\isc;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;@LIBXML2_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
+ .\;..\..\..\;include;..\include;..\..\isc;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;@LIBXML2_INC@@LIBUV_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
OnlyExplicitInline
true
.\$(Configuration)\$(TargetName).pch
@@ -108,7 +108,7 @@
true
..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)
..\..\isc\win32\$(Configuration);%(AdditionalLibraryDirectories)
- @OPENSSL_LIB@libisc.lib;@LIBXML2_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
+ @LIBUV_LIB@@OPENSSL_LIB@libisc.lib;@LIBXML2_LIB@@GSSAPI_LIB@@KRB5_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
$(ProjectName).def
.\$(Configuration)\$(ProjectName).lib
Default
diff --git a/lib/isc/Makefile.am b/lib/isc/Makefile.am
index 717da02e56..7b025e1d0d 100644
--- a/lib/isc/Makefile.am
+++ b/lib/isc/Makefile.am
@@ -230,7 +230,6 @@ libisc_la_LDFLAGS = \
$(libisc_VERSION_INFO)
libisc_la_LIBADD = \
- $(LIBLTDL_LIBS) \
$(LIBUV_LIBS) \
$(OPENSSL_LIBS) \
$(ZLIB_LIBS)
diff --git a/lib/isc/win32/ltdl.h b/lib/isc/win32/ltdl.h
deleted file mode 100644
index c032524061..0000000000
--- a/lib/isc/win32/ltdl.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, you can obtain one at https://mozilla.org/MPL/2.0/.
- *
- * See the COPYRIGHT file distributed with this work for additional
- * information regarding copyright ownership.
- */
-
-#pragma once
-
-#include
-
-#define lt_dlhandle HMODULE
-#define lt_dlinit() ISC_R_SUCCESS
-#define lt_dlopen(f) LoadLibraryW(f)
-#define lt_dlsym(h, s) GetProcAddress(h, s)
-#define lt_dlclose(h) FreeLibrary(h)
-
-__declspec(thread) LPSTR __dlerror_message[1024] = { 0 };
-
-static const char *
-lt_dlerror(void) {
- DWORD errorMessageID = GetLastError();
- if (errorMessageID == 0) {
- return (NULL);
- }
-
- LPSTR messageBuffer = NULL;
- size_t size = FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPSTR)&messageBuffer, 0, NULL);
-
- strlcpy(__dlerror_message, messageBuffer, sizeof(__dlerror_message));
-
- LocalFree(messageBuffer);
-
- return ((const char *)__dlerror_message);
-}
diff --git a/lib/ns/Makefile.am b/lib/ns/Makefile.am
index 7f79af4292..5c93b2e85b 100644
--- a/lib/ns/Makefile.am
+++ b/lib/ns/Makefile.am
@@ -41,14 +41,15 @@ libns_la_SOURCES = \
libns_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
- $(LIBISC_CFLAGS) \
$(LIBDNS_CFLAGS) \
+ $(LIBISC_CFLAGS) \
$(LIBNS_CFLAGS) \
- $(LIBLTDL_CFLAGS)
+ $(LIBUV_CFLAGS)
libns_la_LIBADD = \
+ $(LIBDNS_LIBS) \
$(LIBISC_LIBS) \
- $(LIBDNS_LIBS)
+ $(LIBUV_LIBS)
libns_la_LDFLAGS = \
$(AM_LDFLAGS) \
diff --git a/lib/ns/hooks.c b/lib/ns/hooks.c
index 4e9bc9e632..9cb2fe4fb8 100644
--- a/lib/ns/hooks.c
+++ b/lib/ns/hooks.c
@@ -12,9 +12,9 @@
/*! \file */
#include
-#include
#include
#include
+#include
#include
#include
@@ -43,7 +43,7 @@
struct ns_plugin {
isc_mem_t *mctx;
- void *handle;
+ uv_lib_t handle;
void *inst;
char *modpath;
ns_plugin_check_t *check_func;
@@ -91,16 +91,17 @@ ns_plugin_expandpath(const char *src, char *dst, size_t dstsize) {
}
static isc_result_t
-load_symbol(void *handle, const char *modpath, const char *symbol_name,
+load_symbol(uv_lib_t *handle, const char *modpath, const char *symbol_name,
void **symbolp) {
void *symbol = NULL;
+ int r;
REQUIRE(handle != NULL);
REQUIRE(symbolp != NULL && *symbolp == NULL);
- symbol = lt_dlsym(handle, symbol_name);
- if (symbol == NULL) {
- const char *errmsg = lt_dlerror();
+ r = uv_dlsym(handle, symbol_name, &symbol);
+ if (r != 0) {
+ const char *errmsg = uv_dlerror(handle);
if (errmsg == NULL) {
errmsg = "returned function pointer is NULL";
}
@@ -126,6 +127,7 @@ load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
ns_plugin_t *plugin = NULL;
ns_plugin_version_t *version_func = NULL;
int version;
+ int r;
REQUIRE(pluginp != NULL && *pluginp == NULL);
@@ -137,13 +139,9 @@ load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
ISC_LINK_INIT(plugin, link);
- if (lt_dlinit() != 0) {
- CHECK(ISC_R_FAILURE);
- }
-
- plugin->handle = lt_dlopen(modpath);
- if (plugin->handle == NULL) {
- const char *errmsg = lt_dlerror();
+ r = uv_dlopen(modpath, &plugin->handle);
+ if (r != 0) {
+ const char *errmsg = uv_dlerror(&plugin->handle);
if (errmsg == NULL) {
errmsg = "unknown error";
}
@@ -154,7 +152,7 @@ load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
CHECK(ISC_R_FAILURE);
}
- CHECK(load_symbol(plugin->handle, modpath, "plugin_version",
+ CHECK(load_symbol(&plugin->handle, modpath, "plugin_version",
(void **)&version_func));
version = version_func();
@@ -168,11 +166,11 @@ load_plugin(isc_mem_t *mctx, const char *modpath, ns_plugin_t **pluginp) {
CHECK(ISC_R_FAILURE);
}
- CHECK(load_symbol(plugin->handle, modpath, "plugin_check",
+ CHECK(load_symbol(&plugin->handle, modpath, "plugin_check",
(void **)&plugin->check_func));
- CHECK(load_symbol(plugin->handle, modpath, "plugin_register",
+ CHECK(load_symbol(&plugin->handle, modpath, "plugin_register",
(void **)&plugin->register_func));
- CHECK(load_symbol(plugin->handle, modpath, "plugin_destroy",
+ CHECK(load_symbol(&plugin->handle, modpath, "plugin_destroy",
(void **)&plugin->destroy_func));
*pluginp = plugin;
@@ -207,9 +205,7 @@ unload_plugin(ns_plugin_t **pluginp) {
plugin->destroy_func(&plugin->inst);
}
- if (plugin->handle != NULL) {
- (void)lt_dlclose(plugin->handle);
- }
+ uv_dlclose(&plugin->handle);
isc_mem_free(plugin->mctx, plugin->modpath);
isc_mem_putanddetach(&plugin->mctx, plugin, sizeof(*plugin));
}
diff --git a/lib/ns/win32/libns.vcxproj.in b/lib/ns/win32/libns.vcxproj.in
index 48488d14e0..41604ba171 100644
--- a/lib/ns/win32/libns.vcxproj.in
+++ b/lib/ns/win32/libns.vcxproj.in
@@ -60,7 +60,7 @@
Disabled
WIN32;_DEBUG;_USRDLL;LIBNS_EXPORTS;%(PreprocessorDefinitions)
..\..\..\config.h
- .\;..\..\..\;include;..\include;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;..\..\..\lib\dns\include;@LIBXML2_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
+ .\;..\..\..\;include;..\include;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;..\..\..\lib\dns\include;@LIBXML2_INC@@LIBUV_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
true
.\$(Configuration)\$(TargetName).pch
.\$(Configuration)\
@@ -74,7 +74,7 @@
true
..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)
..\..\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)
- @OPENSSL_LIB@libisc.lib;libdns.lib;@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
+ @LIBUV_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
$(ProjectName).def
.\$(Configuration)\$(ProjectName).lib
@@ -90,7 +90,7 @@
@INTRINSIC@
WIN32;NDEBUG;_USRDLL;LIBNS_EXPORTS;%(PreprocessorDefinitions)
..\..\..\config.h
- .\;..\..\..\;include;..\include;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;..\..\..\lib\dns\include;@LIBXML2_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
+ .\;..\..\..\;include;..\include;..\..\isc\win32;..\..\isc\win32\include;..\..\isc\include;..\..\..\lib\dns\include;@LIBXML2_INC@@LIBUV_INC@@OPENSSL_INC@@GSSAPI_INC@@GEOIP_INC@%(AdditionalIncludeDirectories)
OnlyExplicitInline
true
.\$(Configuration)\$(TargetName).pch
@@ -107,7 +107,7 @@
true
..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)
..\..\isc\win32\$(Configuration);..\..\..\lib\dns\win32\$(Configuration);%(AdditionalLibraryDirectories)
- @OPENSSL_LIB@libisc.lib;libdns.lib;@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
+ @LIBUV_LIB@@OPENSSL_LIB@libisc.lib;libdns.lib;@LIBXML2_LIB@@GSSAPI_LIB@@GEOIP_LIB@ws2_32.lib;%(AdditionalDependencies)
$(ProjectName).def
.\$(Configuration)\$(ProjectName).lib
Default
diff --git a/util/copyrights b/util/copyrights
index 20d0240542..c3f702b7a7 100644
--- a/util/copyrights
+++ b/util/copyrights
@@ -2023,7 +2023,6 @@
./lib/isc/win32/libisc.vcxproj.filters.in X 2013,2014,2015,2016,2018,2019,2020
./lib/isc/win32/libisc.vcxproj.in X 2013,2014,2015,2016,2017,2018,2019,2020
./lib/isc/win32/libisc.vcxproj.user X 2013,2018,2019,2020
-./lib/isc/win32/ltdl.h C 2020
./lib/isc/win32/meminfo.c C 2015,2016,2018,2019,2020
./lib/isc/win32/net.c C 1999,2000,2001,2002,2003,2004,2005,2007,2008,2009,2011,2012,2013,2014,2015,2016,2018,2019,2020
./lib/isc/win32/netdb.h C 2000,2001,2004,2006,2007,2009,2013,2016,2018,2019,2020
diff --git a/util/suppressions.txt b/util/suppressions.txt
index bb86dd6fb2..ea5ff3b292 100644
--- a/util/suppressions.txt
+++ b/util/suppressions.txt
@@ -1,5 +1,3 @@
unmatchedSuppression:*
preprocessorErrorDirective:*
unknownMacro:*
-uselessAssignmentPtrArg:libltdl/loaders/preopen.c:201
-deallocret:libltdl/lt__alloc.c:78