Add auto_route and auto_detect_interface for linux

This commit is contained in:
世界
2022-07-10 08:18:52 +08:00
parent 4432cc2253
commit 638f8a52d1
16 changed files with 318 additions and 20 deletions

View File

@@ -0,0 +1,23 @@
package dialer
import (
"syscall"
"github.com/sagernet/sing-box/adapter"
"github.com/sagernet/sing/common/control"
E "github.com/sagernet/sing/common/exceptions"
)
func BindToInterface(router adapter.Router) control.Func {
return func(network, address string, conn syscall.RawConn) error {
interfaceName := router.DefaultInterfaceName()
if interfaceName == "" {
return nil
}
var innerErr error
err := conn.Control(func(fd uintptr) {
innerErr = syscall.BindToDevice(int(fd), interfaceName)
})
return E.Errors(innerErr, err)
}
}