aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorTomas Kukosa <tomas.kukosa@siemens.com>2007-11-02 07:41:56 +0000
committerTomas Kukosa <tomas.kukosa@siemens.com>2007-11-02 07:41:56 +0000
commit1a83466890f90cecf1b1e0654f0dc3d0f4ff5e77 (patch)
treeaccfe49e569708f7d5dc0dfb1ee9977be2a5b93c /epan/dissectors
parent92ba89b5d13de0ff0d048f24d9bfb70b78d4e141 (diff)
setup SRTP stream for RTP/SAVP media protocol
svn path=/trunk/; revision=23336
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-sdp.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index d0d60c0583..6b9b4c6cf7 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -263,6 +263,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 port=0;
gboolean is_rtp=FALSE;
+ gboolean is_srtp=FALSE;
gboolean is_t38=FALSE;
gboolean is_msrp=FALSE;
gboolean set_rtp=FALSE;
@@ -447,6 +448,8 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(global_sdp_establish_conversation){
/* Check if media protocol is RTP */
is_rtp = (strcmp(transport_info.media_proto[n],"RTP/AVP")==0);
+ /* Check if media protocol is SRTP */
+ is_srtp = (strcmp(transport_info.media_proto[n],"RTP/SAVP")==0);
/* Check if media protocol is T38 */
is_t38 = ( (strcmp(transport_info.media_proto[n],"UDPTL")==0) || (strcmp(transport_info.media_proto[n],"udptl")==0) );
/* Check if media protocol is MSRP/TCP */
@@ -476,12 +479,18 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
set_rtp = FALSE;
- /* Add rtp and rtcp conversation, if available (overrides t38 if conversation already set) */
- if((!pinfo->fd->flags.visited) && port!=0 && is_rtp && (is_ipv4_addr || is_ipv6_addr)){
+ /* Add (s)rtp and (s)rtcp conversation, if available (overrides t38 if conversation already set) */
+ if((!pinfo->fd->flags.visited) && port!=0 && (is_rtp||is_srtp) && (is_ipv4_addr || is_ipv6_addr)){
src_addr.data=(guint8*)&ipaddr;
if(rtp_handle){
- rtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num,
- transport_info.media[n].rtp_dyn_payload);
+ if (is_srtp) {
+ struct srtp_info *dummy_srtp_info = se_alloc0(sizeof(struct srtp_info));
+ srtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num,
+ transport_info.media[n].rtp_dyn_payload, dummy_srtp_info);
+ } else {
+ rtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num,
+ transport_info.media[n].rtp_dyn_payload);
+ }
set_rtp = TRUE;
}
if(rtcp_handle){