Documentation
¶
Index ¶
- Constants
- Variables
- func ClientTLSConfig(identity SessionIdentity, expectedPeer [32]byte) *tls.Config
- func DefaultClientTLSConfig() *tls.Config
- func DefaultQUICConfig() *quic.Config
- func DefaultTLSConfig(cert tls.Certificate, serverName string) *tls.Config
- func GenerateSelfSignedCertificate() (tls.Certificate, error)
- func ServerTLSConfig(identity SessionIdentity, expectedPeer [32]byte) *tls.Config
- func TracerWithMechanism(mechanism *MechanismTrace) func(context.Context, bool, quic.ConnectionID) qlogwriter.Trace
- func WrapStream(conn *quic.Conn, stream *quic.Stream) net.Conn
- type Adapter
- func (a *Adapter) Close() error
- func (a *Adapter) LocalAddr() net.Addr
- func (a *Adapter) ReadFrom(p []byte) (int, net.Addr, error)
- func (a *Adapter) SetDeadline(t time.Time) error
- func (a *Adapter) SetReadBuffer(bytes int) error
- func (a *Adapter) SetReadDeadline(t time.Time) error
- func (a *Adapter) SetWriteBuffer(bytes int) error
- func (a *Adapter) SetWriteDeadline(t time.Time) error
- func (a *Adapter) WriteTo(p []byte, _ net.Addr) (int, error)
- type MechanismSnapshot
- type MechanismTrace
- type PeerDatagramConn
- type SessionIdentity
- type StreamConn
- func (c *StreamConn) Close() error
- func (c *StreamConn) LocalAddr() net.Addr
- func (c *StreamConn) Read(p []byte) (int, error)
- func (c *StreamConn) RemoteAddr() net.Addr
- func (c *StreamConn) SetDeadline(t time.Time) error
- func (c *StreamConn) SetReadDeadline(t time.Time) error
- func (c *StreamConn) SetWriteDeadline(t time.Time) error
- func (c *StreamConn) Write(p []byte) (int, error)
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 DefaultQUICConfig ¶
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.
Types ¶
type Adapter ¶
type Adapter struct {
// contains filtered or unexported fields
}
func NewAdapter ¶
func NewAdapter(peer PeerDatagramConn) *Adapter
func (*Adapter) SetReadBuffer ¶
func (*Adapter) SetWriteBuffer ¶
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 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) 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
Click to show internal directories.
Click to hide internal directories.