mirror of
https://github.com/tailscale/tailscale.git
synced 2025-10-24 17:48:57 +00:00
net/netaddr: start migrating to net/netip via new netaddr adapter package
Updates #5162 Change-Id: Id7bdec303b25471f69d542f8ce43805328d56c12 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
7b1a91dfd3
commit
7eaf5e509f
@@ -8,6 +8,7 @@ package nettype
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"net/netip"
|
||||
)
|
||||
|
||||
// PacketListener defines the ListenPacket method as implemented
|
||||
@@ -16,6 +17,10 @@ type PacketListener interface {
|
||||
ListenPacket(ctx context.Context, network, address string) (net.PacketConn, error)
|
||||
}
|
||||
|
||||
type PacketListenerWithNetIP interface {
|
||||
ListenPacket(ctx context.Context, network, address string) (PacketConn, error)
|
||||
}
|
||||
|
||||
// Std implements PacketListener using the Go net package's ListenPacket func.
|
||||
type Std struct{}
|
||||
|
||||
@@ -23,3 +28,24 @@ func (Std) ListenPacket(ctx context.Context, network, address string) (net.Packe
|
||||
var conf net.ListenConfig
|
||||
return conf.ListenPacket(ctx, network, address)
|
||||
}
|
||||
|
||||
type PacketConn interface {
|
||||
net.PacketConn
|
||||
WriteToUDPAddrPort([]byte, netip.AddrPort) (int, error)
|
||||
}
|
||||
|
||||
func MakePacketListenerWithNetIP(ln PacketListener) PacketListenerWithNetIP {
|
||||
return packetListenerAdapter{ln}
|
||||
}
|
||||
|
||||
type packetListenerAdapter struct {
|
||||
PacketListener
|
||||
}
|
||||
|
||||
func (a packetListenerAdapter) ListenPacket(ctx context.Context, network, address string) (PacketConn, error) {
|
||||
pc, err := a.PacketListener.ListenPacket(ctx, network, address)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return pc.(PacketConn), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user