net/dns: insert OS base config when emulating split DNS.

Part of #953.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson
2021-04-07 00:58:02 -07:00
committed by Dave Anderson
parent e560be6443
commit 720c1ad0f0
2 changed files with 53 additions and 18 deletions

View File

@@ -14,7 +14,8 @@ import (
)
type fakeOSConfigurator struct {
SplitDNS bool
SplitDNS bool
BaseConfig OSConfig
OSConfig OSConfig
ResolverConfig resolver.Config
@@ -37,8 +38,7 @@ func (c *fakeOSConfigurator) SupportsSplitDNS() bool {
}
func (c *fakeOSConfigurator) GetBaseConfig() (OSConfig, error) {
// TODO
return OSConfig{}, nil
return c.BaseConfig, nil
}
func (c *fakeOSConfigurator) Close() error { return nil }
@@ -54,6 +54,7 @@ func TestManager(t *testing.T) {
name string
in Config
split bool
bs OSConfig
os OSConfig
rs resolver.Config
}{
@@ -178,9 +179,13 @@ func TestManager(t *testing.T) {
Routes: upstreams("corp.com", "2.2.2.2:53"),
SearchDomains: strs("tailscale.com", "universe.tf"),
},
bs: OSConfig{
Nameservers: mustIPs("8.8.8.8"),
SearchDomains: strs("coffee.shop"),
},
os: OSConfig{
Nameservers: mustIPs("100.100.100.100"),
SearchDomains: strs("tailscale.com", "universe.tf"),
SearchDomains: strs("tailscale.com", "universe.tf", "coffee.shop"),
},
rs: resolver.Config{
Routes: upstreams(
@@ -209,9 +214,13 @@ func TestManager(t *testing.T) {
"bigco.net", "3.3.3.3:53"),
SearchDomains: strs("tailscale.com", "universe.tf"),
},
bs: OSConfig{
Nameservers: mustIPs("8.8.8.8"),
SearchDomains: strs("coffee.shop"),
},
os: OSConfig{
Nameservers: mustIPs("100.100.100.100"),
SearchDomains: strs("tailscale.com", "universe.tf"),
SearchDomains: strs("tailscale.com", "universe.tf", "coffee.shop"),
},
rs: resolver.Config{
Routes: upstreams(
@@ -232,7 +241,7 @@ func TestManager(t *testing.T) {
os: OSConfig{
Nameservers: mustIPs("100.100.100.100"),
SearchDomains: strs("tailscale.com", "universe.tf"),
MatchDomains: strs("corp.com", "bigco.net"),
MatchDomains: strs("bigco.net", "corp.com"),
},
rs: resolver.Config{
Routes: upstreams(
@@ -249,9 +258,13 @@ func TestManager(t *testing.T) {
AuthoritativeSuffixes: strs("ts.com"),
SearchDomains: strs("tailscale.com", "universe.tf"),
},
bs: OSConfig{
Nameservers: mustIPs("8.8.8.8"),
SearchDomains: strs("coffee.shop"),
},
os: OSConfig{
Nameservers: mustIPs("100.100.100.100"),
SearchDomains: strs("tailscale.com", "universe.tf"),
SearchDomains: strs("tailscale.com", "universe.tf", "coffee.shop"),
},
rs: resolver.Config{
Routes: upstreams(".", "8.8.8.8:53"),
@@ -293,9 +306,13 @@ func TestManager(t *testing.T) {
AuthoritativeSuffixes: strs("ts.com"),
SearchDomains: strs("tailscale.com", "universe.tf"),
},
bs: OSConfig{
Nameservers: mustIPs("8.8.8.8"),
SearchDomains: strs("coffee.shop"),
},
os: OSConfig{
Nameservers: mustIPs("100.100.100.100"),
SearchDomains: strs("tailscale.com", "universe.tf"),
SearchDomains: strs("tailscale.com", "universe.tf", "coffee.shop"),
},
rs: resolver.Config{
Routes: upstreams(
@@ -321,7 +338,7 @@ func TestManager(t *testing.T) {
os: OSConfig{
Nameservers: mustIPs("100.100.100.100"),
SearchDomains: strs("tailscale.com", "universe.tf"),
MatchDomains: strs("ts.com", "corp.com"),
MatchDomains: strs("corp.com", "ts.com"),
},
rs: resolver.Config{
Routes: upstreams("corp.com.", "2.2.2.2:53"),
@@ -335,7 +352,10 @@ func TestManager(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
f := fakeOSConfigurator{SplitDNS: test.split}
f := fakeOSConfigurator{
SplitDNS: test.split,
BaseConfig: test.bs,
}
m := NewManager(t.Logf, &f, nil)
m.resolver.TestOnlySetHook(f.SetResolver)