wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
Loading...
Searching...
No Matches
header.h File Reference

RFC 9000 17. More...

Go to the source code of this file.

Data Structures

struct  wired_header
 Parsed invariant (version-independent) packet header fields. More...

Macros

#define WIRED_FORM_LONG   1
 Long header form (RFC 9000 17.2).
#define WIRED_FORM_SHORT   0
 Short header form (RFC 9000 17.3).
#define WIRED_LP_INITIAL   0x0
 Long header packet type Initial (RFC 9000 17.2), bits 5-4 of byte 0.
#define WIRED_LP_0RTT   0x1
 Long header packet type 0-RTT (RFC 9000 17.2), bits 5-4 of byte 0.
#define WIRED_LP_HANDSHAKE   0x2
 Long header packet type Handshake (RFC 9000 17.2), bits 5-4 of byte 0.
#define WIRED_LP_RETRY   0x3
 Long header packet type Retry (RFC 9000 17.2), bits 5-4 of byte 0.
#define WIRED_MAX_CID_LEN   20
 RFC 9000 17.2: longest connection id in a version 1 long header.

Functions

usz wired_header_parse (const u8 *buf, usz n, wired_header *h)
 Parse the invariant (version-independent) part of a packet header.
usz wired_header_build_long (u8 *buf, usz cap, const wired_header *h)
 Build the invariant part of a long header into buf (cap bytes).

Detailed Description

RFC 9000 17.

Packet header form is the high bit of byte 0.

Function Documentation

◆ wired_header_build_long()

usz wired_header_build_long ( u8 * buf,
usz cap,
const wired_header * h )

Build the invariant part of a long header into buf (cap bytes).

Parameters
bufdestination buffer
capcapacity of buf in bytes
hthe header fields to encode
Returns
bytes written, or 0 if it does not fit.

◆ wired_header_parse()

usz wired_header_parse ( const u8 * buf,
usz n,
wired_header * h )

Parse the invariant (version-independent) part of a packet header.

For a short header the caller must preset h->dcid_len to the local CID length.

Parameters
bufthe packet bytes
nlength of buf in bytes
hreceives the parsed header fields
Returns
bytes consumed, or 0 on malformed / truncated input.