88 "strings"
99 "syscall"
1010
11- dns "github.com/sagernet/sing-dns"
11+ "github.com/sagernet/sing-box/adapter"
12+ "github.com/sagernet/sing-box/constant"
13+ "github.com/sagernet/sing-box/dns"
1214 "github.com/sagernet/sing/common"
1315 E "github.com/sagernet/sing/common/exceptions"
1416 M "github.com/sagernet/sing/common/metadata"
@@ -23,29 +25,12 @@ type LocalDNSTransport interface {
2325 Exchange (ctx * ExchangeContext , message []byte ) error
2426}
2527
26- func RegisterLocalDNSTransport (transport LocalDNSTransport ) {
27- if transport == nil {
28- dns .RegisterTransport ([]string {"local" }, dns .CreateTransport )
29- } else {
30- dns .RegisterTransport ([]string {"local" }, func (options dns.TransportOptions ) (dns.Transport , error ) {
31- return & platformLocalDNSTransport {
32- iif : transport ,
33- }, nil
34- })
35- }
36- }
37-
38- var _ dns.Transport = (* platformLocalDNSTransport )(nil )
39-
4028type platformLocalDNSTransport struct {
4129 iif LocalDNSTransport
30+ tag string
4231}
4332
44- func (p * platformLocalDNSTransport ) Name () string {
45- return "local"
46- }
47-
48- func (p * platformLocalDNSTransport ) Start () error {
33+ func (p * platformLocalDNSTransport ) Start (adapter.StartStage ) error {
4934 return nil
5035}
5136
@@ -82,12 +67,12 @@ func (p *platformLocalDNSTransport) Exchange(ctx context.Context, message *mDNS.
8267 })
8368}
8469
85- func (p * platformLocalDNSTransport ) Lookup (ctx context.Context , domain string , strategy dns .DomainStrategy ) ([]netip.Addr , error ) {
70+ func (p * platformLocalDNSTransport ) Lookup (ctx context.Context , domain string , strategy constant .DomainStrategy ) ([]netip.Addr , error ) {
8671 var network string
8772 switch strategy {
88- case dns . DomainStrategyUseIPv4 :
73+ case constant . DomainStrategyIPv4Only :
8974 network = "ip4"
90- case dns .DomainStrategyPreferIPv6 :
75+ case constant .DomainStrategyPreferIPv6 :
9176 network = "ip6"
9277 default :
9378 network = "ip"
@@ -105,11 +90,11 @@ func (p *platformLocalDNSTransport) Lookup(ctx context.Context, domain string, s
10590 return response .error
10691 }
10792 switch strategy {
108- case dns . DomainStrategyUseIPv4 :
93+ case constant . DomainStrategyIPv4Only :
10994 responseAddr = common .Filter (response .addresses , func (it netip.Addr ) bool {
11095 return it .Is4 ()
11196 })
112- case dns .DomainStrategyPreferIPv6 :
97+ case constant .DomainStrategyPreferIPv6 :
11398 responseAddr = common .Filter (response .addresses , func (it netip.Addr ) bool {
11499 return it .Is6 ()
115100 })
@@ -123,6 +108,18 @@ func (p *platformLocalDNSTransport) Lookup(ctx context.Context, domain string, s
123108 })
124109}
125110
111+ func (p * platformLocalDNSTransport ) Tag () string {
112+ return p .tag
113+ }
114+
115+ func (p * platformLocalDNSTransport ) Type () string {
116+ return "local"
117+ }
118+
119+ func (p * platformLocalDNSTransport ) Dependencies () []string {
120+ return nil
121+ }
122+
126123type Func interface {
127124 Invoke () error
128125}
@@ -157,7 +154,7 @@ func (c *ExchangeContext) RawSuccess(result []byte) {
157154}
158155
159156func (c * ExchangeContext ) ErrorCode (code int32 ) {
160- c .error = dns .RCodeError (code )
157+ c .error = dns .RcodeError (code )
161158}
162159
163160func (c * ExchangeContext ) ErrnoCode (code int32 ) {
0 commit comments