Skip to content

Commit

Permalink
STUN: major code rework (#2116)
Browse files Browse the repository at this point in the history
Try to have a faster classification, on first packet; use standard extra
dissection data path for sub-classification, metadata extraction and
monitoring.

STUN caches:
* use the proper confidence value
* lookup into the caches only once per flow, after having found a proper
STUN classification

Add identification of Telegram VoIP calls.
  • Loading branch information
IvanNardi authored Oct 30, 2023
1 parent e399bd7 commit 42d24f8
Show file tree
Hide file tree
Showing 91 changed files with 851 additions and 608 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/cifuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
oss-fuzz-project-name: 'ndpi'
fuzz-seconds: 1200
fuzz-seconds: 1320
dry-run: false
sanitizer: ${{ matrix.sanitizer }}
- name: Check Crash (fails when a crash is detected)
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@
/fuzz/fuzz_binaryfusefilter
/fuzz/fuzz_tls_certificate
/fuzz/fuzz_dga
/fuzz/fuzz_is_stun_udp
/fuzz/fuzz_is_stun_tcp
/fuzz/fuzz_ds_cmsketch
/fuzz/fuzz_gcrypt_light
/fuzz/fuzz_gcrypt_aes
Expand All @@ -91,6 +93,8 @@
/fuzz/fuzz_quic_get_crypto_data_seed_corpus.zip
/fuzz/fuzz_config_seed_corpus.zip
/fuzz/fuzz_community_id_seed_corpus.zip
/fuzz/fuzz_is_stun_udp_seed_corpus.zip
/fuzz/fuzz_is_stun_tcp_seed_corpus.zip
/fuzz/fuzz_serialization_seed_corpus.zip
/fuzz/fuzz_alg_ses_des_seed_corpus.zip
/fuzz/fuzz_alg_bins_seed_corpus.zip
Expand Down
11 changes: 10 additions & 1 deletion doc/protocols.rst
Original file line number Diff line number Diff line change
Expand Up @@ -179,4 +179,13 @@ References: `Main site <https://ethereum.org/en/developers/docs/intro-to-ethereu

Notes:

- same as Bitcoin, not each crypto exchange is a mining, it could be a normal transaction, sending or receving or even blockchain exploration.
- same as Bitcoin, not each crypto exchange is a mining, it could be a normal transaction, sending or receving or even blockchain exploration.


.. _Proto 355:

`NDPI_PROTOCOL_TELEGRAM_VOIP`
============================
Audio/video calls made using the Telegram app.

References: `Wikipedia <https://en.wikipedia.org/wiki/Telegram_(software)/>`_.
41 changes: 38 additions & 3 deletions fuzz/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
bin_PROGRAMS = fuzz_process_packet fuzz_ndpi_reader fuzz_ndpi_reader_alloc_fail fuzz_ndpi_reader_payload_analyzer fuzz_quic_get_crypto_data fuzz_config fuzz_community_id fuzz_serialization fuzz_tls_certificate fuzz_dga
bin_PROGRAMS = fuzz_process_packet fuzz_ndpi_reader fuzz_ndpi_reader_alloc_fail fuzz_ndpi_reader_payload_analyzer fuzz_quic_get_crypto_data fuzz_config fuzz_community_id fuzz_serialization fuzz_tls_certificate fuzz_dga fuzz_is_stun_udp fuzz_is_stun_tcp
#Alghoritms
bin_PROGRAMS += fuzz_alg_bins fuzz_alg_hll fuzz_alg_hw_rsi_outliers_da fuzz_alg_jitter fuzz_alg_ses_des fuzz_alg_crc32_md5 fuzz_alg_bytestream
#Data structures
Expand Down Expand Up @@ -412,6 +412,32 @@ fuzz_dga_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \
$(fuzz_dga_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@

fuzz_is_stun_udp_SOURCES = fuzz_is_stun.c fuzz_common_code.c
fuzz_is_stun_udp_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS)
fuzz_is_stun_udp_LDADD = ../src/lib/libndpi.a $(ADDITIONAL_LIBS)
fuzz_is_stun_udp_LDFLAGS = $(LIBS)
if HAS_FUZZLDFLAGS
fuzz_is_stun_udp_CFLAGS += $(LIB_FUZZING_ENGINE)
fuzz_is_stun_udp_LDFLAGS += $(LIB_FUZZING_ENGINE)
endif
# force usage of CXX for linker
fuzz_is_stun_udp_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \
$(fuzz_is_stun_udp_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@

fuzz_is_stun_tcp_SOURCES = fuzz_is_stun.c fuzz_common_code.c
fuzz_is_stun_tcp_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) -DSTUN_TCP
fuzz_is_stun_tcp_LDADD = ../src/lib/libndpi.a $(ADDITIONAL_LIBS)
fuzz_is_stun_tcp_LDFLAGS = $(LIBS)
if HAS_FUZZLDFLAGS
fuzz_is_stun_tcp_CFLAGS += $(LIB_FUZZING_ENGINE)
fuzz_is_stun_tcp_LDFLAGS += $(LIB_FUZZING_ENGINE)
endif
# force usage of CXX for linker
fuzz_is_stun_tcp_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \
$(fuzz_is_stun_tcp_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@

fuzz_gcrypt_light_SOURCES = fuzz_gcrypt_light.cpp fuzz_common_code.c
fuzz_gcrypt_light_CXXFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) -I ../src/lib/third_party/include/
fuzz_gcrypt_light_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS) -I ../src/lib/third_party/include/
Expand Down Expand Up @@ -555,10 +581,17 @@ fuzz_serialization_seed_corpus.zip: $(files_corpus_fuzz_serialization)
zip -j fuzz_serialization_seed_corpus.zip $(files_corpus_fuzz_serialization)

files_corpus_fuzz_community_id := $(wildcard corpus/fuzz_community_id/*)

fuzz_community_id_seed_corpus.zip: $(files_corpus_fuzz_community_id)
zip -j fuzz_community_id_seed_corpus.zip $(files_corpus_fuzz_community_id)

files_corpus_fuzz_is_stun_udp := $(wildcard corpus/fuzz_is_stun_udp/*)
fuzz_is_stun_udp_seed_corpus.zip: $(files_corpus_fuzz_is_stun_udp)
zip -j fuzz_is_stun_udp_seed_corpus.zip $(files_corpus_fuzz_is_stun_udp)

files_corpus_fuzz_is_stun_tcp := $(wildcard corpus/fuzz_is_stun_tcp/*)
fuzz_is_stun_tcp_seed_corpus.zip: $(files_corpus_fuzz_is_stun_tcp)
zip -j fuzz_is_stun_tcp_seed_corpus.zip $(files_corpus_fuzz_is_stun_tcp)

files_corpus_fuzz_ds_patricia := $(wildcard corpus/fuzz_ds_patricia/*)
fuzz_ds_patricia_seed_corpus.zip: $(files_corpus_fuzz_ds_patricia)
zip -j fuzz_ds_patricia_seed_corpus.zip $(files_corpus_fuzz_ds_patricia)
Expand Down Expand Up @@ -639,7 +672,7 @@ files_corpus_fuzz_ds_domain_classify := $(wildcard corpus/fuzz_ds_domain_classi
fuzz_ds_domain_classify_seed_corpus.zip: $(files_corpus_fuzz_ds_domain_classify)
zip -j fuzz_ds_domain_classify_seed_corpus.zip $(files_corpus_fuzz_ds_domain_classify)

corpus: fuzz_ndpi_reader_seed_corpus.zip fuzz_ndpi_reader_alloc_fail_seed_corpus.zip fuzz_ndpi_reader_payload_analyzer_seed_corpus.zip fuzz_quic_get_crypto_data_seed_corpus.zip fuzz_config_seed_corpus.zip fuzz_ds_patricia_seed_corpus.zip fuzz_ds_ahocorasick_seed_corpus.zip fuzz_alg_ses_des_seed_corpus.zip fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip fuzz_alg_bins_seed_corpus.zip fuzz_alg_hll_seed_corpus.zip fuzz_alg_jitter_seed_corpus.zip fuzz_ds_libcache_seed_corpus.zip fuzz_community_id_seed_corpus.zip fuzz_ds_tree_seed_corpus.zip fuzz_serialization_seed_corpus.zip fuzz_ds_ptree_seed_corpus.zip fuzz_alg_crc32_md5_seed_corpus.zip fuzz_alg_bytestream_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_readerutils_workflow_seed_corpus.zip fuzz_readerutils_parseprotolist_seed_corpus.zip fuzz_ds_bitmap64_seed_corpus.zip fuzz_ds_domain_classify_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip
corpus: fuzz_ndpi_reader_seed_corpus.zip fuzz_ndpi_reader_alloc_fail_seed_corpus.zip fuzz_ndpi_reader_payload_analyzer_seed_corpus.zip fuzz_quic_get_crypto_data_seed_corpus.zip fuzz_config_seed_corpus.zip fuzz_ds_patricia_seed_corpus.zip fuzz_ds_ahocorasick_seed_corpus.zip fuzz_alg_ses_des_seed_corpus.zip fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip fuzz_alg_bins_seed_corpus.zip fuzz_alg_hll_seed_corpus.zip fuzz_alg_jitter_seed_corpus.zip fuzz_ds_libcache_seed_corpus.zip fuzz_community_id_seed_corpus.zip fuzz_ds_tree_seed_corpus.zip fuzz_serialization_seed_corpus.zip fuzz_ds_ptree_seed_corpus.zip fuzz_alg_crc32_md5_seed_corpus.zip fuzz_alg_bytestream_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_readerutils_workflow_seed_corpus.zip fuzz_readerutils_parseprotolist_seed_corpus.zip fuzz_ds_bitmap64_seed_corpus.zip fuzz_ds_domain_classify_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_is_stun_udp_seed_corpus.zip fuzz_is_stun_tcp_seed_corpus.zip
cp corpus/fuzz_*seed_corpus.zip .

#Create dictionaries exactly as expected by oss-fuzz.
Expand Down Expand Up @@ -672,6 +705,8 @@ distdir:
-o -path './corpus/fuzz_readerutils_workflow/*' \
-o -path './corpus/fuzz_readerutils_parseprotolist/*' \
-o -path './corpus/fuzz_config/*' \
-o -path './corpus/fuzz_is_stun_udp/*' \
-o -path './corpus/fuzz_is_stun_tcp/*' \
-o -path './corpus/fuzz_serialization/*' \
-o -path './corpus/fuzz_community_id/*' \
-o -path './corpus/fuzz_libinjection/*' \
Expand Down
Binary file added fuzz/corpus/fuzz_is_stun_tcp/1
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/10
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/11
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/13
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/2
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/20
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/21
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/22
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/23
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/3
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/30
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/4
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/5
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/6
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/7
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/8
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_tcp/9
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/1
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/10
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/11
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/12
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/13
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/2
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/3
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/31
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/4
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/5
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/6
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/7
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/8
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/9
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/a
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/b
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/c
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/c1
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/c2
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/d
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/e
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/f
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q1
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q10
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q11
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q12
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q2
Binary file not shown.
Binary file added fuzz/corpus/fuzz_is_stun_udp/q3
Binary file not shown.
38 changes: 38 additions & 0 deletions fuzz/fuzz_is_stun.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#define NDPI_LIB_COMPILATION

#include "ndpi_api.h"
#include "fuzz_common_code.h"

static struct ndpi_detection_module_struct *ndpi_struct = NULL;
static struct ndpi_flow_struct ndpi_flow;
#ifdef STUN_TCP
struct ndpi_tcphdr tcph;
#else
struct ndpi_udphdr udph;
#endif

extern int is_stun(struct ndpi_detection_module_struct *ndpi_struct,
struct ndpi_flow_struct *flow,
u_int16_t *app_proto);


int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
u_int16_t app_proto; /* unused */
struct ndpi_packet_struct *packet;

if (ndpi_struct == NULL) {
fuzz_init_detection_module(&ndpi_struct);
}

packet = &ndpi_struct->packet;
packet->payload = data;
packet->payload_packet_len = size;
#ifndef STUN_TCP
packet->udp = &udph;
#else
packet->tcp = &tcph;
#endif

is_stun(ndpi_struct, &ndpi_flow, &app_proto);
return 0;
}
3 changes: 3 additions & 0 deletions src/include/ndpi_main.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ extern "C" {
u_int16_t lower_detected_protocol,
ndpi_confidence_t confidence);

void ndpi_reset_detected_protocol(struct ndpi_detection_module_struct *ndpi_struct,
struct ndpi_flow_struct *flow);

void ndpi_set_detected_protocol_keeping_master(struct ndpi_detection_module_struct *ndpi_str,
struct ndpi_flow_struct *flow,
u_int16_t detected_protocol,
Expand Down
1 change: 1 addition & 0 deletions src/include/ndpi_protocol_ids.h
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,7 @@ typedef enum {
NDPI_PROTOCOL_CAN = 352,
NDPI_PROTOCOL_PROTOBUF = 353,
NDPI_PROTOCOL_ETHEREUM = 354,
NDPI_PROTOCOL_TELEGRAM_VOIP = 355,

#ifdef CUSTOM_NDPI_PROTOCOLS
#include "../../../nDPI-custom/custom_ndpi_protocol_ids.h"
Expand Down
2 changes: 1 addition & 1 deletion src/include/ndpi_typedefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -1533,7 +1533,7 @@ struct ndpi_flow_struct {
} kerberos_buf;

struct {
u_int8_t num_pkts, num_binding_requests, num_processed_pkts, maybe_dtls;
u_int8_t maybe_dtls;
} stun;

struct {
Expand Down
21 changes: 13 additions & 8 deletions src/lib/ndpi_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2176,6 +2176,11 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp
"ETHEREUM", NDPI_PROTOCOL_CATEGORY_CRYPTO_CURRENCY,
ndpi_build_default_ports(ports_a, 30303, 0, 0, 0, 0) /* TCP */,
ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);
ndpi_set_proto_defaults(ndpi_str, 0 /* encrypted */, 1 /* app proto */, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_TELEGRAM_VOIP,
"TelegramVoip", NDPI_PROTOCOL_CATEGORY_VOIP,
ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */,
ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);


#ifdef CUSTOM_NDPI_PROTOCOLS
#include "../../../nDPI-custom/custom_ndpi_main.c"
Expand Down Expand Up @@ -7082,14 +7087,6 @@ ndpi_protocol ndpi_detection_giveup(struct ndpi_detection_module_struct *ndpi_st
if(ret.app_protocol != NDPI_PROTOCOL_UNKNOWN)
return(ret);

if((flow->guessed_protocol_id == NDPI_PROTOCOL_STUN) ||
(enable_guess &&
flow->stun.num_binding_requests > 0 &&
flow->stun.num_processed_pkts > 0)) {
ndpi_set_detected_protocol(ndpi_str, flow, NDPI_PROTOCOL_STUN, NDPI_PROTOCOL_UNKNOWN, NDPI_CONFIDENCE_DPI_PARTIAL);
ret.app_protocol = flow->detected_protocol_stack[0];
}

/* Check some caches */

/* Does it looks like BitTorrent? */
Expand Down Expand Up @@ -8582,6 +8579,14 @@ void ndpi_set_detected_protocol(struct ndpi_detection_module_struct *ndpi_str, s

/* ********************************************************************************* */

void ndpi_reset_detected_protocol(struct ndpi_detection_module_struct *ndpi_str, struct ndpi_flow_struct *flow) {
flow->detected_protocol_stack[1] = NDPI_PROTOCOL_UNKNOWN;
flow->detected_protocol_stack[0] = NDPI_PROTOCOL_UNKNOWN;
flow->confidence = NDPI_CONFIDENCE_UNKNOWN;
}

/* ********************************************************************************* */

u_int16_t ndpi_get_flow_masterprotocol(struct ndpi_detection_module_struct *ndpi_str, struct ndpi_flow_struct *flow) {
return(flow->detected_protocol_stack[1]);
}
Expand Down
10 changes: 0 additions & 10 deletions src/lib/ndpi_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -1373,16 +1373,6 @@ int ndpi_dpi2json(struct ndpi_detection_module_struct *ndpi_struct,
ndpi_serialize_end_of_block(serializer);
break;

case NDPI_PROTOCOL_STUN:
ndpi_serialize_start_of_block(serializer, "stun");
ndpi_serialize_string_uint32(serializer, "num_pkts", flow->stun.num_pkts);
ndpi_serialize_string_uint32(serializer, "num_binding_requests",
flow->stun.num_binding_requests);
ndpi_serialize_string_uint32(serializer, "num_processed_pkts",
flow->stun.num_processed_pkts);
ndpi_serialize_end_of_block(serializer);
break;

case NDPI_PROTOCOL_TELNET:
ndpi_serialize_start_of_block(serializer, "telnet");
ndpi_serialize_string_string(serializer, "username", flow->protos.telnet.username);
Expand Down
17 changes: 4 additions & 13 deletions src/lib/protocols/rtp.c
Original file line number Diff line number Diff line change
Expand Up @@ -282,19 +282,10 @@ static void ndpi_rtp_search(struct ndpi_detection_module_struct *ndpi_struct,
} else {
rtp_get_stream_type(payload[1] & 0x7F, &flow->flow_multimedia_type);

/* Previous pkts were STUN */
if(flow->stun.num_binding_requests > 0 ||
flow->stun.num_processed_pkts > 0) {
NDPI_LOG_INFO(ndpi_struct, "Found RTP (previous traffic was STUN)\n");
ndpi_set_detected_protocol(ndpi_struct, flow,
NDPI_PROTOCOL_RTP, NDPI_PROTOCOL_STUN,
NDPI_CONFIDENCE_DPI);
} else {
NDPI_LOG_INFO(ndpi_struct, "Found RTP\n");
ndpi_set_detected_protocol(ndpi_struct, flow,
NDPI_PROTOCOL_UNKNOWN, NDPI_PROTOCOL_RTP,
NDPI_CONFIDENCE_DPI);
}
NDPI_LOG_INFO(ndpi_struct, "Found RTP\n");
ndpi_set_detected_protocol(ndpi_struct, flow,
NDPI_PROTOCOL_UNKNOWN, NDPI_PROTOCOL_RTP,
NDPI_CONFIDENCE_DPI);
}
return;
}
Expand Down
Loading

0 comments on commit 42d24f8

Please sign in to comment.