ldns: Adjust makefiles for ldns-1.7.0 update.
authorzrj <rimvydas.jasinskas@gmail.com>
Mon, 15 Apr 2019 14:15:43 +0000 (17:15 +0300)
committerzrj <zrj@dragonflybsd.org>
Wed, 24 Apr 2019 17:14:22 +0000 (20:14 +0300)
Several changes:
 * move ldns.h to contrib
 * use single config.h
 * convert ldns headers to private (ldns is a private base lib)
 * bump soname for api changesmi, use shpub
 * add missing deps on librecrypto.so
 * update READMES

Currently only user of the libprivate_ldns is drill(1).
OpenSSH will be adjusted to use this lib next.

15 files changed:
Makefile_upgrade.inc
contrib/ldns/README.DELETED
contrib/ldns/README.DRAGONFLY
etc/mtree/BSD.include.dist
lib/libldns/Makefile
lib/libldns/ldns/common.h
lib/libldns/ldns/config.h
lib/libldns/ldns/ldns.h
lib/libldns/ldns/net.h
lib/libldns/ldns/util.h
lib/librecrypto/Makefile
usr.bin/drill/Makefile
usr.bin/drill/config.h [deleted file]
usr.bin/drill/drill.1
usr.bin/drill/drill.h [deleted file]

index 2af937f..1db91fd 100644 (file)
@@ -3634,6 +3634,8 @@ TO_REMOVE+=/usr/include/priv/openssl/cms.h
 TO_REMOVE+=/usr/include/priv/openssl/engine.h
 TO_REMOVE+=/usr/include/priv/openssl/krb5_asn.h
 TO_REMOVE+=/usr/include/priv/openssl/ui_compat.h
+TO_REMOVE+=/usr/include/ldns
+TO_REMOVE+=/usr/lib/priv/libprivate_ldns.so.1
 
 .if !defined(WANT_INSTALLER)
 TO_REMOVE+=/usr/sbin/dfuibe_installer
index 269934a..62e955b 100644 (file)
@@ -1,18 +1,39 @@
 Changelog
 Makefile.in
+README
+README.git
 README.snapshots
-README.svn
 aclocal.m4
 acx_nlnetlabs.m4
 ax_pkg_swig.m4
 ax_python_devel.m4
+compat/calloc.c
+compat/ctime_r.c
+compat/fake-rfc2553.c
+compat/fake-rfc2553.h
+compat/gmtime_r.c
+compat/inet_aton.c
+compat/inet_ntop.c
+compat/inet_pton.c
+compat/isascii.c
+compat/isblank.c
+compat/localtime_r.c
+compat/malloc.c
+compat/memmove.c
+compat/realloc.c
+compat/snprintf.c
+compat/strlcpy.c
+compat/timegm.c
 config.guess
 config.sub
 configure
 configure.ac
 contrib/
 doc/
+drill/ChangeLog.22-nov-2005
 drill/Makefile.in
+drill/README
+drill/REGRESSIONS
 drill/config.h.in
 drill/configure
 drill/configure.ac
@@ -22,10 +43,11 @@ examples/
 install-sh
 ldns/common.h.in
 ldns/config.h.in
-ldns/ldns.h
 ldns/net.h.in
 ldns/util.h.in
 libdns.doxygen
 libdns.vim
+linktest.c
 ltmain.sh
+m4/
 packaging/
index 471f94f..2123451 100644 (file)
@@ -4,14 +4,20 @@ LDNS
 Original source can be downloaded from:
 http://www.nlnetlabs.nl/downloads/ldns/
 
-file = ldns-1.6.16.tar.gz
-date = 13 November 2012
-size = 1109941
-sha1 = 5b4fc6c5c3078cd061905c47178478cb1015c62a
+file = ldns-1.7.0.tar.gz
+date = 20 December 2016
+size = 1304424
+sha1 = ceeeccf8a27e61a854762737f6ee02f44662c1b8
 
 A list of files and directories removed is in README.DELETED
 
-The following files have been patched:
-  ldns/keys.h                  added OPENSSL_NO_ENGINE checks
+Configured with
+===============
+./configure --prefix=/usr --disable-rpath --disable-dane-ta-usage --with-drill \
+           --with-trust-anchor=/usr/local/etc/unbound/root.key \
+           ac_cv_header_dlfcn_h=no
 
-dnssec_verify.c - to silence -Winit-self and not have to lower WARNS
+The following files have been patched (* planned)
+=================================================
+  dnssec_verify.c              to silence -Winit-self
+  keys.c                       added OPENSSL_NO_ENGINE checks
index 0b8fb2d..44e929c 100644 (file)
             ..
         ..
     ..
-    ldns
-    ..
     libprop
     ..
     lzma
     pcap
     ..
     priv
+        ldns
+        ..
         ncurses
         ..
         openssl
index ebce4fd..5668e21 100644 (file)
@@ -3,22 +3,23 @@
 LDNS=          ${.CURDIR}/../../contrib/ldns
 
 LIB=           private_ldns
-SHLIB_MAJOR=   1
-PRIVATELIB=
+SHLIB_MAJOR=   2
+PRIVATELIB=    shpub
 
 NO_STRICT_ALIASING=
 
-SRCS  =                rdata.c util.c rr.c packet.c wire2host.c \
-               host2str.c buffer.c str2host.c tsig.c resolver.c \
-               net.c host2wire.c dname.c dnssec.c dnssec_verify.c \
-               keys.c higher.c rr_functions.c parse.c update.c \
-               error.c zone.c dnssec_zone.c dnssec_sign.c rbtree.c \
-               sha1.c sha2.c
+SRCS+=         buffer.c dname.c dnssec.c dnssec_verify.c dnssec_zone.c \
+               error.c higher.c host2str.c host2wire.c keys.c net.c \
+               packet.c parse.c rbtree.c rdata.c resolver.c \
+               rr.c rr_functions.c sha1.c sha2.c \
+               str2host.c tsig.c util.c wire2host.c zone.c
+# not needed in base but included:
+SRCS+=         dane.c dnssec_sign.c duration.c radix.c update.c
 
-SRCS+=         b32_ntop.c b32_pton.c b64_ntop.c b64_pton.c
+SRCS+=         b64_ntop.c b64_pton.c
 
-INCSDIR=       ${INCLUDEDIR}/ldns
-INCS=          common.h ldns.h net.h util.h
+INCSDIR=       ${INCLUDEDIR}/priv/ldns
+INCS=          common.h net.h util.h
 INCS+=         buffer.h \
                dane.h \
                dname.h \
@@ -32,8 +33,10 @@ INCS+=               buffer.h \
                host2str.h \
                host2wire.h \
                keys.h \
+               ldns.h \
                packet.h\
                parse.h \
+               radix.h \
                rbtree.h \
                rdata.h \
                resolver.h \
@@ -50,7 +53,11 @@ INCS+=               buffer.h \
 .PATH:         ${LDNS} ${LDNS}/compat ${LDNS}/ldns ${.CURDIR}/ldns
 
 CFLAGS+=       -I${.CURDIR} -I${LDNS}
+
+LDADD=         -lprivate_crypto
+DPADD=         ${LIBCRYPTO}
 CFLAGS+=       -I${.CURDIR}/../../crypto/libressl/include
+LDFLAGS+=       -rpath /usr/lib/priv ${PRIVATELIB_LDFLAGS}
 
 WARNS?=                2
 
index 0767bc6..9abd9b9 100644 (file)
@@ -24,6 +24,9 @@
 #define LDNS_BUILD_CONFIG_HAVE_ATTR_FORMAT 1
 #define LDNS_BUILD_CONFIG_HAVE_ATTR_UNUSED 1
 #define LDNS_BUILD_CONFIG_HAVE_SOCKLEN_T   1
+#define LDNS_BUILD_CONFIG_USE_DANE         1
+#define LDNS_BUILD_CONFIG_HAVE_B32_PTON    0
+#define LDNS_BUILD_CONFIG_HAVE_B32_NTOP    0
 
 /*
  * HAVE_STDBOOL_H is not available when distributed as a library, but no build 
  */
 /*@ignore@*/
 /* splint barfs on this construct */
-#ifdef HAVE_STDBOOL_H
-# include <stdbool.h>
-#else
-# ifndef HAVE__BOOL
-#  ifdef __cplusplus
+#ifndef __bool_true_false_are_defined
+# ifdef HAVE_STDBOOL_H
+#  include <stdbool.h>
+# else
+#  ifndef HAVE__BOOL
+#   ifdef __cplusplus
 typedef bool _Bool;
-#  else
-#   define _Bool signed char
+#   else
+#    define _Bool signed char
+#   endif
 #  endif
+#  define bool _Bool
+#  define false 0
+#  define true 1
+#  define __bool_true_false_are_defined 1
 # endif
-# define bool _Bool
-# define false 0
-# define true 1
-# define __bool_true_false_are_defined 1
 #endif
 /*@end@*/
 
index ec8bb7b..aad1e9d 100644 (file)
    don't. */
 #define HAVE_DECL_NID_SECP384R1 1
 
+/* Define to 1 if you have the declaration of `NID_X25519', and to 0 if you
+   don't. */
+/* #undef HAVE_DECL_NID_X25519 */
+
+/* Define to 1 if you have the declaration of `NID_X448', and to 0 if you
+   don't. */
+/* #undef HAVE_DECL_NID_X448 */
+
 /* Define to 1 if you have the declaration of `NID_X9_62_prime256v1', and to 0
    if you don't. */
 #define HAVE_DECL_NID_X9_62_PRIME256V1 1
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have the `DSA_get0_key' function. */
+#define HAVE_DSA_GET0_KEY 1
+
+/* Define to 1 if you have the `DSA_get0_pqg' function. */
+#define HAVE_DSA_GET0_PQG 1
+
+/* Define to 1 if you have the `DSA_SIG_get0' function. */
+#define HAVE_DSA_SIG_GET0 1
+
+/* Define to 1 if you have the `DSA_SIG_set0' function. */
+#define HAVE_DSA_SIG_SET0 1
+
+/* Define to 1 if you have the `ECDSA_SIG_get0' function. */
+#define HAVE_ECDSA_SIG_GET0 1
 
 /* Define to 1 if you have the `endprotoent' function. */
 #define HAVE_ENDPROTOENT 1
 /* Define to 1 if you have the `endservent' function. */
 #define HAVE_ENDSERVENT 1
 
+/* Define to 1 if you have the `ENGINE_load_cryptodev' function. */
+/* #undef HAVE_ENGINE_LOAD_CRYPTODEV */
+
+/* Define to 1 if you have the `EVP_dss1' function. */
+#define HAVE_EVP_DSS1 1
+
+/* Define to 1 if you have the `EVP_MD_CTX_new' function. */
+#define HAVE_EVP_MD_CTX_NEW 1
+
+/* Define to 1 if you have the `EVP_PKEY_base_id' function. */
+#define HAVE_EVP_PKEY_BASE_ID 1
+
+/* Define to 1 if you have the `EVP_PKEY_keygen' function. */
+#define HAVE_EVP_PKEY_KEYGEN 1
+
 /* Define to 1 if you have the `EVP_sha256' function. */
 #define HAVE_EVP_SHA256 1
 
+/* Define to 1 if you have the `EVP_sha384' function. */
+#define HAVE_EVP_SHA384 1
+
+/* Define to 1 if you have the `EVP_sha512' function. */
+#define HAVE_EVP_SHA512 1
+
 /* Define to 1 if you have the `fcntl' function. */
 #define HAVE_FCNTL 1
 
 /* Define to 1 if you have the `gmtime_r' function. */
 #define HAVE_GMTIME_R 1
 
-/* If you have HMAC_CTX_init */
-#define HAVE_HMAC_CTX_INIT 1
+/* If you have HMAC_Update */
+#define HAVE_HMAC_UPDATE 1
 
 /* Define to 1 if you have the `inet_aton' function. */
 #define HAVE_INET_ATON 1
 /* Define to 1 if you have the `inet_pton' function. */
 #define HAVE_INET_PTON 1
 
-/* Define to 1 if the system has the type `intptr_t'. */
-#define HAVE_INTPTR_T 1
-
 /* define if you have inttypes.h */
 #define HAVE_INTTYPES_H 1
 
 /* Define to 1 if you have the `pcap' library (-lpcap). */
 /* #undef HAVE_LIBPCAP */
 
+/* Define if we have LibreSSL */
+#define HAVE_LIBRESSL 1
+
 /* Define to 1 if you have the `localtime_r' function. */
 #define HAVE_LOCALTIME_R 1
 
 /* Define to 1 if you have the <pcap.h> header file. */
 /* #undef HAVE_PCAP_H */
 
+/* This platform supports poll(7). */
+#define HAVE_POLL 1
+
 /* If available, contains the Python version number currently in use. */
 /* #undef HAVE_PYTHON */
 
 /* Is a CAPATH given at configure time */
 /* #undef LDNS_DANE_CA_PATH */
 
-/* Default trust anchor file */
-#define LDNS_TRUST_ANCHOR_FILE "/usr/local/etc/unbound/root.key"
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
 #define LT_OBJDIR ".libs/"
 
 /* Define to the address where bug reports for this package should be sent. */
 #define PACKAGE_NAME "ldns"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "ldns 1.6.16"
+#define PACKAGE_STRING "ldns 1.7.0"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libdns"
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.6.16"
+#define PACKAGE_VERSION "1.7.0"
+
+/* Define this to enable RR type AVC. */
+/* #undef RRTYPE_AVC */
+
+/* Define this to enable RR type NINFO. */
+/* #undef RRTYPE_NINFO */
+
+/* Define this to enable RR type OPENPGPKEY. */
+#define RRTYPE_OPENPGPKEY /**/
+
+/* Define this to enable RR type RKEY. */
+/* #undef RRTYPE_RKEY */
+
+/* Define this to enable RR type TA. */
+/* #undef RRTYPE_TA */
 
 /* The size of `time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T 4
+#define SIZEOF_TIME_T 8
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
+/* Define this to enable messages to stderr. */
+/* #undef STDERR_MSGS */
+
 /* System configuration dir */
 #define SYSCONFDIR sysconfdir
 
+/* Define this to enable DANE support. */
+#define USE_DANE 1
+
+/* Define this to enable DANE-TA usage type support. */
+/* #undef USE_DANE_TA_USAGE */
+
+/* Define this to enable DANE verify support. */
+#define USE_DANE_VERIFY 1
+
+/* Define this to enable DSA support. */
+#define USE_DSA 1
+
 /* Define this to enable ECDSA support. */
 #define USE_ECDSA 1
 
+/* Define this to enable ED25519 support. */
+/* #undef USE_ED25519 */
+
+/* Define this to enable ED448 support. */
+/* #undef USE_ED448 */
+
 /* Define this to enable GOST support. */
 /* #undef USE_GOST */
 
 /* Define to 1 if on MINIX. */
 /* #undef _MINIX */
 
+/* Enable for compile on Minix */
+/* #undef _NETBSD_SOURCE */
+
 /* Define to 2 if the system does not provide POSIX.1 features except with
    this defined. */
 /* #undef _POSIX_1_SOURCE */
 /* Define to `char' if <sys/types.h> does not define. */
 /* #undef int8_t */
 
-/* Define to the type of a signed integer type wide enough to hold a pointer,
-   if such a type exists, and if the system does not define it. */
+/* Define to `size_t' if <sys/types.h> does not define. */
 /* #undef intptr_t */
 
 /* Define to rpl_malloc if the replacement function should be used. */
 extern "C" {
 #endif
 
-#ifndef B64_PTON
 int ldns_b64_ntop(uint8_t const *src, size_t srclength,
                  char *target, size_t targsize);
 /**
@@ -500,8 +580,6 @@ static inline size_t ldns_b64_ntop_calculate_size(size_t srcsize)
 {
        return ((((srcsize + 2) / 3) * 4) + 1);
 }
-#endif /* !B64_PTON */
-#ifndef B64_NTOP
 int ldns_b64_pton(char const *src, uint8_t *target, size_t targsize);
 /**
  * calculates the size needed to store the result of ldns_b64_pton
@@ -511,7 +589,12 @@ static inline size_t ldns_b64_pton_calculate_size(size_t srcsize)
 {
        return (((((srcsize + 3) / 4) * 3)) + 1);
 }
-#endif /* !B64_NTOP */
+
+/**
+ * Given in dnssec_zone.c, also used in dnssec_sign.c:w
+
+ */
+int ldns_dname_compare_v(const void *a, const void *b);
 
 #ifndef HAVE_SLEEP
 /* use windows sleep, in millisecs, instead */
@@ -559,6 +642,15 @@ void *memmove(void *dest, const void *src, size_t n);
 #ifndef HAVE_STRLCPY
 size_t strlcpy(char *dst, const char *src, size_t siz);
 #endif
+
+#ifdef USE_WINSOCK
+#define SOCK_INVALID INVALID_SOCKET
+#define close_socket(_s) do { if (_s > SOCK_INVALID) {closesocket(_s); _s = SOCK_INVALID;} } while(0)
+#else
+#define SOCK_INVALID -1
+#define close_socket(_s) do { if (_s > SOCK_INVALID) {close(_s); _s = SOCK_INVALID;} } while(0)
+#endif
+
 #ifdef __cplusplus
 }
 #endif
@@ -569,3 +661,6 @@ size_t strlcpy(char *dst, const char *src, size_t siz);
 #define strtoul (unsigned long)strtol
 #endif
 
+/* Default trust anchor file */
+/* Added here from previous ldns version config.h, avoids long CFLAG */
+#define LDNS_TRUST_ANCHOR_FILE "/usr/local/etc/unbound/root.key"
index a41e032..60663ef 100644 (file)
@@ -26,7 +26,7 @@ faster than Perl.
 
 The first main tool to use ldns is Drill, from which part of the library was
 derived. From version 1.0.0 on, drill is included in the ldns release
-and will not be distributed seperately anymore. The library also includes some
+and will not be distributed separately anymore. The library also includes some
 other examples and tools to show how it can be used. These can be found in the
 examples/ directory in the tarball.
 
@@ -37,9 +37,9 @@ Feature list
   - TSIG support,
   - DNSSEC support; signing and verification,
   - small size,
-  - online documentation as well as manual pages. 
+  - online documentation as well as manual pages.
 
-If you want to send us patches please use the code from subversion (trunk). 
+If you want to send us patches please use the code from git.
 
 \section using_ldns Using ldns
 
@@ -119,6 +119,7 @@ Or you can just use the menu above to browse through the API docs.
 #include <ldns/parse.h>
 #include <ldns/zone.h>
 #include <ldns/dnssec_zone.h>
+#include <ldns/radix.h>
 #include <ldns/rbtree.h>
 #include <ldns/sha1.h>
 #include <ldns/sha2.h>
index cd7bc4b..fbf5b36 100644 (file)
@@ -50,7 +50,6 @@ ldns_status ldns_udp_send(uint8_t **result, ldns_buffer *qbin, const struct sock
  * \param[in] timeout *unused*, was the timeout value for the network
  * \return the socket used
  */
-
 int ldns_udp_bgsend(ldns_buffer *qbin, const struct sockaddr_storage *to, socklen_t tolen, struct timeval timeout);
 
 /**
@@ -167,7 +166,7 @@ uint8_t *ldns_tcp_read_wire(int sockfd, size_t *size);
  *
  * \param[in] sockfd the socket to read from
  * \param[in] fr the address of the client (if applicable)
- * \param[in] *frlen the lenght of the client's addr (if applicable)
+ * \param[in] *frlen the length of the client's addr (if applicable)
  * \param[out] size the number of bytes that are read
  * \return the data read
  */
@@ -189,7 +188,7 @@ struct sockaddr_storage * ldns_rdf2native_sockaddr_storage(const ldns_rdf *rd, u
  * \param[in] port what port was used. When NULL this is not set
  * \return ldns_rdf* wth the address
  */
-ldns_rdf * ldns_sockaddr_storage2rdf(struct sockaddr_storage *sock, uint16_t *port);
+ldns_rdf * ldns_sockaddr_storage2rdf(const struct sockaddr_storage *sock, uint16_t *port);
 
 /**
  * Prepares the resolver for an axfr query
@@ -199,7 +198,7 @@ ldns_rdf * ldns_sockaddr_storage2rdf(struct sockaddr_storage *sock, uint16_t *po
  * \param[in] c the class to use
  * \return ldns_status the status of the transfer
  */
-ldns_status ldns_axfr_start(ldns_resolver *resolver, ldns_rdf *domain, ldns_rr_class c);
+ldns_status ldns_axfr_start(ldns_resolver *resolver, const ldns_rdf *domain, ldns_rr_class c);
 
 #ifdef __cplusplus
 }
index a6441d0..be7f824 100644 (file)
@@ -27,8 +27,8 @@ extern "C" {
 #define dprintf(X,Y) fprintf(stderr, (X), (Y))
 /* #define     dprintf(X, Y)  */
 
-#define LDNS_VERSION "1.6.16"
-#define LDNS_REVISION ((1<<16)|(6<<8)|(16))
+#define LDNS_VERSION "1.7.0"
+#define LDNS_REVISION ((1<<16)|(7<<8)|(0))
 
 /**
  * splint static inline workaround
@@ -70,9 +70,9 @@ INLINE uint16_t
 ldns_read_uint16(const void *src)
 {
 #ifdef ALLOW_UNALIGNED_ACCESSES
-       return ntohs(*(uint16_t *) src);
+       return ntohs(*(const uint16_t *) src);
 #else
-       uint8_t *p = (uint8_t *) src;
+       const uint8_t *p = (const uint8_t *) src;
        return ((uint16_t) p[0] << 8) | (uint16_t) p[1];
 #endif
 }
@@ -81,9 +81,9 @@ INLINE uint32_t
 ldns_read_uint32(const void *src)
 {
 #ifdef ALLOW_UNALIGNED_ACCESSES
-       return ntohl(*(uint32_t *) src);
+       return ntohl(*(const uint32_t *) src);
 #else
-       uint8_t *p = (uint8_t *) src;
+       const uint8_t *p = (const uint8_t *) src;
        return (  ((uint32_t) p[0] << 24)
                | ((uint32_t) p[1] << 16)
                | ((uint32_t) p[2] << 8)
@@ -276,7 +276,7 @@ time_t mktime_from_utc(const struct tm *tm);
  * The function interprets time as the number of seconds since epoch
  * with respect to now using serial arithmitics (rfc1982).
  * That number of seconds is then converted to broken-out time information.
- * This is especially usefull when converting the inception and expiration
+ * This is especially useful when converting the inception and expiration
  * fields of RRSIG records.
  *
  * \param[in] time number of seconds since epoch (midnight, January 1st, 1970)
@@ -325,42 +325,66 @@ uint16_t ldns_get_random(void);
  */
 char *ldns_bubblebabble(uint8_t *data, size_t len);
 
-#ifndef B32_NTOP
-int ldns_b32_ntop(uint8_t const *src, size_t srclength,
-            char *target, size_t targsize);
-int b32_ntop(uint8_t const *src, size_t srclength,
-            char *target, size_t targsize);
-int ldns_b32_ntop_extended_hex(uint8_t const *src, size_t srclength,
-            char *target, size_t targsize);
-int b32_ntop_extended_hex(uint8_t const *src, size_t srclength,
-            char *target, size_t targsize);
+
+INLINE time_t ldns_time(time_t *t) { return time(t); }
+
+
 /**
  * calculates the size needed to store the result of b32_ntop
  */
 /*@unused@*/
-INLINE size_t ldns_b32_ntop_calculate_size(size_t srcsize)
+INLINE size_t ldns_b32_ntop_calculate_size(size_t src_data_length)
 {
-       size_t result = ((((srcsize / 5) * 8) - 2) + 2);
-       return result;
+       return src_data_length == 0 ? 0 : ((src_data_length - 1) / 5 + 1) * 8;
+}
+
+INLINE size_t ldns_b32_ntop_calculate_size_no_padding(size_t src_data_length)
+{
+       return ((src_data_length + 3) * 8 / 5) - 4;
 }
-#endif /* !B32_NTOP */
-#ifndef B32_PTON
-int ldns_b32_pton(char const *src, size_t hashed_owner_str_len, uint8_t *target, size_t targsize);
-int b32_pton(char const *src, size_t hashed_owner_str_len, uint8_t *target, size_t targsize);
-int ldns_b32_pton_extended_hex(char const *src, size_t hashed_owner_str_len, uint8_t *target, size_t targsize);
-int b32_pton_extended_hex(char const *src, size_t hashed_owner_str_len, uint8_t *target, size_t targsize);
+
+int ldns_b32_ntop(const uint8_t* src_data, size_t src_data_length,
+            char* target_text_buffer, size_t target_text_buffer_size);
+
+int ldns_b32_ntop_extended_hex(const uint8_t* src_data, size_t src_data_length,
+            char* target_text_buffer, size_t target_text_buffer_size);
+
+#if ! LDNS_BUILD_CONFIG_HAVE_B32_NTOP
+
+int b32_ntop(const uint8_t* src_data, size_t src_data_length,
+            char* target_text_buffer, size_t target_text_buffer_size);
+
+int b32_ntop_extended_hex(const uint8_t* src_data, size_t src_data_length,
+            char* target_text_buffer, size_t target_text_buffer_size);
+
+#endif /* ! LDNS_BUILD_CONFIG_HAVE_B32_NTOP */
+
+
 /**
  * calculates the size needed to store the result of b32_pton
  */
 /*@unused@*/
-INLINE size_t ldns_b32_pton_calculate_size(size_t srcsize)
+INLINE size_t ldns_b32_pton_calculate_size(size_t src_text_length)
 {
-       size_t result = ((((srcsize) / 8) * 5));
-       return result;
+       return src_text_length * 5 / 8;
 }
-#endif /* !B32_PTON */
 
-INLINE time_t ldns_time(time_t *t) { return time(t); }
+int ldns_b32_pton(const char* src_text, size_t src_text_length,
+               uint8_t* target_data_buffer, size_t target_data_buffer_size);
+
+int ldns_b32_pton_extended_hex(const char* src_text, size_t src_text_length,
+               uint8_t* target_data_buffer, size_t target_data_buffer_size);
+
+#if ! LDNS_BUILD_CONFIG_HAVE_B32_PTON
+
+int b32_pton(const char* src_text, size_t src_text_length,
+               uint8_t* target_data_buffer, size_t target_data_buffer_size);
+
+int b32_pton_extended_hex(const char* src_text, size_t src_text_length,
+               uint8_t* target_data_buffer, size_t target_data_buffer_size);
+
+#endif /* ! LDNS_BUILD_CONFIG_HAVE_B32_PTON */
+
 
 #ifdef __cplusplus
 }
index 53ccab2..5b664df 100644 (file)
@@ -32,7 +32,6 @@ CFLAGS+=      -D__STRICT_ALIGNMENT
 
 # Local sources:
 # Replacement for malloc-wrapper.c, base tools depend on CRYPTO_free() here:
-#  contrib/ldns/keys.c         CRYPTO_free(),  unused (only if USE_GOST)
 #  contrib/ldns/host2str.c     OPENSSL_free(), unused (only if USE_GOST)
 #  lib/libfetch/common.c       OPENSSL_free()
 #  lib/libtelnet/pk.c          OPENSSL_free()
index 8eb24a7..ecee455 100644 (file)
@@ -7,9 +7,11 @@ WARNS?= 2
 
 .PATH: ${.CURDIR}/../../contrib/ldns/drill
 
+CFLAGS+=       -DHAVE_CONFIG_H -I${LDNSBASE}
+CFLAGS+=       -I${LDNSBASE}/ldns -I${LDNS} -I${LDNS}/drill
+
 LDADD=         -lprivate_ldns -lprivate_crypto
 DPADD=         ${LIBLDNS} ${LIBCRYPTO}
-CFLAGS+=       -I${.CURDIR} -I${LDNS} -I${LDNS}/drill -I${LDNSBASE}
 CFLAGS+=       -I${.CURDIR}/../../crypto/libressl/include
 LDFLAGS+=      -rpath /usr/lib/priv ${PRIVATELIB_LDFLAGS}
 
diff --git a/usr.bin/drill/config.h b/usr.bin/drill/config.h
deleted file mode 100644 (file)
index 1d8b8f8..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/* config.h.  Generated from config.h.in by configure.  */
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Whether getaddrinfo is available */
-#define HAVE_GETADDRINFO 1
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H 1
-
-/* If you have HMAC_CTX_init */
-#define HAVE_HMAC_CTX_INIT 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `isblank' function. */
-#define HAVE_ISBLANK 1
-
-/* Define to 1 if you have the `ldns' library (-lldns). */
-#define HAVE_LIBLDNS 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <netinet/if_ether.h> header file. */
-#define HAVE_NETINET_IF_ETHER_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/in_systm.h> header file. */
-#define HAVE_NETINET_IN_SYSTM_H 1
-
-/* Define to 1 if you have the <netinet/ip6.h> header file. */
-#define HAVE_NETINET_IP6_H 1
-
-/* Define to 1 if you have the <netinet/ip.h> header file. */
-#define HAVE_NETINET_IP_H 1
-
-/* Define to 1 if you have the <netinet/udp.h> header file. */
-#define HAVE_NETINET_UDP_H 1
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-#define HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/rand.h> header file. */
-#define HAVE_OPENSSL_RAND_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-#define HAVE_OPENSSL_SSL_H 1
-
-/* Define if you have the SSL libraries installed. */
-#define HAVE_SSL /**/
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#define HAVE_STDIO_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/mount.h> header file. */
-#define HAVE_SYS_MOUNT_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-/* #undef HAVE_WINSOCK2_H */
-
-/* Define to 1 if you have the <ws2tcpip.h> header file. */
-/* #undef HAVE_WS2TCPIP_H */
-
-/* Default trust anchor file */
-#define LDNS_TRUST_ANCHOR_FILE "/usr/local/etc/unbound/root.key"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "libdns@nlnetlabs.nl"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "ldns"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "ldns 1.6.16"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "libdns"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.6.16"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# define _ALL_SOURCE 1
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
-#endif
-
-
-/* Whether the windows socket API is used */
-/* #undef USE_WINSOCK */
-
-/* the version of the windows API enabled */
-#define WINVER 0x0502
-
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* in_addr_t */
-/* #undef in_addr_t */
-
-/* in_port_t */
-/* #undef in_port_t */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define to `short' if <sys/types.h> does not define. */
-/* #undef int16_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef int32_t */
-
-/* Define to `long long' if <sys/types.h> does not define. */
-/* #undef int64_t */
-
-/* Define to `char' if <sys/types.h> does not define. */
-/* #undef int8_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* Define to 'int' if not defined */
-/* #undef socklen_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef ssize_t */
-
-/* Define to `unsigned short' if <sys/types.h> does not define. */
-/* #undef uint16_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef uint32_t */
-
-/* Define to `unsigned long long' if <sys/types.h> does not define. */
-/* #undef uint64_t */
-
-/* Define to `unsigned char' if <sys/types.h> does not define. */
-/* #undef uint8_t */
-
-
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <assert.h>
-
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#endif
-
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-
-#ifdef HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_SYSTM_H
-#include <netinet/in_systm.h>
-#endif
-
-#ifdef HAVE_NETINET_IP_H
-#include <netinet/ip.h>
-#endif
-
-#ifdef HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-
-#ifdef HAVE_NETINET_IF_ETHER_H
-#include <netinet/if_ether.h>
-#endif
-
-#ifdef HAVE_WINSOCK2_H
-#define USE_WINSOCK 1
-#include <winsock2.h>
-#endif
-
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-
-extern char *optarg;
-extern int optind, opterr;
-
-#ifndef EXIT_FAILURE
-#define EXIT_FAILURE  1
-#endif
-#ifndef EXIT_SUCCESS
-#define EXIT_SUCCESS  0
-#endif
-
-#ifdef S_SPLINT_S
-#define FD_ZERO(a) /* a */
-#define FD_SET(a,b) /* a, b */
-#endif
-
index 196b85d..7e2b94d 100644 (file)
@@ -40,7 +40,7 @@ Send to query to this server. If not specified use the nameservers from
 .PP
 \fItype\fR
 Ask for this RR type. If type is not given on the command line it defaults
-to 'A'. Except when doing to reverse lookup when it defaults to 'PTR'.
+to 'A'. Except when doing a reverse lookup when it defaults to 'PTR'.
 
 .PP
 \fIclass\fR
@@ -51,17 +51,17 @@ Use this class when querying.
 Show the MX records of the domain miek.nl
 
 .TP
-\fBdrill -S jelte.nlnetlabs.nl\fR
+\fBdrill \-S jelte.nlnetlabs.nl\fR
 Chase any signatures in the jelte.nlnetlab.nl domain. This option is
 only available when ldns has been compiled with openssl-support.
 
 .TP
-\fBdrill -TD www.example.com\fR
-Do a DNSSEC (-D) trace (-T) from the rootservers down to www.example.com.
+\fBdrill \-TD www.example.com\fR
+Do a DNSSEC (\-D) trace (\-T) from the rootservers down to www.example.com.
 This option only works when ldns has been compiled with openssl support.
 
 .TP
-\fBdrill -s dnskey jelte.nlnetlabs.nl\fR
+\fBdrill \-s dnskey jelte.nlnetlabs.nl\fR
 Show the DNSKEY record(s) for jelte.nlnetlabs.nl. For each found DNSKEY
 record also print the DS record.
 
@@ -74,25 +74,30 @@ DS and NSEC) this is \fInot\fR automatically enabled.
 
 .TP
 \fB\-T
-Trace \fIname\fR from the root down. When using this option the @server and
-the type arguments are not used.
+Trace \fIname\fR from the root down. When using this option the @server
+arguments are not used.
 
 .TP
 \fB\-S
 Chase the signature(s) of 'name' to a known key or as high up in
 the tree as possible.
 
+.TP
+\fB\-I  \fIIPv4 or IPv6 address\fR
+Source address to query from.  The source address has to be present
+on an interface of the host running drill.
+
 .TP
 \fB\-V \fIlevel\fR
 Be more verbose. Set level to 5 to see the actual query that is sent.
 
 .TP
 \fB\-Q
-Quiet mode, this overrules -V. 
+Quiet mode, this overrules \-V.
 
 .TP
 \fB\-f \fIfile\fR
-Read the query from a file. The query must be dumped with -w. 
+Read the query from a file. The query must be dumped with \-w.
 
 .TP
 \fB\-i \fIfile\fR
@@ -148,7 +153,7 @@ Use file instead of /etc/resolv.conf for nameserver configuration.
 
 .TP
 \fB\-d \fIdomain\fR
-When tracing (-T), start from this domain instead of the root.
+When tracing (\-T), start from this domain instead of the root.
 
 .TP
 \fB\-t
@@ -190,7 +195,7 @@ Use this port instead of the default of 53.
 
 .TP
 \fB\-r \fIfile\fR
-When tracing (-T), use file as a root servers hint file.
+When tracing (\-T), use file as a root servers hint file.
 
 .TP
 \fB\-s
@@ -203,11 +208,11 @@ Use UDP when querying a server. This is the default.
 .TP
 \fB\-w \fIfile\fR
 write the answer to a file. The file will contain a hexadecimal dump
-of the query. This can be used in conjunction with -f.
+of the query. This can be used in conjunction with \-f.
 
 .TP
 \fB\-x
-Do a reverse loopup. The type argument is not used, it is preset to PTR.
+Do a reverse lookup. The type argument is not used, it is preset to PTR.
 
 .TP
 \fB\-y \fI<name:key[:algo]>\fR
@@ -217,6 +222,12 @@ specify named base64 tsig key, and optional an algorithm (defaults to hmac-md5.s
 \fB\-z \fR
 don't randomize the nameserver list before sending queries.
 
+.SH "EXIT STATUS"
+The exit status is 0 if the looked up answer is secure and trusted,
+or insecure.
+The exit status is not 0 if the looked up answer is untrusted or bogus,
+or an error occurred while performing the lookup.
+
 .SH "FILES"
 .TP
 /usr/local/etc/unbound/root.key
diff --git a/usr.bin/drill/drill.h b/usr.bin/drill/drill.h
deleted file mode 100644 (file)
index 0746fe7..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * drill.h
- * the main header file of drill
- * (c) 2005, 2006 NLnet Labs
- *
- * See the file LICENSE for the license
- *
- */
-#ifndef _DRILL_H_
-#define _DRILL_H_
-#include "config.h"
-
-#include "drill_util.h"
-
-#define DRILL_VERSION PACKAGE_VERSION
-
-/* what kind of stuff do we allow */
-#define DRILL_QUERY    0
-#define DRILL_TRACE    1
-#define DRILL_CHASE    2
-#define DRILL_AFROMFILE 3
-#define DRILL_QTOFILE  4
-#define DRILL_NSEC     5
-#define DRILL_REVERSE  6
-#define DRILL_SECTRACE         7
-
-#define DRILL_ON(VAR, BIT) \
-(VAR) = (VAR) | (BIT)
-#define DRILL_OFF(VAR, BIT) \
-(VAR) = (VAR) & ~(BIT)
-
-extern ldns_rr_list *global_dns_root;
-extern bool qds;
-extern int verbosity;
-
-ldns_pkt *do_trace(ldns_resolver *res,
-                           ldns_rdf *name,
-                           ldns_rr_type type, 
-                           ldns_rr_class c);
-ldns_status do_chase(ldns_resolver *res,
-                                ldns_rdf *name,
-                                ldns_rr_type type, 
-                                ldns_rr_class c,
-                                ldns_rr_list *trusted_keys, 
-                                ldns_pkt *pkt_o,
-                                uint16_t qflags,
-                                ldns_rr_list *prev_key_list,
-                                int verbosity);
-int do_secure_trace(ldns_resolver *res,
-                               ldns_rdf *name,
-                               ldns_rr_type type, 
-                               ldns_rr_class c,
-                               ldns_rr_list *trusted_keys,
-                               ldns_rdf *start_name);
-
-ldns_rr_list * get_rr(ldns_resolver *res,
-                                 ldns_rdf *zname,
-                                 ldns_rr_type t,
-                                 ldns_rr_class c);
-
-void drill_pkt_print(FILE *fd, ldns_resolver *r, ldns_pkt *p);
-void drill_pkt_print_footer(FILE *fd, ldns_resolver *r, ldns_pkt *p);
-
-ldns_pkt_type get_dnssec_rr(ldns_pkt *p,
-                                          ldns_rdf *name,
-                                          ldns_rr_type t,
-                                          ldns_rr_list **rrlist,
-                                          ldns_rr_list **sig);
-
-ldns_rr *ldns_nsec3_exact_match(ldns_rdf *qname,
-                                                 ldns_rr_type qtype,
-                                                 ldns_rr_list *nsec3s);
-
-ldns_rdf *ldns_nsec3_closest_encloser(ldns_rdf *qname,
-                                                          ldns_rr_type qtype,
-                                                          ldns_rr_list *nsec3s);
-
-/* verifies denial of existence of *name in *pkt (must contain NSEC or NSEC3 records
- * if *nsec_rrs and *nsec_rr_sigs are given, pointers to the relevant nsecs and their signatures are
- * placed there
- */
-ldns_status ldns_verify_denial(ldns_pkt *pkt,
-                                                ldns_rdf *name,
-                                                ldns_rr_type type,
-                                                ldns_rr_list **nsec_rrs, 
-                                                ldns_rr_list **nsec_rr_sigs);
-
-ldns_pkt *read_hex_pkt(char *filename);
-ldns_buffer *read_hex_buffer(char *filename);
-void   init_root(void);
-ldns_rr_list *read_root_hints(const char *filename);
-void clear_root(void);
-void   dump_hex(const ldns_pkt *pkt, const char *file);
-void warning(const char *fmt, ...);
-void   error(const char *fmt, ...);
-void   mesg(const char *fmt, ...);
-
-/* screen.c */
-void resolver_print_nameservers(ldns_resolver *r);
-void print_dnskey(ldns_rr_list *key_list);
-void print_ds(ldns_rr_list *ds_list);
-
-#endif /* _DRILL_H_ */