report client transport in 'rndc recursing'

when dumping the list of recursing clients, indicate whether
a given query was sent over UDP, TCP, TLS, or HTTP.
This commit is contained in:
Evan Hunt 2024-10-03 19:51:20 -07:00
parent 26ed03c247
commit 8104ffda0e
4 changed files with 31 additions and 7 deletions

View file

@ -429,8 +429,10 @@ Currently supported commands are:
The first list includes all unique clients that are waiting for
recursion to complete, including the query that is awaiting a
response and the timestamp (seconds since the Unix epoch) of
when named started processing this client query.
response, the timestamp (seconds since the Unix epoch) of
when named started processing this client query, the client's
address, and the transport over which the the query was received
(UDP, TCP, TLS, or HTTP).
The second list comprises of domains for which there are active
(or recently active) fetches in progress. It reports the number

View file

@ -204,3 +204,9 @@ dns_transport_list_detach(dns_transport_list_t **listp);
*\li 'listp' is not NULL.
*\li '*listp' is a valid transport list.
*/
const char *
dns_transport_totext(dns_transport_type_t type);
/*%<
* Convert a transport type value into a string.
*/

View file

@ -772,3 +772,19 @@ dns_transport_list_detach(dns_transport_list_t **listp) {
transport_list_destroy(list);
}
}
const char *
dns_transport_totext(dns_transport_type_t type) {
switch (type) {
case DNS_TRANSPORT_UDP:
return ("udp");
case DNS_TRANSPORT_TCP:
return ("tcp");
case DNS_TRANSPORT_TLS:
return ("tls");
case DNS_TRANSPORT_HTTP:
return ("https");
default:
UNREACHABLE();
}
}

View file

@ -141,7 +141,6 @@ static void
compute_cookie(ns_client_t *client, uint32_t when, const unsigned char *secret,
isc_buffer_t *buf);
#ifdef HAVE_DNSTAP
static dns_transport_type_t
ns_client_transport_type(const ns_client_t *client) {
/*
@ -186,7 +185,6 @@ ns_client_transport_type(const ns_client_t *client) {
return DNS_TRANSPORT_UDP;
}
#endif /* HAVE_DNSTAP */
void
ns_client_recursing(ns_client_t *client) {
@ -2921,10 +2919,12 @@ ns_client_dumprecursing(FILE *f, ns_clientmgr_t *manager) {
}
UNLOCK(&client->query.fetchlock);
fprintf(f,
"; client %s%s%s: id %u '%s/%s/%s'%s%s "
"; client %s (%s)%s%s: id %u '%s/%s/%s'%s%s "
"requesttime %u\n",
peerbuf, sep, name, client->message->id, namebuf,
typebuf, classbuf, origfor, original,
peerbuf,
dns_transport_totext(ns_client_transport_type(client)),
sep, name, client->message->id, namebuf, typebuf,
classbuf, origfor, original,
isc_time_seconds(&client->requesttime));
client = ISC_LIST_NEXT(client, rlink);
}