aboutsummaryrefslogtreecommitdiff
path: root/ResolverController.cpp
diff options
context:
space:
mode:
authorwaynema <waynema@google.com>2021-09-13 16:28:12 +0800
committerwaynema <waynema@google.com>2021-09-28 14:28:02 +0800
commit356e4c60bc6dd3a318a54911b81a2654a1c39a02 (patch)
tree963b125ec6fecb77fce57357265b1d683fa3063c /ResolverController.cpp
parent67936ef2be46a6942f302964f31cff5c237f6941 (diff)
DoH statistics is now available from DnsStats and is shown in dumpsys dnsresolver.
Example of output from dumpsys dnsresolver: Server statistics: (total, RTT avg, {rcode:counts}, last update) over UDP 8.8.4.4 (3, 2503ms, [TIMEOUT:3 ], 465s) score{71.0} 8.8.8.8 (4, 1880ms, [NOERROR:1 TIMEOUT:3 ], 468s) score{77.3} 2001:4860:4860::8844 (9, 15ms, [NOERROR:9 ], 78s) score{99.8} 2001:4860:4860::8888 <no data> score{100.0} over DOH 2001:4860:4860::8888 (89, 30ms, [NOERROR:89 ], 127s) score{99.7} over TLS 8.8.4.4 <no data> score{100.0} 8.8.8.8 <no data> score{100.0} 2001:4860:4860::8844 <no data> score{100.0} 2001:4860:4860::8888 <no data> score{100.0} over TCP 8.8.4.4 <no data> score{100.0} 8.8.8.8 <no data> score{100.0} 2001:4860:4860::8844 <no data> score{100.0} 2001:4860:4860::8888 <no data> score{100.0} over MDNS 224.0.0.251 <no data> score{100.0} ff02::fb <no data> score{100.0} TC mode: default TransportType: WIFI Test steps: a. Default enable strict mode. b. Turn on WiFi. c. Turn on Mobile data. d. Check the output from dumpsys dnsresolver. e. Expect to see two different statistics with the same DNS server on different NetId. NetId: 101 over DOH 2001:4860:4860::8888 (90, 29ms, [NOERROR:90 ], 7s) score{99.7} TransportType: WIFI NetId: 102 over DOH 2001:4860:4860::8888 (2, 33ms, [NOERROR:2 ], 74s) score{99.7} TransportType: CELLULAR Bug: 195092631 Test: checked output in dumpsys dnsresolver Change-Id: I65c69a850bce352839314833d44c9f165c7ca142
Diffstat (limited to 'ResolverController.cpp')
-rw-r--r--ResolverController.cpp35
1 files changed, 22 insertions, 13 deletions
diff --git a/ResolverController.cpp b/ResolverController.cpp
index eaf9aa38..b84b56ff 100644
--- a/ResolverController.cpp
+++ b/ResolverController.cpp
@@ -208,32 +208,41 @@ int ResolverController::setResolverConfiguration(const ResolverParamsParcel& res
// through a different network. For example, on a VPN with no DNS servers (Do53), if the VPN
// applies to UID 0, dns_mark is assigned for default network rathan the VPN. (note that it's
// possible that a VPN doesn't have any DNS servers but DoT servers in DNS strict mode)
- int err = PrivateDnsConfiguration::getInstance().set(resolverParams.netId, netcontext.app_mark,
- tlsServers, resolverParams.tlsName,
- resolverParams.caCertificate);
+ auto& privateDnsConfiguration = PrivateDnsConfiguration::getInstance();
+ int err = privateDnsConfiguration.set(resolverParams.netId, netcontext.app_mark, tlsServers,
+ resolverParams.tlsName, resolverParams.caCertificate);
if (err != 0) {
return err;
}
- if (int err = resolv_stats_set_addrs(resolverParams.netId, PROTO_DOT, tlsServers, 853);
+ if (err = resolv_stats_set_addrs(resolverParams.netId, PROTO_DOT, tlsServers, 853);
err != 0) {
return err;
}
- if (int err = resolv_stats_set_addrs(resolverParams.netId, PROTO_MDNS,
- {"ff02::fb", "224.0.0.251"}, 5353);
+ if (err = resolv_stats_set_addrs(resolverParams.netId, PROTO_MDNS, {"ff02::fb", "224.0.0.251"},
+ 5353);
err != 0) {
return err;
}
- if (isDoHEnabled())
- err = PrivateDnsConfiguration::getInstance().setDoh(
- resolverParams.netId, netcontext.app_mark, tlsServers, resolverParams.tlsName,
- resolverParams.caCertificate);
-
- if (err != 0) {
- return err;
+ if (isDoHEnabled()) {
+ if (err = privateDnsConfiguration.setDoh(resolverParams.netId, netcontext.app_mark,
+ tlsServers, resolverParams.tlsName,
+ resolverParams.caCertificate);
+ err != 0) {
+ return err;
+ }
+ auto result = privateDnsConfiguration.getDohServer(resolverParams.netId);
+ if (result.ok()) {
+ const netdutils::IPSockAddr sockAddr = result.value();
+ if (err = resolv_stats_set_addrs(resolverParams.netId, PROTO_DOH,
+ {sockAddr.ip().toString()}, sockAddr.port());
+ err != 0) {
+ return err;
+ }
+ }
}
res_params res_params = {};