]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
wireguard-go-bridge: allow querying internal settings
authorJason A. Donenfeld <Jason@zx2c4.com>
Wed, 23 Jan 2019 21:15:01 +0000 (22:15 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Thu, 24 Jan 2019 00:22:04 +0000 (01:22 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
wireguard-go
wireguard-go-bridge/src/api-ios.go
wireguard-go-bridge/wireguard.h

index 8fde8334dcf3a7f3934159f45b6fc1d5f4be8a90..c614add90fbb9ccf0fafb17e237dfb9df54a7043 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 8fde8334dcf3a7f3934159f45b6fc1d5f4be8a90
+Subproject commit c614add90fbb9ccf0fafb17e237dfb9df54a7043
index ace83d9b3e6f11ab4170dcc174583ed3fbaf4519..de730eb78cb08de013f896e7c61a985046248f3c 100644 (file)
@@ -15,10 +15,10 @@ import "C"
 
 import (
        "bufio"
+       "bytes"
        "errors"
        "git.zx2c4.com/wireguard-go/tun"
        "golang.org/x/sys/unix"
-       "io/ioutil"
        "log"
        "math"
        "os"
@@ -94,8 +94,7 @@ func wgTurnOn(settings string, tunFd int32) int32 {
        logger.Info.Println("Attaching to interface")
        device := NewDevice(tun, logger)
 
-       bufferedSettings := bufio.NewReadWriter(bufio.NewReader(strings.NewReader(settings)), bufio.NewWriter(ioutil.Discard))
-       setError := ipcSetOperation(device, bufferedSettings)
+       setError := ipcSetOperation(device, bufio.NewReader(strings.NewReader(settings)))
        if setError != nil {
                logger.Error.Println(setError)
                return -1
@@ -133,15 +132,30 @@ func wgSetConfig(tunnelHandle int32, settings string) int64 {
        if !ok {
                return 0
        }
-       bufferedSettings := bufio.NewReadWriter(bufio.NewReader(strings.NewReader(settings)), bufio.NewWriter(ioutil.Discard))
-       err := ipcSetOperation(device, bufferedSettings)
+       err := ipcSetOperation(device, bufio.NewReader(strings.NewReader(settings)))
        if err != nil {
                device.log.Error.Println(err)
-               return err.Code
+               return err.int64
        }
        return 0
 }
 
+//export wgGetConfig
+func wgGetConfig(tunnelHandle int32) *C.char {
+       device, ok := tunnelHandles[tunnelHandle]
+       if !ok {
+               return nil
+       }
+       settings := new(bytes.Buffer)
+       writer := bufio.NewWriter(settings)
+       err := ipcGetOperation(device, writer)
+       if err != nil {
+               return nil
+       }
+       writer.Flush()
+       return C.CString(settings.String())
+}
+
 //export wgBindInterfaceScope
 func wgBindInterfaceScope(tunnelHandle int32, ifscope int32) {
        var operr error
index b264a2efaf4607d42559979eca77133543b9f567..5ae9023e42a0b1775323557d3551715b69fecfd7 100644 (file)
@@ -17,7 +17,8 @@ extern void wgSetLogger(logger_fn_t logger_fn);
 extern int wgTurnOn(gostring_t settings, int32_t tun_fd);
 extern void wgTurnOff(int handle);
 extern int64_t wgSetConfig(int handle, gostring_t settings);
+extern char *wgGetConfig(int handle);
 extern void wgBindInterfaceScope(int handle, int32_t ifscope);
-extern char *wgVersion();
+extern const char *wgVersion();
 
 #endif