diff options
author | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-05-26 20:11:35 +0000 |
---|---|---|
committer | etxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7> | 2005-05-26 20:11:35 +0000 |
commit | e3fb558fcd013fa4f9fbc11ab8142faf04bfb92a (patch) | |
tree | 5cf894763920831c04fbb42c37e21a0ed5ee9c8d /epan/dissectors/packet-rtsp.c | |
parent | 943b95a78b6b355c2db1cfa156b6c18b140e04ab (diff) |
These 2 patches make RDT support pretty complete now:
From Martin Mathieson:
packet-rdt.c:
- register a configurable UDP port (off by default, but needed where setup traffic isn't captured)
- dissect extra 'buffer info' fields
- move bit fields into 'flags' subtrees
- misc. minor fixes and improvements (mainly formatting)
packet-rtsp.c:
- improve detection of RDT as the transport
- allow interleaved frame data to be dissected as RDT packets
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@14443 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-rtsp.c')
-rw-r--r-- | epan/dissectors/packet-rtsp.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/epan/dissectors/packet-rtsp.c b/epan/dissectors/packet-rtsp.c index 922e265079..cc6a89a2bb 100644 --- a/epan/dissectors/packet-rtsp.c +++ b/epan/dissectors/packet-rtsp.c @@ -62,6 +62,7 @@ static int hf_rtsp_X_Vig_Msisdn = -1; static dissector_handle_t sdp_handle; static dissector_handle_t rtp_handle; static dissector_handle_t rtcp_handle; +static dissector_handle_t rdt_handle; void proto_reg_handoff_rtsp(void); @@ -343,6 +344,7 @@ static const char rtsp_sps[] = "server_port="; static const char rtsp_cps[] = "client_port="; static const char rtsp_rtp[] = "rtp/"; static const char rtsp_real_rdt[] = "x-real-rdt/"; +static const char rtsp_real_tng[] = "x-pn-tng/"; /* synonym for x-real-rdt */ static const char rtsp_inter[] = "interleaved="; static void @@ -370,12 +372,13 @@ rtsp_create_conversation(packet_info *pinfo, const guchar *line_begin, tmp = buf + STRLEN_CONST(rtsp_transport); while (*tmp && isspace(*tmp)) tmp++; - + /* Work out which transport type is here */ if (strncasecmp(tmp, rtsp_rtp, strlen(rtsp_rtp)) == 0) rtp_transport = TRUE; else - if (strncasecmp(tmp, rtsp_real_rdt, strlen(rtsp_real_rdt)) == 0) + if (strncasecmp(tmp, rtsp_real_rdt, strlen(rtsp_real_rdt)) == 0 || + strncasecmp(tmp, rtsp_real_tng, strlen(rtsp_real_tng)) == 0) rdt_transport = TRUE; else { @@ -437,7 +440,7 @@ rtsp_create_conversation(packet_info *pinfo, const guchar *line_begin, data = g_mem_chunk_alloc(rtsp_vals); conversation_add_proto_data(conv, proto_rtsp, data); } - + if (rtp_transport) { if (s_data_chan < RTSP_MAX_INTERLEAVED) { @@ -449,6 +452,13 @@ rtsp_create_conversation(packet_info *pinfo, const guchar *line_begin, rtcp_handle; } } + else if (rdt_transport) + { + if (s_data_chan < RTSP_MAX_INTERLEAVED) { + data->interleaved[s_data_chan].dissector = + rdt_handle; + } + } return; } @@ -1242,4 +1252,5 @@ proto_reg_handoff_rtsp(void) sdp_handle = find_dissector("sdp"); rtp_handle = find_dissector("rtp"); rtcp_handle = find_dissector("rtcp"); + rdt_handle = find_dissector("rdt"); } |