setLuaNoSideEffect();
try {
ostringstream ret;
- boost::format fmt("%1$-3d %2$-20.20s %|25t|%3$-8.8s %|35t|%4%" );
+ boost::format fmt("%1$-3d %2$-20.20s %|35t|%3$-20.20s %|57t|%4%" );
// 1 2 3 4
ret << (fmt % "#" % "Address" % "Protocol" % "Queries" ) << endl;
size_t counter = 0;
for (const auto& front : g_frontends) {
- ret << (fmt % counter % front->local.toStringWithPort() % (front->udpFD != -1 ? "UDP" : "TCP") % front->queries) << endl;
+ ret << (fmt % counter % front->local.toStringWithPort() % front->getType() % front->queries) << endl;
counter++;
}
g_outputBuffer=ret.str();
{ "address", front->local.toStringWithPort() },
{ "udp", front->udpFD >= 0 },
{ "tcp", front->tcpFD >= 0 },
+ { "type", front->getType() },
{ "queries", (double) front->queries.load() },
{ "tcpDiedReadingQuery", (double) front->tcpDiedReadingQuery.load() },
{ "tcpDiedSendingResponse", (double) front->tcpDiedSendingResponse.load() },
return udpFD != -1 ? udpFD : tcpFD;
}
+ std::string getType() const
+ {
+ std::string result = udpFD != -1 ? "UDP" : "TCP";
+
+ if (tlsFrontend) {
+ result += " (DNS over TLS)";
+ }
+ else if (dnscryptCtx) {
+ result += " (DNSCrypt)";
+ }
+
+ return result;
+ }
+
#ifdef HAVE_EBPF
shared_ptr<BPFFilter> d_filter;
self.assertTrue(server['state'] in ['up', 'down', 'UP', 'DOWN'])
for frontend in content['frontends']:
- for key in ['id', 'address', 'udp', 'tcp', 'queries']:
+ for key in ['id', 'address', 'udp', 'tcp', 'type', 'queries']:
self.assertIn(key, frontend)
for key in ['id', 'queries']: