mirror of https://github.com/tailscale/tailscale/
net/dns: add an OSConfigurator interface.
Signed-off-by: David Anderson <danderson@tailscale.com>pull/1652/head
parent
6ad44f9fdf
commit
077d4dc8c7
@ -0,0 +1,36 @@
|
|||||||
|
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package dns
|
||||||
|
|
||||||
|
// DNSRoutingMode describes the type of per-domain DNS routing that
|
||||||
|
// the OS is capable of.
|
||||||
|
type RoutingMode int
|
||||||
|
|
||||||
|
const (
|
||||||
|
// RoutingModeNone means the OS only supports setting a single
|
||||||
|
// primary set of DNS resolvers.
|
||||||
|
RoutingModeNone RoutingMode = iota
|
||||||
|
// RoutingModeSingle means the OS supports a set of
|
||||||
|
// primary resolvers, as well as one set of additional per-suffix
|
||||||
|
// resolvers per network interface.
|
||||||
|
RoutingModeSingle
|
||||||
|
// RoutingModeMulti means the OS supports a set of primary
|
||||||
|
// resolvers, as well as an arbitrary overlay of DNS routes.
|
||||||
|
RoutingModeMulti
|
||||||
|
)
|
||||||
|
|
||||||
|
// An OSConfigurator applies DNS settings to the operating system.
|
||||||
|
type OSConfigurator interface {
|
||||||
|
// Set updates the OS's DNS configuration to match cfg.
|
||||||
|
// If cfg nil or the zero value, all Tailscale-related DNS
|
||||||
|
// configuration is removed.
|
||||||
|
// Set must not be called after Close.
|
||||||
|
Set(cfg *OSConfig) error
|
||||||
|
// DNSRoutingMode reports the DNS routing capabilities of this OS
|
||||||
|
// configurator.
|
||||||
|
RoutingMode() RoutingMode
|
||||||
|
// Close removes Tailscale-related DNS configuration from the OS.
|
||||||
|
Close() error
|
||||||
|
}
|
Loading…
Reference in New Issue