|
@@ -312,7 +312,7 @@ func (r *NetworkManager) AutoDetectInterfaceFunc() control.Func {
|
|
|
if r.interfaceMonitor == nil {
|
|
|
return nil
|
|
|
}
|
|
|
- bindFunc := control.BindToInterfaceFunc(r.interfaceFinder, func(network string, address string) (interfaceName string, interfaceIndex int, err error) {
|
|
|
+ return control.BindToInterfaceFunc(r.interfaceFinder, func(network string, address string) (interfaceName string, interfaceIndex int, err error) {
|
|
|
remoteAddr := M.ParseSocksaddr(address).Addr
|
|
|
if remoteAddr.IsValid() {
|
|
|
iif, err := r.interfaceFinder.ByAddr(remoteAddr)
|
|
@@ -326,16 +326,6 @@ func (r *NetworkManager) AutoDetectInterfaceFunc() control.Func {
|
|
|
}
|
|
|
return defaultInterface.Name, defaultInterface.Index, nil
|
|
|
})
|
|
|
- return func(network, address string, conn syscall.RawConn) error {
|
|
|
- err := bindFunc(network, address, conn)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- if r.autoRedirectOutputMark > 0 {
|
|
|
- return control.RoutingMark(r.autoRedirectOutputMark)(network, address, conn)
|
|
|
- }
|
|
|
- return nil
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -366,6 +356,15 @@ func (r *NetworkManager) AutoRedirectOutputMark() uint32 {
|
|
|
return r.autoRedirectOutputMark
|
|
|
}
|
|
|
|
|
|
+func (r *NetworkManager) AutoRedirectOutputMarkFunc() control.Func {
|
|
|
+ return func(network, address string, conn syscall.RawConn) error {
|
|
|
+ if r.autoRedirectOutputMark == 0 {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return control.RoutingMark(r.autoRedirectOutputMark)(network, address, conn)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func (r *NetworkManager) NetworkMonitor() tun.NetworkUpdateMonitor {
|
|
|
return r.networkMonitor
|
|
|
}
|