diff options
| author | Pascal Buhler <pabuhler@cisco.com> | 2019-05-15 20:32:17 +0200 |
|---|---|---|
| committer | Pascal Buhler <pabuhler@cisco.com> | 2019-05-15 20:42:36 +0200 |
| commit | eaa8a9b025e3d827c6495a3dc424678352b53890 (patch) | |
| tree | 5596d57273e883bb04e78992abc09d8d08fad272 | |
| parent | 2b270e49881633a16095d94d80b8df97647bbeb8 (diff) | |
| download | platform_external_libsrtp2-eaa8a9b025e3d827c6495a3dc424678352b53890.tar.gz platform_external_libsrtp2-eaa8a9b025e3d827c6495a3dc424678352b53890.tar.bz2 platform_external_libsrtp2-eaa8a9b025e3d827c6495a3dc424678352b53890.zip | |
output counters of rtp_decoder
Indicate both successful decodes and errors.
| -rw-r--r-- | test/rtp_decoder.c | 16 | ||||
| -rw-r--r-- | test/rtp_decoder.h | 3 |
2 files changed, 14 insertions, 5 deletions
diff --git a/test/rtp_decoder.c b/test/rtp_decoder.c index 3b017b9..544c4f0 100644 --- a/test/rtp_decoder.c +++ b/test/rtp_decoder.c @@ -562,6 +562,9 @@ int main(int argc, char *argv[]) pcap_loop(pcap_handle, 0, rtp_decoder_handle_pkt, (u_char *)dec); + fprintf(stderr, "SRTP packets decoded: %d\n", dec->srtp_cnt); + fprintf(stderr, "Packet decode errors: %d\n", dec->error_cnt); + rtp_decoder_deinit_srtp(dec); rtp_decoder_dealloc(dec); @@ -628,6 +631,8 @@ int rtp_decoder_init(rtp_decoder_t dcdr, srtp_policy_t policy) dcdr->start_tv.tv_usec = 0; dcdr->start_tv.tv_sec = 0; dcdr->frame_nr = -1; + dcdr->error_cnt = 0; + dcdr->srtp_cnt = 0; dcdr->policy = policy; dcdr->policy.ssrc.type = ssrc_specific; return 0; @@ -656,6 +661,7 @@ void rtp_decoder_handle_pkt(u_char *arg, const u_char *bytes) { rtp_decoder_t dcdr = (rtp_decoder_t)arg; + rtp_msg_t message; int pktsize; struct timeval delta; int octets_recvd; @@ -671,7 +677,7 @@ void rtp_decoder_handle_pkt(u_char *arg, } const void *rtp_packet = bytes + dcdr->rtp_offset; - memcpy((void *)&dcdr->message, rtp_packet, hdr->caplen - dcdr->rtp_offset); + memcpy((void *)&message, rtp_packet, hdr->caplen - dcdr->rtp_offset); pktsize = hdr->caplen - dcdr->rtp_offset; octets_recvd = pktsize; @@ -680,7 +686,7 @@ void rtp_decoder_handle_pkt(u_char *arg, } /* verify rtp header */ - if (dcdr->message.header.version != 2) { + if (message.header.version != 2) { return; } if (dcdr->srtp_ctx == NULL) { @@ -689,14 +695,16 @@ void rtp_decoder_handle_pkt(u_char *arg, exit(1); } } - status = srtp_unprotect(dcdr->srtp_ctx, &dcdr->message, &octets_recvd); + status = srtp_unprotect_rtcp(dcdr->srtp_ctx, &message, &octets_recvd); if (status) { + dcdr->error_cnt++; return; } + dcdr->srtp_cnt++; timersub(&hdr->ts, &dcdr->start_tv, &delta); fprintf(stdout, "%02ld:%02ld.%06ld\n", delta.tv_sec / 60, delta.tv_sec % 60, (long)delta.tv_usec); - hexdump(&dcdr->message, octets_recvd); + hexdump(&message, octets_recvd); } void rtp_print_error(srtp_err_status_t status, char *message) diff --git a/test/rtp_decoder.h b/test/rtp_decoder.h index 4f48f36..5b02cab 100644 --- a/test/rtp_decoder.h +++ b/test/rtp_decoder.h @@ -58,7 +58,8 @@ typedef struct rtp_decoder_ctx_t { int rtp_offset; struct timeval start_tv; int frame_nr; - rtp_msg_t message; + int error_cnt; + int srtp_cnt; } rtp_decoder_ctx_t; typedef struct rtp_decoder_ctx_t *rtp_decoder_t; |
