summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-sdp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-05-19 18:42:33 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-05-19 18:42:33 +0000
commit3a11073d6b950e6a87a67996963b41a2f8e860ed (patch)
tree527a7dc887765ccbf6d69ec71c789e207ed761ff /epan/dissectors/packet-sdp.c
parentaf7304aa79849218a86d1c6a3b035b7575078ebe (diff)
downloadwireshark-3a11073d6b950e6a87a67996963b41a2f8e860ed.tar.gz
Get info about media type(Video or not) a first step towards usage in rtp statistics.
svn path=/trunk/; revision=28415
Diffstat (limited to 'epan/dissectors/packet-sdp.c')
-rw-r--r--epan/dissectors/packet-sdp.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index e7a0c47384..efefd873ff 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -204,6 +204,7 @@ typedef struct {
typedef struct {
char *connection_address;
char *connection_type;
+ char *media_type;
char *encoding_name[SDP_NO_OF_PT];
char *media_port[SDP_MAX_RTP_CHANNELS];
char *media_proto[SDP_MAX_RTP_CHANNELS];
@@ -276,6 +277,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gboolean set_rtp=FALSE;
gboolean is_ipv4_addr=FALSE;
gboolean is_ipv6_addr=FALSE;
+ gboolean is_video=FALSE;
guint32 ipaddr[4];
gint n,i;
sdp_packet_info *sdp_pi;
@@ -287,6 +289,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Initialise RTP channel info */
transport_info.connection_address=NULL;
transport_info.connection_type=NULL;
+ transport_info.media_type=NULL;
for (n=0; n < SDP_NO_OF_PT; n++){
transport_info.encoding_name[n]=NULL;
}
@@ -483,6 +486,9 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
}
+ if (strcmp(transport_info.media_type,"video")==0){
+ is_video = TRUE;
+ }
set_rtp = FALSE;
/* 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)){
@@ -490,10 +496,10 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(rtp_handle){
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,
+ srtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num, is_video,
transport_info.media[n].rtp_dyn_payload, dummy_srtp_info);
} else {
- rtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num,
+ rtp_add_address(pinfo, &src_addr, port, 0, "SDP", pinfo->fd->num, is_video,
transport_info.media[n].rtp_dyn_payload);
}
set_rtp = TRUE;
@@ -1021,6 +1027,7 @@ static void dissect_sdp_session_attribute(tvbuff_t *tvb, packet_info * pinfo, pr
}
}
+
/* Dissect media description */
static void
dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
@@ -1050,6 +1057,8 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
proto_tree_add_item(sdp_media_tree, hf_media_media, tvb, offset, tokenlen,
FALSE);
+ transport_info->media_type = (char*)tvb_get_ephemeral_string(tvb, offset, tokenlen);
+
offset = next_offset + 1;
next_offset = tvb_find_guint8(tvb,offset, -1, ' ');