diff options
author | Luca Deri <deri@ntop.org> | 2019-07-18 15:00:24 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2019-07-18 15:00:24 +0200 |
commit | 57ef7c1276cd3f880aba0f2025e8ba143db4f935 (patch) | |
tree | 3d6ab7b1843836ba226f70e8383496eb1298b97e | |
parent | b8867642fc04cdcb3c75f60624550bef86ee3301 (diff) |
Added QUIC 046 support
-rw-r--r-- | src/lib/protocols/quic.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/lib/protocols/quic.c b/src/lib/protocols/quic.c index 9bf382217..6d4d45044 100644 --- a/src/lib/protocols/quic.c +++ b/src/lib/protocols/quic.c @@ -78,20 +78,28 @@ void ndpi_search_quic(struct ndpi_detection_module_struct *ndpi_struct, if(packet->udp != NULL && (udp_len > (quic_hlen+4 /* QXXX */)) - && ((packet->payload[0] & 0xC2) == 0x00) + // && ((packet->payload[0] & 0xC2) == 0x00) && (quic_ports(ntohs(packet->udp->source), ntohs(packet->udp->dest))) ) { int i; - if((version_len > 0) && (packet->payload[1+cid_len] != 'Q')) - goto no_quic; - NDPI_LOG_INFO(ndpi_struct, "found QUIC\n"); - ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_QUIC, NDPI_PROTOCOL_UNKNOWN); - - if(packet->payload[quic_hlen+12] != 0xA0) - quic_hlen++; - + if((packet->payload[1] == 'Q') + && (packet->payload[2] == '0') + && (packet->payload[3] == '4') + && (packet->payload[4] == '6')) + quic_hlen = 18; /* TODO: Better handle Q046 */ + else { + if((version_len > 0) && (packet->payload[1+cid_len] != 'Q')) + goto no_quic; + + NDPI_LOG_INFO(ndpi_struct, "found QUIC\n"); + ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_QUIC, NDPI_PROTOCOL_UNKNOWN); + + if(packet->payload[quic_hlen+12] != 0xA0) + quic_hlen++; + } + if(udp_len > quic_hlen + 16 + 4) { if(!strncmp((char*)&packet->payload[quic_hlen+16], "CHLO" /* Client Hello */, 4)) { /* Check if SNI (Server Name Identification) is present */ |