diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-10-02 18:12:30 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-10-02 19:15:03 +0200 |
commit | cd86ba92eca722812ee592001e9b566bf50183b6 (patch) | |
tree | 5e6f1b3b674b16f60bb0799fc87e031c432aa5e6 /wireguard-go-bridge/src/git.zx2c4.com | |
parent | Don't crash on failure to obtain version info and inform user on what is needed to be able to retrieve version info from the Go client. (diff) | |
download | wireguard-apple-cd86ba92eca722812ee592001e9b566bf50183b6.tar.xz wireguard-apple-cd86ba92eca722812ee592001e9b566bf50183b6.zip |
Rewrite bridge build system
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'wireguard-go-bridge/src/git.zx2c4.com')
3 files changed, 0 insertions, 236 deletions
diff --git a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go b/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go deleted file mode 100644 index dcc588f..0000000 --- a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/api-ios.go +++ /dev/null @@ -1,137 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 - * - * Copyright (C) 2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. - */ - -package main - -// #include <stdlib.h> -// #include <sys/types.h> -// static void callLogger(void *func, int level, const char *tag, const char *msg) -// { -// ((void(*)(int, const char *, const char *))func)(level, tag, msg); -// } -import "C" - -import ( - "bufio" - "git.zx2c4.com/wireguard-go/tun" - "golang.org/x/sys/unix" - "io/ioutil" - "log" - "math" - "os" - "os/signal" - "runtime" - "strings" - "unsafe" - "errors" -) - -var loggerFunc unsafe.Pointer -var versionString *C.char - -type CLogger struct { - level C.int - interfaceName string -} - -func (l *CLogger) Write(p []byte) (int, error) { - if uintptr(loggerFunc) == 0 { - return 0, errors.New("No logger initialized") - } - tag := C.CString("WireGuard/GoBackend/"+l.interfaceName) - message := C.CString(string(p)) - C.callLogger(loggerFunc, l.level, tag, message) - C.free(unsafe.Pointer(tag)) - C.free(unsafe.Pointer(message)) - return len(p), nil -} - -var tunnelHandles map[int32]*Device - -func init() { - versionString = C.CString(WireGuardGoVersion) - roamingDisabled = true - tunnelHandles = make(map[int32]*Device) - signals := make(chan os.Signal) - signal.Notify(signals, unix.SIGUSR2) - go func() { - buf := make([]byte, os.Getpagesize()) - for { - select { - case <-signals: - n := runtime.Stack(buf, true) - buf[n] = 0 - if uintptr(loggerFunc) != 0 { - tag := C.CString("WireGuard/GoBackend/Stacktrace") - C.callLogger(loggerFunc, 0, tag, (*_Ctype_char)(unsafe.Pointer(&buf[0]))) - C.free(unsafe.Pointer(tag)) - } - } - } - }() -} - -//export wgSetLogger -func wgSetLogger(loggerFn uintptr) { - loggerFunc = unsafe.Pointer(loggerFn) -} - -//export wgTurnOn -func wgTurnOn(ifnameRef string, settings string, readFn uintptr, writeFn uintptr, ctx uintptr) int32 { - interfaceName := string([]byte(ifnameRef)) - - logger := &Logger{ - Debug: log.New(&CLogger{level: 0, interfaceName: interfaceName}, "", 0), - Info: log.New(&CLogger{level: 1, interfaceName: interfaceName}, "", 0), - Error: log.New(&CLogger{level: 2, interfaceName: interfaceName}, "", 0), - } - - logger.Debug.Println("Debug log enabled") - - tun := tun.CreateTUN(1280, unsafe.Pointer(readFn), unsafe.Pointer(writeFn), unsafe.Pointer(ctx)) - logger.Info.Println("Attaching to interface") - device := NewDevice(tun, logger) - - logger.Debug.Println("Interface has MTU", device.tun.mtu) - - bufferedSettings := bufio.NewReadWriter(bufio.NewReader(strings.NewReader(settings)), bufio.NewWriter(ioutil.Discard)) - setError := ipcSetOperation(device, bufferedSettings) - if setError != nil { - logger.Error.Println(setError) - return -1 - } - - device.Up() - logger.Info.Println("Device started") - - var i int32 - for i = 0; i < math.MaxInt32; i++ { - if _, exists := tunnelHandles[i]; !exists { - break - } - } - if i == math.MaxInt32 { - return -1 - } - tunnelHandles[i] = device - return i -} - -//export wgTurnOff -func wgTurnOff(tunnelHandle int32) { - device, ok := tunnelHandles[tunnelHandle] - if !ok { - return - } - delete(tunnelHandles, tunnelHandle) - device.Close() -} - -//export wgVersion -func wgVersion() *C.char { - return versionString -} - -func main() {} diff --git a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/queueconstants.go b/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/queueconstants.go deleted file mode 100644 index 410af14..0000000 --- a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/queueconstants.go +++ /dev/null @@ -1,16 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 - * - * Copyright (C) 2017-2018 WireGuard LLC. All Rights Reserved. - */ - -package main - -/* Fit within memory limits for iOS */ - -const ( - QueueOutboundSize = 1024 - QueueInboundSize = 1024 - QueueHandshakeSize = 1024 - MaxSegmentSize = 1700 - PreallocatedBuffersPerPool = 1024 -) diff --git a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/tun/tun_ios.go b/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/tun/tun_ios.go deleted file mode 100644 index 93a0503..0000000 --- a/wireguard-go-bridge/src/git.zx2c4.com/wireguard-go/tun/tun_ios.go +++ /dev/null @@ -1,83 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 - * - * Copyright (C) 2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. - */ - -package tun - -// #include <sys/types.h> -// static ssize_t callFnWithCtx(const void *func, const void *ctx, const void *buffer, size_t len) -// { -// return ((ssize_t(*)(const void *, const unsigned char *, size_t))func)(ctx, buffer, len); -// } -import "C" - -import ( - "os" - "syscall" - "unsafe" -) - -type nativeTun struct { - events chan TUNEvent - mtu int - readFn unsafe.Pointer - writeFn unsafe.Pointer - ctx unsafe.Pointer -} - -func CreateTUN(mtu int, readFn unsafe.Pointer, writeFn unsafe.Pointer, ctx unsafe.Pointer) TUNDevice { - tun := &nativeTun{ - events: make(chan TUNEvent, 10), - mtu: mtu, - readFn: readFn, - writeFn: writeFn, - ctx: ctx, - } - tun.events <- TUNEventUp - return tun -} - -func (tun *nativeTun) Name() (string, error) { - return "tun", nil -} - -func (tun *nativeTun) File() *os.File { - return nil -} - -func (tun *nativeTun) Events() chan TUNEvent { - return tun.events -} - -func (tun *nativeTun) Read(buff []byte, offset int) (int, error) { - ret := C.callFnWithCtx(tun.readFn, tun.ctx, unsafe.Pointer(&buff[offset]), C.size_t(len(buff) - offset)) - if ret < 0 { - return 0, syscall.Errno(-ret) - } - return int(ret), nil -} - -func (tun *nativeTun) Write(buff []byte, offset int) (int, error) { - ret := C.callFnWithCtx(tun.writeFn, tun.ctx, unsafe.Pointer(&buff[offset]), C.size_t(len(buff) - offset)) - if ret < 0 { - return 0, syscall.Errno(-ret) - } - return int(ret), nil -} - -func (tun *nativeTun) Close() error { - if tun.events != nil { - close(tun.events) - } - return nil -} - -func (tun *nativeTun) setMTU(n int) error { - tun.mtu = n - return nil -} - -func (tun *nativeTun) MTU() (int, error) { - return tun.mtu, nil -} |