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  }