diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-11-02 07:41:56 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2007-11-02 07:41:56 +0000 |
commit | 1a83466890f90cecf1b1e0654f0dc3d0f4ff5e77 (patch) | |
tree | accfe49e569708f7d5dc0dfb1ee9977be2a5b93c /epan/dissectors | |
parent | 92ba89b5d13de0ff0d048f24d9bfb70b78d4e141 (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.c | 17 |
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){ |