diff options
author | Anders Broman <anders.broman@ericsson.com> | 2005-05-26 20:11:35 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2005-05-26 20:11:35 +0000 |
commit | 7f936ea1c4daa516317601e4703cd8a5d5dd97f4 (patch) | |
tree | 5cf894763920831c04fbb42c37e21a0ed5ee9c8d | |
parent | 2c672ff84027d191541ec1efbaa015d6f09ec37b (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
svn path=/trunk/; revision=14443
-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"); } |