aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_typedefs.h3
-rw-r--r--src/lib/protocols/rtp.c17
2 files changed, 17 insertions, 3 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index 8c73723b2..ad33eb5e6 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1281,8 +1281,9 @@ struct ndpi_risk_information {
enum ndpi_rtp_stream_type {
rtp_unknown = 0,
rtp_audio,
- rtp_video,
+ rtp_video,
rtp_audio_video,
+ rtp_screen_share
};
struct ndpi_flow_struct {
diff --git a/src/lib/protocols/rtp.c b/src/lib/protocols/rtp.c
index 1c48af7a4..5c0e68f40 100644
--- a/src/lib/protocols/rtp.c
+++ b/src/lib/protocols/rtp.c
@@ -100,7 +100,7 @@ PACK_ON struct zoom_sfu_encapsulation {
} PACK_OFF;
PACK_ON struct zoom_media_encapsulation {
- u_int8_t enc_type; /* 15 = Audio, 16 = Video, 34 = RTCP */
+ u_int8_t enc_type; /* 13/30 = Screen Share, 15 = Audio, 16 = Video, 33/34/35 = RTCP */
u_int32_t unknown_1, unknown_2;
u_int16_t sequence_num;
u_int32_t timestamp;
@@ -128,6 +128,12 @@ static u_int8_t isZoom(u_int16_t sport, u_int16_t dport,
*zoom_stream_type = enc->enc_type;
switch(enc->enc_type) {
+ case 13: /* Screen Share */
+ case 30: /* Screen Share */
+ *is_rtp = 0;
+ *payload_offset = 27;
+ break;
+
case 15: /* Audio */
*is_rtp = 0;
*payload_offset = 27;
@@ -137,8 +143,10 @@ static u_int8_t isZoom(u_int16_t sport, u_int16_t dport,
*is_rtp = 1;
*payload_offset = 32;
break;
-
+
+ case 33: /* RTCP */
case 34: /* RTCP */
+ case 35: /* RTCP */
*is_rtp = 1;
*payload_offset = 36;
break;
@@ -184,6 +192,11 @@ static void ndpi_rtp_search(struct ndpi_detection_module_struct *ndpi_struct,
*/
switch(zoom_stream_type) {
+ case 13: /* Screen Share */
+ case 30: /* Screen Share */
+ flow->protos.rtp.stream_type = rtp_screen_share;
+ break;
+
case 15: /* Audio */
flow->protos.rtp.stream_type = rtp_audio;
break;