diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 5a88cd5751..c3b649cb68 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -479,9 +479,16 @@ typedef struct { switch_size_t flush_packet_count; } switch_rtp_numbers_t; + +typedef struct { + uint32_t packet_count; + uint32_t octet_count; +} switch_rtcp_numbers_t; + typedef struct { switch_rtp_numbers_t inbound; switch_rtp_numbers_t outbound; + switch_rtcp_numbers_t rtcp; } switch_rtp_stats_t; typedef enum { diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 473dfb9aca..8054c8df73 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2238,6 +2238,9 @@ static void set_stats(switch_rtp_t *rtp_session, private_object_t *tech_pvt, con add_stat(stats->outbound.dtmf_packet_count, "out_dtmf_packet_count"); add_stat(stats->outbound.cng_packet_count, "out_cng_packet_count"); + add_stat(stats->rtcp.packet_count, "rtcp_packet_count"); + add_stat(stats->rtcp.octet_count, "rtcp_octet_count"); + } } diff --git a/src/switch_rtp.c b/src/switch_rtp.c index c9f9bfa3cf..710415afdb 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -2191,6 +2191,9 @@ static switch_status_t read_rtcp_packet(switch_rtp_t *rtp_session, switch_size_t rtp_session->rtcp_fresh_frame = 1; + rtp_session->stats.rtcp.packet_count += sr->pc; + rtp_session->stats.rtcp.octet_count += sr->oc; + /* sender report */ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10,"Received a SR with %d report blocks, " \ "length in words = %d, " \