blob: 76d7ec6e2566b226b5ac783337d7d499f73f8735 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.net.mdns;
/// Discoverable protocol for subscribing to address changes for given host names.
@available(added=9)
@discoverable
closed protocol HostNameSubscriber {
/// Gets the addresses for the specified host.
///
/// + request `host` the simple name of the host.
/// + request `options` options to be applied to the subscription.
/// + request `listener` client end of the `HostNameSubscriptionListener` channel.
strict SubscribeToHostName(resource struct {
host host_name;
options HostNameSubscriptionOptions;
listener client_end:HostNameSubscriptionListener;
});
};
/// Options for `HostNameSubscriber.SubscribeToHostName`.
@available(added=9)
type HostNameSubscriptionOptions = table {
/// The media (wired, wireless, both) of the interfaces on which the host name should be
/// subscribed to. The default is both wired and wireless media.
1: media Media;
/// The IP versions (V4, V6, both) with which the host name should subscribe to. The default
/// value is both IPv4 and IPv6.
2: ip_versions IpVersions;
// Whether to exclude the local host from the subscription. The default value is false.
3: exclude_local bool;
// Whether to exclude local proxies from the subscription. The default value is false.
4: exclude_local_proxies bool;
};
/// Client-implemented interface for subscribers. Method replies are used to
/// throttle traffic. The service won't necessarily wait for a reply before
/// calling another method.
@available(added=9)
closed protocol HostNameSubscriptionListener {
/// Notifies the subscriber that the addresses associated with a host name have changed.
strict OnAddressesChanged(struct {
addresses vector<HostAddress>:MAX_ADDRESSES;
}) -> ();
};