|
@@ -66,11 +66,17 @@ func NewDefault(ctx context.Context, options option.DialerOptions) (*DefaultDial
|
|
interfaceFinder = control.NewDefaultInterfaceFinder()
|
|
interfaceFinder = control.NewDefaultInterfaceFinder()
|
|
}
|
|
}
|
|
if options.BindInterface != "" {
|
|
if options.BindInterface != "" {
|
|
|
|
+ if !(C.IsLinux || C.IsDarwin || C.IsWindows) {
|
|
|
|
+ return nil, E.New("`bind_interface` is only supported on Linux, macOS and Windows")
|
|
|
|
+ }
|
|
bindFunc := control.BindToInterface(interfaceFinder, options.BindInterface, -1)
|
|
bindFunc := control.BindToInterface(interfaceFinder, options.BindInterface, -1)
|
|
dialer.Control = control.Append(dialer.Control, bindFunc)
|
|
dialer.Control = control.Append(dialer.Control, bindFunc)
|
|
listener.Control = control.Append(listener.Control, bindFunc)
|
|
listener.Control = control.Append(listener.Control, bindFunc)
|
|
}
|
|
}
|
|
if options.RoutingMark > 0 {
|
|
if options.RoutingMark > 0 {
|
|
|
|
+ if !C.IsLinux {
|
|
|
|
+ return nil, E.New("`routing_mark` is only supported on Linux")
|
|
|
|
+ }
|
|
dialer.Control = control.Append(dialer.Control, setMarkWrapper(networkManager, uint32(options.RoutingMark), false))
|
|
dialer.Control = control.Append(dialer.Control, setMarkWrapper(networkManager, uint32(options.RoutingMark), false))
|
|
listener.Control = control.Append(listener.Control, setMarkWrapper(networkManager, uint32(options.RoutingMark), false))
|
|
listener.Control = control.Append(listener.Control, setMarkWrapper(networkManager, uint32(options.RoutingMark), false))
|
|
}
|
|
}
|