支持IQUIC

This commit is contained in:
liuxueli
2020-11-06 18:10:42 +06:00
parent d7385a1a62
commit 409501cd5b
3 changed files with 99 additions and 58 deletions

View File

@@ -14,6 +14,52 @@
#include "gquic_process.h"
#include "quic_analysis.h"
int is_iquic(enum _QUIC_VERSION quic_version)
{
switch(quic_version)
{
case IQUIC_VERSION_I001:
case IQUIC_VERSION_I002:
case IQUIC_VERSION_I003:
case IQUIC_VERSION_I004:
case IQUIC_VERSION_I005:
case IQUIC_VERSION_I006:
case IQUIC_VERSION_I007:
case IQUIC_VERSION_I008:
case IQUIC_VERSION_I009:
case IQUIC_VERSION_I010:
case IQUIC_VERSION_I011:
case IQUIC_VERSION_I012:
case IQUIC_VERSION_I013:
case IQUIC_VERSION_I014:
case IQUIC_VERSION_I015:
case IQUIC_VERSION_I016:
case IQUIC_VERSION_I017:
case IQUIC_VERSION_I018:
case IQUIC_VERSION_I019:
case IQUIC_VERSION_I020:
case IQUIC_VERSION_I021:
case IQUIC_VERSION_I022:
case IQUIC_VERSION_I023:
case IQUIC_VERSION_I024:
case IQUIC_VERSION_I025:
case IQUIC_VERSION_I026:
case IQUIC_VERSION_I027:
case IQUIC_VERSION_I028:
case IQUIC_VERSION_I029:
case IQUIC_VERSION_I030:
case IQUIC_VERSION_I031:
case IQUIC_VERSION_I032:
return TRUE;
break;
default:
break;
}
return FALSE;
}
int quic_getLinkState(struct _quic_context *_context)
{
UCHAR state = 0;
@@ -405,7 +451,11 @@ enum _QUIC_VERSION is_quic_protocol(struct streaminfo *pstream, struct _quic_con
if(_context->quic_info.quic_hdr.quic_version!=QUIC_VERSION_UNKNOWN)
{
//
if(is_iquic((enum _QUIC_VERSION)(_context->quic_info.quic_hdr.quic_version)))
{
return (enum _QUIC_VERSION)(_context->quic_info.quic_hdr.quic_version);
}
quic_version=(enum _QUIC_VERSION)(_context->quic_info.quic_hdr.quic_version);
}
else
@@ -426,36 +476,7 @@ enum _QUIC_VERSION is_quic_protocol(struct streaminfo *pstream, struct _quic_con
case GQUIC_VERSION_Q049:
case GQUIC_VERSION_Q050:
case GQUIC_VERSION_Q099:
case IQUIC_VERSION_I001:
case IQUIC_VERSION_I002:
case IQUIC_VERSION_I003:
case IQUIC_VERSION_I004:
case IQUIC_VERSION_I005:
case IQUIC_VERSION_I006:
case IQUIC_VERSION_I007:
case IQUIC_VERSION_I008:
case IQUIC_VERSION_I009:
case IQUIC_VERSION_I010:
case IQUIC_VERSION_I011:
case IQUIC_VERSION_I012:
case IQUIC_VERSION_I013:
case IQUIC_VERSION_I014:
case IQUIC_VERSION_I015:
case IQUIC_VERSION_I016:
case IQUIC_VERSION_I017:
case IQUIC_VERSION_I018:
case IQUIC_VERSION_I019:
case IQUIC_VERSION_I020:
case IQUIC_VERSION_I021:
case IQUIC_VERSION_I032:
case IQUIC_VERSION_I023:
case IQUIC_VERSION_I024:
case IQUIC_VERSION_I025:
case IQUIC_VERSION_I026:
case IQUIC_VERSION_I027:
case IQUIC_VERSION_I028:
case IQUIC_VERSION_I029:
MESA_handle_runtime_log(g_quic_param.logger, RLOG_LV_DEBUG, "QUIC_UNSUPPORT", "version: Q%03u addr: %s",
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));
@@ -464,6 +485,16 @@ enum _QUIC_VERSION is_quic_protocol(struct streaminfo *pstream, struct _quic_con
return quic_version;
break;
default:
if(is_iquic(quic_version))
{
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));
_context->is_quic=TRUE;
_context->quic_info.quic_hdr.quic_version=quic_version;
return quic_version;
}
break;
}
@@ -886,6 +917,11 @@ int quic_process(struct streaminfo *pstream, struct _quic_context* _context, int
ret=parse_gquic_Q046(pstream, _context, a_packet, (char *)udp_detail->pdata, udp_detail->datalen, &used_len);
break;
default:
ret=quic_callPlugins(pstream, _context, (char *)udp_detail->pdata, udp_detail->datalen, QUIC_APPLICATION_DATA_MASK, a_packet);
if(ret&APP_STATE_DROPME | ret&APP_STATE_DROPPKT)
{
return ret;
}
break;
}