feat: add support for unsupported platforms in wireguard overlay

Kim committed May 8, 2026 at 10:30 UTC 7b04411dc893f220a497de62f742973184503057
3 files changed +47 -8
portal/overlay/overlay.go
+8
@@ -16,6 +16,14 @@ import (
16 "github.com/gosuda/portal-tunnel/v2/utils"
17 )
18
19 +const (
20 + DefaultMTU = 1420
21 + DefaultListenPort = 51820
22 + DefaultPeerAPIHTTPPort = 7777
23 + DefaultPeerYamuxPort = 7778
24 + DefaultPersistentKeepalive = 25
25 +)
26 +
27 type Config struct {
28 PrivateKey string
29 PublicKey string
portal/overlay/stack.go
+3 -8
@@ -1,3 +1,5 @@
1 +//go:build linux || darwin || windows || freebsd || openbsd
2 +
3 package overlay
4
5 import (
@@ -19,14 +21,7 @@ import (
21 "github.com/gosuda/portal-tunnel/v2/utils"
22 )
23
22 -const (
23 - DefaultMTU = 1420
24 - DefaultListenPort = 51820
25 - DefaultPeerAPIHTTPPort = 7777
26 - DefaultPeerYamuxPort = 7778
27 - DefaultPersistentKeepalive = 25
28 - defaultEndpointResolveTTL = 3 * time.Second
29 -)
24 +const defaultEndpointResolveTTL = 3 * time.Second
25
26 type stack struct {
27 device *device.Device
portal/overlay/stack_unsupported.go new
+36
@@ -0,0 +1,36 @@
1 +//go:build !linux && !darwin && !windows && !freebsd && !openbsd
2 +
3 +package overlay
4 +
5 +import (
6 + "context"
7 + "fmt"
8 + "net"
9 + "runtime"
10 +
11 + "github.com/gosuda/portal-tunnel/v2/types"
12 +)
13 +
14 +var errUnsupportedOverlay = fmt.Errorf("wireguard overlay is not supported on %s/%s", runtime.GOOS, runtime.GOARCH)
15 +
16 +type stack struct{}
17 +
18 +func newStack(Config) (*stack, error) {
19 + return nil, errUnsupportedOverlay
20 +}
21 +
22 +func (*stack) ListenTCP(int) (net.Listener, error) {
23 + return nil, errUnsupportedOverlay
24 +}
25 +
26 +func (*stack) DialContext(context.Context, string, string) (net.Conn, error) {
27 + return nil, errUnsupportedOverlay
28 +}
29 +
30 +func (*stack) ApplyPeers([]types.RelayDescriptor) error {
31 + return errUnsupportedOverlay
32 +}
33 +
34 +func (*stack) Close() error {
35 + return nil
36 +}