Add explicit address resolution alias
This commit is contained in:
parent
1810959b89
commit
b417373f5b
3 changed files with 39 additions and 5 deletions
|
|
@ -49,7 +49,7 @@ type ActionDefinition struct {
|
|||
// ActionRegistrar publishes DNS actions into another Core surface.
|
||||
//
|
||||
// registrar.RegisterAction(ActionResolve, func(values map[string]any) (any, bool, error) {
|
||||
// return service.ResolveAddress("gateway.charon.lthn")
|
||||
// return service.ResolveAddresses("gateway.charon.lthn")
|
||||
// })
|
||||
type ActionRegistrar interface {
|
||||
RegisterAction(name string, invoke func(map[string]any) (any, bool, error))
|
||||
|
|
@ -254,7 +254,7 @@ func (service *Service) handleResolveAddress(ctx context.Context, values map[str
|
|||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
result, ok := service.ResolveAddress(host)
|
||||
result, ok := service.ResolveAddresses(host)
|
||||
if !ok {
|
||||
return nil, false, nil
|
||||
}
|
||||
|
|
|
|||
13
service.go
13
service.go
|
|
@ -960,10 +960,10 @@ func (service *Service) refreshDerivedStateLocked() {
|
|||
service.zoneApex = computeZoneApex(service.records)
|
||||
}
|
||||
|
||||
// ResolveAddress returns A and AAAA values merged into one address list.
|
||||
// ResolveAddresses returns A and AAAA values merged into one address list.
|
||||
//
|
||||
// addresses, ok := service.ResolveAddress("gateway.charon.lthn")
|
||||
func (service *Service) ResolveAddress(name string) (ResolveAddressResult, bool) {
|
||||
// addresses, ok := service.ResolveAddresses("gateway.charon.lthn")
|
||||
func (service *Service) ResolveAddresses(name string) (ResolveAddressResult, bool) {
|
||||
if service == nil {
|
||||
return ResolveAddressResult{}, false
|
||||
}
|
||||
|
|
@ -976,6 +976,13 @@ func (service *Service) ResolveAddress(name string) (ResolveAddressResult, bool)
|
|||
}, true
|
||||
}
|
||||
|
||||
// ResolveAddress is a compatibility alias for ResolveAddresses.
|
||||
//
|
||||
// addresses, ok := service.ResolveAddress("gateway.charon.lthn")
|
||||
func (service *Service) ResolveAddress(name string) (ResolveAddressResult, bool) {
|
||||
return service.ResolveAddresses(name)
|
||||
}
|
||||
|
||||
// ResolveReverse returns the names that map back to an IP address.
|
||||
//
|
||||
// names, ok := service.ResolveReverse("10.10.10.10")
|
||||
|
|
|
|||
|
|
@ -130,6 +130,33 @@ func TestServiceOptionsAliasBuildsService(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestServiceResolveAddressesAliasMatchesResolveAddress(t *testing.T) {
|
||||
service := NewService(ServiceOptions{
|
||||
Records: map[string]NameRecords{
|
||||
"gateway.charon.lthn": {
|
||||
A: []string{"10.10.10.10"},
|
||||
AAAA: []string{"2001:db8::10"},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
addresses, ok := service.ResolveAddresses("gateway.charon.lthn")
|
||||
if !ok {
|
||||
t.Fatal("expected explicit addresses alias to resolve")
|
||||
}
|
||||
if len(addresses.Addresses) != 2 {
|
||||
t.Fatalf("expected merged A and AAAA values, got %#v", addresses.Addresses)
|
||||
}
|
||||
|
||||
compat, ok := service.ResolveAddress("gateway.charon.lthn")
|
||||
if !ok {
|
||||
t.Fatal("expected compatibility alias to resolve")
|
||||
}
|
||||
if len(compat.Addresses) != len(addresses.Addresses) {
|
||||
t.Fatalf("expected compatibility alias to match explicit alias, got %#v and %#v", compat.Addresses, addresses.Addresses)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewDNSServiceAliasToExistingConstructor(t *testing.T) {
|
||||
service := NewDNSService(ServiceOptions{
|
||||
Records: map[string]NameRecords{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue