1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
/* tap-rtp-analysis.h
* RTP analysis addition for Wireshark
*
* Copyright 2003, Alcatel Business Systems
* By Lars Ruoff <lars.ruoff@gmx.net>
*
* based on tap_rtp.c
* Copyright 2003, Iskratel, Ltd, Kranj
* By Miha Jemec <m.jemec@iskratel.si>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __TAP_RTP_ANALYSIS_H__
#define __TAP_RTP_ANALYSIS_H__
#include <epan/address.h>
#include <epan/packet_info.h>
/** @file
* ???
* @todo what's this?
*/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
void rtp_analysis(
address *ip_src_fwd,
guint32 port_src_fwd,
address *ip_dst_fwd,
guint32 port_dst_fwd,
guint32 ssrc_fwd,
address *ip_src_rev,
guint32 port_src_rev,
address *ip_dst_rev,
guint32 port_dst_rev,
guint32 ssrc_rev
);
/****************************************************************************/
/* structure that holds the information about the forward and reversed direction */
typedef struct _bw_history_item {
double time;
guint32 bytes;
} bw_history_item;
#define BUFF_BW 300
typedef struct _tap_rtp_stat_t {
gboolean first_packet; /**< do not use in code that is called after rtp_packet_analyse */
/* use (flags & STAT_FLAG_FIRST) instead */
/* all of the following fields will be initialized after
* rtp_packet_analyse has been called
*/
address first_packet_mac_addr; /**< MAC address of first packet, used to determine duplicates due to mirroring */
guint32 flags; /* see STAT_FLAG-defines below */
guint16 seq_num;
guint32 timestamp;
guint32 first_timestamp;
guint32 delta_timestamp;
double bandwidth;
bw_history_item bw_history[BUFF_BW];
guint16 bw_start_index;
guint16 bw_index;
guint32 total_bytes;
guint32 clock_rate;
double delta;
double jitter;
double diff;
double skew;
double sumt;
double sumTS;
double sumt2;
double sumtTS;
double time; /**< Unit is ms */
double start_time; /**< Unit is ms */
double lastnominaltime;
double max_delta;
double max_jitter;
double max_skew;
double mean_jitter;
guint32 max_nr;
guint16 start_seq_nr;
guint16 stop_seq_nr;
guint32 total_nr;
guint32 sequence;
gboolean under;
gint cycles;
guint16 pt;
int reg_pt;
} tap_rtp_stat_t;
#define PT_UNDEFINED -1
/* status flags for the flags parameter in tap_rtp_stat_t */
#define STAT_FLAG_FIRST 0x001
#define STAT_FLAG_MARKER 0x002
#define STAT_FLAG_WRONG_SEQ 0x004
#define STAT_FLAG_PT_CHANGE 0x008
#define STAT_FLAG_PT_CN 0x010
#define STAT_FLAG_FOLLOW_PT_CN 0x020
#define STAT_FLAG_REG_PT_CHANGE 0x040
#define STAT_FLAG_WRONG_TIMESTAMP 0x080
#define STAT_FLAG_PT_T_EVENT 0x100
#define STAT_FLAG_DUP_PKT 0x200
/* forward */
struct _rtp_info;
/* function for analysing an RTP packet. Called from rtp_analysis and rtp_streams */
extern void rtp_packet_analyse(tap_rtp_stat_t *statinfo,
packet_info *pinfo,
const struct _rtp_info *rtpinfo);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __TAP_RTP_ANALYSIS_H__ */
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/
|