diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2021-03-13 21:58:21 +0000 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-02-07 22:41:25 +0100 |
commit | 07509a4597e4613aa0f86f5be1ad3f885c784798 (patch) | |
tree | 128cd6b2be44b7255b7961ab7389ce67a009f369 /tunnel/tools/libwg-go/api-android.go | |
parent | 4ff564521fd42dcd54c8e0886317cae64d19d6f3 (diff) |
implement wgOnEvent
Diffstat (limited to 'tunnel/tools/libwg-go/api-android.go')
-rw-r--r-- | tunnel/tools/libwg-go/api-android.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/tunnel/tools/libwg-go/api-android.go b/tunnel/tools/libwg-go/api-android.go index d47c5d76..e3e97c67 100644 --- a/tunnel/tools/libwg-go/api-android.go +++ b/tunnel/tools/libwg-go/api-android.go @@ -7,6 +7,7 @@ package main // #cgo LDFLAGS: -llog // #include <android/log.h> +// extern void wgOnEvent(void *eventHandler, const char *event); import "C" import ( @@ -48,6 +49,7 @@ func (l AndroidLogger) Printf(format string, args ...interface{}) { type TunnelHandle struct { device *device.Device uapi net.Listener + eventHandler unsafe.Pointer } var tunnelHandles map[int32]TunnelHandle @@ -73,7 +75,7 @@ func init() { } //export wgTurnOn -func wgTurnOn(interfaceName string, tunFd int32, settings string) int32 { +func wgTurnOn(interfaceName string, tunFd int32, settings string, eventHandler unsafe.Pointer) int32 { tag := cstring("WireGuard/GoBackend/" + interfaceName) logger := &device.Logger{ Verbosef: AndroidLogger{level: C.ANDROID_LOG_DEBUG, tag: tag}.Printf, @@ -142,21 +144,23 @@ func wgTurnOn(interfaceName string, tunFd int32, settings string) int32 { device.Close() return -1 } - tunnelHandles[i] = TunnelHandle{device: device, uapi: uapi} + tunnelHandles[i] = TunnelHandle{device: device, uapi: uapi, eventHandler: eventHandler} return i } //export wgTurnOff -func wgTurnOff(tunnelHandle int32) { +func wgTurnOff(tunnelHandle int32) unsafe.Pointer { handle, ok := tunnelHandles[tunnelHandle] if !ok { - return + return nil } + eventHandler := handle.eventHandler delete(tunnelHandles, tunnelHandle) if handle.uapi != nil { handle.uapi.Close() } handle.device.Close() + return eventHandler } //export wgGetSocketV4 |