summaryrefslogtreecommitdiffhomepage
path: root/app/tools/libwg-go/src
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-05-26 03:01:16 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-05-26 03:03:15 +0200
commit7120ef9ffdfd7db28dff36e435616d5f04c2d393 (patch)
tree1a301e5ab08c43c87884505005d216db4ebfa76b /app/tools/libwg-go/src
parent75f4478fb54e001e1a12f5d23108dadd9c0cc865 (diff)
libwg-go: try no stickiness and no roaming
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/tools/libwg-go/src')
-rw-r--r--app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/api-android.go57
-rw-r--r--app/tools/libwg-go/src/git.zx2c4.com/wireguard-go/jni.c12
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);
-}