github.com/yaling888/clash@v1.53.0/component/dialer/options.go (about) 1 package dialer 2 3 import "go.uber.org/atomic" 4 5 var ( 6 DefaultOptions []Option 7 DefaultInterface = atomic.NewString("") 8 DefaultRoutingMark = atomic.NewInt32(0) 9 ) 10 11 type option struct { 12 interfaceName string 13 fallbackBind bool 14 addrReuse bool 15 routingMark int 16 direct bool 17 } 18 19 type Option func(opt *option) 20 21 func WithInterface(name string) Option { 22 return func(opt *option) { 23 opt.interfaceName = name 24 } 25 } 26 27 func WithFallbackBind(fallback bool) Option { 28 return func(opt *option) { 29 opt.fallbackBind = fallback 30 } 31 } 32 33 func WithAddrReuse(reuse bool) Option { 34 return func(opt *option) { 35 opt.addrReuse = reuse 36 } 37 } 38 39 func WithRoutingMark(mark int) Option { 40 return func(opt *option) { 41 opt.routingMark = mark 42 } 43 } 44 45 func WithDirect() Option { 46 return func(opt *option) { 47 opt.direct = true 48 } 49 }