summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2021-08-25 21:32:48 +0800
committerliuxueli <[email protected]>2021-08-25 21:32:48 +0800
commit314b09531fc195646a9f849f1bb3b6f4481296cc (patch)
tree62c8f548d85a8d04b2725fa9a5b041734f306bc5
parent3412ad1afe34cb2994417fd3ad7361c7a8804a4e (diff)
identify-ietf-rfc9000
-rw-r--r--src/gquic_process.cpp9
-rw-r--r--src/gquic_process.h1
-rw-r--r--src/quic_version.cpp7
3 files changed, 14 insertions, 3 deletions
diff --git a/src/gquic_process.cpp b/src/gquic_process.cpp
index d68f262..4ba84e2 100644
--- a/src/gquic_process.cpp
+++ b/src/gquic_process.cpp
@@ -502,7 +502,8 @@ enum _QUIC_VERSION is_quic_protocol(struct streaminfo *pstream, struct _quic_con
(quic_version>=MSQUIC_VERSION_00 && quic_version<=MSQUIC_VERSION_0F) ||
(quic_version>=MOZQUIC_VERSION_00 && quic_version<=MOZQUIC_VERSION_0F) ||
(quic_version>=MVFST_VERSION_00 && quic_version<=MVFST_VERSION_0F) ||
- (quic_version>=IQUIC_VERSION_I001 && quic_version<=IQUIC_VERSION_I032)
+ (quic_version>=IQUIC_VERSION_I001 && quic_version<=IQUIC_VERSION_I032) ||
+ (quic_version==IQUIC_VERSION_RFC9000)
)
{
MESA_handle_runtime_log(g_quic_param.logger, RLOG_LV_DEBUG, "QUIC", "version: 0x%x addr: %s",
@@ -1031,7 +1032,8 @@ int parse_decrypt_quic(struct streaminfo *pstream, struct _quic_context* _contex
if( (quic_version>=MVFST_VERSION_00 && quic_version<=MVFST_VERSION_0F) ||
(quic_version>=GQUIC_VERSION_T050 && quic_version<=GQUIC_VERSION_T059) ||
- (quic_version>=IQUIC_VERSION_I022 && quic_version<=IQUIC_VERSION_I029)
+ (quic_version>=IQUIC_VERSION_I022 && quic_version<=IQUIC_VERSION_I029) ||
+ (quic_version==IQUIC_VERSION_RFC9000)
)
{
if(payload[*used_len] == 0x01)
@@ -1107,7 +1109,8 @@ int quic_process(struct streaminfo *pstream, struct _quic_context* _context, int
(is_gquic>=GQUIC_VERSION_Q047 && is_gquic<=GQUIC_VERSION_Q059) ||
(is_gquic>=GQUIC_VERSION_T050 && is_gquic<=GQUIC_VERSION_T059) ||
(is_gquic>=GQUIC_VERSION_T050 && is_gquic<=GQUIC_VERSION_T059) ||
- (is_gquic>=IQUIC_VERSION_I022 && is_gquic<=IQUIC_VERSION_I029)
+ (is_gquic>=IQUIC_VERSION_I022 && is_gquic<=IQUIC_VERSION_I029) ||
+ (is_gquic==IQUIC_VERSION_RFC9000)
)
&& _context->is_decrypt==0
)
diff --git a/src/gquic_process.h b/src/gquic_process.h
index 308cb41..0171e56 100644
--- a/src/gquic_process.h
+++ b/src/gquic_process.h
@@ -318,6 +318,7 @@ enum _QUIC_VERSION
MVFST_VERSION_0F=0xfaceb00F,
//IETF
+ IQUIC_VERSION_RFC9000=0x00000001,
IQUIC_VERSION_I001=0xFF000001,
IQUIC_VERSION_I002=0xFF000002,
IQUIC_VERSION_I003=0xFF000003,
diff --git a/src/quic_version.cpp b/src/quic_version.cpp
index 635943a..7fc9eb0 100644
--- a/src/quic_version.cpp
+++ b/src/quic_version.cpp
@@ -18,6 +18,13 @@ int quic_version_int2string(unsigned int version, char *buff, int buff_len)
return 1;
}
+
+ if(version==IQUIC_VERSION_RFC9000)
+ {
+ snprintf(buff, buff_len, "IETF QUIC RFC9000");
+ return 1;
+ }
+
if(version>=IQUIC_VERSION_I001 && version<=IQUIC_VERSION_I032)
{
snprintf(buff, buff_len, "IETF QUIC %02d", (((version>>16)&0x000000FF)*10) + (((version>>8)&0x000000FF)*10) + (version&0x000000FF));