mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
extend DNSTAP to record UPDATE requests and responses as a separate type
This commit is contained in:
@@ -1225,10 +1225,13 @@ client_send(ns_client_t *client) {
|
||||
isc_buffer_usedregion(&b, &zr);
|
||||
}
|
||||
|
||||
if ((client->message->flags & DNS_MESSAGEFLAG_RD) != 0)
|
||||
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
|
||||
} else {
|
||||
dtmsgtype = DNS_DTTYPE_AR;
|
||||
}
|
||||
#endif /* HAVE_DNSTAP */
|
||||
|
||||
if (cleanup_cctx) {
|
||||
@@ -1269,9 +1272,11 @@ client_send(ns_client_t *client) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
respsize = isc_buffer_usedlength(&buffer);
|
||||
result = client_sendpkg(client, &buffer);
|
||||
#ifdef HAVE_DNSTAP
|
||||
/*
|
||||
* Log dnstap data first, because client_sendpkg() may
|
||||
* leave client->view set to NULL.
|
||||
*/
|
||||
if (client->view != NULL) {
|
||||
dns_dt_send(client->view, dtmsgtype,
|
||||
&client->peeraddr,
|
||||
@@ -1281,6 +1286,9 @@ client_send(ns_client_t *client) {
|
||||
}
|
||||
#endif /* HAVE_DNSTAP */
|
||||
|
||||
respsize = isc_buffer_usedlength(&buffer);
|
||||
result = client_sendpkg(client, &buffer);
|
||||
|
||||
switch (isc_sockaddr_pf(&client->peeraddr)) {
|
||||
case AF_INET:
|
||||
isc_stats_increment(client->sctx->udpoutstats4,
|
||||
@@ -2847,6 +2855,11 @@ ns__client_request(isc_task_t *task, isc_event_t *event) {
|
||||
break;
|
||||
case dns_opcode_update:
|
||||
CTRACE("update");
|
||||
#ifdef HAVE_DNSTAP
|
||||
dns_dt_send(client->view, DNS_DTTYPE_UQ, &client->peeraddr,
|
||||
&client->destsockaddr, TCP_CLIENT(client), NULL,
|
||||
&client->requesttime, NULL, buffer);
|
||||
#endif /* HAVE_DNSTAP */
|
||||
ns_client_settimeout(client, 60);
|
||||
ns_update_start(client, sigresult);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user