diff --git a/service.go b/service.go index 5a83545..d1075d6 100644 --- a/service.go +++ b/service.go @@ -1359,6 +1359,10 @@ func collectReverseName(namesByIP *cache.Cache, name string, ips []string, expir return } + if strings.HasPrefix(normalizeName(name), "*.") { + return + } + for _, ip := range ips { normalized := normalizeIP(ip) if normalized == "" { diff --git a/service_test.go b/service_test.go index 4bc7a77..ee20f1e 100644 --- a/service_test.go +++ b/service_test.go @@ -396,6 +396,27 @@ func TestServiceResolveReverseNamesReturnsNamedField(t *testing.T) { } } +func TestServiceResolveReverseIgnoresWildcardTemplateNames(t *testing.T) { + service := NewService(ServiceOptions{ + Records: map[string]NameRecords{ + "*.charon.lthn": { + A: []string{"10.10.10.10"}, + }, + "gateway.charon.lthn": { + A: []string{"10.10.10.10"}, + }, + }, + }) + + names, ok := service.ResolveReverse("10.10.10.10") + if !ok { + t.Fatal("expected reverse lookup to resolve") + } + if len(names) != 1 || names[0] != "gateway.charon.lthn" { + t.Fatalf("expected reverse lookup to omit wildcard names, got %#v", names) + } +} + func TestServiceResolvePTRAliasesMatchReverseLookup(t *testing.T) { service := NewService(ServiceOptions{ Records: map[string]NameRecords{