diff options
Diffstat (limited to 'app/tools/libwg-go/src')
-rw-r--r-- | app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go | 57 | ||||
-rw-r--r-- | app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/jni.c | 12 |
2 files changed, 22 insertions, 47 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() {} diff --git a/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/jni.c b/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/jni.c index ae6422ab..a0f3d0ba 100644 --- a/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/jni.c +++ b/app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/jni.c @@ -10,8 +10,6 @@ extern int wgTurnOn(struct go_string ifname, int tun_fd, struct go_string settin extern void wgTurnOff(int handle); extern int wgGetSocketV4(int handle); extern int wgGetSocketV6(int handle); -extern void wgPutSocketV4(int handle); -extern void wgPutSocketV6(int handle); JNIEXPORT jint JNICALL Java_com_wireguard_android_backend_GoBackend_wgTurnOn(JNIEnv *env, jclass c, jstring ifname, jint tun_fd, jstring settings) { @@ -45,13 +43,3 @@ JNIEXPORT jint JNICALL Java_com_wireguard_android_backend_GoBackend_wgGetSocketV { return wgGetSocketV6(handle); } - -JNIEXPORT void JNICALL Java_com_wireguard_android_backend_GoBackend_wgPutSocketV4(JNIEnv *env, jclass c, jint handle) -{ - wgPutSocketV4(handle); -} - -JNIEXPORT void JNICALL Java_com_wireguard_android_backend_GoBackend_wgPutSocketV6(JNIEnv *env, jclass c, jint handle) -{ - wgPutSocketV6(handle); -} |