支持识别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 "gquic_process.h"
|
||||||
#include "quic_analysis.h"
|
#include "quic_analysis.h"
|
||||||
|
|
||||||
|
int is_quant()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
int is_iquic(enum _QUIC_VERSION quic_version)
|
int is_iquic(enum _QUIC_VERSION quic_version)
|
||||||
{
|
{
|
||||||
switch(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);
|
quic_version=parse_quic_header(pstream, _context, payload, payload_len, used_len);
|
||||||
return quic_version;
|
return quic_version;
|
||||||
break;
|
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:
|
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",
|
MESA_handle_runtime_log(g_quic_param.logger, RLOG_LV_DEBUG, "QUIC", "version: 0x%x addr: %s",
|
||||||
(((quic_version>>16)&0x000000FF)*10) + (((quic_version>>8)&0x000000FF)*10) + ((quic_version)&0x000000FF),
|
quic_version, printaddr(&pstream->addr, pstream->threadnum));
|
||||||
printaddr(&pstream->addr, pstream->threadnum));
|
|
||||||
|
|
||||||
_context->is_quic=TRUE;
|
_context->is_quic=TRUE;
|
||||||
_context->quic_info.quic_hdr.quic_version=quic_version;
|
_context->quic_info.quic_hdr.quic_version=quic_version;
|
||||||
|
|||||||
@@ -156,6 +156,13 @@
|
|||||||
enum _QUIC_VERSION
|
enum _QUIC_VERSION
|
||||||
{
|
{
|
||||||
QUIC_VERSION_UNKNOWN=0,
|
QUIC_VERSION_UNKNOWN=0,
|
||||||
|
//NetApp
|
||||||
|
QUANT_VERSION_00=0x45474700,
|
||||||
|
QUANT_VERSION_FF=0x45474700,
|
||||||
|
|
||||||
|
//Private Octopus
|
||||||
|
PICOQUIC_VERSION_30=0x50435130,
|
||||||
|
|
||||||
//google
|
//google
|
||||||
GQUIC_VERSION_Q001=0x51303031,
|
GQUIC_VERSION_Q001=0x51303031,
|
||||||
GQUIC_VERSION_Q002=0x51303032,
|
GQUIC_VERSION_Q002=0x51303032,
|
||||||
@@ -226,9 +233,26 @@ enum _QUIC_VERSION
|
|||||||
|
|
||||||
//Google Proxied QUIC
|
//Google Proxied QUIC
|
||||||
PQUIC_VERSION_PROX=0x50524f58,
|
PQUIC_VERSION_PROX=0x50524f58,
|
||||||
//GOQUIC_VERSION_GO=0x51474f[0-255],
|
|
||||||
|
//quic-go
|
||||||
|
QUIC_GO_VERSION_00=0x51474F00,
|
||||||
|
QUIC_GO_VERSION_FF=0x51474FFF,
|
||||||
|
|
||||||
//quicly
|
//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
|
//IETF
|
||||||
IQUIC_VERSION_I001=0xFF000001,
|
IQUIC_VERSION_I001=0xFF000001,
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ extern "C" char QUIC_ENTRY(struct streaminfo *pstream, void**pme, int thread_seq
|
|||||||
break;
|
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);
|
quic_release_stream(pme, thread_seq);
|
||||||
*pme=NULL;
|
*pme=NULL;
|
||||||
|
|||||||
@@ -18,6 +18,54 @@ int quic_version_int2string(unsigned int version, char *buff, int buff_len)
|
|||||||
return 1;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user