wgengine/netstack: use build tags to exclude gVisor GRO importation on iOS (#13015)
Updates tailscale/corp#22125 Signed-off-by: Jordan Whited <jordan@tailscale.com>main
parent
a7a394e7d9
commit
25f0a3fc8f
@ -0,0 +1,16 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build !ios
|
||||
|
||||
package netstack |
||||
|
||||
import ( |
||||
nsgro "gvisor.dev/gvisor/pkg/tcpip/stack/gro" |
||||
) |
||||
|
||||
// gro wraps a gVisor GRO implementation. It exists solely to prevent iOS from
|
||||
// importing said package (see _ios.go).
|
||||
type gro struct { |
||||
nsgro.GRO |
||||
} |
||||
@ -0,0 +1,30 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build ios
|
||||
|
||||
package netstack |
||||
|
||||
import ( |
||||
"gvisor.dev/gvisor/pkg/tcpip/stack" |
||||
) |
||||
|
||||
// gro on iOS delivers packets to its Dispatcher, immediately. This type exists
|
||||
// to prevent importation of the gVisor GRO implementation as said package
|
||||
// increases binary size. This is a penalty we do not wish to pay since we
|
||||
// currently do not leverage GRO on iOS.
|
||||
type gro struct { |
||||
Dispatcher stack.NetworkDispatcher |
||||
} |
||||
|
||||
func (g *gro) Init(v bool) { |
||||
if v { |
||||
panic("GRO is not supported on this platform") |
||||
} |
||||
} |
||||
|
||||
func (g *gro) Flush() {} |
||||
|
||||
func (g *gro) Enqueue(pkt *stack.PacketBuffer) { |
||||
g.Dispatcher.DeliverNetworkPacket(pkt.NetworkProtocolNumber, pkt) |
||||
} |
||||
Loading…
Reference in new issue