conntrackpc

package
v0.21.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2026 License: AGPL-3.0 Imports: 6 Imported by: 0

Documentation

Overview

Package conntrackpc provides a conntrack-style multiplexer for net.PacketConn, suitable for QUIC clients that want multiple "virtual" PacketConns over one UDP socket.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConntrackPacketConn

type ConntrackPacketConn struct {
	// contains filtered or unexported fields
}

func New

func New(underlying net.PacketConn, opts Options) *ConntrackPacketConn

func (*ConntrackPacketConn) Close

func (c *ConntrackPacketConn) Close() error

func (*ConntrackPacketConn) LocalAddr

func (c *ConntrackPacketConn) LocalAddr() net.Addr

func (*ConntrackPacketConn) Open

func (c *ConntrackPacketConn) Open(remote *net.UDPAddr) (*VirtualPacketConn, error)

Open returns (or creates) a VirtualPacketConn bound to the provided remote.

func (*ConntrackPacketConn) ReadFrom

func (c *ConntrackPacketConn) ReadFrom(b []byte) (int, net.Addr, error)

func (*ConntrackPacketConn) SetDeadline

func (c *ConntrackPacketConn) SetDeadline(t time.Time) error

func (*ConntrackPacketConn) SetReadDeadline

func (c *ConntrackPacketConn) SetReadDeadline(t time.Time) error

func (*ConntrackPacketConn) SetWriteDeadline

func (c *ConntrackPacketConn) SetWriteDeadline(t time.Time) error

func (*ConntrackPacketConn) WriteTo

func (c *ConntrackPacketConn) WriteTo(b []byte, a net.Addr) (int, error)

type Options

type Options struct {
	// If true, a new VirtualPacketConn is auto-created on the first inbound packet
	// seen from a remote address not yet in the table.
	AutoCreate bool

	// TTL is the idle timeout for a flow. If no traffic touches the flow for this duration,
	// it is evicted and closed by the cache.
	TTL time.Duration

	// MaxFlows bounds memory usage; oldest/expired flows are evicted first.
	MaxFlows int

	// Size of each per-flow inbound queue (non-blocking fanout).
	RxBufSize int
}

type VirtualPacketConn

type VirtualPacketConn struct {
	// contains filtered or unexported fields
}

func (*VirtualPacketConn) Close

func (v *VirtualPacketConn) Close() error

func (*VirtualPacketConn) LocalAddr

func (v *VirtualPacketConn) LocalAddr() net.Addr

func (*VirtualPacketConn) ReadFrom

func (v *VirtualPacketConn) ReadFrom(b []byte) (int, net.Addr, error)

func (*VirtualPacketConn) SetDeadline

func (v *VirtualPacketConn) SetDeadline(t time.Time) error

func (*VirtualPacketConn) SetReadDeadline

func (v *VirtualPacketConn) SetReadDeadline(t time.Time) error

func (*VirtualPacketConn) SetWriteDeadline

func (v *VirtualPacketConn) SetWriteDeadline(t time.Time) error

func (*VirtualPacketConn) WriteTo

func (v *VirtualPacketConn) WriteTo(b []byte, addr net.Addr) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL