mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-09-15 21:00:27 +00:00
Fix bind control for auto redirect
This commit is contained in:
@@ -382,7 +382,12 @@ func (d *DefaultDialer) ListenSerialInterfacePacket(ctx context.Context, destina
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *DefaultDialer) UDPListenerControl() (control.Func, bool) {
|
func (d *DefaultDialer) UDPListenerControl() (control.Func, bool) {
|
||||||
return d.udpListener.Control, d.autoDetectBindFunc != nil && d.netns == ""
|
egressEnabled := d.autoDetectBindFunc != nil && d.netns == ""
|
||||||
|
listenerControl := d.udpListener.Control
|
||||||
|
if egressEnabled && d.networkManager.AutoRedirectOutputMark() != 0 {
|
||||||
|
listenerControl = control.Append(listenerControl, control.UnbindFromInterface())
|
||||||
|
}
|
||||||
|
return listenerControl, egressEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DefaultDialer) trackConn(conn net.Conn, err error) (net.Conn, error) {
|
func (d *DefaultDialer) trackConn(conn net.Conn, err error) (net.Conn, error) {
|
||||||
|
|||||||
+1
-7
@@ -353,7 +353,7 @@ func (r *NetworkManager) AutoDetectInterfaceFunc() control.Func {
|
|||||||
if r.interfaceMonitor == nil {
|
if r.interfaceMonitor == nil {
|
||||||
return 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
|
remoteAddr := M.ParseSocksaddr(address).Addr
|
||||||
if remoteAddr.IsValid() {
|
if remoteAddr.IsValid() {
|
||||||
iif, err := r.interfaceFinder.ByAddr(remoteAddr)
|
iif, err := r.interfaceFinder.ByAddr(remoteAddr)
|
||||||
@@ -367,12 +367,6 @@ func (r *NetworkManager) AutoDetectInterfaceFunc() control.Func {
|
|||||||
}
|
}
|
||||||
return defaultInterface.Name, defaultInterface.Index, nil
|
return defaultInterface.Name, defaultInterface.Index, nil
|
||||||
})
|
})
|
||||||
return func(network, address string, conn syscall.RawConn) error {
|
|
||||||
if r.autoRedirectOutputMark != 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return bindFunc(network, address, conn)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user