[agent/codex:gpt-5.3-codex-spark] Read docs/RFC.md fully. Find ONE feature described in the sp... #12
2 changed files with 30 additions and 0 deletions
12
service.go
12
service.go
|
|
@ -32,6 +32,10 @@ type ResolveAddressResult struct {
|
|||
Addresses []string `json:"addresses"`
|
||||
}
|
||||
|
||||
type ReverseLookupResult struct {
|
||||
Names []string `json:"names"`
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
mu sync.RWMutex
|
||||
records map[string]NameRecords
|
||||
|
|
@ -355,6 +359,14 @@ func (service *Service) Health() map[string]any {
|
|||
}
|
||||
}
|
||||
|
||||
func (service *Service) ResolveReverseNames(ip string) (ReverseLookupResult, bool) {
|
||||
names, ok := service.ResolveReverse(ip)
|
||||
if !ok {
|
||||
return ReverseLookupResult{}, false
|
||||
}
|
||||
return ReverseLookupResult{Names: names}, true
|
||||
}
|
||||
|
||||
func (service *Service) findRecord(name string) (NameRecords, bool) {
|
||||
service.mu.RLock()
|
||||
defer service.mu.RUnlock()
|
||||
|
|
|
|||
|
|
@ -140,6 +140,24 @@ func TestServiceResolveReverseUsesARecords(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestServiceResolveReverseNamesReturnsNamedField(t *testing.T) {
|
||||
service := NewService(ServiceOptions{
|
||||
Records: map[string]NameRecords{
|
||||
"gateway.charon.lthn": {
|
||||
A: []string{"10.10.10.10"},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
result, ok := service.ResolveReverseNames("10.10.10.10")
|
||||
if !ok {
|
||||
t.Fatal("expected named reverse result")
|
||||
}
|
||||
if len(result.Names) != 1 || result.Names[0] != "gateway.charon.lthn" {
|
||||
t.Fatalf("unexpected reverse names result: %#v", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestServiceResolveReverseFallsBackToFalseWhenUnknown(t *testing.T) {
|
||||
service := NewService(ServiceOptions{
|
||||
Records: map[string]NameRecords{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue