Lines Matching +full:srv +full:- +full:multi +full:- +full:target
2 // Use of this source code is governed by a BSD-style license that can be
25 "_services", "_dns-sd", "_udp"};
31 // enforce that new DnsTypes added must be added below through a compile-time in GetTtlForNsecTargetingType()
45 // If no records are present, re-querying should happen at the minimum in GetTtlForNsecTargetingType()
80 auto records = record_handler->GetRecords(domain, type, clazz); in AddRecords()
112 message->AddAdditionalRecord(std::move(record)); in AddAdditionalRecords()
127 message->AddAnswer(std::move(record)); in AddResponseRecords()
152 // Per RFC 6763 section 12.1, when querying for a PTR record, all SRV records in ApplyQueryResults()
155 // AAAA associated with the added SRV records. Per RFC 6762 section 6.1, in ApplyQueryResults()
160 // Add all SRV and TXT records to the additional records section. in ApplyQueryResults()
161 for (const MdnsRecord& record : message->answers()) { in ApplyQueryResults()
164 const DomainName& target = in ApplyQueryResults() local
166 AddAdditionalRecords(message, record_handler, target, known_answers, in ApplyQueryResults()
168 AddAdditionalRecords(message, record_handler, target, known_answers, in ApplyQueryResults()
172 // Add A and AAAA records associated with an added SRV record to the in ApplyQueryResults()
174 const int max = message->additional_records().size(); in ApplyQueryResults()
176 if (message->additional_records()[i].dns_type() != DnsType::kSRV) { in ApplyQueryResults()
181 const MdnsRecord& srv_record = message->additional_records()[i]; in ApplyQueryResults()
182 const DomainName& target = in ApplyQueryResults() local
183 absl::get<SrvRecordRdata>(srv_record.rdata()).target(); in ApplyQueryResults()
184 AddAdditionalRecords(message, record_handler, target, known_answers, in ApplyQueryResults()
185 DnsType::kA, clazz, target == domain); in ApplyQueryResults()
188 // Must re-calculate the |srv_record|, |target| refs in case a resize of in ApplyQueryResults()
191 const MdnsRecord& srv_record = message->additional_records()[i]; in ApplyQueryResults()
192 const DomainName& target = in ApplyQueryResults() local
193 absl::get<SrvRecordRdata>(srv_record.rdata()).target(); in ApplyQueryResults()
194 AddAdditionalRecords(message, record_handler, target, known_answers, in ApplyQueryResults()
195 DnsType::kAAAA, clazz, target == domain); in ApplyQueryResults()
199 // Per RFC 6763 section 12.2, when querying for an SRV record, all address in ApplyQueryResults()
203 // response NSEC record may be added to show their non-existence. in ApplyQueryResults()
204 for (const auto& srv_record : message->answers()) { in ApplyQueryResults()
207 const DomainName& target = in ApplyQueryResults() local
208 absl::get<SrvRecordRdata>(srv_record.rdata()).target(); in ApplyQueryResults()
209 AddAdditionalRecords(message, record_handler, target, known_answers, in ApplyQueryResults()
210 DnsType::kA, clazz, target == domain); in ApplyQueryResults()
211 AddAdditionalRecords(message, record_handler, target, known_answers, in ApplyQueryResults()
212 DnsType::kAAAA, clazz, target == domain); in ApplyQueryResults()
218 // record should be added to show its non-existence. in ApplyQueryResults()
263 record_handler->GetPtrRecords(clazz); in ApplyServiceTypeEnumerationResults()
265 // skip "_services._dns-sd._udp." which was already checked for in above in ApplyServiceTypeEnumerationResults()
274 message->AddAnswer(MdnsRecord(name, DnsType::kPTR, record.dns_class(), in ApplyServiceTypeEnumerationResults()
348 send_delay = responder_->random_delay_->GetTruncatedQueryResponseDelay(); in RescheduleSend()
363 responder_->RespondToTruncatedQuery(this); in SendResponse()
394 receiver_->SetQueryCallback(std::move(func)); in MdnsResponder()
398 receiver_->SetQueryCallback(nullptr); in ~MdnsResponder()
403 OSP_DCHECK(task_runner_->IsRunningOnTaskRunner()); in OnMessageReceived()
406 // Handle multi-packet known answer suppression. in OnMessageReceived()
410 // - A host on the network is misbehaving. in OnMessageReceived()
411 // - There is a malicious actor on the network. in OnMessageReceived()
417 "new multi-packet known answer message as normal query"; in OnMessageReceived()
427 ownership_handler_->RespondToProbeQuery(message, src); in OnMessageReceived()
443 OSP_DVLOG << "Multi-packet truncated message received. Processing..."; in ProcessMultiPacketTruncatedMessage()
451 std::unique_ptr<TruncatedQuery>& stored_query = pair.first->second; in ProcessMultiPacketTruncatedMessage()
464 const bool are_questions_already_stored = !stored_query->questions().empty(); in ProcessMultiPacketTruncatedMessage()
470 stored_query->AddKnownAnswers(message.answers()); in ProcessMultiPacketTruncatedMessage()
475 // messages were received out-of-order and known answers have already been in ProcessMultiPacketTruncatedMessage()
479 stored_query->SetQuery(message); in ProcessMultiPacketTruncatedMessage()
485 // - The sender must have finished sending packets. in ProcessMultiPacketTruncatedMessage()
486 // - The known answers completing this query somehow got lost on the network. in ProcessMultiPacketTruncatedMessage()
487 // - A second truncated query was started by the same host, and this host in ProcessMultiPacketTruncatedMessage()
500 new_query->SendResponse(); in ProcessMultiPacketTruncatedMessage()
504 ProcessQueries(query->src(), query->questions(), query->known_answers()); in RespondToTruncatedQuery()
505 auto it = truncated_queries_.find(query->src()); in RespondToTruncatedQuery()
513 if (it->second.get() == query) { in RespondToTruncatedQuery()
533 // - This host is the sole owner of that domain. in ProcessQueries()
534 // - A record corresponding to this question has been published. in ProcessQueries()
535 // - The query is a service enumeration query. in ProcessQueries()
538 ownership_handler_->IsDomainClaimed(question.name()); in ProcessQueries()
540 !record_handler_->HasRecords(question.name(), question.dns_type(), in ProcessQueries()
553 sender_->SendMulticast(message); in ProcessQueries()
558 sender_->SendMessage(message, src); in ProcessQueries()
568 const auto delay = random_delay_->GetSharedRecordResponseDelay(); in ProcessQueries()
574 task_runner_->PostTaskWithDelay(response, delay); in ProcessQueries()
584 OSP_DCHECK(task_runner_->IsRunningOnTaskRunner()); in SendResponse()