mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-26 03:25:35 +00:00
f475e5550c
This commit implements UDP offloading for Linux. GSO size is passed to and from the kernel via socket control messages. Support is probed at runtime. UDP GSO is dependent on checksum offload support on the egress netdev. UDP GSO will be disabled in the event sendmmsg() returns EIO, which is a strong signal that the egress netdev does not support checksum offload. Updates tailscale/corp#8734 Signed-off-by: Jordan Whited <jordan@tailscale.com>
41 lines
800 B
Go
41 lines
800 B
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
//go:build !linux
|
|
|
|
package magicsock
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
|
|
"tailscale.com/types/logger"
|
|
"tailscale.com/types/nettype"
|
|
)
|
|
|
|
func (c *Conn) listenRawDisco(family string) (io.Closer, error) {
|
|
return nil, errors.New("raw disco listening not supported on this OS")
|
|
}
|
|
|
|
func trySetSocketBuffer(pconn nettype.PacketConn, logf logger.Logf) {
|
|
portableTrySetSocketBuffer(pconn, logf)
|
|
}
|
|
|
|
func tryEnableUDPOffload(pconn nettype.PacketConn) (hasTX bool, hasRX bool) {
|
|
return false, false
|
|
}
|
|
|
|
func getGSOSizeFromControl(control []byte) (int, error) {
|
|
return 0, nil
|
|
}
|
|
|
|
func setGSOSizeInControl(control *[]byte, gso uint16) {}
|
|
|
|
func errShouldDisableOffload(err error) bool {
|
|
return false
|
|
}
|
|
|
|
const (
|
|
controlMessageSize = 0
|
|
)
|