diff options
author | Ryan Keane <rwkeane@google.com> | 2020-06-04 21:18:30 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-09 00:21:59 +0000 |
commit | 778bf126ad386aee747e659aa977b7f055418eaf (patch) | |
tree | 2a0f9ecdaa5bd7aefde56f3a72d40ceb5fa10fcf /discovery/mdns | |
parent | 3ae59d04d1922542269078000ddcb151ea2504c5 (diff) | |
download | openscreen-778bf126ad386aee747e659aa977b7f055418eaf.tar.gz |
Discovery: Add support for non-cyclic SRV pointers
This CL adds support for receiving DNS-SD service instances where the
address records have domain different from that of the SRV record. It
is intended to function as a more general version of the dns_data
class: https://source.chromium.org/chromium/chromium/src/+/master:third_party/openscreen/src/discovery/dnssd/impl/dns_data.h?q=dns_data.h
For this reason, the public API has mostly been kept the same. The
main difference here is that a single instance of dns_data_graph is
replacing the multiple instances used in the previous approch. For
further details about this change and how it will be applied, see the
follow-up CL: https://chromium-review.googlesource.com/c/openscreen/+/2223685/4
To accomplish the goal described above, the class creates a graph over
which these records can interact, rather than static mapping as was
previously used in the DnsData class. For further details about this
and how the graph is used, see dns_data_graph.h's file-level comment.
bug: b/157683753
Change-Id: I47a4cf280df358b93343ea7f523a519cb33957aa
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2223690
Reviewed-by: Jordan Bayles <jophba@chromium.org>
Commit-Queue: Ryan Keane <rwkeane@google.com>
Diffstat (limited to 'discovery/mdns')
-rw-r--r-- | discovery/mdns/testing/mdns_test_util.cc | 23 | ||||
-rw-r--r-- | discovery/mdns/testing/mdns_test_util.h | 7 |
2 files changed, 22 insertions, 8 deletions
diff --git a/discovery/mdns/testing/mdns_test_util.cc b/discovery/mdns/testing/mdns_test_util.cc index 6b154174..a6209cf0 100644 --- a/discovery/mdns/testing/mdns_test_util.cc +++ b/discovery/mdns/testing/mdns_test_util.cc @@ -4,6 +4,7 @@ #include "discovery/mdns/testing/mdns_test_util.h" +#include <string> #include <utility> #include <vector> @@ -23,31 +24,37 @@ MdnsRecord GetFakePtrRecord(const DomainName& target, DomainName name(++target.labels().begin(), target.labels().end()); PtrRecordRdata rdata(target); return MdnsRecord(std::move(name), DnsType::kPTR, DnsClass::kIN, - RecordType::kShared, ttl, rdata); + RecordType::kShared, ttl, std::move(rdata)); } MdnsRecord GetFakeSrvRecord(const DomainName& name, std::chrono::seconds ttl) { - SrvRecordRdata rdata(0, 0, 80, name); + return GetFakeSrvRecord(name, name, ttl); +} + +MdnsRecord GetFakeSrvRecord(const DomainName& name, + const DomainName& target, + std::chrono::seconds ttl) { + SrvRecordRdata rdata(0, 0, kFakeSrvRecordPort, target); return MdnsRecord(name, DnsType::kSRV, DnsClass::kIN, RecordType::kUnique, - ttl, rdata); + ttl, std::move(rdata)); } MdnsRecord GetFakeTxtRecord(const DomainName& name, std::chrono::seconds ttl) { TxtRecordRdata rdata; return MdnsRecord(name, DnsType::kTXT, DnsClass::kIN, RecordType::kUnique, - ttl, rdata); + ttl, std::move(rdata)); } MdnsRecord GetFakeARecord(const DomainName& name, std::chrono::seconds ttl) { - ARecordRdata rdata(IPAddress(192, 168, 0, 0)); + ARecordRdata rdata(kFakeARecordAddress); return MdnsRecord(name, DnsType::kA, DnsClass::kIN, RecordType::kUnique, ttl, - rdata); + std::move(rdata)); } MdnsRecord GetFakeAAAARecord(const DomainName& name, std::chrono::seconds ttl) { - AAAARecordRdata rdata(IPAddress(1, 2, 3, 4, 5, 6, 7, 8)); + AAAARecordRdata rdata(kFakeAAAARecordAddress); return MdnsRecord(name, DnsType::kAAAA, DnsClass::kIN, RecordType::kUnique, - ttl, rdata); + ttl, std::move(rdata)); } } // namespace discovery diff --git a/discovery/mdns/testing/mdns_test_util.h b/discovery/mdns/testing/mdns_test_util.h index 419e1f06..27bc5875 100644 --- a/discovery/mdns/testing/mdns_test_util.h +++ b/discovery/mdns/testing/mdns_test_util.h @@ -13,6 +13,10 @@ namespace openscreen { namespace discovery { +const IPAddress kFakeARecordAddress = IPAddress(192, 168, 0, 0); +const IPAddress kFakeAAAARecordAddress = IPAddress(1, 2, 3, 4, 5, 6, 7, 8); +constexpr uint16_t kFakeSrvRecordPort = 80; + TxtRecordRdata MakeTxtRecord(std::initializer_list<absl::string_view> strings); // Methods to create fake MdnsRecord entities for use in UnitTests. @@ -20,6 +24,9 @@ MdnsRecord GetFakePtrRecord(const DomainName& target, std::chrono::seconds ttl = std::chrono::seconds(1)); MdnsRecord GetFakeSrvRecord(const DomainName& name, std::chrono::seconds ttl = std::chrono::seconds(1)); +MdnsRecord GetFakeSrvRecord(const DomainName& name, + const DomainName& target, + std::chrono::seconds ttl = std::chrono::seconds(1)); MdnsRecord GetFakeTxtRecord(const DomainName& name, std::chrono::seconds ttl = std::chrono::seconds(1)); MdnsRecord GetFakeARecord(const DomainName& name, |