libwg-go: update to 1.12
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
		
							parent
							
								
									050e202291
								
							
						
					
					
						commit
						c93e81c632
					
				@ -27,7 +27,7 @@ default: $(DESTDIR)/libwg-go.so
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
GOBUILDARCH := $(NDK_GO_ARCH_MAP_$(shell uname -m))
 | 
					GOBUILDARCH := $(NDK_GO_ARCH_MAP_$(shell uname -m))
 | 
				
			||||||
GOBUILDOS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
 | 
					GOBUILDOS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
 | 
				
			||||||
GOBUILDVERSION := 1.11.4
 | 
					GOBUILDVERSION := 1.12
 | 
				
			||||||
GOBUILDTARBALL := https://dl.google.com/go/go$(GOBUILDVERSION).$(GOBUILDOS)-$(GOBUILDARCH).tar.gz
 | 
					GOBUILDTARBALL := https://dl.google.com/go/go$(GOBUILDVERSION).$(GOBUILDOS)-$(GOBUILDARCH).tar.gz
 | 
				
			||||||
GOBUILDVERSION_NEEDED := go version go$(GOBUILDVERSION) $(GOBUILDOS)/$(GOBUILDARCH)
 | 
					GOBUILDVERSION_NEEDED := go version go$(GOBUILDVERSION) $(GOBUILDOS)/$(GOBUILDARCH)
 | 
				
			||||||
export GOROOT := $(BUILDDIR)/goroot
 | 
					export GOROOT := $(BUILDDIR)/goroot
 | 
				
			||||||
@ -41,7 +41,7 @@ $(GOROOT)/bin/go:
 | 
				
			|||||||
	rm -rf "$(GOROOT)"
 | 
						rm -rf "$(GOROOT)"
 | 
				
			||||||
	mkdir -p "$(GOROOT)"
 | 
						mkdir -p "$(GOROOT)"
 | 
				
			||||||
	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; }
 | 
				
			||||||
	cat goruntime-*.diff | patch -p1 -f -N -r- -d "$(GOROOT)" || { 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 .gobuildversion 2>/dev/null)" = "$(GOBUILDVERSION_CURRENT)" || rm -f "$(DESTDIR)/libwg-go.so")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
From 6f345a38d9533db388009d91d29981673dcf95b4 Mon Sep 17 00:00:00 2001
 | 
					From 6998a7866b8428fd49c31506795c9f8154826d13 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
From: Jason A. Donenfeld <Jason@zx2c4.com>
 | 
					From: "Jason A. Donenfeld" <Jason@zx2c4.com>
 | 
				
			||||||
Date: Fri, 04 May 2018 03:48:23 +0200
 | 
					Date: Wed, 27 Feb 2019 05:05:44 +0100
 | 
				
			||||||
Subject: [PATCH] runtime: use CLOCK_BOOTTIME in nanotime on Linux
 | 
					Subject: [PATCH] runtime: use CLOCK_BOOTTIME in nanotime on Linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This makes timers account for having expired while a computer was
 | 
					This makes timers account for having expired while a computer was
 | 
				
			||||||
@ -17,12 +17,21 @@ Fixes #24595
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Change-Id: I7b2a6ca0c5bc5fce57ec0eeafe7b68270b429321
 | 
					Change-Id: I7b2a6ca0c5bc5fce57ec0eeafe7b68270b429321
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_386.s     | 4 ++--
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_amd64.s   | 2 +-
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_arm.s     | 4 ++--
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_arm64.s   | 4 ++--
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_mips64x.s | 2 +-
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_mipsx.s   | 2 +-
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_ppc64x.s  | 2 +-
 | 
				
			||||||
 | 
					 src/runtime/sys_linux_s390x.s   | 2 +-
 | 
				
			||||||
 | 
					 8 files changed, 11 insertions(+), 11 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_386.s b/src/runtime/sys_linux_386.s
 | 
					diff --git a/src/runtime/sys_linux_386.s b/src/runtime/sys_linux_386.s
 | 
				
			||||||
index 8d5a4ff..bfad064 100644
 | 
					index 40b55a67eb..6105780ff4 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_386.s
 | 
					--- a/src/runtime/sys_linux_386.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_386.s
 | 
					+++ b/src/runtime/sys_linux_386.s
 | 
				
			||||||
@@ -285,13 +285,13 @@
 | 
					@@ -288,13 +288,13 @@ noswitch:
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	LEAL	8(SP), BX	// &ts (struct timespec)
 | 
					 	LEAL	8(SP), BX	// &ts (struct timespec)
 | 
				
			||||||
 	MOVL	BX, 4(SP)
 | 
					 	MOVL	BX, 4(SP)
 | 
				
			||||||
@ -39,10 +48,10 @@ index 8d5a4ff..bfad064 100644
 | 
				
			|||||||
 	INVOKE_SYSCALL
 | 
					 	INVOKE_SYSCALL
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
 | 
					diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
 | 
				
			||||||
index 62d8024..8510be4 100644
 | 
					index b709f77060..18a1f1d43a 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_amd64.s
 | 
					--- a/src/runtime/sys_linux_amd64.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_amd64.s
 | 
					+++ b/src/runtime/sys_linux_amd64.s
 | 
				
			||||||
@@ -257,7 +257,7 @@
 | 
					@@ -261,7 +261,7 @@ noswitch:
 | 
				
			||||||
 	MOVQ	runtime·vdsoClockgettimeSym(SB), AX
 | 
					 	MOVQ	runtime·vdsoClockgettimeSym(SB), AX
 | 
				
			||||||
 	CMPQ	AX, $0
 | 
					 	CMPQ	AX, $0
 | 
				
			||||||
 	JEQ	fallback
 | 
					 	JEQ	fallback
 | 
				
			||||||
@ -52,7 +61,7 @@ index 62d8024..8510be4 100644
 | 
				
			|||||||
 	CALL	AX
 | 
					 	CALL	AX
 | 
				
			||||||
 	MOVQ	0(SP), AX	// sec
 | 
					 	MOVQ	0(SP), AX	// sec
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s
 | 
					diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s
 | 
				
			||||||
index aa39732..d29cb88 100644
 | 
					index 43a58335c8..8b93635f4f 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_arm.s
 | 
					--- a/src/runtime/sys_linux_arm.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_arm.s
 | 
					+++ b/src/runtime/sys_linux_arm.s
 | 
				
			||||||
@@ -11,7 +11,7 @@
 | 
					@@ -11,7 +11,7 @@
 | 
				
			||||||
@ -64,7 +73,7 @@ index aa39732..d29cb88 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 // for EABI, as we don't support OABI
 | 
					 // for EABI, as we don't support OABI
 | 
				
			||||||
 #define SYS_BASE 0x0
 | 
					 #define SYS_BASE 0x0
 | 
				
			||||||
@@ -287,7 +287,7 @@
 | 
					@@ -291,7 +291,7 @@ noswitch:
 | 
				
			||||||
 	SUB	$24, R13	// Space for results
 | 
					 	SUB	$24, R13	// Space for results
 | 
				
			||||||
 	BIC	$0x7, R13	// Align for C code
 | 
					 	BIC	$0x7, R13	// Align for C code
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@ -74,7 +83,7 @@ index aa39732..d29cb88 100644
 | 
				
			|||||||
 	MOVW	runtime·vdsoClockgettimeSym(SB), R11
 | 
					 	MOVW	runtime·vdsoClockgettimeSym(SB), R11
 | 
				
			||||||
 	CMP	$0, R11
 | 
					 	CMP	$0, R11
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s
 | 
					diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s
 | 
				
			||||||
index c6afd76..24294e8 100644
 | 
					index 8b344be8f8..daf142fba0 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_arm64.s
 | 
					--- a/src/runtime/sys_linux_arm64.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_arm64.s
 | 
					+++ b/src/runtime/sys_linux_arm64.s
 | 
				
			||||||
@@ -13,7 +13,7 @@
 | 
					@@ -13,7 +13,7 @@
 | 
				
			||||||
@ -86,7 +95,7 @@ index c6afd76..24294e8 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 #define SYS_exit		93
 | 
					 #define SYS_exit		93
 | 
				
			||||||
 #define SYS_read		63
 | 
					 #define SYS_read		63
 | 
				
			||||||
@@ -243,7 +243,7 @@
 | 
					@@ -247,7 +247,7 @@ noswitch:
 | 
				
			||||||
 	BIC	$15, R1
 | 
					 	BIC	$15, R1
 | 
				
			||||||
 	MOVD	R1, RSP
 | 
					 	MOVD	R1, RSP
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@ -96,10 +105,10 @@ index c6afd76..24294e8 100644
 | 
				
			|||||||
 	CBZ	R2, fallback
 | 
					 	CBZ	R2, fallback
 | 
				
			||||||
 	BL	(R2)
 | 
					 	BL	(R2)
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s
 | 
					diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s
 | 
				
			||||||
index 8e64f1c..521062f 100644
 | 
					index c45703d228..9842b596e7 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_mips64x.s
 | 
					--- a/src/runtime/sys_linux_mips64x.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_mips64x.s
 | 
					+++ b/src/runtime/sys_linux_mips64x.s
 | 
				
			||||||
@@ -185,7 +185,7 @@
 | 
					@@ -189,7 +189,7 @@ TEXT runtime·walltime(SB),NOSPLIT,$16
 | 
				
			||||||
 	RET
 | 
					 	RET
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 TEXT runtime·nanotime(SB),NOSPLIT,$16
 | 
					 TEXT runtime·nanotime(SB),NOSPLIT,$16
 | 
				
			||||||
@ -109,10 +118,10 @@ index 8e64f1c..521062f 100644
 | 
				
			|||||||
 	MOVV	$SYS_clock_gettime, R2
 | 
					 	MOVV	$SYS_clock_gettime, R2
 | 
				
			||||||
 	SYSCALL
 | 
					 	SYSCALL
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_mipsx.s b/src/runtime/sys_linux_mipsx.s
 | 
					diff --git a/src/runtime/sys_linux_mipsx.s b/src/runtime/sys_linux_mipsx.s
 | 
				
			||||||
index a6bca3b..920ed9a 100644
 | 
					index f362b0f3f1..5ab866e047 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_mipsx.s
 | 
					--- a/src/runtime/sys_linux_mipsx.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_mipsx.s
 | 
					+++ b/src/runtime/sys_linux_mipsx.s
 | 
				
			||||||
@@ -189,7 +189,7 @@
 | 
					@@ -193,7 +193,7 @@ TEXT runtime·walltime(SB),NOSPLIT,$8-12
 | 
				
			||||||
 	RET
 | 
					 	RET
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 TEXT runtime·nanotime(SB),NOSPLIT,$8-8
 | 
					 TEXT runtime·nanotime(SB),NOSPLIT,$8-8
 | 
				
			||||||
@ -122,23 +131,23 @@ index a6bca3b..920ed9a 100644
 | 
				
			|||||||
 	MOVW	$SYS_clock_gettime, R2
 | 
					 	MOVW	$SYS_clock_gettime, R2
 | 
				
			||||||
 	SYSCALL
 | 
					 	SYSCALL
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_ppc64x.s b/src/runtime/sys_linux_ppc64x.s
 | 
					diff --git a/src/runtime/sys_linux_ppc64x.s b/src/runtime/sys_linux_ppc64x.s
 | 
				
			||||||
index 483cb8e..11f3c49 100644
 | 
					index 6835f434de..46618b2d91 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_ppc64x.s
 | 
					--- a/src/runtime/sys_linux_ppc64x.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_ppc64x.s
 | 
					+++ b/src/runtime/sys_linux_ppc64x.s
 | 
				
			||||||
@@ -164,7 +164,7 @@
 | 
					@@ -204,7 +204,7 @@ fallback:
 | 
				
			||||||
 	RET
 | 
					 	JMP	finish
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 TEXT runtime·nanotime(SB),NOSPLIT,$16
 | 
					 TEXT runtime·nanotime(SB),NOSPLIT,$16
 | 
				
			||||||
-	MOVW	$1, R3 // CLOCK_MONOTONIC
 | 
					-	MOVD	$1, R3		// CLOCK_MONOTONIC
 | 
				
			||||||
+	MOVW	$7, R3 // CLOCK_BOOTTIME
 | 
					+	MOVD	$7, R3		// CLOCK_BOOTTIME
 | 
				
			||||||
 	MOVD	$0(R1), R4
 | 
					 
 | 
				
			||||||
 	SYSCALL	$SYS_clock_gettime
 | 
					 	MOVD	R1, R15		// R15 is unchanged by C code
 | 
				
			||||||
 	MOVD	0(R1), R3	// sec
 | 
					 	MOVD	g_m(g), R21	// R21 = m
 | 
				
			||||||
diff --git a/src/runtime/sys_linux_s390x.s b/src/runtime/sys_linux_s390x.s
 | 
					diff --git a/src/runtime/sys_linux_s390x.s b/src/runtime/sys_linux_s390x.s
 | 
				
			||||||
index 1ff110c..e9049e0 100644
 | 
					index c79ceea751..44e3258e60 100644
 | 
				
			||||||
--- a/src/runtime/sys_linux_s390x.s
 | 
					--- a/src/runtime/sys_linux_s390x.s
 | 
				
			||||||
+++ b/src/runtime/sys_linux_s390x.s
 | 
					+++ b/src/runtime/sys_linux_s390x.s
 | 
				
			||||||
@@ -176,7 +176,7 @@
 | 
					@@ -180,7 +180,7 @@ TEXT runtime·walltime(SB),NOSPLIT,$16
 | 
				
			||||||
 	RET
 | 
					 	RET
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 TEXT runtime·nanotime(SB),NOSPLIT,$16
 | 
					 TEXT runtime·nanotime(SB),NOSPLIT,$16
 | 
				
			||||||
@ -147,3 +156,6 @@ index 1ff110c..e9049e0 100644
 | 
				
			|||||||
 	MOVD	$tp-16(SP), R3
 | 
					 	MOVD	$tp-16(SP), R3
 | 
				
			||||||
 	MOVW	$SYS_clock_gettime, R1
 | 
					 	MOVW	$SYS_clock_gettime, R1
 | 
				
			||||||
 	SYSCALL
 | 
					 	SYSCALL
 | 
				
			||||||
 | 
					-- 
 | 
				
			||||||
 | 
					2.20.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,291 +0,0 @@
 | 
				
			|||||||
diff --git a/src/syscall/syscall_linux_386.go b/src/syscall/syscall_linux_386.go
 | 
					 | 
				
			||||||
index 49db72450f..6e162ebb41 100644
 | 
					 | 
				
			||||||
--- a/src/syscall/syscall_linux_386.go
 | 
					 | 
				
			||||||
+++ b/src/syscall/syscall_linux_386.go
 | 
					 | 
				
			||||||
@@ -62,8 +62,6 @@ func Pipe2(p []int, flags int) (err error) {
 | 
					 | 
				
			||||||
 //sysnb	InotifyInit() (fd int, err error)
 | 
					 | 
				
			||||||
 //sys	Ioperm(from int, num int, on int) (err error)
 | 
					 | 
				
			||||||
 //sys	Iopl(level int) (err error)
 | 
					 | 
				
			||||||
-//sys	Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
 | 
					 | 
				
			||||||
-//sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
 | 
					 | 
				
			||||||
 //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
 | 
					 | 
				
			||||||
 //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
 | 
					 | 
				
			||||||
 //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
 | 
					 | 
				
			||||||
@@ -74,7 +72,6 @@ func Pipe2(p []int, flags int) (err error) {
 | 
					 | 
				
			||||||
 //sysnb	Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
 | 
					 | 
				
			||||||
 //sysnb	Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32
 | 
					 | 
				
			||||||
 //sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
 | 
					 | 
				
			||||||
-//sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
 | 
					 | 
				
			||||||
 //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
 | 
					 | 
				
			||||||
 //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
 | 
					 | 
				
			||||||
 //sysnb	getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
 | 
					 | 
				
			||||||
@@ -84,6 +81,18 @@ func Pipe2(p []int, flags int) (err error) {
 | 
					 | 
				
			||||||
 //sys	mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
 | 
					 | 
				
			||||||
 //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+func Stat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
+	return fstatat(_AT_FDCWD, path, stat, 0)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+func Lchown(path string, uid int, gid int) (err error) {
 | 
					 | 
				
			||||||
+	return Fchownat(_AT_FDCWD, path, uid, gid, _AT_SYMLINK_NOFOLLOW)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+func Lstat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
+	return fstatat(_AT_FDCWD, path, stat, _AT_SYMLINK_NOFOLLOW)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
 | 
					 | 
				
			||||||
 	page := uintptr(offset / 4096)
 | 
					 | 
				
			||||||
 	if offset != int64(page)*4096 {
 | 
					 | 
				
			||||||
diff --git a/src/syscall/syscall_linux_amd64.go b/src/syscall/syscall_linux_amd64.go
 | 
					 | 
				
			||||||
index 1a21d9db6f..f740ab4e72 100644
 | 
					 | 
				
			||||||
--- a/src/syscall/syscall_linux_amd64.go
 | 
					 | 
				
			||||||
+++ b/src/syscall/syscall_linux_amd64.go
 | 
					 | 
				
			||||||
@@ -22,9 +22,7 @@ const (
 | 
					 | 
				
			||||||
 //sysnb	InotifyInit() (fd int, err error)
 | 
					 | 
				
			||||||
 //sys	Ioperm(from int, num int, on int) (err error)
 | 
					 | 
				
			||||||
 //sys	Iopl(level int) (err error)
 | 
					 | 
				
			||||||
-//sys	Lchown(path string, uid int, gid int) (err error)
 | 
					 | 
				
			||||||
 //sys	Listen(s int, n int) (err error)
 | 
					 | 
				
			||||||
-//sys	Lstat(path string, stat *Stat_t) (err error)
 | 
					 | 
				
			||||||
 //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
 | 
					 | 
				
			||||||
 //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
 | 
					 | 
				
			||||||
 //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
 | 
					 | 
				
			||||||
@@ -66,6 +64,14 @@ func Stat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
 	return fstatat(_AT_FDCWD, path, stat, 0)
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+func Lchown(path string, uid int, gid int) (err error) {
 | 
					 | 
				
			||||||
+	return Fchownat(_AT_FDCWD, path, uid, gid, _AT_SYMLINK_NOFOLLOW)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+func Lstat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
+	return fstatat(_AT_FDCWD, path, stat, _AT_SYMLINK_NOFOLLOW)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 //go:noescape
 | 
					 | 
				
			||||||
 func gettimeofday(tv *Timeval) (err Errno)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
diff --git a/src/syscall/syscall_linux_arm.go b/src/syscall/syscall_linux_arm.go
 | 
					 | 
				
			||||||
index b0c0ac7c4f..65543193e1 100644
 | 
					 | 
				
			||||||
--- a/src/syscall/syscall_linux_arm.go
 | 
					 | 
				
			||||||
+++ b/src/syscall/syscall_linux_arm.go
 | 
					 | 
				
			||||||
@@ -83,9 +83,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
 | 
					 | 
				
			||||||
 //sysnb	Getgid() (gid int) = SYS_GETGID32
 | 
					 | 
				
			||||||
 //sysnb	Getuid() (uid int) = SYS_GETUID32
 | 
					 | 
				
			||||||
 //sysnb	InotifyInit() (fd int, err error)
 | 
					 | 
				
			||||||
-//sys	Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
 | 
					 | 
				
			||||||
 //sys	Listen(s int, n int) (err error)
 | 
					 | 
				
			||||||
-//sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
 | 
					 | 
				
			||||||
 //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
 | 
					 | 
				
			||||||
 //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
 | 
					 | 
				
			||||||
 //sys	Setfsgid(gid int) (err error) = SYS_SETFSGID32
 | 
					 | 
				
			||||||
@@ -96,7 +94,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
 | 
					 | 
				
			||||||
 //sysnb	Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32
 | 
					 | 
				
			||||||
 //sys	Shutdown(fd int, how int) (err error)
 | 
					 | 
				
			||||||
 //sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
 | 
					 | 
				
			||||||
-//sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // Vsyscalls on amd64.
 | 
					 | 
				
			||||||
 //sysnb	Gettimeofday(tv *Timeval) (err error)
 | 
					 | 
				
			||||||
@@ -110,6 +107,18 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
 | 
					 | 
				
			||||||
 //sys	mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
 | 
					 | 
				
			||||||
 //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+func Stat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
+	return fstatat(_AT_FDCWD, path, stat, 0)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+func Lchown(path string, uid int, gid int) (err error) {
 | 
					 | 
				
			||||||
+	return Fchownat(_AT_FDCWD, path, uid, gid, _AT_SYMLINK_NOFOLLOW)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+func Lstat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
+	return fstatat(_AT_FDCWD, path, stat, _AT_SYMLINK_NOFOLLOW)
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 func Fstatfs(fd int, buf *Statfs_t) (err error) {
 | 
					 | 
				
			||||||
 	_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
 | 
					 | 
				
			||||||
 	if e != 0 {
 | 
					 | 
				
			||||||
diff --git a/src/syscall/zsyscall_linux_386.go b/src/syscall/zsyscall_linux_386.go
 | 
					 | 
				
			||||||
index 62827f16dc..0882494c47 100644
 | 
					 | 
				
			||||||
--- a/src/syscall/zsyscall_linux_386.go
 | 
					 | 
				
			||||||
+++ b/src/syscall/zsyscall_linux_386.go
 | 
					 | 
				
			||||||
@@ -1276,36 +1276,6 @@ func Iopl(level int) (err error) {
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Lchown(path string, uid int, gid int) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-func Lstat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func Pread(fd int, p []byte, offset int64) (n int, err error) {
 | 
					 | 
				
			||||||
 	var _p0 unsafe.Pointer
 | 
					 | 
				
			||||||
 	if len(p) > 0 {
 | 
					 | 
				
			||||||
@@ -1422,21 +1392,6 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Stat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
 | 
					 | 
				
			||||||
 	_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))
 | 
					 | 
				
			||||||
 	if e1 != 0 {
 | 
					 | 
				
			||||||
diff --git a/src/syscall/zsyscall_linux_amd64.go b/src/syscall/zsyscall_linux_amd64.go
 | 
					 | 
				
			||||||
index b6638269be..9f2046bf93 100644
 | 
					 | 
				
			||||||
--- a/src/syscall/zsyscall_linux_amd64.go
 | 
					 | 
				
			||||||
+++ b/src/syscall/zsyscall_linux_amd64.go
 | 
					 | 
				
			||||||
@@ -1261,21 +1261,6 @@ func Iopl(level int) (err error) {
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Lchown(path string, uid int, gid int) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func Listen(s int, n int) (err error) {
 | 
					 | 
				
			||||||
 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
 | 
					 | 
				
			||||||
 	if e1 != 0 {
 | 
					 | 
				
			||||||
@@ -1286,21 +1271,6 @@ func Listen(s int, n int) (err error) {
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Lstat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func Pread(fd int, p []byte, offset int64) (n int, err error) {
 | 
					 | 
				
			||||||
 	var _p0 unsafe.Pointer
 | 
					 | 
				
			||||||
 	if len(p) > 0 {
 | 
					 | 
				
			||||||
diff --git a/src/syscall/zsyscall_linux_arm.go b/src/syscall/zsyscall_linux_arm.go
 | 
					 | 
				
			||||||
index bb20d6e946..3d099aa16d 100644
 | 
					 | 
				
			||||||
--- a/src/syscall/zsyscall_linux_arm.go
 | 
					 | 
				
			||||||
+++ b/src/syscall/zsyscall_linux_arm.go
 | 
					 | 
				
			||||||
@@ -1415,21 +1415,6 @@ func InotifyInit() (fd int, err error) {
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Lchown(path string, uid int, gid int) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func Listen(s int, n int) (err error) {
 | 
					 | 
				
			||||||
 	_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
 | 
					 | 
				
			||||||
 	if e1 != 0 {
 | 
					 | 
				
			||||||
@@ -1440,21 +1425,6 @@ func Listen(s int, n int) (err error) {
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Lstat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
 | 
					 | 
				
			||||||
 	r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
 | 
					 | 
				
			||||||
 	written = int(r0)
 | 
					 | 
				
			||||||
@@ -1558,21 +1528,6 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-func Stat(path string, stat *Stat_t) (err error) {
 | 
					 | 
				
			||||||
-	var _p0 *byte
 | 
					 | 
				
			||||||
-	_p0, err = BytePtrFromString(path)
 | 
					 | 
				
			||||||
-	if err != nil {
 | 
					 | 
				
			||||||
-		return
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
 | 
					 | 
				
			||||||
-	if e1 != 0 {
 | 
					 | 
				
			||||||
-		err = errnoErr(e1)
 | 
					 | 
				
			||||||
-	}
 | 
					 | 
				
			||||||
-	return
 | 
					 | 
				
			||||||
-}
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
 func Gettimeofday(tv *Timeval) (err error) {
 | 
					 | 
				
			||||||
 	_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
 | 
					 | 
				
			||||||
 	if e1 != 0 {
 | 
					 | 
				
			||||||
@ -11,8 +11,8 @@ import "C"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"git.zx2c4.com/wireguard-go/tun"
 | 
					 | 
				
			||||||
	"golang.org/x/sys/unix"
 | 
						"golang.org/x/sys/unix"
 | 
				
			||||||
 | 
						"golang.zx2c4.com/wireguard/tun"
 | 
				
			||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
@ -52,7 +52,7 @@ func init() {
 | 
				
			|||||||
			case <-signals:
 | 
								case <-signals:
 | 
				
			||||||
				n := runtime.Stack(buf, true)
 | 
									n := runtime.Stack(buf, true)
 | 
				
			||||||
				buf[n] = 0
 | 
									buf[n] = 0
 | 
				
			||||||
				C.__android_log_write(C.ANDROID_LOG_ERROR, C.CString("WireGuard/GoBackend/Stacktrace"), (*_Ctype_char)(unsafe.Pointer(&buf[0])))
 | 
									C.__android_log_write(C.ANDROID_LOG_ERROR, C.CString("WireGuard/GoBackend/Stacktrace"), (*C.char)(unsafe.Pointer(&buf[0])))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
@ -89,7 +89,7 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
 | 
				
			|||||||
		return -1
 | 
							return -1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var uapi net.Listener;
 | 
						var uapi net.Listener
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	uapiFile, err := UAPIOpen(name)
 | 
						uapiFile, err := UAPIOpen(name)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
				
			|||||||
@ -8,9 +8,9 @@ package main
 | 
				
			|||||||
/* Reduce memory consumption for Android */
 | 
					/* Reduce memory consumption for Android */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
        QueueOutboundSize          = 1024
 | 
						QueueOutboundSize          = 1024
 | 
				
			||||||
        QueueInboundSize           = 1024
 | 
						QueueInboundSize           = 1024
 | 
				
			||||||
        QueueHandshakeSize         = 1024
 | 
						QueueHandshakeSize         = 1024
 | 
				
			||||||
        MaxSegmentSize             = 2200
 | 
						MaxSegmentSize             = 2200
 | 
				
			||||||
        PreallocatedBuffersPerPool = 4096
 | 
						PreallocatedBuffersPerPool = 4096
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
package tun
 | 
					package tun
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"git.zx2c4.com/wireguard-go/rwcancel"
 | 
						"golang.zx2c4.com/wireguard/rwcancel"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -20,7 +20,7 @@ func CreateTUNFromFD(tunFd int) (TUNDevice, string, error) {
 | 
				
			|||||||
		nopi:    true,
 | 
							nopi:    true,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	tun.fdCancel, err = rwcancel.NewRWCancel(tunFd)
 | 
						tun.fdCancel, err = rwcancel.NewRWCancel(int(tun.fd))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, "", err
 | 
							return nil, "", err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
Subproject commit f7170e5de2065f37bac647484b34711db4797394
 | 
					Subproject commit 88ff67fb6f55456e46877b71aa5d33060468f95e
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user