aboutsummaryrefslogtreecommitdiff
path: root/discovery/mdns
diff options
context:
space:
mode:
authorRyan Keane <rwkeane@google.com>2020-06-04 21:18:30 -0700
committerCommit Bot <commit-bot@chromium.org>2020-06-09 00:21:59 +0000
commit778bf126ad386aee747e659aa977b7f055418eaf (patch)
tree2a0f9ecdaa5bd7aefde56f3a72d40ceb5fa10fcf /discovery/mdns
parent3ae59d04d1922542269078000ddcb151ea2504c5 (diff)
downloadopenscreen-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.cc23
-rw-r--r--discovery/mdns/testing/mdns_test_util.h7
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,