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
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();
+ }
+}
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) {
/*
return DNS_TRANSPORT_UDP;
}
-#endif /* HAVE_DNSTAP */
void
ns_client_recursing(ns_client_t *client) {
}
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);
}