aboutsummaryrefslogtreecommitdiffstats
path: root/packet-rtp.h
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-11-20 23:34:31 +0000
committerGuy Harris <guy@alum.mit.edu>2003-11-20 23:34:31 +0000
commit9687947b5ff4edcfde5c2a04e7bacb74e67d7609 (patch)
tree20877cc6d4d81c8aa37c92cd3a4ed5bfb1b5aeef /packet-rtp.h
parentbb0b226ca63e88e35e0eb86e1823f864693fc642 (diff)
From Lars Roland:
- added a pointer to raw rtp data to _rtp_info that can be used by taps; - RTP packets are passed to the tap queue only if they are not error packets (so that you don't need to filter out ICMP packets) - use that pointer in rtp_stream, so it handles packets with padding, and should handle RTP packets fragmented across lower-level packets - moved rtp_stream from tap sources to normal files (prevents on-start-up registration of the rtp_stream tap listener) - rtp_stream tap gets registered/unregistered with the "RTP Streams" dialog box i.e. the tap is registered as long as the dialog box is open. Alternatively, it is de-/registered on demand if RTP Analysis is called directly on a packet. - rtp_stream tap listener no longer uses a filter in dissection ` and does not need to have a proto tree being built. (performance increase) - fixed: RTP Streams list will get updated in real time if the dialog box is open while a redissection takes place. svn path=/trunk/; revision=9051
Diffstat (limited to 'packet-rtp.h')
-rw-r--r--packet-rtp.h31
1 files changed, 20 insertions, 11 deletions
diff --git a/packet-rtp.h b/packet-rtp.h
index bd59720fcd..2eaa495842 100644
--- a/packet-rtp.h
+++ b/packet-rtp.h
@@ -3,7 +3,7 @@
* Routines for RTP dissection
* RTP = Real time Transport Protocol
*
- * $Id: packet-rtp.h,v 1.9 2003/05/20 21:22:58 guy Exp $
+ * $Id: packet-rtp.h,v 1.10 2003/11/20 23:34:30 guy Exp $
*
* Copyright 2000, Philips Electronics N.V.
* Written by Andreas Sikkema <andreas.sikkema@philips.com>
@@ -28,16 +28,25 @@
*/
struct _rtp_info {
- gboolean info_padding_set;
- gboolean info_marker_set;
- unsigned int info_payload_type;
- unsigned int info_padding_count;
- guint16 info_seq_num;
- guint32 info_timestamp;
- guint32 info_sync_src;
- guint info_data_len;
- guint info_payload_offset;
- guint info_payload_len;
+ gboolean info_padding_set;
+ gboolean info_marker_set;
+ unsigned int info_payload_type;
+ unsigned int info_padding_count;
+ guint16 info_seq_num;
+ guint32 info_timestamp;
+ guint32 info_sync_src;
+ guint info_data_len; /* length of raw rtp data as reported */
+ guint info_payload_offset; /* start of payload relative to info_data */
+ guint info_payload_len; /* length of payload (incl padding) */
+ const guint8* info_data; /* pointer to raw rtp data */
+ /*
+ * info_data: pointer to raw rtp data = header + payload incl. padding.
+ * That should be safe because the "epan_dissect_t" constructed for the packet
+ * has not yet been freed when the taps are called.
+ * (destroying the "epan_dissect_t" will end up freeing all the tvbuffs
+ * and hence invalidating pointers to their data).
+ * See "add_packet_to_packet_list()" for details.
+ */
};
void rtp_add_address ( packet_info *pinfo, const unsigned char* ip_addr, int prt );