支持识别QUANT、PICOQUIC、PQUIC_VERSION_PROX、QUIC_GO、QUICLY、MSQUIC、MOZQUIC、MVFST协议
This commit is contained in:
@@ -14,7 +14,10 @@
|
||||
#include "gquic_process.h"
|
||||
#include "quic_analysis.h"
|
||||
|
||||
int is_quant()
|
||||
{
|
||||
|
||||
}
|
||||
int is_iquic(enum _QUIC_VERSION quic_version)
|
||||
{
|
||||
switch(quic_version)
|
||||
@@ -471,26 +474,24 @@ enum _QUIC_VERSION is_quic_protocol(struct streaminfo *pstream, struct _quic_con
|
||||
quic_version=parse_quic_header(pstream, _context, payload, payload_len, used_len);
|
||||
return quic_version;
|
||||
break;
|
||||
case GQUIC_VERSION_Q044:
|
||||
case GQUIC_VERSION_Q045:
|
||||
case GQUIC_VERSION_Q048:
|
||||
case GQUIC_VERSION_Q049:
|
||||
case GQUIC_VERSION_Q050:
|
||||
case GQUIC_VERSION_Q099:
|
||||
MESA_handle_runtime_log(g_quic_param.logger, RLOG_LV_DEBUG, "GQUIC", "version: Q%03u addr: %s",
|
||||
(((quic_version>>8)&0x0000000F)*10) + ((quic_version)&0x0000000F),
|
||||
printaddr(&pstream->addr, pstream->threadnum));
|
||||
|
||||
_context->is_quic=TRUE;
|
||||
_context->quic_info.quic_hdr.quic_version=quic_version;
|
||||
return quic_version;
|
||||
break;
|
||||
default:
|
||||
if(is_iquic(quic_version))
|
||||
if( (quic_version==GQUIC_VERSION_Q044) ||
|
||||
(quic_version==GQUIC_VERSION_Q045) ||
|
||||
(quic_version==GQUIC_VERSION_Q099) ||
|
||||
(quic_version==PICOQUIC_VERSION_30) ||
|
||||
(quic_version==PQUIC_VERSION_PROX) ||
|
||||
(quic_version>=GQUIC_VERSION_Q048 && quic_version<=GQUIC_VERSION_Q050) ||
|
||||
(quic_version>=QUANT_VERSION_00 && quic_version<=QUANT_VERSION_FF) ||
|
||||
(quic_version>=QUIC_GO_VERSION_00 && quic_version<=QUIC_GO_VERSION_FF) ||
|
||||
(quic_version>=QUICLY_VERSION_00 && quic_version<=QUICLY_VERSION_FF) ||
|
||||
(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)
|
||||
)
|
||||
{
|
||||
MESA_handle_runtime_log(g_quic_param.logger, RLOG_LV_DEBUG, "IQUIC", "version: I%03u addr: %s",
|
||||
(((quic_version>>16)&0x000000FF)*10) + (((quic_version>>8)&0x000000FF)*10) + ((quic_version)&0x000000FF),
|
||||
printaddr(&pstream->addr, pstream->threadnum));
|
||||
MESA_handle_runtime_log(g_quic_param.logger, RLOG_LV_DEBUG, "QUIC", "version: 0x%x addr: %s",
|
||||
quic_version, printaddr(&pstream->addr, pstream->threadnum));
|
||||
|
||||
_context->is_quic=TRUE;
|
||||
_context->quic_info.quic_hdr.quic_version=quic_version;
|
||||
|
||||
@@ -156,6 +156,13 @@
|
||||
enum _QUIC_VERSION
|
||||
{
|
||||
QUIC_VERSION_UNKNOWN=0,
|
||||
//NetApp
|
||||
QUANT_VERSION_00=0x45474700,
|
||||
QUANT_VERSION_FF=0x45474700,
|
||||
|
||||
//Private Octopus
|
||||
PICOQUIC_VERSION_30=0x50435130,
|
||||
|
||||
//google
|
||||
GQUIC_VERSION_Q001=0x51303031,
|
||||
GQUIC_VERSION_Q002=0x51303032,
|
||||
@@ -226,9 +233,26 @@ enum _QUIC_VERSION
|
||||
|
||||
//Google Proxied QUIC
|
||||
PQUIC_VERSION_PROX=0x50524f58,
|
||||
//GOQUIC_VERSION_GO=0x51474f[0-255],
|
||||
|
||||
//quic-go
|
||||
QUIC_GO_VERSION_00=0x51474F00,
|
||||
QUIC_GO_VERSION_FF=0x51474FFF,
|
||||
|
||||
//quicly
|
||||
//QUICKLY_VERSION_QUICLY=0x91c170[0-255]
|
||||
QUICLY_VERSION_00=0x91c17000,
|
||||
QUICLY_VERSION_FF=0x91c170FF,
|
||||
|
||||
//Microsoft
|
||||
MSQUIC_VERSION_00=0xabcd0000,
|
||||
MSQUIC_VERSION_0F=0xabcd000F,
|
||||
|
||||
//Mozilla
|
||||
MOZQUIC_VERSION_00=0xf123f0c0,
|
||||
MOZQUIC_VERSION_0F=0xf123f0cF,
|
||||
|
||||
//Facebook
|
||||
MVFST_VERSION_00=0xfaceb000,
|
||||
MVFST_VERSION_0F=0xfaceb00F,
|
||||
|
||||
//IETF
|
||||
IQUIC_VERSION_I001=0xFF000001,
|
||||
|
||||
@@ -263,7 +263,7 @@ extern "C" char QUIC_ENTRY(struct streaminfo *pstream, void**pme, int thread_seq
|
||||
break;
|
||||
}
|
||||
|
||||
if(ret&APP_STATE_DROPME|| pstream->opstate==OP_STATE_CLOSE)
|
||||
if(ret&APP_STATE_DROPME || ret&APP_STATE_DROPPKT || pstream->opstate==OP_STATE_CLOSE)
|
||||
{
|
||||
quic_release_stream(pme, thread_seq);
|
||||
*pme=NULL;
|
||||
|
||||
@@ -18,6 +18,54 @@ int quic_version_int2string(unsigned int version, char *buff, int buff_len)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version>=QUANT_VERSION_00 && version<=QUANT_VERSION_FF)
|
||||
{
|
||||
snprintf(buff, buff_len, "NetApp QUANT %02d", (version&0x000000FF));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version==PICOQUIC_VERSION_30)
|
||||
{
|
||||
snprintf(buff, buff_len, "Private Octopus");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version==PQUIC_VERSION_PROX)
|
||||
{
|
||||
snprintf(buff, buff_len, "Proxied QUIC");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version>=QUIC_GO_VERSION_00 && version<=QUIC_GO_VERSION_FF)
|
||||
{
|
||||
snprintf(buff, buff_len, "quic-go QGO %02d", (version&0x000000FF));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version>=QUIC_GO_VERSION_00 && version<=QUIC_GO_VERSION_FF)
|
||||
{
|
||||
snprintf(buff, buff_len, "quicly qicly0 %02d", (version&0x000000FF));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version>=MSQUIC_VERSION_00 && version<=MSQUIC_VERSION_0F)
|
||||
{
|
||||
snprintf(buff, buff_len, "Microsoft MsQuic %02d", (version&0x0000000F));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version>=MOZQUIC_VERSION_00 && version<=MOZQUIC_VERSION_0F)
|
||||
{
|
||||
snprintf(buff, buff_len, "Mozilla MozQuic %02d", (version&0x0000000F));
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(version>=MVFST_VERSION_00&& version<=MVFST_VERSION_0F)
|
||||
{
|
||||
snprintf(buff, buff_len, "Facebook mvfst %02d", (version&0x0000000F));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user