diff options
author | kukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-11-02 07:41:56 +0000 |
---|---|---|
committer | kukosa <kukosa@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-11-02 07:41:56 +0000 |
commit | 443272683b23927e4812007beb405a624c6f4977 (patch) | |
tree | accfe49e569708f7d5dc0dfb1ee9977be2a5b93c /epan/dissectors/packet-sdp.c | |
parent | 3ab509def42ae37df6624a49e73fb1caad0aa51f (diff) |
setup SRTP stream for RTP/SAVP media protocol
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@23336 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-sdp.c')
-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){ |