diff --git a/app/tun/device/tun/errors.generated.go b/app/tun/device/gvisor/errors.generated.go similarity index 93% rename from app/tun/device/tun/errors.generated.go rename to app/tun/device/gvisor/errors.generated.go index 0f01e11d7..315b5ba4b 100644 --- a/app/tun/device/tun/errors.generated.go +++ b/app/tun/device/gvisor/errors.generated.go @@ -1,4 +1,4 @@ -package tun +package gvisor import "github.com/v2fly/v2ray-core/v5/common/errors" diff --git a/app/tun/device/tun/tun.go b/app/tun/device/gvisor/gvisor.go similarity index 83% rename from app/tun/device/tun/tun.go rename to app/tun/device/gvisor/gvisor.go index ca0e66e36..d20c18c3a 100644 --- a/app/tun/device/tun/tun.go +++ b/app/tun/device/gvisor/gvisor.go @@ -1,3 +1,3 @@ -package tun +package gvisor //go:generate go run github.com/v2fly/v2ray-core/v5/common/errors/errorgen diff --git a/app/tun/device/tun/tun_gvisor.go b/app/tun/device/gvisor/gvisor_linux.go similarity index 95% rename from app/tun/device/tun/tun_gvisor.go rename to app/tun/device/gvisor/gvisor_linux.go index 1a0a5c730..a0a79fcbe 100644 --- a/app/tun/device/tun/tun_gvisor.go +++ b/app/tun/device/gvisor/gvisor_linux.go @@ -2,7 +2,7 @@ // +build linux // +build linux,amd64 linux,arm64 -package tun +package gvisor import ( "fmt" @@ -21,7 +21,7 @@ const ( ifReqSize = unix.IFNAMSIZ + 64 ) -type TUN struct { +type GvisorTUN struct { stack.LinkEndpoint options device.Options @@ -31,7 +31,7 @@ type TUN struct { } func New(options device.Options) (device.Device, error) { - t := &TUN{options: options} + t := &GvisorTUN{options: options} if len(options.Name) > unix.IFNAMSIZ { return nil, newError("name too long").AtError() @@ -72,7 +72,7 @@ func New(options device.Options) (device.Device, error) { return t, nil } -func (t *TUN) Close() error { +func (t *GvisorTUN) Close() error { return unix.Close(t.fd) } diff --git a/app/tun/device/gvisor/gvisor_others.go b/app/tun/device/gvisor/gvisor_others.go new file mode 100644 index 000000000..baf22ac56 --- /dev/null +++ b/app/tun/device/gvisor/gvisor_others.go @@ -0,0 +1,10 @@ +//go:build !linux || (linux && !(amd64 || arm64)) +// +build !linux linux,!amd64,!arm64 + +package gvisor + +import "github.com/v2fly/v2ray-core/v5/app/tun/device" + +func New(options device.Options) (device.Device, error) { + return nil, newError("not supported").AtError() +} diff --git a/app/tun/tun.go b/app/tun/tun.go index b7fa20e69..2277280d1 100644 --- a/app/tun/tun.go +++ b/app/tun/tun.go @@ -8,7 +8,7 @@ import ( core "github.com/v2fly/v2ray-core/v5" "github.com/v2fly/v2ray-core/v5/app/tun/device" - "github.com/v2fly/v2ray-core/v5/app/tun/device/tun" + "github.com/v2fly/v2ray-core/v5/app/tun/device/gvisor" "github.com/v2fly/v2ray-core/v5/common" "github.com/v2fly/v2ray-core/v5/features/policy" "github.com/v2fly/v2ray-core/v5/features/routing" @@ -31,7 +31,7 @@ func (t *TUN) Type() interface{} { } func (t *TUN) Start() error { - DeviceConstructor := tun.New + DeviceConstructor := gvisor.New device, err := DeviceConstructor(device.Options{ Name: t.config.Name, MTU: t.config.Mtu, diff --git a/main/distro/all/all.go b/main/distro/all/all.go index 9bcbc14c2..cdf4613b1 100644 --- a/main/distro/all/all.go +++ b/main/distro/all/all.go @@ -34,6 +34,7 @@ import ( _ "github.com/v2fly/v2ray-core/v5/app/instman" _ "github.com/v2fly/v2ray-core/v5/app/observatory" _ "github.com/v2fly/v2ray-core/v5/app/restfulapi" + _ "github.com/v2fly/v2ray-core/v5/app/tun" // Inbound and outbound proxies. _ "github.com/v2fly/v2ray-core/v5/proxy/blackhole" diff --git a/main/distro/all/tun.go b/main/distro/all/tun.go deleted file mode 100644 index c0b9407f9..000000000 --- a/main/distro/all/tun.go +++ /dev/null @@ -1,9 +0,0 @@ -//go:build linux && ((linux && amd64) || (linux && arm64)) -// +build linux -// +build linux,amd64 linux,arm64 - -package all - -import ( - _ "github.com/v2fly/v2ray-core/v5/app/tun" -)