|
|
|
|
@ -72,9 +72,10 @@ type Config struct { |
|
|
|
|
// If it is asked to resolve a domain that is not of that form,
|
|
|
|
|
// it delegates to upstream nameservers if any are set.
|
|
|
|
|
type Resolver struct { |
|
|
|
|
logf logger.Logf |
|
|
|
|
linkMon *monitor.Mon // or nil
|
|
|
|
|
unregLinkMon func() // or nil
|
|
|
|
|
logf logger.Logf |
|
|
|
|
linkMon *monitor.Mon // or nil
|
|
|
|
|
unregLinkMon func() // or nil
|
|
|
|
|
saveConfigForTests func(cfg Config) // used in tests to capture resolver config
|
|
|
|
|
// forwarder forwards requests to upstream nameservers.
|
|
|
|
|
forwarder *forwarder |
|
|
|
|
|
|
|
|
|
@ -124,7 +125,13 @@ func isFQDN(s string) bool { |
|
|
|
|
return strings.HasSuffix(s, ".") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (r *Resolver) TestOnlySetHook(hook func(Config)) { r.saveConfigForTests = hook } |
|
|
|
|
|
|
|
|
|
func (r *Resolver) SetConfig(cfg Config) error { |
|
|
|
|
if r.saveConfigForTests != nil { |
|
|
|
|
r.saveConfigForTests(cfg) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
routes := make([]route, 0, len(cfg.Routes)) |
|
|
|
|
reverse := make(map[netaddr.IP]string, len(cfg.Hosts)) |
|
|
|
|
|
|
|
|
|
|