libwg-go: don't use submodule
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
		
							parent
							
								
									c93e81c632
								
							
						
					
					
						commit
						49cc634678
					
				
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							@ -4,6 +4,3 @@
 | 
				
			|||||||
[submodule "app/tools/wireguard"]
 | 
					[submodule "app/tools/wireguard"]
 | 
				
			||||||
	path = app/tools/wireguard
 | 
						path = app/tools/wireguard
 | 
				
			||||||
	url = https://git.zx2c4.com/WireGuard
 | 
						url = https://git.zx2c4.com/WireGuard
 | 
				
			||||||
[submodule "app/tools/wireguard-go"]
 | 
					 | 
				
			||||||
	path = app/tools/wireguard-go
 | 
					 | 
				
			||||||
	url = https://git.zx2c4.com/wireguard-go
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								app/tools/libwg-go/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								app/tools/libwg-go/.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,2 +1 @@
 | 
				
			|||||||
build/
 | 
					build/
 | 
				
			||||||
.gobuildversion
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -2,9 +2,6 @@
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
 | 
					# Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
UPSTREAM_FILES := $(filter-out %/main.go %/queueconstants.go,$(wildcard ../wireguard-go/*/*.go) $(wildcard ../wireguard-go/*.go)) ../wireguard-go/go.mod ../wireguard-go/go.sum
 | 
					 | 
				
			||||||
DOWNSTREAM_FILES := $(wildcard src/*.go) $(wildcard src/*.c) $(wildcard src/*/*.go)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
BUILDDIR ?= $(CURDIR)/build
 | 
					BUILDDIR ?= $(CURDIR)/build
 | 
				
			||||||
DESTDIR ?= $(CURDIR)/out
 | 
					DESTDIR ?= $(CURDIR)/out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -43,23 +40,10 @@ $(GOROOT)/bin/go:
 | 
				
			|||||||
	curl "$(GOBUILDTARBALL)" | tar -C "$(GOROOT)" --strip-components=1 -xzf - || { rm -rf "$(GOROOT)"; exit 1; }
 | 
						curl "$(GOBUILDTARBALL)" | tar -C "$(GOROOT)" --strip-components=1 -xzf - || { rm -rf "$(GOROOT)"; exit 1; }
 | 
				
			||||||
	patch -p1 -f -N -r- -d "$(GOROOT)" < goruntime-boottime-over-monotonic.diff || { rm -rf "$(GOROOT)"; exit 1; }
 | 
						patch -p1 -f -N -r- -d "$(GOROOT)" < goruntime-boottime-over-monotonic.diff || { rm -rf "$(GOROOT)"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(shell test "$$(cat .gobuildversion 2>/dev/null)" = "$(GOBUILDVERSION_CURRENT)" || rm -f "$(DESTDIR)/libwg-go.so")
 | 
					$(shell test "$$(cat $(BUILDDIR)/.gobuildversion 2>/dev/null)" = "$(GOBUILDVERSION_CURRENT)" || rm -f "$(DESTDIR)/libwg-go.so")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define copy-src-to-build
 | 
					$(DESTDIR)/libwg-go.so: $(GOROOT)/bin/go
 | 
				
			||||||
$(subst $(1),$(BUILDDIR)/,$(2)): $(2)
 | 
						go get -tags linux || { chmod -fR +w "$(GOPATH)/pkg/mod"; rm -rf "$(GOPATH)/pkg/mod"; exit 1; }
 | 
				
			||||||
	@mkdir -vp "$$(dir $$@)"
 | 
					 | 
				
			||||||
	@cp -vp "$$<" "$$@"
 | 
					 | 
				
			||||||
$(BUILDDIR)/.prepared: $(subst $(1),$(BUILDDIR)/,$(2))
 | 
					 | 
				
			||||||
endef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(foreach FILE,$(UPSTREAM_FILES),$(eval $(call copy-src-to-build,../wireguard-go/,$(FILE))))
 | 
					 | 
				
			||||||
$(foreach FILE,$(DOWNSTREAM_FILES),$(eval $(call copy-src-to-build,src/,$(FILE))))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$(BUILDDIR)/.prepared: $(GOROOT)/bin/go
 | 
					 | 
				
			||||||
	cd "$(BUILDDIR)" && go get || { chmod -fR +w "$(GOPATH)/pkg/mod"; rm -rf "$(GOPATH)/pkg/mod"; exit 1; }
 | 
					 | 
				
			||||||
	chmod -fR +w "$(GOPATH)/pkg/mod"
 | 
						chmod -fR +w "$(GOPATH)/pkg/mod"
 | 
				
			||||||
	touch "$@"
 | 
						go build -tags linux -ldflags="-X main.socketDirectory=/data/data/$(ANDROID_PACKAGE_NAME)/cache/wireguard" -v -o "$@" -buildmode c-shared
 | 
				
			||||||
 | 
						go version > $(BUILDDIR)/.gobuildversion
 | 
				
			||||||
$(DESTDIR)/libwg-go.so: $(BUILDDIR)/.prepared
 | 
					 | 
				
			||||||
	cd "$(BUILDDIR)" && go build -ldflags="-X main.socketDirectory=/data/data/$(ANDROID_PACKAGE_NAME)/cache/wireguard" -v -o "$@" -buildmode c-shared
 | 
					 | 
				
			||||||
	go version > .gobuildversion
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -12,6 +12,8 @@ import "C"
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"golang.org/x/sys/unix"
 | 
						"golang.org/x/sys/unix"
 | 
				
			||||||
 | 
						"golang.zx2c4.com/wireguard/device"
 | 
				
			||||||
 | 
						"golang.zx2c4.com/wireguard/ipc"
 | 
				
			||||||
	"golang.zx2c4.com/wireguard/tun"
 | 
						"golang.zx2c4.com/wireguard/tun"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
@ -34,14 +36,14 @@ func (l AndroidLogger) Write(p []byte) (int, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type TunnelHandle struct {
 | 
					type TunnelHandle struct {
 | 
				
			||||||
	device *Device
 | 
						device *device.Device
 | 
				
			||||||
	uapi   net.Listener
 | 
						uapi   net.Listener
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var tunnelHandles map[int32]TunnelHandle
 | 
					var tunnelHandles map[int32]TunnelHandle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	roamingDisabled = true
 | 
						device.RoamingDisabled = true
 | 
				
			||||||
	tunnelHandles = make(map[int32]TunnelHandle)
 | 
						tunnelHandles = make(map[int32]TunnelHandle)
 | 
				
			||||||
	signals := make(chan os.Signal)
 | 
						signals := make(chan os.Signal)
 | 
				
			||||||
	signal.Notify(signals, unix.SIGUSR2)
 | 
						signal.Notify(signals, unix.SIGUSR2)
 | 
				
			||||||
@ -62,7 +64,7 @@ func init() {
 | 
				
			|||||||
func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
					func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
				
			||||||
	interfaceName := string([]byte(ifnameRef))
 | 
						interfaceName := string([]byte(ifnameRef))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logger := &Logger{
 | 
						logger := &device.Logger{
 | 
				
			||||||
		Debug: log.New(&AndroidLogger{level: C.ANDROID_LOG_DEBUG, interfaceName: interfaceName}, "", 0),
 | 
							Debug: log.New(&AndroidLogger{level: C.ANDROID_LOG_DEBUG, interfaceName: interfaceName}, "", 0),
 | 
				
			||||||
		Info:  log.New(&AndroidLogger{level: C.ANDROID_LOG_INFO, interfaceName: interfaceName}, "", 0),
 | 
							Info:  log.New(&AndroidLogger{level: C.ANDROID_LOG_INFO, interfaceName: interfaceName}, "", 0),
 | 
				
			||||||
		Error: log.New(&AndroidLogger{level: C.ANDROID_LOG_ERROR, interfaceName: interfaceName}, "", 0),
 | 
							Error: log.New(&AndroidLogger{level: C.ANDROID_LOG_ERROR, interfaceName: interfaceName}, "", 0),
 | 
				
			||||||
@ -70,7 +72,7 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	logger.Debug.Println("Debug log enabled")
 | 
						logger.Debug.Println("Debug log enabled")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tun, name, err := tun.CreateTUNFromFD(int(tunFd))
 | 
						tun, name, err := tun.CreateUnmonitoredTUNFromFD(int(tunFd))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		unix.Close(int(tunFd))
 | 
							unix.Close(int(tunFd))
 | 
				
			||||||
		logger.Error.Println(err)
 | 
							logger.Error.Println(err)
 | 
				
			||||||
@ -78,11 +80,9 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logger.Info.Println("Attaching to interface", name)
 | 
						logger.Info.Println("Attaching to interface", name)
 | 
				
			||||||
	device := NewDevice(tun, logger)
 | 
						device := device.NewDevice(tun, logger)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logger.Debug.Println("Interface has MTU", device.tun.mtu)
 | 
						setError := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings)))
 | 
				
			||||||
 | 
					 | 
				
			||||||
	setError := ipcSetOperation(device, bufio.NewReader(strings.NewReader(settings)))
 | 
					 | 
				
			||||||
	if setError != nil {
 | 
						if setError != nil {
 | 
				
			||||||
		unix.Close(int(tunFd))
 | 
							unix.Close(int(tunFd))
 | 
				
			||||||
		logger.Error.Println(setError)
 | 
							logger.Error.Println(setError)
 | 
				
			||||||
@ -91,11 +91,11 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var uapi net.Listener
 | 
						var uapi net.Listener
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	uapiFile, err := UAPIOpen(name)
 | 
						uapiFile, err := ipc.UAPIOpen(name)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		logger.Error.Println(err)
 | 
							logger.Error.Println(err)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		uapi, err = UAPIListen(name, uapiFile)
 | 
							uapi, err = ipc.UAPIListen(name, uapiFile)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			uapiFile.Close()
 | 
								uapiFile.Close()
 | 
				
			||||||
			logger.Error.Println(err)
 | 
								logger.Error.Println(err)
 | 
				
			||||||
@ -106,7 +106,7 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
				
			|||||||
					if err != nil {
 | 
										if err != nil {
 | 
				
			||||||
						return
 | 
											return
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					go ipcHandle(device, conn)
 | 
										go device.IpcHandle(conn)
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}()
 | 
								}()
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -148,22 +148,11 @@ func wgGetSocketV4(tunnelHandle int32) int32 {
 | 
				
			|||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		return -1
 | 
							return -1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	native, ok := handle.device.net.bind.(*NativeBind)
 | 
						fd, err := handle.device.PeekLookAtSocketFd4()
 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		return -1
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	fd := int32(-1)
 | 
					 | 
				
			||||||
	conn, err := native.ipv4.SyscallConn()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return -1
 | 
							return -1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = conn.Control(func(f uintptr) {
 | 
						return int32(fd)
 | 
				
			||||||
		fd = int32(f)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return -1
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return fd
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//export wgGetSocketV6
 | 
					//export wgGetSocketV6
 | 
				
			||||||
@ -172,27 +161,16 @@ func wgGetSocketV6(tunnelHandle int32) int32 {
 | 
				
			|||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		return -1
 | 
							return -1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	native, ok := handle.device.net.bind.(*NativeBind)
 | 
						fd, err := handle.device.PeekLookAtSocketFd6()
 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		return -1
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	fd := int32(-1)
 | 
					 | 
				
			||||||
	conn, err := native.ipv6.SyscallConn()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return -1
 | 
							return -1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	err = conn.Control(func(f uintptr) {
 | 
						return int32(fd)
 | 
				
			||||||
		fd = int32(f)
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return -1
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return fd
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//export wgVersion
 | 
					//export wgVersion
 | 
				
			||||||
func wgVersion() *C.char {
 | 
					func wgVersion() *C.char {
 | 
				
			||||||
	return C.CString(WireGuardGoVersion)
 | 
						return C.CString(device.WireGuardGoVersion)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {}
 | 
					func main() {}
 | 
				
			||||||
							
								
								
									
										8
									
								
								app/tools/libwg-go/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								app/tools/libwg-go/go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					module golang.zx2c4.com/wireguard/android
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						golang.org/x/sys v0.0.0-20190302025703-b6889370fb10
 | 
				
			||||||
 | 
						golang.zx2c4.com/wireguard v0.0.0-20190303043202-244a98e380fa
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										11
									
								
								app/tools/libwg-go/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								app/tools/libwg-go/go.sum
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25 h1:jsG6UpNLt9iAsb0S2AGW28DveNzzgmbXR+ENoPjUeIU=
 | 
				
			||||||
 | 
					golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20190301231341-16b79f2e4e95 h1:fY7Dsw114eJN4boqzVSbpVHO6rTdhq6/GnXeu+PKnzU=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20190301231341-16b79f2e4e95/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190302025703-b6889370fb10 h1:xQJI9OEiErEQ++DoXOHqEpzsGMrAv2Q2jyCpi7DmfpQ=
 | 
				
			||||||
 | 
					golang.org/x/sys v0.0.0-20190302025703-b6889370fb10/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
				
			||||||
 | 
					golang.zx2c4.com/wireguard v0.0.0-20190303042013-27104279d88d/go.mod h1:Koyxt99ZAZcr8lJuisBNX9vnaqKVNGcITeWOI1Zkmsw=
 | 
				
			||||||
 | 
					golang.zx2c4.com/wireguard v0.0.0-20190303043202-244a98e380fa h1:t/IV/5G9uPXXDoaOrk+Lx2VsFhbqWGYFE+GEl160Yzc=
 | 
				
			||||||
 | 
					golang.zx2c4.com/wireguard v0.0.0-20190303043202-244a98e380fa/go.mod h1:Koyxt99ZAZcr8lJuisBNX9vnaqKVNGcITeWOI1Zkmsw=
 | 
				
			||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
/* SPDX-License-Identifier: GPL-2.0
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Copyright (C) 2017-2019 WireGuard LLC. All Rights Reserved.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Reduce memory consumption for Android */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					 | 
				
			||||||
	QueueOutboundSize          = 1024
 | 
					 | 
				
			||||||
	QueueInboundSize           = 1024
 | 
					 | 
				
			||||||
	QueueHandshakeSize         = 1024
 | 
					 | 
				
			||||||
	MaxSegmentSize             = 2200
 | 
					 | 
				
			||||||
	PreallocatedBuffersPerPool = 4096
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
@ -1,33 +0,0 @@
 | 
				
			|||||||
/* SPDX-License-Identifier: Apache-2.0
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * Copyright (C) 2017-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package tun
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"golang.zx2c4.com/wireguard/rwcancel"
 | 
					 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func CreateTUNFromFD(tunFd int) (TUNDevice, string, error) {
 | 
					 | 
				
			||||||
	file := os.NewFile(uintptr(tunFd), "/dev/tun")
 | 
					 | 
				
			||||||
	tun := &nativeTun{
 | 
					 | 
				
			||||||
		tunFile: file,
 | 
					 | 
				
			||||||
		fd:      file.Fd(),
 | 
					 | 
				
			||||||
		events:  make(chan TUNEvent, 5),
 | 
					 | 
				
			||||||
		errors:  make(chan error, 5),
 | 
					 | 
				
			||||||
		nopi:    true,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var err error
 | 
					 | 
				
			||||||
	tun.fdCancel, err = rwcancel.NewRWCancel(int(tun.fd))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, "", err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	name, err := tun.Name()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		tun.fdCancel.Cancel()
 | 
					 | 
				
			||||||
		return nil, "", err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return tun, name, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
Subproject commit 88ff67fb6f55456e46877b71aa5d33060468f95e
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user