quicpath

package
v0.18.2 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2026 License: BSD-3-Clause Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const ALPN = "derphole-quic/1"
View Source
const MaxIncomingStreams = 64
View Source
const ServerName = "derphole"

Variables

View Source
var ErrPeerIdentityMismatch = errors.New("quic peer identity mismatch")

Functions

func ClientTLSConfig

func ClientTLSConfig(identity SessionIdentity, expectedPeer [32]byte) *tls.Config

func DefaultClientTLSConfig

func DefaultClientTLSConfig() *tls.Config

func DefaultQUICConfig

func DefaultQUICConfig() *quic.Config

func DefaultTLSConfig

func DefaultTLSConfig(cert tls.Certificate, serverName string) *tls.Config

func GenerateSelfSignedCertificate

func GenerateSelfSignedCertificate() (tls.Certificate, error)

func ServerTLSConfig

func ServerTLSConfig(identity SessionIdentity, expectedPeer [32]byte) *tls.Config

func TracerWithMechanism added in v0.17.0

func TracerWithMechanism(mechanism *MechanismTrace) func(context.Context, bool, quic.ConnectionID) qlogwriter.Trace

TracerWithMechanism keeps the always-on in-process trace and forwards the same events to the configured qlog or metrics file trace when enabled.

func WrapStream

func WrapStream(conn *quic.Conn, stream *quic.Stream) net.Conn

Types

type Adapter

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

func NewAdapter

func NewAdapter(peer PeerDatagramConn) *Adapter

func (*Adapter) Close

func (a *Adapter) Close() error

func (*Adapter) LocalAddr

func (a *Adapter) LocalAddr() net.Addr

func (*Adapter) ReadFrom

func (a *Adapter) ReadFrom(p []byte) (int, net.Addr, error)

func (*Adapter) SetDeadline

func (a *Adapter) SetDeadline(t time.Time) error

func (*Adapter) SetReadBuffer

func (a *Adapter) SetReadBuffer(bytes int) error

func (*Adapter) SetReadDeadline

func (a *Adapter) SetReadDeadline(t time.Time) error

func (*Adapter) SetWriteBuffer

func (a *Adapter) SetWriteBuffer(bytes int) error

func (*Adapter) SetWriteDeadline

func (a *Adapter) SetWriteDeadline(t time.Time) error

func (*Adapter) WriteTo

func (a *Adapter) WriteTo(p []byte, _ net.Addr) (int, error)

type MechanismSnapshot added in v0.17.0

type MechanismSnapshot struct {
	TelemetryPresent     bool
	Connections          uint32
	Streams              uint32
	PacketsSent          uint64
	PacketsReceived      uint64
	PacketsLost          uint64
	WireBytesSent        uint64
	RecoveryWireBytes    uint64
	SmoothedRTT          time.Duration
	HandshakeDuration    time.Duration
	FirstByteDuration    time.Duration
	StreamBytesSent      uint64
	StreamBytesReceived  uint64
	Version              string
	RawSocketBackend     string
	NativeSendBackend    string
	NativeReceiveBackend string
	CloseReason          string
	NativeGSO            string
	NativeReceiveBatch   string
}

MechanismSnapshot is the in-process transport evidence accumulated for a set of QUIC connections.

type MechanismTrace added in v0.17.0

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

MechanismTrace is shared by every connection owned by one direct QUIC endpoint. Each qlog producer receives an independent connection identity so equal stream IDs on different connections never share recovery state.

func NewMechanismTrace added in v0.17.0

func NewMechanismTrace() *MechanismTrace

func (*MechanismTrace) AddProducer added in v0.17.0

func (t *MechanismTrace) AddProducer() qlogwriter.Recorder

func (*MechanismTrace) Snapshot added in v0.17.0

func (t *MechanismTrace) Snapshot() MechanismSnapshot

func (*MechanismTrace) SupportsSchemas added in v0.17.0

func (*MechanismTrace) SupportsSchemas(schema string) bool

type PeerDatagramConn

type PeerDatagramConn interface {
	SendDatagram([]byte) error
	RecvDatagram(context.Context) ([]byte, net.Addr, error)
	LocalAddr() net.Addr
	RemoteAddr() net.Addr
	ReleaseDatagram([]byte)
	Close() error
}

type SessionIdentity

type SessionIdentity struct {
	Certificate tls.Certificate
	Public      [32]byte
}

func GenerateSessionIdentity

func GenerateSessionIdentity() (SessionIdentity, error)

func SessionIdentityFromEd25519PrivateKey added in v0.8.0

func SessionIdentityFromEd25519PrivateKey(priv ed25519.PrivateKey, now time.Time) (SessionIdentity, error)

type StreamConn

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

func (*StreamConn) Close

func (c *StreamConn) Close() error

func (*StreamConn) LocalAddr

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

func (*StreamConn) Read

func (c *StreamConn) Read(p []byte) (int, error)

func (*StreamConn) RemoteAddr

func (c *StreamConn) RemoteAddr() net.Addr

func (*StreamConn) SetDeadline

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

func (*StreamConn) SetReadDeadline

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

func (*StreamConn) SetWriteDeadline

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

func (*StreamConn) Write

func (c *StreamConn) Write(p []byte) (int, error)

Jump to

Keyboard shortcuts

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