Ethereal-dev: [Ethereal-dev] RTP Analysis: How to get raw RTP packet offset and size

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Lars Ruoff" <lars.ruoff@xxxxxxxxxxxxxxxxxx>
Date: Wed, 19 Nov 2003 14:03:41 +0100
Hi,
I'm trying to solve the problem reported by Arsen Chaloyan
(ref. http://www.ethereal.com/lists/ethereal-dev/200311/msg00346.html)
concerning the rtpdump output of RTP Analysis.
The problem is that the offset calculation for the RTP packets gets skrewed
up for packets containing padding in lower protocol layers.
In this context, i would appreciate some help in order to know the meaning
of some length fields:

what exactly are
typedef struct _frame_data {
  ...
  guint32      pkt_len;     /* Packet length */
  guint32      cap_len;     /* Amount actually captured */
  ..
} frame_data;

and
struct _rtp_info {
    ...
    guint  info_data_len;
    guint  info_payload_offset;
    guint  info_payload_len;
};

in packet-rtp.c, info_data_len is defined as
 rtp_info.info_data_len = tvb_reported_length_remaining( tvb, offset );

currently, i'm getting a pointer to the raw RTP packet by doing a
 sample.frame = cfile.pd + pinfo->fd->pkt_len - rtpinfo->info_data_len;
but this seems to be wrong when there is padding somewhere.
And what about fragmentation?
Any hints?

Lars Ruoff.