From: Mark Andrews Date: Mon, 9 Nov 2020 02:44:22 +0000 (+1100) Subject: Implement DNSTAP support in ns_client_sendraw() X-Git-Tag: v9.16.9~6^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=14fe29b76d7c643511a6b51ab3d78abde3748c2e;p=thirdparty%2Fbind9.git Implement DNSTAP support in ns_client_sendraw() ns_client_sendraw() is currently only used to relay UPDATE responses back to the client. dns_dt_send() is called with this assumption. (cherry picked from commit b09727a765edddf5604f1d0be9501a9cc04c7756) --- diff --git a/lib/ns/client.c b/lib/ns/client.c index 1ca126eb472..70685317778 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -369,6 +369,23 @@ ns_client_sendraw(ns_client_t *client, dns_message_t *message) { r.base[0] = (client->message->id >> 8) & 0xff; r.base[1] = client->message->id & 0xff; +#ifdef HAVE_DNSTAP + if (client->view != NULL) { + bool tcp = TCP_CLIENT(client); + dns_dtmsgtype_t dtmsgtype; + if (client->message->opcode == dns_opcode_update) { + dtmsgtype = DNS_DTTYPE_UR; + } else if ((client->message->flags & DNS_MESSAGEFLAG_RD) != 0) { + dtmsgtype = DNS_DTTYPE_CR; + } else { + dtmsgtype = DNS_DTTYPE_AR; + } + dns_dt_send(client->view, dtmsgtype, &client->peeraddr, + &client->destsockaddr, tcp, NULL, + &client->requesttime, NULL, &buffer); + } +#endif + client_sendpkg(client, &buffer); return;