diff options
Diffstat (limited to 'ipn')
| -rw-r--r-- | ipn/ipnlocal/local.go | 15 |
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() { |
