blob: 34a7cd1296d2726574aa7699ad19eae563499c67 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#pragma once
#define QUIC_IS_LONG_HEADER(c) (c & 0x80)
#define QUIC_IS_FIXED_BIT(c) (c & 0x40)
#define QUIC_PKT_TYPE_INITIAL 0x00
#define QUIC_PKT_TYPE_0RTT 0x01
#define QUIC_PKT_TYPE_HANDSHAKE 0x02
#define QUIC_PKT_TYPE_RETRY 0x03
// https://www.rfc-editor.org/rfc/rfc9000.html#name-long-header-packets
struct quic_long_header{
unsigned char type_specific_bit:4;
unsigned char packet_type:2;
unsigned char fixed_bit:1;
unsigned char header_form:1;
unsigned int version;
}__attribute__((packed));
// https://www.rfc-editor.org/rfc/rfc9000.html#name-initial-packet
struct quic_initial_pkt_header{
unsigned char packet_number_length:2;
unsigned char reserved_bits:2;
unsigned char packet_type:2;
unsigned char fixed_bit:1;
unsigned char header_form:1;
unsigned int version;
}__attribute__((packed));
struct quic_short_header{
unsigned char toto:5;
unsigned char spin_bit:1;
unsigned char fixed_bit:1;
unsigned char header_form:1;
}__attribute__((packed));
|