diff --git a/bin/rndc/rndc.rst b/bin/rndc/rndc.rst index b59f62e672..0559ed7339 100644 --- a/bin/rndc/rndc.rst +++ b/bin/rndc/rndc.rst @@ -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 diff --git a/lib/dns/include/dns/transport.h b/lib/dns/include/dns/transport.h index b8845208e3..15892e46d8 100644 --- a/lib/dns/include/dns/transport.h +++ b/lib/dns/include/dns/transport.h @@ -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. + */ diff --git a/lib/dns/transport.c b/lib/dns/transport.c index b2328d144c..52bb6bce39 100644 --- a/lib/dns/transport.c +++ b/lib/dns/transport.c @@ -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(); + } +} diff --git a/lib/ns/client.c b/lib/ns/client.c index cc76632f0b..76293eda45 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -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); }