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 ¶
- type ConntrackPacketConn
- func (c *ConntrackPacketConn) Close() error
- func (c *ConntrackPacketConn) LocalAddr() net.Addr
- func (c *ConntrackPacketConn) Open(remote *net.UDPAddr) (*VirtualPacketConn, error)
- func (c *ConntrackPacketConn) ReadFrom(b []byte) (int, net.Addr, error)
- func (c *ConntrackPacketConn) SetDeadline(t time.Time) error
- func (c *ConntrackPacketConn) SetReadDeadline(t time.Time) error
- func (c *ConntrackPacketConn) SetWriteDeadline(t time.Time) error
- func (c *ConntrackPacketConn) WriteTo(b []byte, a net.Addr) (int, error)
- type Options
- type VirtualPacketConn
- func (v *VirtualPacketConn) Close() error
- func (v *VirtualPacketConn) LocalAddr() net.Addr
- func (v *VirtualPacketConn) ReadFrom(b []byte) (int, net.Addr, error)
- func (v *VirtualPacketConn) SetDeadline(t time.Time) error
- func (v *VirtualPacketConn) SetReadDeadline(t time.Time) error
- func (v *VirtualPacketConn) SetWriteDeadline(t time.Time) error
- func (v *VirtualPacketConn) WriteTo(b []byte, addr net.Addr) (int, error)
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) 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
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) 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
Click to show internal directories.
Click to hide internal directories.