|
wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
|
| app | |
| http3 | |
| core | |
| h3 | |
| control.h | |
| priority.h | |
| h3settings | |
| control_settings.h | |
| settings_build.h | |
| request | |
| h3reqdrive | |
| request_drive.h | RFC 9114 4.1 / 4.3.1, RFC 9204 4.5: drive HTTP/3 requests end to end: QPACK-encode and frame outgoing GET or arbitrary-method requests, and recover the pseudo-headers of received ones |
| server | |
| certreload | |
| certreload.h | Load (or reload) a server's certificate chain and P-256 signing key from a cert.pem (fullchain, leaf first, RFC 7468 5) and key.pem (SEC1 or PKCS#8 EC private key, RFC 7468 4) pair on disk |
| h3srv | |
| state.h | RFC 9114 6.2.1 / 7.2.4 / 4.1 |
| mimetype | |
| mimetype.h | Infer an HTTP Content-Type from a static file's path, by its extension (the substring after the last ' |
| srvboot | |
| srvboot.h | RFC 9000 17.2 / RFC 9001 5 / RFC 8446 4.4: cold-start a server connection from a client Initial datagram |
| srvdemo.h | A fixed, deterministic server identity for samples and tests: the key bytes are a counting pattern, so every run presents the same self-signed certificate |
| srvdriver | |
| srvdriver.h | Selects and runs one of this SDK's four server drivers (single-process, multi-process fork, AF_XDP, multi-thread fan-out) from --workers/ --ifindex/--cores/--pin-core command-line flags, the exact same exclusive-combination rules examples/word_list's driver_select hand-rolled |
| srvinbox | |
| srvinbox.h | SPSC ring for worker-to-worker broadcast handoff |
| srvloop | |
| body_window.h | |
| respond.h | |
| send.h | RFC 9001 5 / 5.1: seal server-direction outbound packets |
| srvloop.h | RFC 9001 4 / 5 / RFC 9000 17.2: the socket-free core of the server wire loop |
| srvrun | |
| httpx.h | Small conveniences for a wired_http_handler filling its exchange |
| srvrun.h | The complete server event loop: the sanctioned socket-owning layer over the socket-free srvboot/srvloop core |
| srvthreads | |
| srvthreads.h | Thread-based worker fan-out over the single-process wired_srvrun_serve_env: one control thread spawns N worker threads sharing the process's address space (unlike srvworkers' fork fan-out), each running its own wired_srvrun_env instance |
| srvworkers | |
| srvworkers.h | Multi-process worker fan-out over the single-process wired_server_run: fork N shared-nothing child processes, each optionally pinned to one CPU, each running its own copy of the existing server loop unmodified |
| srvxdp | |
| srvxdp.h | AF_XDP driver integration for the HTTP/3 server: opens one AF_XDP socket plus its BPF redirect filter, and drives the resulting rings with the app-facing mmsg_buf shape |
| srvxdpbpf | |
| srvxdpbpf.h | Shared per-interface BPF objects for the AF_XDP driver: one XSKMAP plus redirect-filter program plus link per ifindex, shared by every per-queue XSK socket (wired_srvxdp) |
| staticfile | |
| staticfile.h | Resolve an HTTP request path into a document-root-relative file path for static file serving (quiche-server's –root/–index), rejecting path traversal |
| media | |
| mp4frag | |
| mp4frag.h | Fragmented-MP4 top-level layout (ISO/IEC 14496-12 box structure): the init segment (ftyp through moov) and each moof+mdat media fragment as views into the caller's file bytes |
| moqt | |
| cache | |
| moqcache.h | Object cache for FETCH (draft-ietf-moq-transport-19 10.12.3) in a caller-provided arena |
| ctl | |
| moqctl.h | Draft-ietf-moq-transport-19 SS10 Control Messages: common envelope (Type + 16-bit Length + Body), Message Parameters (SS10.2), Location (SS1.4.2), Track Namespace/Name (SS1.5), Reason Phrase (SS1.4.4), and the eight message codecs this SDK subset implements: SETUP, SUBSCRIBE, SUBSCRIBE_OK, PUBLISH, REQUEST_OK, REQUEST_ERROR, PUBLISH_DONE, GOAWAY |
| data | |
| moqdata.h | Draft-ietf-moq-transport-18/19/22 data-plane (draft-19 sections; the wire is byte-identical in all three, so nothing here takes a version): unidirectional stream classification (3.4), SUBGROUP_HEADER (11.4.2, draft-22 11.3.1) and Object framing (11.4.2 / 4237-4466) |
| dgram | |
| moqdg.h | Draft-ietf-moq-transport-18/19/22 datagram plane: OBJECT_DATAGRAM codec (18/19 11.3.1, 22 11.2.1; byte-identical in all three, no version) |
| fetch | |
| moqfetch.h | Draft-ietf-moq-transport-18/19/22 FETCH: the FETCH (19 10.12, 22 9.11) and FETCH_OK (19 10.13, 22 9.12) control messages, and the fetch data stream (19 11.4.4, 22 11.4): the FETCH_HEADER and the fetch Objects with their Serialization Flags, including the End of Range markers (19 11.4.4.2) |
| qraw | |
| moqraw.h | MoQT-over-raw-QUIC Setup Option policy |
| moqrawio.h | One wired_moqt_io table that serves both MoQT transports, so the hub never branches on transport for I/O |
| run | |
| moqtrel.h | Reliable-relay byte ring for the MOQT hub: one publisher's relayed track bytes buffered once, with an independent read cursor per subscriber, so a slow subscriber's refused sends are retried instead of dropped |
| moqtrun.h | Draft-ietf-moq-transport-18/19/22 hub relay (section numbers are draft-19's unless a draft is named; each peer's negotiated draft, its moqver.h capability bits, picks the per-draft behavior): the app-facing layer wiring the other MOQT domains (vi/kvp/ctl/data/dgram/sess/fetch/ns/tstat/cache) onto the WT application API (app/http3/server/srvrun) |
| moqtss.h | Per-session SSTS (sender-side track switching, moqtail-compatible) state the hub keeps for one subscriber session: the algorithms negotiated in SETUP (option 0x09), its switching sets (SWITCHING_SET_ASSIGNMENT 0x41) and the final per-group decisions |
| sess | |
| moqsess.h | Draft-ietf-moq-transport-19 3.3 / 5.1: session establishment/control- stream discipline, and 5.1 SUBSCRIBE/PUBLISH lifecycle |
| ssts | |
| moqssts.h | Sender-side track switching (SSTS) decision algorithms, ported from moqtail's moqtail-ssts crate (ee9753c): which member of each switching set a relay forwards for one media group |
| ver | |
| moqver.h | The MOQT drafts this SDK speaks, as one table: each row is a dense version id, its WebTransport subprotocol token (draft-ietf-moq-transport 3.1, "moqt-NN") and the capability bits that differ between drafts |
| qpack | |
| qpack | |
| dyntable.h | |
| field.h | |
| qpackdyn | |
| dec_stream.h | |
| enc_stream.h | |
| qpackenc | |
| qpackenc.h | RFC 9204 2.1 / 3.2 / 4.3.3 / 4.4 |
| webtransport | |
| capsule | |
| wtcapsule | |
| wtcapsule.h | Draft-ietf-webtrans-http3-15 SS4.2/SS5.6: the WebTransport-specific capsule types layered on top of the generic RFC 9297 Capsule Protocol codec (app/http3/core/capsule/capsule.h) |
| errmap | |
| errmap | |
| errmap.h | |
| session | |
| session | |
| session.h | Draft-ietf-webtrans-http3-15 SS4: the WebTransport session state machine, independent of any specific transport wiring |
| wtwire | |
| wtwire.h | WebTransport wire-format helpers (pure functions, no state) |
| common | |
| arch | |
| x8664 | |
| x8664.h | X86-64 Linux architecture adapter: every ISA-specific construct the SDK needs, behind the arch-neutral names the rest of src/ consumes (via common/arch/arch.h) |
| arch.h | Architecture selection facade |
| sysops.h | Typed wrappers over the raw syscall layer – the only place outside the arch instruction sequences where syscallN(SYS_*) may appear |
| types.h | The SDK's fixed-width integer types (LP64 data model) |
| bytes | |
| span | |
| span.h | Value-type views that fold the SDK's recurring argument shapes into single parameters, keeping every function at <=3 args without a calling cost: |
| text | |
| text.h | Small text helpers for application code: compare a byte view with a C string, copy a view out as a C string, and dump a view as hex or as text |
| util | |
| bytes.h | Cursor byte-copy helpers shared by the frame codecs |
| varint | |
| varint.h | |
| fmt | |
| fmt.h | Libc-free printf-compatible formatter |
| platform | |
| cliargs | |
| cliargs.h | Parse already-materialized argc/argv for named flags of the form --flag value |
| clock | |
| clock.h | |
| mono.h | Monotonic elapsed-time clock (CLOCK_MONOTONIC), for measuring intervals such as connection idle age (RFC 9000 10.1) |
| debug | |
| debug.h | Minimal libc-free tracing for freestanding binaries: write to stderr and format a decimal, with a compile-out gate |
| envp | |
| envp.h | Read environment variables without libc |
| exit | |
| exit.h | Process termination, separate from common/platform/debug (which owns log output only) |
| fio | |
| fio.h | Whole-file read via raw Linux syscalls (openat/read/close) |
| sys | |
| syscall.h | Linux direct syscalls |
| crypto | |
| kdf | |
| hkdf | |
| hkdf.h | RFC 5869 HKDF over HMAC-SHA-256, plus the TLS 1.3 / QUIC HKDF-Expand-Label construction (RFC 8446 7.1, RFC 9001 5.1) |
| keys | |
| keyset.h | RFC 9001 4: per-protection-level key sets |
| pki | |
| encoding | |
| eckey | |
| eckey.h | P-256 private-key extraction from the two DER shapes tools emit: SEC1 ECPrivateKey (RFC 5915 3) and PKCS#8 PrivateKeyInfo (RFC 5958 2) wrapping a SEC1 key |
| pem | |
| pem.h | RFC 7468 2-3: textual (PEM) encoding of DER structures |
| symmetric | |
| hash | |
| hash | |
| hmac.h | FIPS 198-1 HMAC-SHA-256, HMAC-SHA-384 and HMAC-SHA-512 |
| sha256.h | FIPS 180-4 SHA-256 |
| sha384.h | |
| sha512.h | |
| tls | |
| ext | |
| salpn | |
| negotiate.h | |
| sni_check.h | |
| stp | |
| server_tp.h | |
| handshake | |
| core | |
| sdrv | |
| sdrv.h | RFC 8446 4 / RFC 9001 4: server-side handshake driver |
| tls | |
| cert.h | RFC 8446 4.4.2/4.4.3: the Certificate and CertificateVerify handshake messages |
| initial.h | RFC 9001 5.2: Initial packet protection keys derived from the client's Destination Connection ID |
| suitehash.h | RFC 8446 B.4 / 7.1: the hash a TLS 1.3 cipher suite runs its key schedule, transcript and Finished MAC over (SHA-256 for 0x1301/0x1303, SHA-384 for 0x1302) |
| transcript.h | RFC 8446 4.4.1: cumulative Transcript-Hash over handshake messages |
| x25519.h | RFC 7748 X25519: scalar multiplication on Curve25519 for ECDHE |
| roles | |
| server | |
| server.h | RFC 9001 4 / 4.1.2, RFC 8446 4 / 4.4.4, RFC 9000 7: server-side handshake orchestrator, the symmetric peer of client |
| srvfin | |
| complete.h | RFC 9001 4.1.2: after the client Finished verifies, the server completes the handshake: derive the application (1-RTT) secrets from the transcript including the client Finished, install the 1-RTT key set, and mark the handshake confirmed |
| keys | |
| kuswitch | |
| twogen.h | |
| schedule_drive | |
| keyschedule.h | RFC 8446 7.1: order-driven key schedule |
| ticket | |
| ticket.h | |
| transport | |
| conn | |
| lifecycle | |
| conn | |
| pnspace.h | |
| loop | |
| crecv | |
| collect.h | RFC 9000 19.6 / 7.5: reassemble CRYPTO frames received in a Handshake (or Initial) packet payload into a single in-order byte stream of TLS handshake messages |
| pnspace | |
| pnspaces | |
| recv_spaces.h | |
| recvpn | |
| recvpn.h | |
| io | |
| socket | |
| io | |
| udp.h | UDP via direct x86_64 syscalls, dual-stack (one AF_INET6 socket serves IPv6 natively and IPv4 as v4-mapped addresses) |
| xdp | |
| xdpmac | |
| xdpmac.h | |
| xskring | |
| xskring.h | SPSC ring operations shared by the four AF_XDP rings (fill/comp/rx/tx) |
| xsksetup | |
| xsksetup.h | AF_XDP socket setup: socket(2)/setsockopt(2)/getsockopt(2)/mmap(2)/bind(2) sequence that turns a raw AF_XDP fd into four ready-to-poll SPSC rings (fill/comp/rx/tx) over one UMEM |
| xskumem | |
| xskumem.h | |
| packet | |
| frame | |
| frame | |
| connctl.h | |
| ncid.h | |
| header | |
| packet | |
| header.h | RFC 9000 17 |
| recovery | |
| detect | |
| ackgen | |
| ackrange.h | |
| recovery | |
| ackpolicy.h | |
| version | |
| version | |
| version.h | |
| wired.h | Single-header public entry for the wired QUIC/HTTP3 SDK |