diff options
| author | waynema <waynema@google.com> | 2021-09-13 16:28:12 +0800 |
|---|---|---|
| committer | waynema <waynema@google.com> | 2021-09-28 14:28:02 +0800 |
| commit | 356e4c60bc6dd3a318a54911b81a2654a1c39a02 (patch) | |
| tree | 963b125ec6fecb77fce57357265b1d683fa3063c /ResolverController.cpp | |
| parent | 67936ef2be46a6942f302964f31cff5c237f6941 (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.cpp | 35 |
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 = {}; |
