mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-11-04 02:01:14 +01:00 
			
		
		
		
	This commit adds a batchingConn interface, and renames batchingUDPConn to linuxBatchingConn. tryUpgradeToBatchingConn() may return a platform- specific implementation of batchingConn. So far only a Linux implementation of this interface exists, but this refactor is being done in anticipation of a Windows implementation. Updates tailscale/corp#21874 Signed-off-by: Jordan Whited <jordan@tailscale.com>
		
			
				
	
	
		
			26 lines
		
	
	
		
			612 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			612 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) Tailscale Inc & AUTHORS
 | 
						|
// SPDX-License-Identifier: BSD-3-Clause
 | 
						|
 | 
						|
package magicsock
 | 
						|
 | 
						|
import (
 | 
						|
	"net/netip"
 | 
						|
 | 
						|
	"golang.org/x/net/ipv4"
 | 
						|
	"golang.org/x/net/ipv6"
 | 
						|
	"tailscale.com/types/nettype"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// This acts as a compile-time check for our usage of ipv6.Message in
 | 
						|
	// batchingConn for both IPv6 and IPv4 operations.
 | 
						|
	_ ipv6.Message = ipv4.Message{}
 | 
						|
)
 | 
						|
 | 
						|
// batchingConn is a nettype.PacketConn that provides batched i/o.
 | 
						|
type batchingConn interface {
 | 
						|
	nettype.PacketConn
 | 
						|
	ReadBatch(msgs []ipv6.Message, flags int) (n int, err error)
 | 
						|
	WriteBatchTo(buffs [][]byte, addr netip.AddrPort) error
 | 
						|
}
 |