]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4394. [func] Add rndc command "dnstap-reopen" to close and
authorMark Andrews <marka@isc.org>
Thu, 23 Jun 2016 23:37:04 +0000 (09:37 +1000)
committerMark Andrews <marka@isc.org>
Thu, 23 Jun 2016 23:37:04 +0000 (09:37 +1000)
                        reopen dnstap output filed. [RT #41803]

19 files changed:
CHANGES
bin/named/control.c
bin/named/include/named/control.h
bin/named/include/named/server.h
bin/named/server.c
bin/rndc/rndc.docbook
bin/tests/system/dnstap/clean.sh
bin/tests/system/dnstap/tests.sh
configure
configure.in
doc/arm/notes.xml
lib/dns/.gitignore
lib/dns/Makefile.in
lib/dns/dnstap.c
lib/dns/dnstap.pb-c.c [deleted file]
lib/dns/dnstap.pb-c.h [deleted file]
lib/dns/include/dns/Makefile.in
lib/dns/include/dns/dnstap.h
lib/dns/include/dns/dnstap.pb-c.h [deleted file]

diff --git a/CHANGES b/CHANGES
index 810b749a4b10cdd0a4a12dbd8dbb717431918d92..2ba23ca48f0804f3b8819e6d26d340a17efcd194 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4394.  [func]          Add rndc command "dnstap-reopen" to close and
+                       reopen dnstap output filed. [RT #41803]
+
 4393.  [bug]           Address potential NULL pointer dereferences in
                        dnstap code.
 
index d947ebbfcae1ed60d6cce61e071c33bae852169e..67e4469454255320f46b2edf08d222d7fd5bac74 100644 (file)
@@ -281,6 +281,8 @@ ns_control_docommand(isccc_sexpr_t *message, isc_boolean_t readonly,
                result = ns_server_testgen(lex, text);
        } else if (command_compare(command, NS_COMMAND_MKEYS)) {
                result = ns_server_mkeys(ns_g_server, lex, text);
+       } else if (command_compare(command, NS_COMMAND_DNSTAPREOPEN)) {
+               result = ns_server_dnstap_reopen(ns_g_server);
        } else {
                isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
                              NS_LOGMODULE_CONTROL, ISC_LOG_WARNING,
index b271d402a8497848e77e496ae8968a8197fe3525..70c5d4755c9c511bad47a295641fcc679ee525ef 100644 (file)
@@ -72,6 +72,7 @@
 #define NS_COMMAND_NTA         "nta"
 #define NS_COMMAND_TESTGEN     "testgen"
 #define NS_COMMAND_MKEYS       "managed-keys"
+#define NS_COMMAND_DNSTAPREOPEN        "dnstap-reopen"
 
 isc_result_t
 ns_controls_create(ns_server_t *server, ns_controls_t **ctrlsp);
index 18c4538e395407fc4a35c8eb35d6cc51b430a90c..4f9b364739b00f1d955489d20f897cec130d778a 100644 (file)
@@ -745,4 +745,10 @@ ns_server_testgen(isc_lex_t *lex, isc_buffer_t **text);
 isc_result_t
 ns_server_mkeys(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text);
 
+/*%
+ * Close and reopen DNSTAP output file.
+ */
+isc_result_t
+ns_server_dnstap_reopen(ns_server_t *server);
+
 #endif /* NAMED_SERVER_H */
index 61433dab17672dbd7ceb383aa6ce3d0b2628ebc4..5e3e2b1cbcff2a87a8057ac340836520a2cd4fd5 100644 (file)
@@ -12189,3 +12189,16 @@ ns_server_mkeys(ns_server_t *server, isc_lex_t *lex, isc_buffer_t **text) {
 
        return (result);
 }
+
+isc_result_t
+ns_server_dnstap_reopen(ns_server_t *server) {
+
+#if HAVE_DNSTAP
+       if (server->dtenv != NULL)
+               return(dns_dt_reopen(server->dtenv));
+       return (ISC_R_NOTFOUND);
+#else
+       UNUSED(server);
+       return (ISC_R_NOTIMPLEMENTED);
+#endif
+}
index 39ed7d06f49fe722b5bf90a9ef8f99a983ff180d..0f5fe195d9493569f60c4b2bfb0137d835bcdd03 100644 (file)
@@ -44,6 +44,7 @@
       <year>2013</year>
       <year>2014</year>
       <year>2015</year>
+      <year>2016</year>
       <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
     </copyright>
     <copyright>
        </listitem>
       </varlistentry>
 
+      <varlistentry>
+       <term><userinput>dnstap-reopen</userinput></term>
+       <listitem>
+         <para>
+           Close and re-open DNSTAP output files.  This allows the files
+           to be renamed externally then to be re-opened.
+         </para>
+       </listitem>
+      </varlistentry>
+
       <varlistentry>
        <term><userinput>dumpdb <optional>-all|-cache|-zone|-adb|-bad|-fail</optional> <optional><replaceable>view ...</replaceable></optional></userinput></term>
        <listitem>
index 5003c135ad9e7069137801466678792572655931..6cf3112d36602111259cd8b71baa58df1bd6063d 100644 (file)
@@ -20,3 +20,4 @@ rm -f */named.stats
 rm -f dig.out*
 rm -f ns*/named.lock
 rm -f ns*/dnstap.out
+rm -f ns*/dnstap.out.save
index 54b35e96ed1be5c9525a2c4de6613dd71e913cc7..76133281ef74e5f301f29c08ca9b2e0b164d6b51 100644 (file)
@@ -21,6 +21,18 @@ RNDCCMD="$RNDC -p 9953 -c ../common/rndc.conf"
 
 status=0
 
+$DIG +short @10.53.0.3 -p 5300 a.example > dig.out
+
+mv ns1/dnstap.out ns1/dnstap.out.save
+mv ns2/dnstap.out ns2/dnstap.out.save
+mv ns3/dnstap.out ns3/dnstap.out.save
+
+sleep 2
+
+$RNDCCMD -s 10.53.0.1 dnstap-reopen | sed 's/^/I:ns1 /'
+$RNDCCMD -s 10.53.0.2 dnstap-reopen | sed 's/^/I:ns2 /'
+$RNDCCMD -s 10.53.0.3 dnstap-reopen | sed 's/^/I:ns3 /'
+
 $DIG +short @10.53.0.3 -p 5300 a.example > dig.out
 sleep 1
 
@@ -34,34 +46,35 @@ $RNDCCMD -s 10.53.0.2 stop | sed 's/^/I:ns2 /'
 $RNDCCMD -s 10.53.0.3 stop | sed 's/^/I:ns3 /'
 sleep 1
 
-udp1=`$DNSTAPREAD ns1/dnstap.out | grep "UDP " | wc -l`
-tcp1=`$DNSTAPREAD ns1/dnstap.out | grep "TCP " | wc -l`
-aq1=`$DNSTAPREAD ns1/dnstap.out | grep "AQ " | wc -l`
-ar1=`$DNSTAPREAD ns1/dnstap.out | grep "AR " | wc -l`
-cq1=`$DNSTAPREAD ns1/dnstap.out | grep "CQ " | wc -l`
-cr1=`$DNSTAPREAD ns1/dnstap.out | grep "CR " | wc -l`
-rq1=`$DNSTAPREAD ns1/dnstap.out | grep "RQ " | wc -l`
-rr1=`$DNSTAPREAD ns1/dnstap.out | grep "RR " | wc -l`
+udp1=`$DNSTAPREAD ns1/dnstap.out.save | grep "UDP " | wc -l`
+tcp1=`$DNSTAPREAD ns1/dnstap.out.save | grep "TCP " | wc -l`
+aq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "AQ " | wc -l`
+ar1=`$DNSTAPREAD ns1/dnstap.out.save | grep "AR " | wc -l`
+cq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "CQ " | wc -l`
+cr1=`$DNSTAPREAD ns1/dnstap.out.save | grep "CR " | wc -l`
+rq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "RQ " | wc -l`
+rr1=`$DNSTAPREAD ns1/dnstap.out.save | grep "RR " | wc -l`
 
-udp2=`$DNSTAPREAD ns2/dnstap.out | grep "UDP " | wc -l`
-tcp2=`$DNSTAPREAD ns2/dnstap.out | grep "TCP " | wc -l`
-aq2=`$DNSTAPREAD ns2/dnstap.out | grep "AQ " | wc -l`
-ar2=`$DNSTAPREAD ns2/dnstap.out | grep "AR " | wc -l`
-cq2=`$DNSTAPREAD ns2/dnstap.out | grep "CQ " | wc -l`
-cr2=`$DNSTAPREAD ns2/dnstap.out | grep "CR " | wc -l`
-rq2=`$DNSTAPREAD ns2/dnstap.out | grep "RQ " | wc -l`
-rr2=`$DNSTAPREAD ns2/dnstap.out | grep "RR " | wc -l`
+udp2=`$DNSTAPREAD ns2/dnstap.out.save | grep "UDP " | wc -l`
+tcp2=`$DNSTAPREAD ns2/dnstap.out.save | grep "TCP " | wc -l`
+aq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "AQ " | wc -l`
+ar2=`$DNSTAPREAD ns2/dnstap.out.save | grep "AR " | wc -l`
+cq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "CQ " | wc -l`
+cr2=`$DNSTAPREAD ns2/dnstap.out.save | grep "CR " | wc -l`
+rq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "RQ " | wc -l`
+rr2=`$DNSTAPREAD ns2/dnstap.out.save | grep "RR " | wc -l`
 
-udp3=`$DNSTAPREAD ns3/dnstap.out | grep "UDP " | wc -l`
-tcp3=`$DNSTAPREAD ns3/dnstap.out | grep "TCP " | wc -l`
-aq3=`$DNSTAPREAD ns3/dnstap.out | grep "AQ " | wc -l`
-ar3=`$DNSTAPREAD ns3/dnstap.out | grep "AR " | wc -l`
-cq3=`$DNSTAPREAD ns3/dnstap.out | grep "CQ " | wc -l`
-cr3=`$DNSTAPREAD ns3/dnstap.out | grep "CR " | wc -l`
-rq3=`$DNSTAPREAD ns3/dnstap.out | grep "RQ " | wc -l`
-rr3=`$DNSTAPREAD ns3/dnstap.out | grep "RR " | wc -l`
+udp3=`$DNSTAPREAD ns3/dnstap.out.save | grep "UDP " | wc -l`
+tcp3=`$DNSTAPREAD ns3/dnstap.out.save | grep "TCP " | wc -l`
+aq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "AQ " | wc -l`
+ar3=`$DNSTAPREAD ns3/dnstap.out.save | grep "AR " | wc -l`
+cq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "CQ " | wc -l`
+cr3=`$DNSTAPREAD ns3/dnstap.out.save | grep "CR " | wc -l`
+rq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "RQ " | wc -l`
+rr3=`$DNSTAPREAD ns3/dnstap.out.save | grep "RR " | wc -l`
 
-echo "I:checking UDP message counts"
+echo "I:checking initial message counts"
+echo "I: checking UDP message counts"
 ret=0
 [ $udp1 -eq 0 ] || {
         echo "ns1 $udp1 expected 0" ; ret=1
@@ -72,10 +85,10 @@ ret=0
 [ $udp3 -eq 4 ] || {
         echo "ns3 $udp3 expected 4" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking TCP message counts"
+echo "I: checking TCP message counts"
 ret=0
 [ $tcp1 -eq 6 ] || {
         echo "ns1 $tcp1 expected 6" ; ret=1
@@ -86,10 +99,10 @@ ret=0
 [ $tcp3 -eq 6 ] || {
         echo "ns3 $tcp3 expected 6" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking AUTH_QUERY message counts"
+echo "I: checking AUTH_QUERY message counts"
 ret=0
 [ $aq1 -eq 2 ] || {
         echo "ns1 $aq1 exepcted 2" ; ret=1
@@ -100,10 +113,10 @@ ret=0
 [ $aq3 -eq 0 ] || {
         echo "ns3 $aq3 expected 0" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking AUTH_RESPONSE message counts"
+echo "I: checking AUTH_RESPONSE message counts"
 ret=0
 [ $ar1 -eq 2 ] || {
         echo "ns1 $ar1 expected 2" ; ret=1
@@ -114,10 +127,10 @@ ret=0
 [ $ar3 -eq 0 ] || {
         echo "ns3 $ar3 expected 0" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking CLIENT_QUERY message counts"
+echo "I: checking CLIENT_QUERY message counts"
 ret=0
 [ $cq1 -eq 1 ] || {
         echo "ns1 $cq1 expected 1" ; ret=1
@@ -128,10 +141,10 @@ ret=0
 [ $cq3 -eq 2 ] || {
         echo "ns3 $cq3 expected 2" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking CLIENT_RESPONSE message counts"
+echo "I: checking CLIENT_RESPONSE message counts"
 ret=0
 [ $cr1 -eq 1 ] || {
         echo "ns1 $cr1 expected 1" ; ret=1
@@ -142,10 +155,10 @@ ret=0
 [ $cr3 -eq 2 ] || {
         echo "ns3 $cr3 expected 2" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking RESOLVER_QUERY message counts"
+echo "I: checking RESOLVER_QUERY message counts"
 ret=0
 [ $rq1 -eq 0 ] || {
         echo "ns1 $rq1 expected 0" ; ret=1
@@ -156,10 +169,10 @@ ret=0
 [ $rq3 -eq 3 ] || {
         echo "ns3 $rq3 expected 3" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
-echo "I:checking RESOLVER_RESPONSE message counts"
+echo "I: checking RESOLVER_RESPONSE message counts"
 ret=0
 [ $rr1 -eq 0 ] || {
         echo "ns1 $rr1 expected 0" ; ret=1
@@ -170,7 +183,148 @@ ret=0
 [ $rr3 -eq 3 ] || {
         echo "ns3 $rr3 expected 3" ; ret=1
 }
-if [ $ret != 0 ]; then echo "I:failed"; fi
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+udp1=`$DNSTAPREAD ns1/dnstap.out | grep "UDP " | wc -l`
+tcp1=`$DNSTAPREAD ns1/dnstap.out | grep "TCP " | wc -l`
+aq1=`$DNSTAPREAD ns1/dnstap.out | grep "AQ " | wc -l`
+ar1=`$DNSTAPREAD ns1/dnstap.out | grep "AR " | wc -l`
+cq1=`$DNSTAPREAD ns1/dnstap.out | grep "CQ " | wc -l`
+cr1=`$DNSTAPREAD ns1/dnstap.out | grep "CR " | wc -l`
+rq1=`$DNSTAPREAD ns1/dnstap.out | grep "RQ " | wc -l`
+rr1=`$DNSTAPREAD ns1/dnstap.out | grep "RR " | wc -l`
+
+udp2=`$DNSTAPREAD ns2/dnstap.out | grep "UDP " | wc -l`
+tcp2=`$DNSTAPREAD ns2/dnstap.out | grep "TCP " | wc -l`
+aq2=`$DNSTAPREAD ns2/dnstap.out | grep "AQ " | wc -l`
+ar2=`$DNSTAPREAD ns2/dnstap.out | grep "AR " | wc -l`
+cq2=`$DNSTAPREAD ns2/dnstap.out | grep "CQ " | wc -l`
+cr2=`$DNSTAPREAD ns2/dnstap.out | grep "CR " | wc -l`
+rq2=`$DNSTAPREAD ns2/dnstap.out | grep "RQ " | wc -l`
+rr2=`$DNSTAPREAD ns2/dnstap.out | grep "RR " | wc -l`
+
+udp3=`$DNSTAPREAD ns3/dnstap.out | grep "UDP " | wc -l`
+tcp3=`$DNSTAPREAD ns3/dnstap.out | grep "TCP " | wc -l`
+aq3=`$DNSTAPREAD ns3/dnstap.out | grep "AQ " | wc -l`
+ar3=`$DNSTAPREAD ns3/dnstap.out | grep "AR " | wc -l`
+cq3=`$DNSTAPREAD ns3/dnstap.out | grep "CQ " | wc -l`
+cr3=`$DNSTAPREAD ns3/dnstap.out | grep "CR " | wc -l`
+rq3=`$DNSTAPREAD ns3/dnstap.out | grep "RQ " | wc -l`
+rr3=`$DNSTAPREAD ns3/dnstap.out | grep "RR " | wc -l`
+
+echo "I:checking reopened message counts"
+
+echo "I: checking UDP message counts"
+ret=0
+[ $udp1 -eq 0 ] || {
+        echo "ns1 $udp1 expected 0" ; ret=1
+}
+[ $udp2 -eq 0 ] || {
+        echo "ns2 $udp2 expected 0" ; ret=1
+}
+[ $udp3 -eq 2 ] || {
+        echo "ns3 $udp3 expected 2" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking TCP message counts"
+ret=0
+[ $tcp1 -eq 0 ] || {
+        echo "ns1 $tcp1 expected 0" ; ret=1
+}
+[ $tcp2 -eq 0 ] || {
+        echo "ns2 $tcp2 expected 0" ; ret=1
+}
+[ $tcp3 -eq 0 ] || {
+        echo "ns3 $tcp3 expected 0" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking AUTH_QUERY message counts"
+ret=0
+[ $aq1 -eq 0 ] || {
+        echo "ns1 $aq1 exepcted 0" ; ret=1
+}
+[ $aq2 -eq 0 ] || {
+        echo "ns2 $aq2 expected 0" ; ret=1
+}
+[ $aq3 -eq 0 ] || {
+        echo "ns3 $aq3 expected 0" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking AUTH_RESPONSE message counts"
+ret=0
+[ $ar1 -eq 0 ] || {
+        echo "ns1 $ar1 expected 0" ; ret=1
+}
+[ $ar2 -eq 0 ] || {
+        echo "ns2 $ar2 expected 0" ; ret=1
+}
+[ $ar3 -eq 0 ] || {
+        echo "ns3 $ar3 expected 0" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking CLIENT_QUERY message counts"
+ret=0
+[ $cq1 -eq 0 ] || {
+        echo "ns1 $cq1 expected 0" ; ret=1
+}
+[ $cq2 -eq 0 ] || {
+        echo "ns2 $cq2 expected 0" ; ret=1
+}
+[ $cq3 -eq 1 ] || {
+        echo "ns3 $cq3 expected 1" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking CLIENT_RESPONSE message counts"
+ret=0
+[ $cr1 -eq 0 ] || {
+        echo "ns1 $cr1 expected 0" ; ret=1
+}
+[ $cr2 -eq 0 ] || {
+        echo "ns2 $cr2 expected 0" ; ret=1
+}
+[ $cr3 -eq 1 ] || {
+        echo "ns3 $cr3 expected 1" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking RESOLVER_QUERY message counts"
+ret=0
+[ $rq1 -eq 0 ] || {
+        echo "ns1 $rq1 expected 0" ; ret=1
+}
+[ $rq2 -eq 0 ] || {
+        echo "ns2 $rq2 expected 0" ; ret=1
+}
+[ $rq3 -eq 0 ] || {
+        echo "ns3 $rq3 expected 0" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
+status=`expr $status + $ret`
+
+echo "I: checking RESOLVER_RESPONSE message counts"
+ret=0
+[ $rr1 -eq 0 ] || {
+        echo "ns1 $rr1 expected 0" ; ret=1
+}
+[ $rr2 -eq 0 ] || {
+        echo "ns2 $rr2 expected 0" ; ret=1
+}
+[ $rr3 -eq 0 ] || {
+        echo "ns3 $rr3 expected 0" ; ret=1
+}
+if [ $ret != 0 ]; then echo "I: failed"; fi
 status=`expr $status + $ret`
 
 echo "I:exit status: $status"
index 3cddc2722cde490872a4a6586e6c9944aac77a32..47f723a4c51558edbd42a2ef5ddd0e2714838e66 100755 (executable)
--- a/configure
+++ b/configure
@@ -705,6 +705,7 @@ W3M
 DBLATEX
 PDFLATEX
 LATEX
+DNSTAP_PB_C_H
 DNSTAPHTML
 DNSTAPMAN
 DNSTAPTARGETS
@@ -20263,11 +20264,12 @@ DNSTAPOBJS=
 DNSTAPTARGETS=
 DNSTAPMAN=
 DNSTAPHTML=
+DNSTAP_PB_C_H=
 if test "x$use_dnstap" != "xno"; then
-        if ! $use_threads; then
-                as_fn_error $? "Dnstap requires threads." "$LINENO" 5
-        fi
-        # Extract the first word of "protoc-c", so it can be a program name with args.
+       if ! $use_threads; then
+               as_fn_error $? "Dnstap requires threads." "$LINENO" 5
+       fi
+       # Extract the first word of "protoc-c", so it can be a program name with args.
 set dummy protoc-c; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
@@ -20307,38 +20309,38 @@ $as_echo "no" >&6; }
 fi
 
 
-        if test -z "$PROTOC_C"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The protoc-c program was not found." >&5
+       if test -z "$PROTOC_C"; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The protoc-c program was not found." >&5
 $as_echo "$as_me: WARNING: The protoc-c program was not found." >&2;}
-        fi
+       fi
 
 # Check whether --with-protobuf-c was given.
 if test "${with_protobuf_c+set}" = set; then :
   withval=$with_protobuf_c;
-            # workaround for protobuf-c includes at old dir
-            # before protobuf-c-1.0.0
-            if test -f $withval/include/google/protobuf-c/protobuf-c.h
-            then
-                CFLAGS="$CFLAGS -I$withval/include/google"
-            else
-                CFLAGS="$CFLAGS -I$withval/include"
-            fi
-            LDFLAGS="$LDFLAGS -L$withval/lib"
+           # workaround for protobuf-c includes at old dir
+           # before protobuf-c-1.0.0
+           if test -f $withval/include/google/protobuf-c/protobuf-c.h
+           then
+               CFLAGS="$CFLAGS -I$withval/include/google"
+           else
+               CFLAGS="$CFLAGS -I$withval/include"
+           fi
+           LDFLAGS="$LDFLAGS -L$withval/lib"
 
 else
 
-            # workaround for protobuf-c includes at old dir
-            # before protobuf-c-1.0.0
-            if test -f /usr/include/google/protobuf-c/protobuf-c.h
-            then
-                CFLAGS="$CFLAGS -I/usr/include/google"
-            else
-                if test -f /usr/local/include/google/protobuf-c/protobuf-c.h
-                then
-                    CFLAGS="$CFLAGS -I/usr/local/include/google"
-                    LDFLAGS="$LDFLAGS -L/usr/local/lib"
-                fi
-            fi
+           # workaround for protobuf-c includes at old dir
+           # before protobuf-c-1.0.0
+           if test -f /usr/include/google/protobuf-c/protobuf-c.h
+           then
+               CFLAGS="$CFLAGS -I/usr/include/google"
+           else
+               if test -f /usr/local/include/google/protobuf-c/protobuf-c.h
+               then
+                   CFLAGS="$CFLAGS -I/usr/local/include/google"
+                   LDFLAGS="$LDFLAGS -L/usr/local/lib"
+               fi
+           fi
 
 fi
 
 # Check whether --with-libfstrm was given.
 if test "${with_libfstrm+set}" = set; then :
   withval=$with_libfstrm;
-            CFLAGS="$CFLAGS -I$withval/include"
-            LDFLAGS="$LDFLAGS -L$withval/lib"
+           CFLAGS="$CFLAGS -I$withval/include"
+           LDFLAGS="$LDFLAGS -L$withval/lib"
 
 fi
 
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fstrm_iothr_init" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fstrm_iothr_init" >&5
 $as_echo_n "checking for library containing fstrm_iothr_init... " >&6; }
 if ${ac_cv_search_fstrm_iothr_init+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -20410,7 +20412,7 @@ else
   as_fn_error $? "The fstrm library was not found. Please install fstrm!" "$LINENO" 5
 fi
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing protobuf_c_message_pack" >&5
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing protobuf_c_message_pack" >&5
 $as_echo_n "checking for library containing protobuf_c_message_pack... " >&6; }
 if ${ac_cv_search_protobuf_c_message_pack+:} false; then :
   $as_echo_n "(cached) " >&6
 
 $as_echo "#define HAVE_DNSTAP 1" >>confdefs.h
 
-        DNSTAP=dnstap
-        DNSTAPSRCS='${DNSTAPSRCS}'
-        DNSTAPOBJS='${DNSTAPOBJS}'
-        DNSTAPTARGETS='${DNSTAPTARGETS}'
-        DNSTAPMAN='${DNSTAPMAN}'
-        DNSTAPHTML='${DNSTAPHTML}'
+       DNSTAP=dnstap
+       DNSTAPSRCS='${DNSTAPSRCS}'
+       DNSTAPOBJS='${DNSTAPOBJS}'
+       DNSTAPTARGETS='${DNSTAPTARGETS}'
+       DNSTAPMAN='${DNSTAPMAN}'
+       DNSTAPHTML='${DNSTAPHTML}'
+       DNSTAP_PB_C_H="dnstap.pb-c.h"
 fi
 
 
@@ -20486,6 +20489,7 @@ fi
 
 
 
+
 #
 #  The following sets up how non-blocking i/o is established.
 #  Sunos, cygwin and solaris 2.x (x<5) require special handling.
index a9aa6832682ed6c5c5bd580522909d0f6475bc3f..fc48e474dd88a3fe620df9a133379d070d58a504 100644 (file)
@@ -4099,58 +4099,60 @@ DNSTAPOBJS=
 DNSTAPTARGETS=
 DNSTAPMAN=
 DNSTAPHTML=
+DNSTAP_PB_C_H=
 if test "x$use_dnstap" != "xno"; then
-        if ! $use_threads; then
-                AC_MSG_ERROR([Dnstap requires threads.])
-        fi
-        AC_PATH_PROG([PROTOC_C], [protoc-c])
-        if test -z "$PROTOC_C"; then
-                AC_MSG_WARN([The protoc-c program was not found.])
-        fi
-        AC_ARG_WITH([protobuf-c],
-                    AC_HELP_STRING([--with-protobuf-c=path],
-                                   [Path where protobuf-c is installed, for dnstap]), [
-            # workaround for protobuf-c includes at old dir
-            # before protobuf-c-1.0.0
-            if test -f $withval/include/google/protobuf-c/protobuf-c.h
-            then
-                CFLAGS="$CFLAGS -I$withval/include/google"
-            else
-                CFLAGS="$CFLAGS -I$withval/include"
-            fi
-            LDFLAGS="$LDFLAGS -L$withval/lib"
-        ], [
-            # workaround for protobuf-c includes at old dir
-            # before protobuf-c-1.0.0
-            if test -f /usr/include/google/protobuf-c/protobuf-c.h
-            then
-                CFLAGS="$CFLAGS -I/usr/include/google"
-            else
-                if test -f /usr/local/include/google/protobuf-c/protobuf-c.h
-                then
-                    CFLAGS="$CFLAGS -I/usr/local/include/google"
-                    LDFLAGS="$LDFLAGS -L/usr/local/lib"
-                fi
-            fi
-        ])
-        AC_ARG_WITH([libfstrm], AC_HELP_STRING([--with-libfstrm=path],
-                    [Path where libfstrm is installed, for dnstap]), [
-            CFLAGS="$CFLAGS -I$withval/include"
-            LDFLAGS="$LDFLAGS -L$withval/lib"
-        ])
-
-        AC_SEARCH_LIBS([fstrm_iothr_init], [fstrm], [],
-                       AC_MSG_ERROR([The fstrm library was not found. Please install fstrm!]))
-        AC_SEARCH_LIBS([protobuf_c_message_pack], [protobuf-c], [],
-                       AC_MSG_ERROR([The protobuf-c library was not found. Please install protobuf-c!]))
-
-        AC_DEFINE(HAVE_DNSTAP, 1, [Define to 1 to enable dnstap support])
-        DNSTAP=dnstap
-        DNSTAPSRCS='${DNSTAPSRCS}'
-        DNSTAPOBJS='${DNSTAPOBJS}'
-        DNSTAPTARGETS='${DNSTAPTARGETS}'
-        DNSTAPMAN='${DNSTAPMAN}'
-        DNSTAPHTML='${DNSTAPHTML}'
+       if ! $use_threads; then
+               AC_MSG_ERROR([Dnstap requires threads.])
+       fi
+       AC_PATH_PROG([PROTOC_C], [protoc-c])
+       if test -z "$PROTOC_C"; then
+               AC_MSG_WARN([The protoc-c program was not found.])
+       fi
+       AC_ARG_WITH([protobuf-c],
+                   AC_HELP_STRING([--with-protobuf-c=path],
+                                  [Path where protobuf-c is installed, for dnstap]), [
+           # workaround for protobuf-c includes at old dir
+           # before protobuf-c-1.0.0
+           if test -f $withval/include/google/protobuf-c/protobuf-c.h
+           then
+               CFLAGS="$CFLAGS -I$withval/include/google"
+           else
+               CFLAGS="$CFLAGS -I$withval/include"
+           fi
+           LDFLAGS="$LDFLAGS -L$withval/lib"
+       ], [
+           # workaround for protobuf-c includes at old dir
+           # before protobuf-c-1.0.0
+           if test -f /usr/include/google/protobuf-c/protobuf-c.h
+           then
+               CFLAGS="$CFLAGS -I/usr/include/google"
+           else
+               if test -f /usr/local/include/google/protobuf-c/protobuf-c.h
+               then
+                   CFLAGS="$CFLAGS -I/usr/local/include/google"
+                   LDFLAGS="$LDFLAGS -L/usr/local/lib"
+               fi
+           fi
+       ])
+       AC_ARG_WITH([libfstrm], AC_HELP_STRING([--with-libfstrm=path],
+                   [Path where libfstrm is installed, for dnstap]), [
+           CFLAGS="$CFLAGS -I$withval/include"
+           LDFLAGS="$LDFLAGS -L$withval/lib"
+       ])
+
+       AC_SEARCH_LIBS([fstrm_iothr_init], [fstrm], [],
+                      AC_MSG_ERROR([The fstrm library was not found. Please install fstrm!]))
+       AC_SEARCH_LIBS([protobuf_c_message_pack], [protobuf-c], [],
+                      AC_MSG_ERROR([The protobuf-c library was not found. Please install protobuf-c!]))
+
+       AC_DEFINE(HAVE_DNSTAP, 1, [Define to 1 to enable dnstap support])
+       DNSTAP=dnstap
+       DNSTAPSRCS='${DNSTAPSRCS}'
+       DNSTAPOBJS='${DNSTAPOBJS}'
+       DNSTAPTARGETS='${DNSTAPTARGETS}'
+       DNSTAPMAN='${DNSTAPMAN}'
+       DNSTAPHTML='${DNSTAPHTML}'
+       DNSTAP_PB_C_H="dnstap.pb-c.h"
 fi
 AC_SUBST(DNSTAP)
 AC_SUBST(DNSTAPSRCS)
@@ -4158,6 +4160,7 @@ AC_SUBST(DNSTAPOBJS)
 AC_SUBST(DNSTAPTARGETS)
 AC_SUBST(DNSTAPMAN)
 AC_SUBST(DNSTAPHTML)
+AC_SUBST(DNSTAP_PB_C_H)
 
 #
 #  The following sets up how non-blocking i/o is established.
index b0993c4697900e4ebb01e98070ba034da05045cf..dc65998055d1188b81d7ce6fd5c8b433293aeb24 100644 (file)
          to allow <command>dnstap</command> data to be presented in
          a human-readable format.
        </para>
+       <para>
+         <command>rndc dnstap-reopen</command> can be used reopen
+         dnstap output files after renaming them.
+       </para>
        <para>
          For more information on <command>dnstap</command>, see
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dnstap.info">http://dnstap.info</link>.
index d6a4772a275b7d8c923087a3ef220bedd10605af..66c95ddd79a93a87983c62c2d1fe02c270d0a812 100644 (file)
@@ -5,3 +5,5 @@ enumclass.h
 enumtype.h
 rdatastruct.h
 gen.dSYM
+dnstap.pb-c.c
+dnstap.pb-c.h
\ No newline at end of file
index 95aae2ccda4051fbfe4efab9ab545f74a4c812dd..3144ecf5c846aa0d8bbf5351028ea95e2841e543 100644 (file)
@@ -83,8 +83,8 @@ DNSOBJS =     acache.@O@ acl.@O@ adb.@O@ badcache.@O@ byaddr.@O@ \
                version.@O@ view.@O@ xfrin.@O@ zone.@O@ zonekey.@O@ zt.@O@
 PORTDNSOBJS =  client.@O@ ecdb.@O@
 
-OBJS=          ${DNSOBJS} ${OTHEROBJS} ${DSTOBJS} ${PORTDNSOBJS} \
-               @DNSTAPOBJS@ @GEOIPLINKOBJS@
+OBJS=          @DNSTAPOBJS@ ${DNSOBJS} ${OTHEROBJS} ${DSTOBJS} \
+               ${PORTDNSOBJS} @GEOIPLINKOBJS@
 
 
 # Alphabetically
@@ -168,6 +168,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
 
 newrr::
        rm -f code.h include/dns/enumtype.h include/dns/enumclass.h
index b475174e330f9908bababef1a415b221191fab7a..387c6ae8029d0f327785b1ed76f708191135c49c 100644 (file)
@@ -90,6 +90,20 @@ struct dns_dtmsg {
        Dnstap__Message m;
 };
 
+struct dns_dtenv {
+       unsigned int magic;
+       isc_refcount_t refcount;
+
+       isc_mem_t *mctx;
+
+       struct fstrm_iothr *iothr;
+       struct fstrm_writer *fw;
+
+       isc_region_t identity;
+       isc_region_t version;
+       char *path;
+};
+
 #define CHECK(x) do { \
        result = (x); \
        if (result != ISC_R_SUCCESS) \
@@ -174,6 +188,9 @@ dns_dt_create(isc_mem_t *mctx, dns_dtmode_t mode, const char *path,
        memset(env, 0, sizeof(dns_dtenv_t));
 
        CHECK(isc_refcount_init(&env->refcount, 1));
+       env->path = isc_mem_strdup(mctx, path);
+       if (env->path == NULL)
+               CHECK(ISC_R_NOMEMORY);
 
        fwopt = fstrm_writer_options_init();
        if (fwopt == NULL)
@@ -189,13 +206,14 @@ dns_dt_create(isc_mem_t *mctx, dns_dtmode_t mode, const char *path,
        if (mode == dns_dtmode_file) {
                ffwopt = fstrm_file_options_init();
                if (ffwopt != NULL) {
-                       fstrm_file_options_set_file_path(ffwopt, path);
+                       fstrm_file_options_set_file_path(ffwopt, env->path);
                        fw = fstrm_file_writer_init(ffwopt, fwopt);
                }
        } else if (mode == dns_dtmode_unix) {
                fuwopt = fstrm_unix_writer_options_init();
                if (fuwopt != NULL) {
-                       fstrm_unix_writer_options_set_socket_path(fuwopt, path);
+                       fstrm_unix_writer_options_set_socket_path(fuwopt,
+                                                                 env->path);
                        fw = fstrm_unix_writer_init(fuwopt, fwopt);
                }
        } else
@@ -207,11 +225,16 @@ dns_dt_create(isc_mem_t *mctx, dns_dtmode_t mode, const char *path,
        fopt = fstrm_iothr_options_init();
        fstrm_iothr_options_set_num_input_queues(fopt, workers);
 
+       /*
+        * Remember 'fw' so we can close and reopen it later.
+        */
+       env->fw = fw;
        env->iothr = fstrm_iothr_init(fopt, &fw);
        if (env->iothr == NULL) {
                isc_log_write(dns_lctx, DNS_LOGCATEGORY_DNSTAP,
                              DNS_LOGMODULE_DNSTAP, ISC_LOG_WARNING,
                              "unable to initialize dnstap I/O thread");
+               env->fw = NULL;
                fstrm_writer_destroy(&fw);
                CHECK(ISC_R_FAILURE);
        }
@@ -235,6 +258,8 @@ dns_dt_create(isc_mem_t *mctx, dns_dtmode_t mode, const char *path,
                if (env != NULL) {
                        if (env->mctx != NULL)
                                isc_mem_detach(&env->mctx);
+                       if (env->path != NULL)
+                               isc_mem_free(mctx, env->path);
                        isc_mem_put(mctx, env, sizeof(dns_dtenv_t));
                }
        }
@@ -242,6 +267,30 @@ dns_dt_create(isc_mem_t *mctx, dns_dtmode_t mode, const char *path,
        return (result);
 }
 
+isc_result_t
+dns_dt_reopen(dns_dtenv_t *env) {
+       isc_result_t result = ISC_R_SUCCESS;
+       fstrm_res res;
+
+       REQUIRE(VALID_DTENV(env));
+
+       isc_log_write(dns_lctx, DNS_LOGCATEGORY_DNSTAP,
+                     DNS_LOGMODULE_DNSTAP, ISC_LOG_INFO,
+                     "reopening dnstap destination '%s'",
+                     env->path);
+
+       if (env->fw != NULL) {
+               res = fstrm_writer_close(env->fw);
+               if (res == fstrm_res_success)
+                       fstrm_writer_open(env->fw);
+               return (ISC_R_SUCCESS);
+       }
+
+
+
+       return (result);
+}
+
 static isc_result_t
 toregion(dns_dtenv_t *env, isc_region_t *r, const char *str) {
        unsigned char *p = NULL;
@@ -332,6 +381,8 @@ destroy(dns_dtenv_t *env) {
                isc_mem_free(env->mctx, env->version.base);
                env->version.length = 0;
        }
+       if (env->path != NULL)
+               isc_mem_free(env->mctx, env->path);
 
        isc_mem_putanddetach(&env->mctx, env, sizeof(*env));
 }
diff --git a/lib/dns/dnstap.pb-c.c b/lib/dns/dnstap.pb-c.c
deleted file mode 100644 (file)
index 50000bd..0000000
+++ /dev/null
@@ -1,523 +0,0 @@
-/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
-/* Generated from: dnstap.proto */
-
-/* Do not generate deprecated warnings for self */
-#ifndef PROTOBUF_C__NO_DEPRECATED
-#define PROTOBUF_C__NO_DEPRECATED
-#endif
-
-#include "dnstap.pb-c.h"
-void   dnstap__dnstap__init
-                     (Dnstap__Dnstap         *message)
-{
-  static Dnstap__Dnstap init_value = DNSTAP__DNSTAP__INIT;
-  *message = init_value;
-}
-size_t dnstap__dnstap__get_packed_size
-                     (const Dnstap__Dnstap *message)
-{
-  assert(message->base.descriptor == &dnstap__dnstap__descriptor);
-  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t dnstap__dnstap__pack
-                     (const Dnstap__Dnstap *message,
-                      uint8_t       *out)
-{
-  assert(message->base.descriptor == &dnstap__dnstap__descriptor);
-  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t dnstap__dnstap__pack_to_buffer
-                     (const Dnstap__Dnstap *message,
-                      ProtobufCBuffer *buffer)
-{
-  assert(message->base.descriptor == &dnstap__dnstap__descriptor);
-  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-Dnstap__Dnstap *
-       dnstap__dnstap__unpack
-                     (ProtobufCAllocator  *allocator,
-                      size_t               len,
-                      const uint8_t       *data)
-{
-  return (Dnstap__Dnstap *)
-     protobuf_c_message_unpack (&dnstap__dnstap__descriptor,
-                                allocator, len, data);
-}
-void   dnstap__dnstap__free_unpacked
-                     (Dnstap__Dnstap *message,
-                      ProtobufCAllocator *allocator)
-{
-  assert(message->base.descriptor == &dnstap__dnstap__descriptor);
-  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void   dnstap__message__init
-                     (Dnstap__Message         *message)
-{
-  static Dnstap__Message init_value = DNSTAP__MESSAGE__INIT;
-  *message = init_value;
-}
-size_t dnstap__message__get_packed_size
-                     (const Dnstap__Message *message)
-{
-  assert(message->base.descriptor == &dnstap__message__descriptor);
-  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t dnstap__message__pack
-                     (const Dnstap__Message *message,
-                      uint8_t       *out)
-{
-  assert(message->base.descriptor == &dnstap__message__descriptor);
-  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t dnstap__message__pack_to_buffer
-                     (const Dnstap__Message *message,
-                      ProtobufCBuffer *buffer)
-{
-  assert(message->base.descriptor == &dnstap__message__descriptor);
-  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-Dnstap__Message *
-       dnstap__message__unpack
-                     (ProtobufCAllocator  *allocator,
-                      size_t               len,
-                      const uint8_t       *data)
-{
-  return (Dnstap__Message *)
-     protobuf_c_message_unpack (&dnstap__message__descriptor,
-                                allocator, len, data);
-}
-void   dnstap__message__free_unpacked
-                     (Dnstap__Message *message,
-                      ProtobufCAllocator *allocator)
-{
-  assert(message->base.descriptor == &dnstap__message__descriptor);
-  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-static const ProtobufCEnumValue dnstap__dnstap__type__enum_values_by_number[1] =
-{
-  { "MESSAGE", "DNSTAP__DNSTAP__TYPE__MESSAGE", 1 },
-};
-static const ProtobufCIntRange dnstap__dnstap__type__value_ranges[] = {
-{1, 0},{0, 1}
-};
-static const ProtobufCEnumValueIndex dnstap__dnstap__type__enum_values_by_name[1] =
-{
-  { "MESSAGE", 0 },
-};
-const ProtobufCEnumDescriptor dnstap__dnstap__type__descriptor =
-{
-  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
-  "dnstap.Dnstap.Type",
-  "Type",
-  "Dnstap__Dnstap__Type",
-  "dnstap",
-  1,
-  dnstap__dnstap__type__enum_values_by_number,
-  1,
-  dnstap__dnstap__type__enum_values_by_name,
-  1,
-  dnstap__dnstap__type__value_ranges,
-  NULL,NULL,NULL,NULL   /* reserved[1234] */
-};
-static const ProtobufCFieldDescriptor dnstap__dnstap__field_descriptors[5] =
-{
-  {
-    "identity",
-    1,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Dnstap, has_identity),
-    offsetof(Dnstap__Dnstap, identity),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "version",
-    2,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Dnstap, has_version),
-    offsetof(Dnstap__Dnstap, version),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "extra",
-    3,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Dnstap, has_extra),
-    offsetof(Dnstap__Dnstap, extra),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "message",
-    14,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_MESSAGE,
-    0,   /* quantifier_offset */
-    offsetof(Dnstap__Dnstap, message),
-    &dnstap__message__descriptor,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "type",
-    15,
-    PROTOBUF_C_LABEL_REQUIRED,
-    PROTOBUF_C_TYPE_ENUM,
-    0,   /* quantifier_offset */
-    offsetof(Dnstap__Dnstap, type),
-    &dnstap__dnstap__type__descriptor,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-};
-static const unsigned dnstap__dnstap__field_indices_by_name[] = {
-  2,   /* field[2] = extra */
-  0,   /* field[0] = identity */
-  3,   /* field[3] = message */
-  4,   /* field[4] = type */
-  1,   /* field[1] = version */
-};
-static const ProtobufCIntRange dnstap__dnstap__number_ranges[2 + 1] =
-{
-  { 1, 0 },
-  { 14, 3 },
-  { 0, 5 }
-};
-const ProtobufCMessageDescriptor dnstap__dnstap__descriptor =
-{
-  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
-  "dnstap.Dnstap",
-  "Dnstap",
-  "Dnstap__Dnstap",
-  "dnstap",
-  sizeof(Dnstap__Dnstap),
-  5,
-  dnstap__dnstap__field_descriptors,
-  dnstap__dnstap__field_indices_by_name,
-  2,  dnstap__dnstap__number_ranges,
-  (ProtobufCMessageInit) dnstap__dnstap__init,
-  NULL,NULL,NULL    /* reserved[123] */
-};
-static const ProtobufCEnumValue dnstap__message__type__enum_values_by_number[12] =
-{
-  { "AUTH_QUERY", "DNSTAP__MESSAGE__TYPE__AUTH_QUERY", 1 },
-  { "AUTH_RESPONSE", "DNSTAP__MESSAGE__TYPE__AUTH_RESPONSE", 2 },
-  { "RESOLVER_QUERY", "DNSTAP__MESSAGE__TYPE__RESOLVER_QUERY", 3 },
-  { "RESOLVER_RESPONSE", "DNSTAP__MESSAGE__TYPE__RESOLVER_RESPONSE", 4 },
-  { "CLIENT_QUERY", "DNSTAP__MESSAGE__TYPE__CLIENT_QUERY", 5 },
-  { "CLIENT_RESPONSE", "DNSTAP__MESSAGE__TYPE__CLIENT_RESPONSE", 6 },
-  { "FORWARDER_QUERY", "DNSTAP__MESSAGE__TYPE__FORWARDER_QUERY", 7 },
-  { "FORWARDER_RESPONSE", "DNSTAP__MESSAGE__TYPE__FORWARDER_RESPONSE", 8 },
-  { "STUB_QUERY", "DNSTAP__MESSAGE__TYPE__STUB_QUERY", 9 },
-  { "STUB_RESPONSE", "DNSTAP__MESSAGE__TYPE__STUB_RESPONSE", 10 },
-  { "TOOL_QUERY", "DNSTAP__MESSAGE__TYPE__TOOL_QUERY", 11 },
-  { "TOOL_RESPONSE", "DNSTAP__MESSAGE__TYPE__TOOL_RESPONSE", 12 },
-};
-static const ProtobufCIntRange dnstap__message__type__value_ranges[] = {
-{1, 0},{0, 12}
-};
-static const ProtobufCEnumValueIndex dnstap__message__type__enum_values_by_name[12] =
-{
-  { "AUTH_QUERY", 0 },
-  { "AUTH_RESPONSE", 1 },
-  { "CLIENT_QUERY", 4 },
-  { "CLIENT_RESPONSE", 5 },
-  { "FORWARDER_QUERY", 6 },
-  { "FORWARDER_RESPONSE", 7 },
-  { "RESOLVER_QUERY", 2 },
-  { "RESOLVER_RESPONSE", 3 },
-  { "STUB_QUERY", 8 },
-  { "STUB_RESPONSE", 9 },
-  { "TOOL_QUERY", 10 },
-  { "TOOL_RESPONSE", 11 },
-};
-const ProtobufCEnumDescriptor dnstap__message__type__descriptor =
-{
-  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
-  "dnstap.Message.Type",
-  "Type",
-  "Dnstap__Message__Type",
-  "dnstap",
-  12,
-  dnstap__message__type__enum_values_by_number,
-  12,
-  dnstap__message__type__enum_values_by_name,
-  1,
-  dnstap__message__type__value_ranges,
-  NULL,NULL,NULL,NULL   /* reserved[1234] */
-};
-static const ProtobufCFieldDescriptor dnstap__message__field_descriptors[14] =
-{
-  {
-    "type",
-    1,
-    PROTOBUF_C_LABEL_REQUIRED,
-    PROTOBUF_C_TYPE_ENUM,
-    0,   /* quantifier_offset */
-    offsetof(Dnstap__Message, type),
-    &dnstap__message__type__descriptor,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "socket_family",
-    2,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_ENUM,
-    offsetof(Dnstap__Message, has_socket_family),
-    offsetof(Dnstap__Message, socket_family),
-    &dnstap__socket_family__descriptor,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "socket_protocol",
-    3,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_ENUM,
-    offsetof(Dnstap__Message, has_socket_protocol),
-    offsetof(Dnstap__Message, socket_protocol),
-    &dnstap__socket_protocol__descriptor,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "query_address",
-    4,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Message, has_query_address),
-    offsetof(Dnstap__Message, query_address),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "response_address",
-    5,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Message, has_response_address),
-    offsetof(Dnstap__Message, response_address),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "query_port",
-    6,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_UINT32,
-    offsetof(Dnstap__Message, has_query_port),
-    offsetof(Dnstap__Message, query_port),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "response_port",
-    7,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_UINT32,
-    offsetof(Dnstap__Message, has_response_port),
-    offsetof(Dnstap__Message, response_port),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "query_time_sec",
-    8,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_UINT64,
-    offsetof(Dnstap__Message, has_query_time_sec),
-    offsetof(Dnstap__Message, query_time_sec),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "query_time_nsec",
-    9,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_FIXED32,
-    offsetof(Dnstap__Message, has_query_time_nsec),
-    offsetof(Dnstap__Message, query_time_nsec),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "query_message",
-    10,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Message, has_query_message),
-    offsetof(Dnstap__Message, query_message),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "query_zone",
-    11,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Message, has_query_zone),
-    offsetof(Dnstap__Message, query_zone),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "response_time_sec",
-    12,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_UINT64,
-    offsetof(Dnstap__Message, has_response_time_sec),
-    offsetof(Dnstap__Message, response_time_sec),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "response_time_nsec",
-    13,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_FIXED32,
-    offsetof(Dnstap__Message, has_response_time_nsec),
-    offsetof(Dnstap__Message, response_time_nsec),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-  {
-    "response_message",
-    14,
-    PROTOBUF_C_LABEL_OPTIONAL,
-    PROTOBUF_C_TYPE_BYTES,
-    offsetof(Dnstap__Message, has_response_message),
-    offsetof(Dnstap__Message, response_message),
-    NULL,
-    NULL,
-    0,             /* flags */
-    0,NULL,NULL    /* reserved1,reserved2, etc */
-  },
-};
-static const unsigned dnstap__message__field_indices_by_name[] = {
-  3,   /* field[3] = query_address */
-  9,   /* field[9] = query_message */
-  5,   /* field[5] = query_port */
-  8,   /* field[8] = query_time_nsec */
-  7,   /* field[7] = query_time_sec */
-  10,   /* field[10] = query_zone */
-  4,   /* field[4] = response_address */
-  13,   /* field[13] = response_message */
-  6,   /* field[6] = response_port */
-  12,   /* field[12] = response_time_nsec */
-  11,   /* field[11] = response_time_sec */
-  1,   /* field[1] = socket_family */
-  2,   /* field[2] = socket_protocol */
-  0,   /* field[0] = type */
-};
-static const ProtobufCIntRange dnstap__message__number_ranges[1 + 1] =
-{
-  { 1, 0 },
-  { 0, 14 }
-};
-const ProtobufCMessageDescriptor dnstap__message__descriptor =
-{
-  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
-  "dnstap.Message",
-  "Message",
-  "Dnstap__Message",
-  "dnstap",
-  sizeof(Dnstap__Message),
-  14,
-  dnstap__message__field_descriptors,
-  dnstap__message__field_indices_by_name,
-  1,  dnstap__message__number_ranges,
-  (ProtobufCMessageInit) dnstap__message__init,
-  NULL,NULL,NULL    /* reserved[123] */
-};
-static const ProtobufCEnumValue dnstap__socket_family__enum_values_by_number[2] =
-{
-  { "INET", "DNSTAP__SOCKET_FAMILY__INET", 1 },
-  { "INET6", "DNSTAP__SOCKET_FAMILY__INET6", 2 },
-};
-static const ProtobufCIntRange dnstap__socket_family__value_ranges[] = {
-{1, 0},{0, 2}
-};
-static const ProtobufCEnumValueIndex dnstap__socket_family__enum_values_by_name[2] =
-{
-  { "INET", 0 },
-  { "INET6", 1 },
-};
-const ProtobufCEnumDescriptor dnstap__socket_family__descriptor =
-{
-  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
-  "dnstap.SocketFamily",
-  "SocketFamily",
-  "Dnstap__SocketFamily",
-  "dnstap",
-  2,
-  dnstap__socket_family__enum_values_by_number,
-  2,
-  dnstap__socket_family__enum_values_by_name,
-  1,
-  dnstap__socket_family__value_ranges,
-  NULL,NULL,NULL,NULL   /* reserved[1234] */
-};
-static const ProtobufCEnumValue dnstap__socket_protocol__enum_values_by_number[2] =
-{
-  { "UDP", "DNSTAP__SOCKET_PROTOCOL__UDP", 1 },
-  { "TCP", "DNSTAP__SOCKET_PROTOCOL__TCP", 2 },
-};
-static const ProtobufCIntRange dnstap__socket_protocol__value_ranges[] = {
-{1, 0},{0, 2}
-};
-static const ProtobufCEnumValueIndex dnstap__socket_protocol__enum_values_by_name[2] =
-{
-  { "TCP", 1 },
-  { "UDP", 0 },
-};
-const ProtobufCEnumDescriptor dnstap__socket_protocol__descriptor =
-{
-  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
-  "dnstap.SocketProtocol",
-  "SocketProtocol",
-  "Dnstap__SocketProtocol",
-  "dnstap",
-  2,
-  dnstap__socket_protocol__enum_values_by_number,
-  2,
-  dnstap__socket_protocol__enum_values_by_name,
-  1,
-  dnstap__socket_protocol__value_ranges,
-  NULL,NULL,NULL,NULL   /* reserved[1234] */
-};
diff --git a/lib/dns/dnstap.pb-c.h b/lib/dns/dnstap.pb-c.h
deleted file mode 100644 (file)
index 71fd829..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
-/* Generated from: dnstap.proto */
-
-#ifndef PROTOBUF_C_dnstap_2eproto__INCLUDED
-#define PROTOBUF_C_dnstap_2eproto__INCLUDED
-
-#include <protobuf-c/protobuf-c.h>
-
-PROTOBUF_C__BEGIN_DECLS
-
-#if PROTOBUF_C_VERSION_NUMBER < 1000000
-# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
-#elif 1001001 < PROTOBUF_C_MIN_COMPILER_VERSION
-# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
-#endif
-
-
-typedef struct _Dnstap__Dnstap Dnstap__Dnstap;
-typedef struct _Dnstap__Message Dnstap__Message;
-
-
-/* --- enums --- */
-
-/*
- * Identifies which field below is filled in.
- */
-typedef enum _Dnstap__Dnstap__Type {
-  DNSTAP__DNSTAP__TYPE__MESSAGE = 1
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__DNSTAP__TYPE)
-} Dnstap__Dnstap__Type;
-typedef enum _Dnstap__Message__Type {
-  /*
-   * AUTH_QUERY is a DNS query message received from a resolver by an
-   * authoritative name server, from the perspective of the authorative
-   * name server.
-   */
-  DNSTAP__MESSAGE__TYPE__AUTH_QUERY = 1,
-  /*
-   * AUTH_RESPONSE is a DNS response message sent from an authoritative
-   * name server to a resolver, from the perspective of the authoritative
-   * name server.
-   */
-  DNSTAP__MESSAGE__TYPE__AUTH_RESPONSE = 2,
-  /*
-   * RESOLVER_QUERY is a DNS query message sent from a resolver to an
-   * authoritative name server, from the perspective of the resolver.
-   * Resolvers typically clear the RD (recursion desired) bit when
-   * sending queries.
-   */
-  DNSTAP__MESSAGE__TYPE__RESOLVER_QUERY = 3,
-  /*
-   * RESOLVER_RESPONSE is a DNS response message received from an
-   * authoritative name server by a resolver, from the perspective of
-   * the resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__RESOLVER_RESPONSE = 4,
-  /*
-   * CLIENT_QUERY is a DNS query message sent from a client to a DNS
-   * server which is expected to perform further recursion, from the
-   * perspective of the DNS server. The client may be a stub resolver or
-   * forwarder or some other type of software which typically sets the RD
-   * (recursion desired) bit when querying the DNS server. The DNS server
-   * may be a simple forwarding proxy or it may be a full recursive
-   * resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__CLIENT_QUERY = 5,
-  /*
-   * CLIENT_RESPONSE is a DNS response message sent from a DNS server to
-   * a client, from the perspective of the DNS server. The DNS server
-   * typically sets the RA (recursion available) bit when responding.
-   */
-  DNSTAP__MESSAGE__TYPE__CLIENT_RESPONSE = 6,
-  /*
-   * FORWARDER_QUERY is a DNS query message sent from a downstream DNS
-   * server to an upstream DNS server which is expected to perform
-   * further recursion, from the perspective of the downstream DNS
-   * server.
-   */
-  DNSTAP__MESSAGE__TYPE__FORWARDER_QUERY = 7,
-  /*
-   * FORWARDER_RESPONSE is a DNS response message sent from an upstream
-   * DNS server performing recursion to a downstream DNS server, from the
-   * perspective of the downstream DNS server.
-   */
-  DNSTAP__MESSAGE__TYPE__FORWARDER_RESPONSE = 8,
-  /*
-   * STUB_QUERY is a DNS query message sent from a stub resolver to a DNS
-   * server, from the perspective of the stub resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__STUB_QUERY = 9,
-  /*
-   * STUB_RESPONSE is a DNS response message sent from a DNS server to a
-   * stub resolver, from the perspective of the stub resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__STUB_RESPONSE = 10,
-  /*
-   * TOOL_QUERY is a DNS query message sent from a DNS software tool to a
-   * DNS server, from the perspective of the tool.
-   */
-  DNSTAP__MESSAGE__TYPE__TOOL_QUERY = 11,
-  /*
-   * TOOL_RESPONSE is a DNS response message received by a DNS software
-   * tool from a DNS server, from the perspective of the tool.
-   */
-  DNSTAP__MESSAGE__TYPE__TOOL_RESPONSE = 12
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__MESSAGE__TYPE)
-} Dnstap__Message__Type;
-/*
- * SocketFamily: the network protocol family of a socket. This specifies how
- * to interpret "network address" fields.
- */
-typedef enum _Dnstap__SocketFamily {
-  /*
-   * IPv4 (RFC 791)
-   */
-  DNSTAP__SOCKET_FAMILY__INET = 1,
-  /*
-   * IPv6 (RFC 2460)
-   */
-  DNSTAP__SOCKET_FAMILY__INET6 = 2
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__SOCKET_FAMILY)
-} Dnstap__SocketFamily;
-/*
- * SocketProtocol: the transport protocol of a socket. This specifies how to
- * interpret "transport port" fields.
- */
-typedef enum _Dnstap__SocketProtocol {
-  /*
-   * User Datagram Protocol (RFC 768)
-   */
-  DNSTAP__SOCKET_PROTOCOL__UDP = 1,
-  /*
-   * Transmission Control Protocol (RFC 793)
-   */
-  DNSTAP__SOCKET_PROTOCOL__TCP = 2
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__SOCKET_PROTOCOL)
-} Dnstap__SocketProtocol;
-
-/* --- messages --- */
-
-/*
- * "Dnstap": this is the top-level dnstap type, which is a "union" type that
- * contains other kinds of dnstap payloads, although currently only one type
- * of dnstap payload is defined.
- * See: https://developers.google.com/protocol-buffers/docs/techniques#union
- */
-struct  _Dnstap__Dnstap
-{
-  ProtobufCMessage base;
-  /*
-   * DNS server identity.
-   * If enabled, this is the identity string of the DNS server which generated
-   * this message. Typically this would be the same string as returned by an
-   * "NSID" (RFC 5001) query.
-   */
-  protobuf_c_boolean has_identity;
-  ProtobufCBinaryData identity;
-  /*
-   * DNS server version.
-   * If enabled, this is the version string of the DNS server which generated
-   * this message. Typically this would be the same string as returned by a
-   * "version.bind" query.
-   */
-  protobuf_c_boolean has_version;
-  ProtobufCBinaryData version;
-  /*
-   * Extra data for this payload.
-   * This field can be used for adding an arbitrary byte-string annotation to
-   * the payload. No encoding or interpretation is applied or enforced.
-   */
-  protobuf_c_boolean has_extra;
-  ProtobufCBinaryData extra;
-  Dnstap__Dnstap__Type type;
-  /*
-   * One of the following will be filled in.
-   */
-  Dnstap__Message *message;
-};
-#define DNSTAP__DNSTAP__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&dnstap__dnstap__descriptor) \
-    , 0,{0,NULL}, 0,{0,NULL}, 0,{0,NULL}, 0, NULL }
-
-
-/*
- * Message: a wire-format (RFC 1035 section 4) DNS message and associated
- * metadata. Applications generating "Message" payloads should follow
- * certain requirements based on the MessageType, see below.
- */
-struct  _Dnstap__Message
-{
-  ProtobufCMessage base;
-  /*
-   * One of the Type values described above.
-   */
-  Dnstap__Message__Type type;
-  /*
-   * One of the SocketFamily values described above.
-   */
-  protobuf_c_boolean has_socket_family;
-  Dnstap__SocketFamily socket_family;
-  /*
-   * One of the SocketProtocol values described above.
-   */
-  protobuf_c_boolean has_socket_protocol;
-  Dnstap__SocketProtocol socket_protocol;
-  /*
-   * The network address of the message initiator.
-   * For SocketFamily INET, this field is 4 octets (IPv4 address).
-   * For SocketFamily INET6, this field is 16 octets (IPv6 address).
-   */
-  protobuf_c_boolean has_query_address;
-  ProtobufCBinaryData query_address;
-  /*
-   * The network address of the message responder.
-   * For SocketFamily INET, this field is 4 octets (IPv4 address).
-   * For SocketFamily INET6, this field is 16 octets (IPv6 address).
-   */
-  protobuf_c_boolean has_response_address;
-  ProtobufCBinaryData response_address;
-  /*
-   * The transport port of the message initiator.
-   * This is a 16-bit UDP or TCP port number, depending on SocketProtocol.
-   */
-  protobuf_c_boolean has_query_port;
-  uint32_t query_port;
-  /*
-   * The transport port of the message responder.
-   * This is a 16-bit UDP or TCP port number, depending on SocketProtocol.
-   */
-  protobuf_c_boolean has_response_port;
-  uint32_t response_port;
-  /*
-   * The time at which the DNS query message was sent or received, depending
-   * on whether this is an AUTH_QUERY, RESOLVER_QUERY, or CLIENT_QUERY.
-   * This is the number of seconds since the UNIX epoch.
-   */
-  protobuf_c_boolean has_query_time_sec;
-  uint64_t query_time_sec;
-  /*
-   * The time at which the DNS query message was sent or received.
-   * This is the seconds fraction, expressed as a count of nanoseconds.
-   */
-  protobuf_c_boolean has_query_time_nsec;
-  uint32_t query_time_nsec;
-  /*
-   * The initiator's original wire-format DNS query message, verbatim.
-   */
-  protobuf_c_boolean has_query_message;
-  ProtobufCBinaryData query_message;
-  /*
-   * The "zone" or "bailiwick" pertaining to the DNS query message.
-   * This is a wire-format DNS domain name.
-   */
-  protobuf_c_boolean has_query_zone;
-  ProtobufCBinaryData query_zone;
-  /*
-   * The time at which the DNS response message was sent or received,
-   * depending on whether this is an AUTH_RESPONSE, RESOLVER_RESPONSE, or
-   * CLIENT_RESPONSE.
-   * This is the number of seconds since the UNIX epoch.
-   */
-  protobuf_c_boolean has_response_time_sec;
-  uint64_t response_time_sec;
-  /*
-   * The time at which the DNS response message was sent or received.
-   * This is the seconds fraction, expressed as a count of nanoseconds.
-   */
-  protobuf_c_boolean has_response_time_nsec;
-  uint32_t response_time_nsec;
-  /*
-   * The responder's original wire-format DNS response message, verbatim.
-   */
-  protobuf_c_boolean has_response_message;
-  ProtobufCBinaryData response_message;
-};
-#define DNSTAP__MESSAGE__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&dnstap__message__descriptor) \
-    , 0, 0,0, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,0, 0,0, 0,0, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,0, 0,0, 0,{0,NULL} }
-
-
-/* Dnstap__Dnstap methods */
-void   dnstap__dnstap__init
-                     (Dnstap__Dnstap         *message);
-size_t dnstap__dnstap__get_packed_size
-                     (const Dnstap__Dnstap   *message);
-size_t dnstap__dnstap__pack
-                     (const Dnstap__Dnstap   *message,
-                      uint8_t             *out);
-size_t dnstap__dnstap__pack_to_buffer
-                     (const Dnstap__Dnstap   *message,
-                      ProtobufCBuffer     *buffer);
-Dnstap__Dnstap *
-       dnstap__dnstap__unpack
-                     (ProtobufCAllocator  *allocator,
-                      size_t               len,
-                      const uint8_t       *data);
-void   dnstap__dnstap__free_unpacked
-                     (Dnstap__Dnstap *message,
-                      ProtobufCAllocator *allocator);
-/* Dnstap__Message methods */
-void   dnstap__message__init
-                     (Dnstap__Message         *message);
-size_t dnstap__message__get_packed_size
-                     (const Dnstap__Message   *message);
-size_t dnstap__message__pack
-                     (const Dnstap__Message   *message,
-                      uint8_t             *out);
-size_t dnstap__message__pack_to_buffer
-                     (const Dnstap__Message   *message,
-                      ProtobufCBuffer     *buffer);
-Dnstap__Message *
-       dnstap__message__unpack
-                     (ProtobufCAllocator  *allocator,
-                      size_t               len,
-                      const uint8_t       *data);
-void   dnstap__message__free_unpacked
-                     (Dnstap__Message *message,
-                      ProtobufCAllocator *allocator);
-/* --- per-message closures --- */
-
-typedef void (*Dnstap__Dnstap_Closure)
-                 (const Dnstap__Dnstap *message,
-                  void *closure_data);
-typedef void (*Dnstap__Message_Closure)
-                 (const Dnstap__Message *message,
-                  void *closure_data);
-
-/* --- services --- */
-
-
-/* --- descriptors --- */
-
-extern const ProtobufCEnumDescriptor    dnstap__socket_family__descriptor;
-extern const ProtobufCEnumDescriptor    dnstap__socket_protocol__descriptor;
-extern const ProtobufCMessageDescriptor dnstap__dnstap__descriptor;
-extern const ProtobufCEnumDescriptor    dnstap__dnstap__type__descriptor;
-extern const ProtobufCMessageDescriptor dnstap__message__descriptor;
-extern const ProtobufCEnumDescriptor    dnstap__message__type__descriptor;
-
-PROTOBUF_C__END_DECLS
-
-
-#endif  /* PROTOBUF_C_dnstap_2eproto__INCLUDED */
index a69f7685ed3c975cb36f060d4b44c9589e7eed58..7a6e4337c1f053fcb894b4fa0ec64c0e71d2504d 100644 (file)
@@ -24,7 +24,7 @@ HEADERS =     acache.h acl.h adb.h badcache.h bit.h byaddr.h \
                client.h clientinfo.h compress.h \
                db.h dbiterator.h dbtable.h diff.h dispatch.h \
                dlz.h dlz_dlopen.h dns64.h dnssec.h ds.h dsdigest.h \
-               dnstap.h dnstap.pb-c.h dyndb.h \
+               dnstap.h dyndb.h \
                edns.h ecdb.h events.h fixedname.h forward.h geoip.h \
                ipkeylist.h iptable.h \
                journal.h keydata.h keyflags.h keytable.h keyvalues.h \
@@ -39,7 +39,7 @@ HEADERS =     acache.h acl.h adb.h badcache.h bit.h byaddr.h \
                update.h validator.h version.h view.h xfrin.h \
                zone.h zonekey.h zt.h
 
-GENHEADERS =   enumclass.h enumtype.h rdatastruct.h
+GENHEADERS =   @DNSTAP_PB_C_H@ enumclass.h enumtype.h rdatastruct.h
 
 SUBDIRS =
 TARGETS =
index e686b722dd53c99dfa3671eb566a3c8e57e0cde2..e21efa67d11e178518c300f5090d3299d9273599 100644 (file)
@@ -94,18 +94,6 @@ typedef struct dns_dthandle {
 } dns_dthandle_t;
 
 #ifdef HAVE_DNSTAP
-struct dns_dtenv {
-       unsigned int magic;
-       isc_refcount_t refcount;
-
-       isc_mem_t *mctx;
-
-       struct fstrm_iothr *iothr;
-
-       isc_region_t identity;
-       isc_region_t version;
-};
-
 struct dns_dtdata {
        isc_mem_t *mctx;
 
@@ -169,6 +157,15 @@ dns_dt_create(isc_mem_t *mctx, dns_dtmode_t mode, const char *path,
  *\li  Other errors are possible.
  */
 
+isc_result_t
+dns_dt_reopen(dns_dtenv_t *env);
+/*%<
+ * Reopens files established by dns_dt_create().
+ *
+ * Requires:
+ *\li  'env' is a valid dnstap environment.
+ */
+
 isc_result_t
 dns_dt_setidentity(dns_dtenv_t *env, const char *identity);
 isc_result_t
diff --git a/lib/dns/include/dns/dnstap.pb-c.h b/lib/dns/include/dns/dnstap.pb-c.h
deleted file mode 100644 (file)
index 71fd829..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
-/* Generated from: dnstap.proto */
-
-#ifndef PROTOBUF_C_dnstap_2eproto__INCLUDED
-#define PROTOBUF_C_dnstap_2eproto__INCLUDED
-
-#include <protobuf-c/protobuf-c.h>
-
-PROTOBUF_C__BEGIN_DECLS
-
-#if PROTOBUF_C_VERSION_NUMBER < 1000000
-# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
-#elif 1001001 < PROTOBUF_C_MIN_COMPILER_VERSION
-# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
-#endif
-
-
-typedef struct _Dnstap__Dnstap Dnstap__Dnstap;
-typedef struct _Dnstap__Message Dnstap__Message;
-
-
-/* --- enums --- */
-
-/*
- * Identifies which field below is filled in.
- */
-typedef enum _Dnstap__Dnstap__Type {
-  DNSTAP__DNSTAP__TYPE__MESSAGE = 1
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__DNSTAP__TYPE)
-} Dnstap__Dnstap__Type;
-typedef enum _Dnstap__Message__Type {
-  /*
-   * AUTH_QUERY is a DNS query message received from a resolver by an
-   * authoritative name server, from the perspective of the authorative
-   * name server.
-   */
-  DNSTAP__MESSAGE__TYPE__AUTH_QUERY = 1,
-  /*
-   * AUTH_RESPONSE is a DNS response message sent from an authoritative
-   * name server to a resolver, from the perspective of the authoritative
-   * name server.
-   */
-  DNSTAP__MESSAGE__TYPE__AUTH_RESPONSE = 2,
-  /*
-   * RESOLVER_QUERY is a DNS query message sent from a resolver to an
-   * authoritative name server, from the perspective of the resolver.
-   * Resolvers typically clear the RD (recursion desired) bit when
-   * sending queries.
-   */
-  DNSTAP__MESSAGE__TYPE__RESOLVER_QUERY = 3,
-  /*
-   * RESOLVER_RESPONSE is a DNS response message received from an
-   * authoritative name server by a resolver, from the perspective of
-   * the resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__RESOLVER_RESPONSE = 4,
-  /*
-   * CLIENT_QUERY is a DNS query message sent from a client to a DNS
-   * server which is expected to perform further recursion, from the
-   * perspective of the DNS server. The client may be a stub resolver or
-   * forwarder or some other type of software which typically sets the RD
-   * (recursion desired) bit when querying the DNS server. The DNS server
-   * may be a simple forwarding proxy or it may be a full recursive
-   * resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__CLIENT_QUERY = 5,
-  /*
-   * CLIENT_RESPONSE is a DNS response message sent from a DNS server to
-   * a client, from the perspective of the DNS server. The DNS server
-   * typically sets the RA (recursion available) bit when responding.
-   */
-  DNSTAP__MESSAGE__TYPE__CLIENT_RESPONSE = 6,
-  /*
-   * FORWARDER_QUERY is a DNS query message sent from a downstream DNS
-   * server to an upstream DNS server which is expected to perform
-   * further recursion, from the perspective of the downstream DNS
-   * server.
-   */
-  DNSTAP__MESSAGE__TYPE__FORWARDER_QUERY = 7,
-  /*
-   * FORWARDER_RESPONSE is a DNS response message sent from an upstream
-   * DNS server performing recursion to a downstream DNS server, from the
-   * perspective of the downstream DNS server.
-   */
-  DNSTAP__MESSAGE__TYPE__FORWARDER_RESPONSE = 8,
-  /*
-   * STUB_QUERY is a DNS query message sent from a stub resolver to a DNS
-   * server, from the perspective of the stub resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__STUB_QUERY = 9,
-  /*
-   * STUB_RESPONSE is a DNS response message sent from a DNS server to a
-   * stub resolver, from the perspective of the stub resolver.
-   */
-  DNSTAP__MESSAGE__TYPE__STUB_RESPONSE = 10,
-  /*
-   * TOOL_QUERY is a DNS query message sent from a DNS software tool to a
-   * DNS server, from the perspective of the tool.
-   */
-  DNSTAP__MESSAGE__TYPE__TOOL_QUERY = 11,
-  /*
-   * TOOL_RESPONSE is a DNS response message received by a DNS software
-   * tool from a DNS server, from the perspective of the tool.
-   */
-  DNSTAP__MESSAGE__TYPE__TOOL_RESPONSE = 12
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__MESSAGE__TYPE)
-} Dnstap__Message__Type;
-/*
- * SocketFamily: the network protocol family of a socket. This specifies how
- * to interpret "network address" fields.
- */
-typedef enum _Dnstap__SocketFamily {
-  /*
-   * IPv4 (RFC 791)
-   */
-  DNSTAP__SOCKET_FAMILY__INET = 1,
-  /*
-   * IPv6 (RFC 2460)
-   */
-  DNSTAP__SOCKET_FAMILY__INET6 = 2
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__SOCKET_FAMILY)
-} Dnstap__SocketFamily;
-/*
- * SocketProtocol: the transport protocol of a socket. This specifies how to
- * interpret "transport port" fields.
- */
-typedef enum _Dnstap__SocketProtocol {
-  /*
-   * User Datagram Protocol (RFC 768)
-   */
-  DNSTAP__SOCKET_PROTOCOL__UDP = 1,
-  /*
-   * Transmission Control Protocol (RFC 793)
-   */
-  DNSTAP__SOCKET_PROTOCOL__TCP = 2
-    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DNSTAP__SOCKET_PROTOCOL)
-} Dnstap__SocketProtocol;
-
-/* --- messages --- */
-
-/*
- * "Dnstap": this is the top-level dnstap type, which is a "union" type that
- * contains other kinds of dnstap payloads, although currently only one type
- * of dnstap payload is defined.
- * See: https://developers.google.com/protocol-buffers/docs/techniques#union
- */
-struct  _Dnstap__Dnstap
-{
-  ProtobufCMessage base;
-  /*
-   * DNS server identity.
-   * If enabled, this is the identity string of the DNS server which generated
-   * this message. Typically this would be the same string as returned by an
-   * "NSID" (RFC 5001) query.
-   */
-  protobuf_c_boolean has_identity;
-  ProtobufCBinaryData identity;
-  /*
-   * DNS server version.
-   * If enabled, this is the version string of the DNS server which generated
-   * this message. Typically this would be the same string as returned by a
-   * "version.bind" query.
-   */
-  protobuf_c_boolean has_version;
-  ProtobufCBinaryData version;
-  /*
-   * Extra data for this payload.
-   * This field can be used for adding an arbitrary byte-string annotation to
-   * the payload. No encoding or interpretation is applied or enforced.
-   */
-  protobuf_c_boolean has_extra;
-  ProtobufCBinaryData extra;
-  Dnstap__Dnstap__Type type;
-  /*
-   * One of the following will be filled in.
-   */
-  Dnstap__Message *message;
-};
-#define DNSTAP__DNSTAP__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&dnstap__dnstap__descriptor) \
-    , 0,{0,NULL}, 0,{0,NULL}, 0,{0,NULL}, 0, NULL }
-
-
-/*
- * Message: a wire-format (RFC 1035 section 4) DNS message and associated
- * metadata. Applications generating "Message" payloads should follow
- * certain requirements based on the MessageType, see below.
- */
-struct  _Dnstap__Message
-{
-  ProtobufCMessage base;
-  /*
-   * One of the Type values described above.
-   */
-  Dnstap__Message__Type type;
-  /*
-   * One of the SocketFamily values described above.
-   */
-  protobuf_c_boolean has_socket_family;
-  Dnstap__SocketFamily socket_family;
-  /*
-   * One of the SocketProtocol values described above.
-   */
-  protobuf_c_boolean has_socket_protocol;
-  Dnstap__SocketProtocol socket_protocol;
-  /*
-   * The network address of the message initiator.
-   * For SocketFamily INET, this field is 4 octets (IPv4 address).
-   * For SocketFamily INET6, this field is 16 octets (IPv6 address).
-   */
-  protobuf_c_boolean has_query_address;
-  ProtobufCBinaryData query_address;
-  /*
-   * The network address of the message responder.
-   * For SocketFamily INET, this field is 4 octets (IPv4 address).
-   * For SocketFamily INET6, this field is 16 octets (IPv6 address).
-   */
-  protobuf_c_boolean has_response_address;
-  ProtobufCBinaryData response_address;
-  /*
-   * The transport port of the message initiator.
-   * This is a 16-bit UDP or TCP port number, depending on SocketProtocol.
-   */
-  protobuf_c_boolean has_query_port;
-  uint32_t query_port;
-  /*
-   * The transport port of the message responder.
-   * This is a 16-bit UDP or TCP port number, depending on SocketProtocol.
-   */
-  protobuf_c_boolean has_response_port;
-  uint32_t response_port;
-  /*
-   * The time at which the DNS query message was sent or received, depending
-   * on whether this is an AUTH_QUERY, RESOLVER_QUERY, or CLIENT_QUERY.
-   * This is the number of seconds since the UNIX epoch.
-   */
-  protobuf_c_boolean has_query_time_sec;
-  uint64_t query_time_sec;
-  /*
-   * The time at which the DNS query message was sent or received.
-   * This is the seconds fraction, expressed as a count of nanoseconds.
-   */
-  protobuf_c_boolean has_query_time_nsec;
-  uint32_t query_time_nsec;
-  /*
-   * The initiator's original wire-format DNS query message, verbatim.
-   */
-  protobuf_c_boolean has_query_message;
-  ProtobufCBinaryData query_message;
-  /*
-   * The "zone" or "bailiwick" pertaining to the DNS query message.
-   * This is a wire-format DNS domain name.
-   */
-  protobuf_c_boolean has_query_zone;
-  ProtobufCBinaryData query_zone;
-  /*
-   * The time at which the DNS response message was sent or received,
-   * depending on whether this is an AUTH_RESPONSE, RESOLVER_RESPONSE, or
-   * CLIENT_RESPONSE.
-   * This is the number of seconds since the UNIX epoch.
-   */
-  protobuf_c_boolean has_response_time_sec;
-  uint64_t response_time_sec;
-  /*
-   * The time at which the DNS response message was sent or received.
-   * This is the seconds fraction, expressed as a count of nanoseconds.
-   */
-  protobuf_c_boolean has_response_time_nsec;
-  uint32_t response_time_nsec;
-  /*
-   * The responder's original wire-format DNS response message, verbatim.
-   */
-  protobuf_c_boolean has_response_message;
-  ProtobufCBinaryData response_message;
-};
-#define DNSTAP__MESSAGE__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&dnstap__message__descriptor) \
-    , 0, 0,0, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,0, 0,0, 0,0, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,0, 0,0, 0,{0,NULL} }
-
-
-/* Dnstap__Dnstap methods */
-void   dnstap__dnstap__init
-                     (Dnstap__Dnstap         *message);
-size_t dnstap__dnstap__get_packed_size
-                     (const Dnstap__Dnstap   *message);
-size_t dnstap__dnstap__pack
-                     (const Dnstap__Dnstap   *message,
-                      uint8_t             *out);
-size_t dnstap__dnstap__pack_to_buffer
-                     (const Dnstap__Dnstap   *message,
-                      ProtobufCBuffer     *buffer);
-Dnstap__Dnstap *
-       dnstap__dnstap__unpack
-                     (ProtobufCAllocator  *allocator,
-                      size_t               len,
-                      const uint8_t       *data);
-void   dnstap__dnstap__free_unpacked
-                     (Dnstap__Dnstap *message,
-                      ProtobufCAllocator *allocator);
-/* Dnstap__Message methods */
-void   dnstap__message__init
-                     (Dnstap__Message         *message);
-size_t dnstap__message__get_packed_size
-                     (const Dnstap__Message   *message);
-size_t dnstap__message__pack
-                     (const Dnstap__Message   *message,
-                      uint8_t             *out);
-size_t dnstap__message__pack_to_buffer
-                     (const Dnstap__Message   *message,
-                      ProtobufCBuffer     *buffer);
-Dnstap__Message *
-       dnstap__message__unpack
-                     (ProtobufCAllocator  *allocator,
-                      size_t               len,
-                      const uint8_t       *data);
-void   dnstap__message__free_unpacked
-                     (Dnstap__Message *message,
-                      ProtobufCAllocator *allocator);
-/* --- per-message closures --- */
-
-typedef void (*Dnstap__Dnstap_Closure)
-                 (const Dnstap__Dnstap *message,
-                  void *closure_data);
-typedef void (*Dnstap__Message_Closure)
-                 (const Dnstap__Message *message,
-                  void *closure_data);
-
-/* --- services --- */
-
-
-/* --- descriptors --- */
-
-extern const ProtobufCEnumDescriptor    dnstap__socket_family__descriptor;
-extern const ProtobufCEnumDescriptor    dnstap__socket_protocol__descriptor;
-extern const ProtobufCMessageDescriptor dnstap__dnstap__descriptor;
-extern const ProtobufCEnumDescriptor    dnstap__dnstap__type__descriptor;
-extern const ProtobufCMessageDescriptor dnstap__message__descriptor;
-extern const ProtobufCEnumDescriptor    dnstap__message__type__descriptor;
-
-PROTOBUF_C__END_DECLS
-
-
-#endif  /* PROTOBUF_C_dnstap_2eproto__INCLUDED */