diff options
author | Guy Harris <guy@alum.mit.edu> | 2003-11-20 23:34:31 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2003-11-20 23:34:31 +0000 |
commit | 9687947b5ff4edcfde5c2a04e7bacb74e67d7609 (patch) | |
tree | 20877cc6d4d81c8aa37c92cd3a4ed5bfb1b5aeef /packet-rtp.h | |
parent | bb0b226ca63e88e35e0eb86e1823f864693fc642 (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.h | 31 |
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 ); |