支持IQUIC
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -240,30 +240,29 @@ enum _QUIC_VERSION
|
||||
IQUIC_VERSION_I007=0xFF000007,
|
||||
IQUIC_VERSION_I008=0xFF000008,
|
||||
IQUIC_VERSION_I009=0xFF000009,
|
||||
IQUIC_VERSION_I010=0xFF000010,
|
||||
IQUIC_VERSION_I011=0xFF000011,
|
||||
IQUIC_VERSION_I012=0xFF000012,
|
||||
IQUIC_VERSION_I013=0xFF000013,
|
||||
IQUIC_VERSION_I014=0xFF000014,
|
||||
IQUIC_VERSION_I015=0xFF000015,
|
||||
IQUIC_VERSION_I016=0xFF000016,
|
||||
IQUIC_VERSION_I017=0xFF000017,
|
||||
IQUIC_VERSION_I018=0xFF000018,
|
||||
IQUIC_VERSION_I019=0xFF000019,
|
||||
IQUIC_VERSION_I020=0xFF000020,
|
||||
IQUIC_VERSION_I021=0xFF000021,
|
||||
IQUIC_VERSION_I032=0xFF000022,
|
||||
IQUIC_VERSION_I023=0xFF000023,
|
||||
IQUIC_VERSION_I024=0xFF000024,
|
||||
IQUIC_VERSION_I025=0xFF000025,
|
||||
IQUIC_VERSION_I026=0xFF000026,
|
||||
IQUIC_VERSION_I027=0xFF000027,
|
||||
IQUIC_VERSION_I028=0xFF000028,
|
||||
IQUIC_VERSION_I029=0xFF000029
|
||||
|
||||
|
||||
|
||||
|
||||
IQUIC_VERSION_I010=0xFF00000A,
|
||||
IQUIC_VERSION_I011=0xFF00000B,
|
||||
IQUIC_VERSION_I012=0xFF00000C,
|
||||
IQUIC_VERSION_I013=0xFF00000D,
|
||||
IQUIC_VERSION_I014=0xFF00000E,
|
||||
IQUIC_VERSION_I015=0xFF00000F,
|
||||
IQUIC_VERSION_I016=0xFF000010,
|
||||
IQUIC_VERSION_I017=0xFF000011,
|
||||
IQUIC_VERSION_I018=0xFF000012,
|
||||
IQUIC_VERSION_I019=0xFF000013,
|
||||
IQUIC_VERSION_I020=0xFF000014,
|
||||
IQUIC_VERSION_I021=0xFF000015,
|
||||
IQUIC_VERSION_I022=0xFF000016,
|
||||
IQUIC_VERSION_I023=0xFF000017,
|
||||
IQUIC_VERSION_I024=0xFF000018,
|
||||
IQUIC_VERSION_I025=0xFF000019,
|
||||
IQUIC_VERSION_I026=0xFF00001A,
|
||||
IQUIC_VERSION_I027=0xFF00001B,
|
||||
IQUIC_VERSION_I028=0xFF00001C,
|
||||
IQUIC_VERSION_I029=0xFF00001D,
|
||||
IQUIC_VERSION_I030=0xFF00001E,
|
||||
IQUIC_VERSION_I031=0xFF00001F,
|
||||
IQUIC_VERSION_I032=0xFF000020
|
||||
};
|
||||
|
||||
struct _quic_context
|
||||
|
||||
@@ -6,12 +6,18 @@
|
||||
|
||||
int quic_version_int2string(unsigned int version, char *buff, int buff_len)
|
||||
{
|
||||
if(version>0 && version<=GQUIC_VERSION_Q099)
|
||||
if(version>=GQUIC_VERSION_Q001 && version<=GQUIC_VERSION_Q099)
|
||||
{
|
||||
snprintf(buff, buff_len, "Google QUIC %02d", (((version>>8)&0x0000000F)*10) + (version&0x0000000F));
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
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));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user