aboutsummaryrefslogtreecommitdiff
path: root/discovery
diff options
context:
space:
mode:
Diffstat (limited to 'discovery')
-rw-r--r--discovery/BUILD.gn75
-rw-r--r--discovery/DEPS2
-rw-r--r--discovery/common/config.h43
-rw-r--r--discovery/dnssd/impl/DEPS10
-rw-r--r--discovery/dnssd/impl/service_instance.cc22
-rw-r--r--discovery/dnssd/impl/service_instance.h4
-rw-r--r--discovery/dnssd/public/DEPS6
-rw-r--r--discovery/dnssd/public/dns_sd_publisher.h4
-rw-r--r--discovery/mdns/DEPS2
-rw-r--r--discovery/mdns/mdns_service_impl.cc11
-rw-r--r--discovery/mdns/mdns_service_impl.h2
-rw-r--r--discovery/mdns/public/DEPS8
-rw-r--r--discovery/mdns/public/mdns_service.h9
13 files changed, 78 insertions, 120 deletions
diff --git a/discovery/BUILD.gn b/discovery/BUILD.gn
index 11598c8f..dbf0ace8 100644
--- a/discovery/BUILD.gn
+++ b/discovery/BUILD.gn
@@ -5,20 +5,32 @@
import("//build_overrides/build.gni")
import("../testing/libfuzzer/fuzzer_test.gni")
-source_set("common") {
+source_set("public") {
sources = [
"common/config.h",
"common/reporting_client.h",
+ "dnssd/public/dns_sd_instance.cc",
+ "dnssd/public/dns_sd_instance.h",
+ "dnssd/public/dns_sd_instance_endpoint.cc",
+ "dnssd/public/dns_sd_instance_endpoint.h",
+ "dnssd/public/dns_sd_publisher.h",
+ "dnssd/public/dns_sd_querier.h",
+ "dnssd/public/dns_sd_service.h",
+ "dnssd/public/dns_sd_txt_record.cc",
+ "dnssd/public/dns_sd_txt_record.h",
+ "mdns/public/mdns_constants.h",
+ "mdns/public/mdns_service.cc",
+ "mdns/public/mdns_service.h",
+ "public/dns_sd_service_factory.h",
+ "public/dns_sd_service_publisher.h",
+ "public/dns_sd_service_watcher.h",
]
-
+ public_deps = [ "../platform" ]
deps = [ "../util" ]
-
- public_deps = [
- "../platform",
- "../third_party/abseil",
- ]
}
+# TODO(https://issuetracker.google.com/issues/194234872):
+# Move implementation files to impl/
source_set("mdns") {
sources = [
"mdns/mdns_domain_confirmed_provider.h",
@@ -47,21 +59,16 @@ source_set("mdns") {
"mdns/mdns_trackers.h",
"mdns/mdns_writer.cc",
"mdns/mdns_writer.h",
- "mdns/public/mdns_constants.h",
- "mdns/public/mdns_service.cc",
- "mdns/public/mdns_service.h",
]
- deps = [ "../util" ]
-
- public_deps = [
- ":common",
+ public_deps = [ "../third_party/abseil" ]
+ deps = [
+ ":public",
"../platform",
- "../third_party/abseil",
+ "../util",
]
}
-# TODO(issuetracker.google.com/179705382): Separate out a public target.
source_set("dnssd") {
sources = [
"dnssd/impl/conversion_layer.cc",
@@ -82,34 +89,12 @@ source_set("dnssd") {
"dnssd/impl/service_instance.h",
"dnssd/impl/service_key.cc",
"dnssd/impl/service_key.h",
- "dnssd/public/dns_sd_instance.cc",
- "dnssd/public/dns_sd_instance.h",
- "dnssd/public/dns_sd_instance_endpoint.cc",
- "dnssd/public/dns_sd_instance_endpoint.h",
- "dnssd/public/dns_sd_publisher.h",
- "dnssd/public/dns_sd_querier.h",
- "dnssd/public/dns_sd_service.h",
- "dnssd/public/dns_sd_txt_record.cc",
- "dnssd/public/dns_sd_txt_record.h",
]
- public_deps = [
- ":common",
+ deps = [
":mdns",
- "../util",
- ]
-}
-
-source_set("public") {
- sources = [
- "public/dns_sd_service_factory.h",
- "public/dns_sd_service_publisher.h",
- "public/dns_sd_service_watcher.h",
- ]
-
- public_deps = [
- ":common",
- ":dnssd",
+ ":public",
+ "../third_party/abseil",
"../util",
]
}
@@ -133,8 +118,9 @@ source_set("testing") {
sources += [ "mdns/testing/hash_test_util_abseil.h" ]
}
- public_deps = [
+ deps = [
":mdns",
+ ":public",
"../third_party/abseil",
"../third_party/googletest:gmock",
"../third_party/googletest:gtest",
@@ -185,7 +171,10 @@ source_set("unittests") {
openscreen_fuzzer_test("mdns_fuzzer") {
sources = [ "mdns/mdns_reader_fuzztest.cc" ]
- deps = [ ":mdns" ]
+ deps = [
+ ":mdns",
+ ":public",
+ ]
seed_corpus = "mdns/fuzzer_seeds"
diff --git a/discovery/DEPS b/discovery/DEPS
index de7afcec..4d758dcd 100644
--- a/discovery/DEPS
+++ b/discovery/DEPS
@@ -4,6 +4,6 @@ include_rules = [
# Intra-discovery dependencies must be explicit.
'-discovery',
- # All discovery code can use discovery/common
+ # All discovery code can use discovery/common.
'+discovery/common',
]
diff --git a/discovery/common/config.h b/discovery/common/config.h
index b1ef731a..940001ce 100644
--- a/discovery/common/config.h
+++ b/discovery/common/config.h
@@ -14,28 +14,13 @@ namespace discovery {
// This struct provides parameters needed to initialize the discovery pipeline.
struct Config {
- struct NetworkInfo {
- enum AddressFamilies : uint8_t {
- kNoAddressFamily = 0,
- kUseIpV4 = 0x01 << 0,
- kUseIpV6 = 0x01 << 1
- };
-
- // Network Interface on which discovery should be run.
- InterfaceInfo interface;
-
- // IP Address Families supported by this network interface and on which the
- // mDNS Service should listen for and/or publish records.
- AddressFamilies supported_address_families;
- };
-
/*****************************************
* Common Settings
*****************************************/
// Interfaces on which services should be published, and on which discovery
// should listen for announced service instances.
- std::vector<NetworkInfo> network_info;
+ std::vector<InterfaceInfo> network_info;
// Maximum allowed size in bytes for the rdata in an incoming record. All
// received records with rdata size exceeding this size will be dropped.
@@ -98,32 +83,6 @@ struct Config {
bool ignore_nsec_responses = false;
};
-inline Config::NetworkInfo::AddressFamilies operator&(
- Config::NetworkInfo::AddressFamilies lhs,
- Config::NetworkInfo::AddressFamilies rhs) {
- return static_cast<Config::NetworkInfo::AddressFamilies>(
- static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs));
-}
-
-inline Config::NetworkInfo::AddressFamilies operator|(
- Config::NetworkInfo::AddressFamilies lhs,
- Config::NetworkInfo::AddressFamilies rhs) {
- return static_cast<Config::NetworkInfo::AddressFamilies>(
- static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
-}
-
-inline Config::NetworkInfo::AddressFamilies operator|=(
- Config::NetworkInfo::AddressFamilies& lhs,
- Config::NetworkInfo::AddressFamilies rhs) {
- return lhs = lhs | rhs;
-}
-
-inline Config::NetworkInfo::AddressFamilies operator&=(
- Config::NetworkInfo::AddressFamilies& lhs,
- Config::NetworkInfo::AddressFamilies rhs) {
- return lhs = lhs & rhs;
-}
-
} // namespace discovery
} // namespace openscreen
diff --git a/discovery/dnssd/impl/DEPS b/discovery/dnssd/impl/DEPS
index 243d363d..57d73c16 100644
--- a/discovery/dnssd/impl/DEPS
+++ b/discovery/dnssd/impl/DEPS
@@ -2,5 +2,13 @@
include_rules = [
'+discovery/dnssd/public',
- '+discovery/mdns',
+ '+discovery/mdns/public',
+
+ # TODO(https://issuetracker.google.com/issues/194234872):
+ # Move these to discovery/mdns/public
+ '+discovery/mdns/mdns_domain_confirmed_provider.h',
+ '+discovery/mdns/mdns_record_changed_callback.h',
+ '+discovery/mdns/mdns_records.h',
+
+ '+discovery/mdns/testing/mdns_test_util.h',
]
diff --git a/discovery/dnssd/impl/service_instance.cc b/discovery/dnssd/impl/service_instance.cc
index 7d4b014f..d923eef9 100644
--- a/discovery/dnssd/impl/service_instance.cc
+++ b/discovery/dnssd/impl/service_instance.cc
@@ -16,29 +16,15 @@ namespace discovery {
ServiceInstance::ServiceInstance(TaskRunner* task_runner,
ReportingClient* reporting_client,
const Config& config,
- const Config::NetworkInfo& network_info)
+ const InterfaceInfo& network_info)
: task_runner_(task_runner),
mdns_service_(MdnsService::Create(task_runner,
reporting_client,
config,
network_info)),
- network_config_(network_info.interface.index,
- (network_info.supported_address_families &
- Config::NetworkInfo::kUseIpV4)
- ? network_info.interface.GetIpAddressV4()
- : IPAddress{},
- (network_info.supported_address_families &
- Config::NetworkInfo::kUseIpV6)
- ? network_info.interface.GetIpAddressV6()
- : IPAddress{}) {
- const Config::NetworkInfo::AddressFamilies supported_address_families =
- network_info.supported_address_families;
-
- OSP_DCHECK(!(supported_address_families & Config::NetworkInfo::kUseIpV4) ||
- network_config_.HasAddressV4());
- OSP_DCHECK(!(supported_address_families & Config::NetworkInfo::kUseIpV6) ||
- network_config_.HasAddressV6());
-
+ network_config_(network_info.index,
+ network_info.GetIpAddressV4(),
+ network_info.GetIpAddressV6()) {
if (config.enable_querying) {
querier_ = std::make_unique<QuerierImpl>(
mdns_service_.get(), task_runner_, reporting_client, &network_config_);
diff --git a/discovery/dnssd/impl/service_instance.h b/discovery/dnssd/impl/service_instance.h
index e06ca564..798a17b0 100644
--- a/discovery/dnssd/impl/service_instance.h
+++ b/discovery/dnssd/impl/service_instance.h
@@ -26,9 +26,9 @@ class ServiceInstance final : public DnsSdService {
ServiceInstance(TaskRunner* task_runner,
ReportingClient* reporting_client,
const Config& config,
- const Config::NetworkInfo& network_info);
+ const InterfaceInfo& network_info);
ServiceInstance(const ServiceInstance& other) = delete;
- ServiceInstance(ServiceInstance&& other) = delete;
+ ServiceInstance(ServiceInstance&& other) noexcept = delete;
~ServiceInstance() override;
ServiceInstance& operator=(const ServiceInstance& other) = delete;
diff --git a/discovery/dnssd/public/DEPS b/discovery/dnssd/public/DEPS
new file mode 100644
index 00000000..e8ae0cbe
--- /dev/null
+++ b/discovery/dnssd/public/DEPS
@@ -0,0 +1,6 @@
+# -*- Mode: Python; -*-
+
+include_rules = [
+ # Layering rule.
+ '-discovery/dnssd/impl',
+]
diff --git a/discovery/dnssd/public/dns_sd_publisher.h b/discovery/dnssd/public/dns_sd_publisher.h
index 3c139b4e..10eb03ad 100644
--- a/discovery/dnssd/public/dns_sd_publisher.h
+++ b/discovery/dnssd/public/dns_sd_publisher.h
@@ -19,7 +19,6 @@ class DnsSdPublisher {
public:
class Client {
public:
- virtual ~Client() = default;
// Callback called when an endpoint is successfully claimed and published
// via the Register() method. These values are expected to only differ in
@@ -29,6 +28,9 @@ class DnsSdPublisher {
virtual void OnEndpointClaimed(
const DnsSdInstance& requested_instance,
const DnsSdInstanceEndpoint& claimed_endpoint) = 0;
+
+ protected:
+ virtual ~Client() = default;
};
virtual ~DnsSdPublisher() = default;
diff --git a/discovery/mdns/DEPS b/discovery/mdns/DEPS
index 309d03f4..c0348a87 100644
--- a/discovery/mdns/DEPS
+++ b/discovery/mdns/DEPS
@@ -2,4 +2,6 @@
include_rules = [
'+discovery/mdns/public',
+ # DNS-SD is layered on top of mDNS.
+ '-discovery/dnssd',
]
diff --git a/discovery/mdns/mdns_service_impl.cc b/discovery/mdns/mdns_service_impl.cc
index 6d94c3c7..bbbf0815 100644
--- a/discovery/mdns/mdns_service_impl.cc
+++ b/discovery/mdns/mdns_service_impl.cc
@@ -20,7 +20,7 @@ std::unique_ptr<MdnsService> MdnsService::Create(
TaskRunner* task_runner,
ReportingClient* reporting_client,
const Config& config,
- const Config::NetworkInfo& network_info) {
+ const InterfaceInfo& network_info) {
return std::make_unique<MdnsServiceImpl>(
task_runner, Clock::now, reporting_client, config, network_info);
}
@@ -29,22 +29,21 @@ MdnsServiceImpl::MdnsServiceImpl(TaskRunner* task_runner,
ClockNowFunctionPtr now_function,
ReportingClient* reporting_client,
const Config& config,
- const Config::NetworkInfo& network_info)
+ const InterfaceInfo& network_info)
: task_runner_(task_runner),
now_function_(now_function),
reporting_client_(reporting_client),
receiver_(config),
- interface_(network_info.interface.index) {
+ interface_(network_info.index) {
OSP_DCHECK(task_runner_);
OSP_DCHECK(reporting_client_);
- OSP_DCHECK(network_info.supported_address_families);
// Create all UDP sockets needed for this object. They should not yet be bound
// so that they do not send or receive data until the objects on which their
// callback depends is initialized.
// NOTE: we bind to the Any addresses here because traffic is filtered by
// the multicast join calls.
- if (network_info.supported_address_families & Config::NetworkInfo::kUseIpV4) {
+ if (network_info.GetIpAddressV4()) {
ErrorOr<std::unique_ptr<UdpSocket>> socket = UdpSocket::Create(
task_runner, this,
IPEndpoint{IPAddress::kAnyV4(), kDefaultMulticastPort});
@@ -55,7 +54,7 @@ MdnsServiceImpl::MdnsServiceImpl(TaskRunner* task_runner,
socket_v4_ = std::move(socket.value());
}
- if (network_info.supported_address_families & Config::NetworkInfo::kUseIpV6) {
+ if (network_info.GetIpAddressV6()) {
ErrorOr<std::unique_ptr<UdpSocket>> socket = UdpSocket::Create(
task_runner, this,
IPEndpoint{IPAddress::kAnyV6(), kDefaultMulticastPort});
diff --git a/discovery/mdns/mdns_service_impl.h b/discovery/mdns/mdns_service_impl.h
index e1c15226..523f078f 100644
--- a/discovery/mdns/mdns_service_impl.h
+++ b/discovery/mdns/mdns_service_impl.h
@@ -40,7 +40,7 @@ class MdnsServiceImpl : public MdnsService, public UdpSocket::Client {
ClockNowFunctionPtr now_function,
ReportingClient* reporting_client,
const Config& config,
- const Config::NetworkInfo& network_info);
+ const InterfaceInfo& network_info);
~MdnsServiceImpl() override;
// MdnsService Overrides.
diff --git a/discovery/mdns/public/DEPS b/discovery/mdns/public/DEPS
new file mode 100644
index 00000000..5b65c0e4
--- /dev/null
+++ b/discovery/mdns/public/DEPS
@@ -0,0 +1,8 @@
+# -*- Mode: Python; -*-
+include_rules = [
+ # Layering rule.
+ '-discovery/mdns',
+ # Except ourselves.
+ '+discovery/mdns/public',
+]
+
diff --git a/discovery/mdns/public/mdns_service.h b/discovery/mdns/public/mdns_service.h
index 03e58008..76a8f05d 100644
--- a/discovery/mdns/public/mdns_service.h
+++ b/discovery/mdns/public/mdns_service.h
@@ -34,11 +34,10 @@ class MdnsService {
// Creates a new MdnsService instance, to be owned by the caller. On failure,
// returns nullptr. |task_runner|, |reporting_client|, and |config| must exist
// for the duration of the resulting instance's life.
- static std::unique_ptr<MdnsService> Create(
- TaskRunner* task_runner,
- ReportingClient* reporting_client,
- const Config& config,
- const Config::NetworkInfo& network_info);
+ static std::unique_ptr<MdnsService> Create(TaskRunner* task_runner,
+ ReportingClient* reporting_client,
+ const Config& config,
+ const InterfaceInfo& network_info);
// Starts an mDNS query with the given properties. Updated records are passed
// to |callback|. The caller must ensure |callback| remains alive while it is