aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Buhler <pabuhler@cisco.com>2019-05-15 20:32:17 +0200
committerPascal Buhler <pabuhler@cisco.com>2019-05-15 20:42:36 +0200
commiteaa8a9b025e3d827c6495a3dc424678352b53890 (patch)
tree5596d57273e883bb04e78992abc09d8d08fad272
parent2b270e49881633a16095d94d80b8df97647bbeb8 (diff)
downloadplatform_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.c16
-rw-r--r--test/rtp_decoder.h3
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;