summaryrefslogtreecommitdiff
path: root/src/quic_header.h
diff options
context:
space:
mode:
author李佳 <[email protected]>2024-07-10 06:58:33 +0000
committerlijia <[email protected]>2024-07-11 11:23:10 +0800
commit4782225f29b6f80ee023297d0a0726c6c798e3d7 (patch)
tree35e385984c8312daf1de3f479af5523928626f54 /src/quic_header.h
Initial commitv1.0.1
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