Lines Matching refs:netId
115 int PrivateDnsConfiguration::set(int32_t netId, uint32_t mark, in set() argument
119 LOG(DEBUG) << "PrivateDnsConfiguration::set(" << netId << ", 0x" << std::hex << mark << std::dec in set()
125 mUnorderedDnsTracker[netId] = unencryptedServers; in set()
126 mUnorderedDotTracker[netId] = encryptedServers; in set()
127 mUnorderedDohTracker[netId] = encryptedServers; in set()
130 mPrivateDnsModes[netId] = PrivateDnsMode::STRICT; in set()
132 mPrivateDnsModes[netId] = PrivateDnsMode::OPPORTUNISTIC; in set()
134 mPrivateDnsModes[netId] = PrivateDnsMode::OFF; in set()
135 clearDot(netId); in set()
136 clearDoh(netId); in set()
141 if (int n = setDot(netId, mark, encryptedServers, name, caCert); n != 0) { in set()
145 return setDoh(netId, mark, encryptedServers, name, caCert); in set()
148 int PrivateDnsConfiguration::setDot(int32_t netId, uint32_t mark, in setDot() argument
163 auto& tracker = mDotTracker[netId]; in setDot()
178 updateServerState(identity, Validation::success_but_expired, netId); in setDot()
182 updateServerState(identity, Validation::in_process, netId); in setDot()
183 startDotValidation(identity, netId, false); in setDot()
187 return resolv_stats_set_addrs(netId, PROTO_DOT, servers, kDotPort); in setDot()
190 void PrivateDnsConfiguration::clearDot(int32_t netId) { in clearDot() argument
191 mDotTracker.erase(netId); in clearDot()
192 resolv_stats_set_addrs(netId, PROTO_DOT, {}, kDotPort); in clearDot()
195 PrivateDnsStatus PrivateDnsConfiguration::getStatus(unsigned netId) const { in getStatus()
197 return getStatusLocked(netId); in getStatus()
200 PrivateDnsStatus PrivateDnsConfiguration::getStatusLocked(unsigned netId) const { in getStatusLocked()
207 const auto mode = mPrivateDnsModes.find(netId); in getStatusLocked()
211 const auto netPair = mDotTracker.find(netId); in getStatusLocked()
220 auto it = mDohTracker.find(netId); in getStatusLocked()
229 NetworkDnsServerSupportReported PrivateDnsConfiguration::getStatusForMetrics(unsigned netId) const { in getStatusForMetrics()
230 const auto networkType = resolv_get_network_types_for_net(netId); in getStatusForMetrics()
233 if (mPrivateDnsModes.find(netId) == mPrivateDnsModes.end()) { in getStatusForMetrics()
238 const PrivateDnsStatus status = getStatusLocked(netId); in getStatusForMetrics()
243 if (const auto it = mUnorderedDnsTracker.find(netId); it != mUnorderedDnsTracker.end()) { in getStatusForMetrics()
252 if (const auto it = mUnorderedDotTracker.find(netId); it != mUnorderedDotTracker.end()) { in getStatusForMetrics()
267 if (const auto it = mUnorderedDohTracker.find(netId); it != mUnorderedDohTracker.end()) { in getStatusForMetrics()
286 void PrivateDnsConfiguration::clear(unsigned netId) { in clear() argument
287 LOG(DEBUG) << "PrivateDnsConfiguration::clear(" << netId << ")"; in clear()
289 mPrivateDnsModes.erase(netId); in clear()
290 mUnorderedDnsTracker.erase(netId); in clear()
291 mUnorderedDotTracker.erase(netId); in clear()
292 mUnorderedDohTracker.erase(netId); in clear()
293 clearDot(netId); in clear()
294 clearDoh(netId); in clear()
300 base::Result<void> PrivateDnsConfiguration::requestDotValidation(unsigned netId, in requestDotValidation() argument
309 if (auto it = mPrivateDnsModes.find(netId); it == mPrivateDnsModes.end()) { in requestDotValidation()
315 auto result = getDotServerLocked(identity, netId); in requestDotValidation()
333 updateServerState(identity, Validation::in_process, netId); in requestDotValidation()
334 startDotValidation(identity, netId, true); in requestDotValidation()
338 void PrivateDnsConfiguration::startDotValidation(const ServerIdentity& identity, unsigned netId, in startDotValidation() argument
343 const auto result = getDotServerLocked(identity, netId); in startDotValidation()
347 std::thread validate_thread([this, identity, server, netId, isRevalidation] { in startDotValidation()
348 setThreadName(fmt::format("TlsVerify_{}", netId)); in startDotValidation()
375 this->recordDotValidation(identity, netId, success, isRevalidation); in startDotValidation()
385 [this, netId]() REQUIRES(mPrivateDnsLock) { in startDotValidation()
386 return mPrivateDnsModes.find(netId) == mPrivateDnsModes.end(); in startDotValidation()
396 unsigned netId, bool success) const { in sendPrivateDnsValidationEvent() argument
398 << netId << " for " << identity.sockaddr.toString() << " with hostname {" in sendPrivateDnsValidationEvent()
407 it->onPrivateDnsValidationEvent(netId, identity.sockaddr.ip().toString(), identity.provider, in sendPrivateDnsValidationEvent()
414 .netId = static_cast<int32_t>(netId), in sendPrivateDnsValidationEvent()
428 bool PrivateDnsConfiguration::recordDotValidation(const ServerIdentity& identity, unsigned netId, in recordDotValidation() argument
435 auto netPair = mDotTracker.find(netId); in recordDotValidation()
437 LOG(WARNING) << "netId " << netId << " was erased during private DNS validation"; in recordDotValidation()
438 notifyValidationStateUpdate(identity.sockaddr, Validation::fail, netId); in recordDotValidation()
442 const auto mode = mPrivateDnsModes.find(netId); in recordDotValidation()
444 LOG(WARNING) << "netId " << netId << " has no private DNS validation mode"; in recordDotValidation()
445 notifyValidationStateUpdate(identity.sockaddr, Validation::fail, netId); in recordDotValidation()
470 if (needReportEvent(netId, identity, success)) { in recordDotValidation()
471 sendPrivateDnsValidationEvent(identity, netId, success); in recordDotValidation()
475 updateServerState(identity, Validation::success, netId); in recordDotValidation()
482 updateServerState(identity, result, netId); in recordDotValidation()
490 uint32_t netId) { in updateServerState() argument
491 const auto result = getDotServerLocked(identity, netId); in updateServerState()
493 notifyValidationStateUpdate(identity.sockaddr, Validation::fail, netId); in updateServerState()
500 notifyValidationStateUpdate(identity.sockaddr, state, netId); in updateServerState()
502 RecordEntry record(netId, identity, state); in updateServerState()
523 unsigned netId) { in getDotServer() argument
525 return getDotServerLocked(identity, netId); in getDotServer()
529 const ServerIdentity& identity, unsigned netId) { in getDotServerLocked() argument
530 auto netPair = mDotTracker.find(netId); in getDotServerLocked()
532 return Errorf("Failed to get private DNS: netId {} not found", netId); in getDotServerLocked()
549 base::Result<netdutils::IPSockAddr> PrivateDnsConfiguration::getDohServer(unsigned netId) const { in getDohServer()
551 auto it = mDohTracker.find(netId); in getDohServer()
556 return Errorf("Failed to get DoH Server: netId {} not found", netId); in getDohServer()
561 uint32_t netId) const { in notifyValidationStateUpdate()
563 mObserver->onValidationStateUpdate(sockaddr.ip().toString(), validation, netId); in notifyValidationStateUpdate()
574 record.netId, record.serverIdentity.sockaddr.toString(), in dump()
595 int PrivateDnsConfiguration::setDoh(int32_t netId, uint32_t mark, in setDoh() argument
598 LOG(DEBUG) << "PrivateDnsConfiguration::setDoh(" << netId << ", 0x" << std::hex << mark in setDoh()
601 clearDoh(netId); in setDoh()
605 const NetworkType networkType = resolv_get_network_types_for_net(netId); in setDoh()
606 const PrivateDnsStatus status = getStatusLocked(netId); in setDoh()
616 clearDoh(netId); in setDoh()
620 auto it = mDohTracker.find(netId); in setDoh()
626 const auto& [dohIt, _] = mDohTracker.insert_or_assign(netId, doh.value()); in setDoh()
629 RecordEntry record(netId, {IPSockAddr::toIPSockAddr(dohId.ipAddr, kDohPort), name}, in setDoh()
633 resolv_stats_set_addrs(netId, PROTO_DOH, {dohId.ipAddr}, kDohPort); in setDoh()
639 return doh_net_new(mDohDispatcher, netId, dohId.httpsTemplate.c_str(), dohId.host.c_str(), in setDoh()
644 void PrivateDnsConfiguration::clearDoh(unsigned netId) { in clearDoh() argument
645 LOG(DEBUG) << "PrivateDnsConfiguration::clearDoh (" << netId << ")"; in clearDoh()
646 if (mDohDispatcher != nullptr) doh_net_delete(mDohDispatcher, netId); in clearDoh()
647 mDohTracker.erase(netId); in clearDoh()
648 resolv_stats_set_addrs(netId, PROTO_DOH, {}, kDohPort); in clearDoh()
666 ssize_t PrivateDnsConfiguration::dohQuery(unsigned netId, const Slice query, const Slice answer, in dohQuery() argument
673 return doh_query(mDohDispatcher, netId, query.base(), query.size(), answer.base(), in dohQuery()
677 void PrivateDnsConfiguration::onDohStatusUpdate(uint32_t netId, bool success, const char* ipAddr, in onDohStatusUpdate() argument
679 LOG(INFO) << __func__ << ": " << netId << ", " << success << ", " << ipAddr << ", " << host; in onDohStatusUpdate()
682 auto it = mDohTracker.find(netId); in onDohStatusUpdate()
691 if (needReportEvent(netId, identity, success)) { in onDohStatusUpdate()
692 sendPrivateDnsValidationEvent(identity, netId, success); in onDohStatusUpdate()
695 RecordEntry record(netId, identity, status); in onDohStatusUpdate()
699 bool PrivateDnsConfiguration::needReportEvent(uint32_t netId, ServerIdentity identity, in needReportEvent() argument
708 auto netPair = mDotTracker.find(netId); in needReportEvent()
724 auto it = mDohTracker.find(netId); in needReportEvent()