From 8ccce7e24b6aff6e02745b64d66ef50842763543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 22 Mar 2019 10:36:25 +0100 Subject: [PATCH] Make lib/dns/dnstap.pb-c.h private header This changes dns_dtdata struct to not expose data types from dnstap.pb-c.h to prevent the need for including this header where not really needed. --- bin/tools/dnstap-read.c | 3 +++ configure | 4 ---- configure.ac | 3 --- lib/dns/Makefile.in | 5 ++--- lib/dns/dnstap.c | 9 ++++++--- lib/dns/include/dns/Makefile.in | 2 +- lib/dns/include/dns/dnstap.h | 3 +-- lib/dns/tests/dnstap_test.c | 2 +- 8 files changed, 14 insertions(+), 17 deletions(-) diff --git a/bin/tools/dnstap-read.c b/bin/tools/dnstap-read.c index e876d5ea17..2548bf0fac 100644 --- a/bin/tools/dnstap-read.c +++ b/bin/tools/dnstap-read.c @@ -46,6 +46,9 @@ #include #include +#include +#include "lib/dns/dnstap.pb-c.h" + isc_mem_t *mctx = NULL; bool memrecord = false; bool printmessage = false; diff --git a/configure b/configure index c92b83ae4c..b2ac8d78cf 100755 --- a/configure +++ b/configure @@ -697,7 +697,6 @@ W3M DBLATEX PDFLATEX LATEX -DNSTAP_PB_C_H DNSTAPTARGETS DNSTAPOBJS DNSTAPSRCS @@ -18516,7 +18515,6 @@ DNSTAP= DNSTAPSRCS= DNSTAPOBJS= DNSTAPTARGETS= -DNSTAP_PB_C_H= if test "x$use_dnstap" != "xno"; then # Check whether --with-protobuf-c was given. @@ -18849,14 +18847,12 @@ $as_echo "#define HAVE_DNSTAP 1" >>confdefs.h DNSTAPSRCS='${DNSTAPSRCS}' DNSTAPOBJS='${DNSTAPOBJS}' DNSTAPTARGETS='${DNSTAPTARGETS}' - DNSTAP_PB_C_H="dnstap.pb-c.h" fi - # # The following sets up how non-blocking i/o is established. # cygwin and solaris 2.x (x<5) require special handling. diff --git a/configure.ac b/configure.ac index 5e77fc297e..db5129a6ce 100644 --- a/configure.ac +++ b/configure.ac @@ -2070,7 +2070,6 @@ DNSTAP= DNSTAPSRCS= DNSTAPOBJS= DNSTAPTARGETS= -DNSTAP_PB_C_H= if test "x$use_dnstap" != "xno"; then AC_ARG_WITH([protobuf-c], AS_HELP_STRING([--with-protobuf-c=path], @@ -2123,13 +2122,11 @@ if test "x$use_dnstap" != "xno"; then DNSTAPSRCS='${DNSTAPSRCS}' DNSTAPOBJS='${DNSTAPOBJS}' DNSTAPTARGETS='${DNSTAPTARGETS}' - DNSTAP_PB_C_H="dnstap.pb-c.h" fi AC_SUBST(DNSTAP) AC_SUBST(DNSTAPSRCS) AC_SUBST(DNSTAPOBJS) AC_SUBST(DNSTAPTARGETS) -AC_SUBST(DNSTAP_PB_C_H) # # The following sets up how non-blocking i/o is established. diff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in index eb3346af2c..dc9d521632 100644 --- a/lib/dns/Makefile.in +++ b/lib/dns/Makefile.in @@ -189,7 +189,7 @@ clean distclean:: rm -f libdns.@A@ timestamp rm -f gen code.h include/dns/enumtype.h include/dns/enumclass.h rm -f include/dns/rdatastruct.h - rm -f dnstap.pb-c.c dnstap.pb-c.h include/dns/dnstap.pb-c.h + rm -f dnstap.pb-c.c dnstap.pb-c.h newrr:: rm -f code.h include/dns/enumtype.h include/dns/enumclass.h @@ -204,9 +204,8 @@ ${OBJS}: include # dnstap dnstap.@O@: dnstap.c dnstap.pb-c.c -dnstap.pb-c.c dnstap.pb-c.h include/dns/dnstap.pb-c.h: dnstap.proto +dnstap.pb-c.c dnstap.pb-c.h: dnstap.proto $(PROTOC_C) --c_out=. --proto_path ${srcdir} dnstap.proto - cp -f dnstap.pb-c.h include/dns dnstap.pb-c.@O@: dnstap.pb-c.c diff --git a/lib/dns/dnstap.c b/lib/dns/dnstap.c index d357e61075..3accb9cc10 100644 --- a/lib/dns/dnstap.c +++ b/lib/dns/dnstap.c @@ -76,8 +76,8 @@ #include #include -#include #include +#include "dnstap.pb-c.h" #define DTENV_MAGIC ISC_MAGIC('D', 't', 'n', 'v') #define VALID_DTENV(env) ISC_MAGIC_VALID(env, DTENV_MAGIC) @@ -1099,6 +1099,7 @@ dns_dt_close(dns_dthandle_t **handlep) { isc_result_t dns_dt_parse(isc_mem_t *mctx, isc_region_t *src, dns_dtdata_t **destp) { isc_result_t result; + Dnstap__Dnstap *frame; Dnstap__Message *m; dns_dtdata_t *d = NULL; isc_buffer_t b; @@ -1117,10 +1118,12 @@ dns_dt_parse(isc_mem_t *mctx, isc_region_t *src, dns_dtdata_t **destp) { if (d->frame == NULL) CHECK(ISC_R_NOMEMORY); - if (d->frame->type != DNSTAP__DNSTAP__TYPE__MESSAGE) + frame = (Dnstap__Dnstap *)d->frame; + + if (frame->type != DNSTAP__DNSTAP__TYPE__MESSAGE) CHECK(DNS_R_BADDNSTAP); - m = d->frame->message; + m = frame->message; /* Message type */ switch (m->type) { diff --git a/lib/dns/include/dns/Makefile.in b/lib/dns/include/dns/Makefile.in index 77df509c71..f16ec75253 100644 --- a/lib/dns/include/dns/Makefile.in +++ b/lib/dns/include/dns/Makefile.in @@ -33,7 +33,7 @@ HEADERS = acl.h adb.h badcache.h bit.h byaddr.h \ update.h validator.h version.h view.h xfrin.h \ zone.h zonekey.h zoneverify.h zt.h -GENHEADERS = @DNSTAP_PB_C_H@ enumclass.h enumtype.h rdatastruct.h +GENHEADERS = enumclass.h enumtype.h rdatastruct.h SUBDIRS = TARGETS = diff --git a/lib/dns/include/dns/dnstap.h b/lib/dns/include/dns/dnstap.h index e27c95e8a0..2e948ebe24 100644 --- a/lib/dns/include/dns/dnstap.h +++ b/lib/dns/include/dns/dnstap.h @@ -29,7 +29,6 @@ #ifdef HAVE_DNSTAP #include #include -#include #else struct fstrm_iothr_options; #endif /* HAVE_DNSTAP */ @@ -99,7 +98,7 @@ typedef struct dns_dthandle dns_dthandle_t; struct dns_dtdata { isc_mem_t *mctx; - Dnstap__Dnstap *frame; + void *frame; bool query; bool tcp; diff --git a/lib/dns/tests/dnstap_test.c b/lib/dns/tests/dnstap_test.c index 5ba5520cfd..88f09cd919 100644 --- a/lib/dns/tests/dnstap_test.c +++ b/lib/dns/tests/dnstap_test.c @@ -36,7 +36,7 @@ #include "dnstest.h" #ifdef HAVE_DNSTAP -#include + #include #define TAPFILE "testdata/dnstap/dnstap.file"