summaryrefslogtreecommitdiff
path: root/src/quic_header.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quic_header.h')
-rw-r--r--src/quic_header.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/quic_header.h b/src/quic_header.h
new file mode 100644
index 0000000..34a7cd1
--- /dev/null
+++ b/src/quic_header.h
@@ -0,0 +1,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)); \ No newline at end of file