blob: c95e40ec2fd46501ee0dc40b48c88e658141367e [file] [log] [blame]
// Copyright 2020 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.
/// Provides a hanging get interface to watch for DNS servers configuration.
protocol DnsServerWatcher {
/// Returns a list of DNS servers.
/// First call always returns a snapshot of the current list of servers or blocks if an empty
/// list would be returned. Subsequent calls will block until the list of servers changes.
/// The list of servers changes over time by configuration or network topology changes,
/// expiration, etc. Callers must repeatedly call `WatchServers` and replace any previously
/// returned `servers` with new ones to avoid using stale or expired entries.
/// It is invalid to call this method while a previous call is pending. Doing so will cause the
/// server end of the protocol to be closed.
/// - response `servers` The list of servers to use for DNS resolution, in priority order.
WatchServers() -> (struct {
servers vector<DnsServer>:MAX;