diff options
Diffstat (limited to 'app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go')
-rw-r--r-- | app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go | 57 |
1 files changed, 22 insertions, 35 deletions
diff --git a/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go b/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go index 74a0c97f..24a0eaec 100644 --- a/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go +++ b/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go @@ -85,7 +85,6 @@ func wgTurnOn(ifnameRef string, tun_fd int32, settings string) int32 { } device.Up() - device.net.bind.(*NativeBind).clearSourceOnAllRouteChanges = true logger.Info.Println("Device started") var i int32 @@ -122,54 +121,42 @@ func wgGetSocketV4(tunnelHandle int32) int32 { if !ok { return -1 } - return int32(native.sock4) -} - -//export wgGetSocketV6 -func wgGetSocketV6(tunnelHandle int32) int32 { - device, ok := tunnelHandles[tunnelHandle] - if !ok { + fd := int32(-1) + conn, err := native.ipv4.SyscallConn() + if err != nil { return -1 } - native, ok := device.net.bind.(*NativeBind) - if !ok { + err = conn.Control(func(f uintptr) { + fd = int32(f) + }) + if err != nil { return -1 } - return int32(native.sock6) + return fd } -//export wgPutSocketV4 -func wgPutSocketV4(tunnelHandle int32) { +//export wgGetSocketV6 +func wgGetSocketV6(tunnelHandle int32) int32 { device, ok := tunnelHandles[tunnelHandle] if !ok { - return + return -1 } native, ok := device.net.bind.(*NativeBind) if !ok { - return - } - fwmark, err := unix.GetsockoptInt(native.sock6, unix.SOL_SOCKET, unix.SO_MARK) - if err == nil { - native.lastMark = uint32(fwmark) - device.net.fwmark = uint32(fwmark) - } -} - -//export wgPutSocketV6 -func wgPutSocketV6(tunnelHandle int32) { - device, ok := tunnelHandles[tunnelHandle] - if !ok { - return + return -1 } - native, ok := device.net.bind.(*NativeBind) - if !ok { - return + fd := int32(-1) + conn, err := native.ipv6.SyscallConn() + if err != nil { + return -1 } - fwmark, err := unix.GetsockoptInt(native.sock6, unix.SOL_SOCKET, unix.SO_MARK) - if err == nil { - native.lastMark = uint32(fwmark) - device.net.fwmark = uint32(fwmark) + err = conn.Control(func(f uintptr) { + fd = int32(f) + }) + if err != nil { + return -1 } + return fd } func main() {} |