dns: Add preferred_by rule item
This commit is contained in:
@@ -32,7 +32,10 @@ func RegisterTransport(registry *dns.TransportRegistry) {
|
||||
dns.RegisterTransport[option.ResolvedDNSServerOptions](registry, C.TypeResolved, NewTransport)
|
||||
}
|
||||
|
||||
var _ adapter.DNSTransport = (*Transport)(nil)
|
||||
var (
|
||||
_ adapter.DNSTransport = (*Transport)(nil)
|
||||
_ adapter.DNSTransportWithPreferredDomain = (*Transport)(nil)
|
||||
)
|
||||
|
||||
type Transport struct {
|
||||
dns.TransportAdapter
|
||||
@@ -191,6 +194,22 @@ func (t *Transport) deleteTransport(link *TransportLink) {
|
||||
delete(t.linkServers, link)
|
||||
}
|
||||
|
||||
func (t *Transport) PreferredDomain(domain string) bool {
|
||||
t.service.linkAccess.RLock()
|
||||
defer t.service.linkAccess.RUnlock()
|
||||
for _, link := range t.service.links {
|
||||
for _, linkDomain := range link.domain {
|
||||
if linkDomain.Domain == "." {
|
||||
continue
|
||||
}
|
||||
if strings.HasSuffix(domain, linkDomain.Domain) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *Transport) Exchange(ctx context.Context, message *mDNS.Msg) (*mDNS.Msg, error) {
|
||||
question := message.Question[0]
|
||||
var selectedLink *TransportLink
|
||||
|
||||
Reference in New Issue
Block a user