dns: Add preferred_by rule item

This commit is contained in:
世界
2026-04-29 22:48:02 +08:00
parent f842580f33
commit db08f3f699
12 changed files with 208 additions and 4 deletions
+20 -1
View File
@@ -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