tailcfg: add FallbackResolvers to DNSConfig.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson 2021-04-19 21:30:39 -07:00 committed by Dave Anderson
parent 3d0599fca0
commit 28ba20d733
2 changed files with 15 additions and 8 deletions

View File

@ -849,6 +849,10 @@ type DNSConfig struct {
// Map keys must be fully-qualified DNS name suffixes, with a // Map keys must be fully-qualified DNS name suffixes, with a
// trailing dot but no leading dot. // trailing dot but no leading dot.
Routes map[string][]DNSResolver `json:",omitempty"` Routes map[string][]DNSResolver `json:",omitempty"`
// FallbackResolvers is like Resolvers, but is only used if a
// split DNS configuration is requested in a configuration that
// doesn't work yet without explicit default resolvers.
FallbackResolvers []DNSResolver `json:",omitempty"`
// Domains are the search domains to use. // Domains are the search domains to use.
// Search domains must be FQDNs, but *without* the trailing dot. // Search domains must be FQDNs, but *without* the trailing dot.
Domains []string `json:",omitempty"` Domains []string `json:",omitempty"`
@ -865,8 +869,6 @@ type DNSConfig struct {
Nameservers []netaddr.IP `json:",omitempty"` Nameservers []netaddr.IP `json:",omitempty"`
// PerDomain is not set by the control server, and does nothing. // PerDomain is not set by the control server, and does nothing.
// TODO(danderson): revise DNS configuration to make this useful
// again.
PerDomain bool `json:",omitempty"` PerDomain bool `json:",omitempty"`
} }

View File

@ -198,6 +198,10 @@ func (src *DNSConfig) Clone() *DNSConfig {
dst.Routes[k] = append([]DNSResolver{}, src.Routes[k]...) dst.Routes[k] = append([]DNSResolver{}, src.Routes[k]...)
} }
} }
dst.FallbackResolvers = make([]DNSResolver, len(src.FallbackResolvers))
for i := range dst.FallbackResolvers {
dst.FallbackResolvers[i] = *src.FallbackResolvers[i].Clone()
}
dst.Domains = append(src.Domains[:0:0], src.Domains...) dst.Domains = append(src.Domains[:0:0], src.Domains...)
dst.Nameservers = append(src.Nameservers[:0:0], src.Nameservers...) dst.Nameservers = append(src.Nameservers[:0:0], src.Nameservers...)
return dst return dst
@ -208,6 +212,7 @@ func (src *DNSConfig) Clone() *DNSConfig {
var _DNSConfigNeedsRegeneration = DNSConfig(struct { var _DNSConfigNeedsRegeneration = DNSConfig(struct {
Resolvers []DNSResolver Resolvers []DNSResolver
Routes map[string][]DNSResolver Routes map[string][]DNSResolver
FallbackResolvers []DNSResolver
Domains []string Domains []string
Proxied bool Proxied bool
Nameservers []netaddr.IP Nameservers []netaddr.IP