From 314b09531fc195646a9f849f1bb3b6f4481296cc Mon Sep 17 00:00:00 2001 From: liuxueli Date: Wed, 25 Aug 2021 21:32:48 +0800 Subject: [PATCH] identify-ietf-rfc9000 --- src/gquic_process.cpp | 9 ++++++--- src/gquic_process.h | 1 + src/quic_version.cpp | 7 +++++++ 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));