21#ifndef DETERMINISTICESPASYNCWEBSERVER_QUIC_FRAME_H
22#define DETERMINISTICESPASYNCWEBSERVER_QUIC_FRAME_H
34 static constexpr uint8_t QUIC_FT_PADDING = 0x00;
35 static constexpr uint8_t QUIC_FT_PING = 0x01;
36 static constexpr uint8_t QUIC_FT_ACK = 0x02;
37 static constexpr uint8_t QUIC_FT_ACK_ECN = 0x03;
38 static constexpr uint8_t QUIC_FT_CRYPTO = 0x06;
39 static constexpr uint8_t QUIC_FT_STREAM = 0x08;
40 static constexpr uint8_t QUIC_FT_MAX_DATA = 0x10;
41 static constexpr uint8_t QUIC_FT_CONNECTION_CLOSE =
43 static constexpr uint8_t QUIC_FT_CONNECTION_CLOSE_APP = 0x1d;
44 static constexpr uint8_t QUIC_FT_HANDSHAKE_DONE = 0x1e;
50 static constexpr uint8_t QUIC_FT_RESET_STREAM = 0x04;
51 static constexpr uint8_t QUIC_FT_STOP_SENDING = 0x05;
52 static constexpr uint8_t QUIC_FT_NEW_TOKEN = 0x07;
53 static constexpr uint8_t QUIC_FT_MAX_STREAM_DATA = 0x11;
54 static constexpr uint8_t QUIC_FT_MAX_STREAMS_BIDI = 0x12;
55 static constexpr uint8_t QUIC_FT_MAX_STREAMS_UNI = 0x13;
56 static constexpr uint8_t QUIC_FT_DATA_BLOCKED = 0x14;
57 static constexpr uint8_t QUIC_FT_STREAM_DATA_BLOCKED = 0x15;
58 static constexpr uint8_t QUIC_FT_STREAMS_BLOCKED_BIDI = 0x16;
59 static constexpr uint8_t QUIC_FT_STREAMS_BLOCKED_UNI = 0x17;
60 static constexpr uint8_t QUIC_FT_NEW_CONNECTION_ID = 0x18;
61 static constexpr uint8_t QUIC_FT_RETIRE_CONNECTION_ID = 0x19;
62 static constexpr uint8_t QUIC_FT_PATH_CHALLENGE = 0x1a;
63 static constexpr uint8_t QUIC_FT_PATH_RESPONSE = 0x1b;
69 static constexpr uint8_t QUIC_STREAM_FIN = 0x01;
70 static constexpr uint8_t QUIC_STREAM_LEN = 0x02;
71 static constexpr uint8_t QUIC_STREAM_OFF = 0x04;
77 static constexpr uint16_t QUIC_ERR_NO_ERROR = 0x00;
78 static constexpr uint16_t QUIC_ERR_INTERNAL = 0x01;
79 static constexpr uint16_t QUIC_ERR_FLOW_CONTROL = 0x03;
80 static constexpr uint16_t QUIC_ERR_STREAM_LIMIT = 0x04;
81 static constexpr uint16_t QUIC_ERR_FRAME_ENCODING = 0x07;
82 static constexpr uint16_t QUIC_ERR_PROTOCOL_VIOLATION = 0x0a;
83 static constexpr uint16_t QUIC_ERR_CRYPTO_BASE = 0x0100;
121 const uint8_t *reason;
128size_t quic_frame_parse(
const uint8_t *buf,
size_t len, QuicFrame *out);
133size_t quic_build_padding(uint8_t *out,
size_t cap,
size_t n);
135size_t quic_build_ping(uint8_t *out,
size_t cap);
137size_t quic_build_handshake_done(uint8_t *out,
size_t cap);
139size_t quic_build_ack(uint8_t *out,
size_t cap, uint64_t largest, uint64_t delay, uint64_t first_range);
141size_t quic_build_crypto(uint8_t *out,
size_t cap, uint64_t offset,
const uint8_t *data,
size_t len);
143size_t quic_build_stream(uint8_t *out,
size_t cap, uint64_t
id, uint64_t offset,
const uint8_t *data,
size_t len,
146size_t quic_build_max_data(uint8_t *out,
size_t cap, uint64_t max);
148size_t quic_build_connection_close(uint8_t *out,
size_t cap, uint64_t error_code, uint64_t frame_type,
149 const char *reason,
size_t reason_len);
User-facing configuration for DeterministicESPAsyncWebServer.