summaryrefslogtreecommitdiffhomepage
path: root/ipn
diff options
context:
space:
mode:
Diffstat (limited to 'ipn')
-rw-r--r--ipn/ipnlocal/local.go15
1 files changed, 13 insertions, 2 deletions
diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go
index 682add38e..6ea0e4dd1 100644
--- a/ipn/ipnlocal/local.go
+++ b/ipn/ipnlocal/local.go
@@ -3383,11 +3383,22 @@ func dnsConfigForNetmap(nm *netmap.NetworkMap, peers map[tailcfg.NodeID]tailcfg.
// Ignore.
continue
}
- fqdn, err := dnsname.ToFQDN(rec.Name)
+ // If the name has a leading dot, but is not exactly '.'.
+ var isSuffix bool
+ // Assume upstream provides either a suffix or an FQDN that are
+ // respectively well formed.
+ if len(rec.Name) > 1 && rec.Name[0] == '.' {
+ isSuffix = true
+ }
+ fqdn, err := dnsname.NewFQDN(rec.Name)
if err != nil {
continue
}
- dcfg.Hosts[fqdn] = append(dcfg.Hosts[fqdn], ip)
+ if isSuffix {
+ mak.Set(&dcfg.Suffixes, fqdn, append(dcfg.Suffixes[fqdn], ip))
+ } else {
+ dcfg.Hosts[fqdn] = append(dcfg.Hosts[fqdn], ip)
+ }
}
if !prefs.CorpDNS() {