2005-02-19 22:43:38 +00:00
|
|
|
/* packet-rdt.c
|
|
|
|
*
|
|
|
|
* Routines for RDT dissection
|
|
|
|
* RDT = Real Data Transport
|
|
|
|
*
|
|
|
|
* Copyright 2005
|
2005-05-16 06:16:45 +00:00
|
|
|
* Written by Martin Mathieson and Tom Marshall
|
2005-02-19 22:43:38 +00:00
|
|
|
*
|
2005-02-20 01:58:29 +00:00
|
|
|
* $Id$
|
2005-02-19 22:43:38 +00:00
|
|
|
*
|
2006-05-21 04:49:01 +00:00
|
|
|
* Wireshark - Network traffic analyzer
|
|
|
|
* By Gerald Combs <gerald@wireshark.org>
|
2005-02-19 22:43:38 +00:00
|
|
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
2005-03-06 01:15:29 +00:00
|
|
|
/* Information sources:
|
2005-05-16 06:16:45 +00:00
|
|
|
* helixcommunity.org sources, in particular
|
|
|
|
* server/protocol/transport/rdt/pub/tngpkt.pm
|
2005-03-06 01:15:29 +00:00
|
|
|
*/
|
2005-02-19 22:43:38 +00:00
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <glib.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
#include <epan/packet.h>
|
2005-02-19 22:43:38 +00:00
|
|
|
#include <epan/conversation.h>
|
|
|
|
#include <epan/prefs.h>
|
2005-08-12 21:29:06 +00:00
|
|
|
#include <epan/emem.h>
|
2008-03-01 17:23:39 +00:00
|
|
|
#include <epan/strutil.h>
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
#include "packet-rdt.h"
|
|
|
|
|
2005-02-19 22:43:38 +00:00
|
|
|
static dissector_handle_t rdt_handle;
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint proto_rdt = -1;
|
|
|
|
|
|
|
|
/* Packet fields */
|
|
|
|
static gint hf_rdt_packet = -1;
|
|
|
|
|
|
|
|
/* flags1: shared */
|
|
|
|
static gint hf_rdt_len_included = -1;
|
|
|
|
|
|
|
|
/* flags1: data packet */
|
2005-05-27 18:35:19 +00:00
|
|
|
static gint hf_rdt_data_flags1 = -1;
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint hf_rdt_data_need_reliable = -1;
|
|
|
|
static gint hf_rdt_data_stream_id = -1;
|
|
|
|
static gint hf_rdt_data_is_reliable = -1;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
/* flags2: data packet */
|
|
|
|
static gint hf_rdt_data_flags2 = -1;
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint hf_rdt_data_backtoback = -1;
|
|
|
|
static gint hf_rdt_data_slowdata = -1;
|
|
|
|
static gint hf_rdt_data_asmrule = -1;
|
|
|
|
|
|
|
|
/* flags1: asm action packet */
|
2005-05-27 18:35:19 +00:00
|
|
|
static gint hf_rdt_aact_flags = -1;
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint hf_rdt_aact_stream_id = -1;
|
|
|
|
|
2005-05-27 18:35:19 +00:00
|
|
|
/* flags1: ack packet */
|
|
|
|
static gint hf_rdt_ack_flags = -1;
|
|
|
|
static gint hf_rdt_ack_lost_high = -1;
|
|
|
|
|
|
|
|
/* flags1: latency report packet */
|
|
|
|
static gint hf_rdt_latency_report_flags = -1;
|
|
|
|
|
|
|
|
/* flags1: bandwidth report packet */
|
|
|
|
static gint hf_rdt_bandwidth_report_flags = -1;
|
|
|
|
|
|
|
|
/* flags1: stream end packet */
|
|
|
|
static gint hf_rdt_stre_flags = -1;
|
|
|
|
static gint hf_rdt_stre_need_reliable = -1;
|
|
|
|
static gint hf_rdt_stre_stream_id = -1;
|
|
|
|
static gint hf_rdt_stre_packet_sent = -1;
|
|
|
|
static gint hf_rdt_stre_ext_flag = -1;
|
|
|
|
|
|
|
|
static gint hf_rdt_rtt_request_flags = -1;
|
|
|
|
static gint hf_rdt_rtt_response_flags = -1;
|
|
|
|
static gint hf_rdt_congestion_flags = -1;
|
|
|
|
static gint hf_rdt_report_flags = -1;
|
|
|
|
static gint hf_rdt_tirq_flags = -1;
|
|
|
|
static gint hf_rdt_tirp_flags = -1;
|
|
|
|
static gint hf_rdt_bw_probing_flags = -1;
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Octets 1-2: sequence number or packet type */
|
|
|
|
static gint hf_rdt_sequence_number = -1;
|
|
|
|
static gint hf_rdt_packet_type = -1;
|
|
|
|
|
|
|
|
/* Only present if length_included */
|
|
|
|
static gint hf_rdt_packet_length = -1;
|
|
|
|
|
|
|
|
/* General shared fields */
|
|
|
|
static gint hf_rdt_timestamp = -1;
|
|
|
|
static gint hf_rdt_stream_id_ex = -1;
|
|
|
|
static gint hf_rdt_asmrule_ex = -1;
|
|
|
|
static gint hf_rdt_total_reliable = -1;
|
|
|
|
static gint hf_rdt_data = -1;
|
|
|
|
|
|
|
|
/* Special use fields */
|
|
|
|
static gint hf_rdt_aact_reliable_seqno = -1;
|
|
|
|
static gint hf_rdt_brpt_interval = -1;
|
|
|
|
static gint hf_rdt_brpt_bandwidth = -1;
|
|
|
|
static gint hf_rdt_brpt_sequence = -1;
|
|
|
|
static gint hf_rdt_rtrp_ts_sec = -1;
|
|
|
|
static gint hf_rdt_rtrp_ts_usec = -1;
|
|
|
|
static gint hf_rdt_cong_xmit_mult = -1;
|
|
|
|
static gint hf_rdt_cong_recv_mult = -1;
|
|
|
|
static gint hf_rdt_stre_seqno = -1;
|
|
|
|
static gint hf_rdt_stre_dummy_flags1 = -1;
|
|
|
|
static gint hf_rdt_stre_dummy_type = -1;
|
|
|
|
static gint hf_rdt_stre_reason_code = -1;
|
|
|
|
static gint hf_rdt_lrpt_server_out_time = -1;
|
|
|
|
static gint hf_rdt_tirq_request_rtt_info = -1;
|
|
|
|
static gint hf_rdt_tirq_request_buffer_info = -1;
|
|
|
|
static gint hf_rdt_tirq_request_time_msec = -1;
|
|
|
|
static gint hf_rdt_tirp_has_rtt_info = -1;
|
|
|
|
static gint hf_rdt_tirp_is_delayed = -1;
|
|
|
|
static gint hf_rdt_tirp_has_buffer_info = -1;
|
2005-05-27 18:35:19 +00:00
|
|
|
static gint hf_rdt_tirp_request_time_msec = -1;
|
|
|
|
static gint hf_rdt_tirp_response_time_msec = -1;
|
|
|
|
static gint hf_rdt_tirp_buffer_info = -1;
|
|
|
|
static gint hf_rdt_tirp_buffer_info_count = -1;
|
|
|
|
static gint hf_rdt_tirp_buffer_info_stream_id = -1;
|
|
|
|
static gint hf_rdt_tirp_buffer_info_lowest_timestamp = -1;
|
|
|
|
static gint hf_rdt_tirp_buffer_info_highest_timestamp = -1;
|
|
|
|
static gint hf_rdt_tirp_buffer_info_bytes_buffered = -1;
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint hf_rdt_bwpp_seqno = -1;
|
|
|
|
static gint hf_rdt_unk_flags1 = -1;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
|
|
|
/* RDT setup fields */
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint hf_rdt_setup = -1;
|
|
|
|
static gint hf_rdt_setup_frame = -1;
|
|
|
|
static gint hf_rdt_setup_method = -1;
|
2005-09-01 05:34:52 +00:00
|
|
|
static gint hf_rdt_feature_level = -1;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
|
|
|
/* RDT fields defining a sub tree */
|
2005-05-16 06:16:45 +00:00
|
|
|
static gint ett_rdt = -1;
|
|
|
|
static gint ett_rdt_packet = -1;
|
|
|
|
static gint ett_rdt_setup = -1;
|
2005-05-27 18:35:19 +00:00
|
|
|
static gint ett_rdt_data_flags1 = -1;
|
|
|
|
static gint ett_rdt_data_flags2 = -1;
|
|
|
|
static gint ett_rdt_aact_flags = -1;
|
|
|
|
static gint ett_rdt_ack_flags = -1;
|
|
|
|
static gint ett_rdt_latency_report_flags = -1;
|
|
|
|
static gint ett_rdt_bandwidth_report_flags = -1;
|
|
|
|
static gint ett_rdt_stre_flags = -1;
|
|
|
|
static gint ett_rdt_rtt_request_flags = -1;
|
|
|
|
static gint ett_rdt_rtt_response_flags = -1;
|
|
|
|
static gint ett_rdt_congestion_flags = -1;
|
|
|
|
static gint ett_rdt_report_flags = -1;
|
|
|
|
static gint ett_rdt_tirq_flags = -1;
|
|
|
|
static gint ett_rdt_tirp_flags = -1;
|
|
|
|
static gint ett_rdt_tirp_buffer_info = -1;
|
|
|
|
static gint ett_rdt_bw_probing_flags = -1;
|
|
|
|
|
|
|
|
/* Port preference settings */
|
|
|
|
static gboolean global_rdt_register_udp_port = FALSE;
|
2005-07-09 00:53:17 +00:00
|
|
|
static guint global_rdt_udp_port = 6970;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
2006-08-01 17:20:13 +00:00
|
|
|
void proto_register_rdt(void);
|
2005-05-27 18:35:19 +00:00
|
|
|
void proto_reg_handoff_rdt(void);
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Main dissection function */
|
2005-02-19 22:43:38 +00:00
|
|
|
static void dissect_rdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Parse individual packet types */
|
|
|
|
static guint dissect_rdt_data_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_asm_action_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_bandwidth_report_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_ack_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_rtt_request_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_rtt_response_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_congestion_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_stream_end_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_report_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_latency_report_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_transport_info_request_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_transport_info_response_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_bw_probing_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
static guint dissect_rdt_unknown_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset);
|
|
|
|
|
2005-02-19 22:43:38 +00:00
|
|
|
static void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
|
|
|
|
|
|
|
|
/* Preferences bool to control whether or not setup info should be shown */
|
|
|
|
static gboolean global_rdt_show_setup_info = TRUE;
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Packet types */
|
|
|
|
#define RDT_ASMACTIION_PACKET 0xff00
|
|
|
|
#define RDT_BANDWIDTHREPORT_PACKET 0xff01
|
|
|
|
#define RDT_ACK_PACKET 0xff02
|
|
|
|
#define RDT_RTTREQUEST_PACKET 0xff03
|
|
|
|
#define RDT_RTTRESPONSE_PACKET 0xff04
|
|
|
|
#define RDT_CONGESTION_PACKET 0xff05
|
|
|
|
#define RDT_STREAMEND_PACKET 0xff06
|
|
|
|
#define RDT_REPORT_PACKET 0xff07
|
|
|
|
#define RDT_LATENCYREPORT_PACKET 0xff08
|
|
|
|
#define RDT_TRANSPORTINFO_PACKET 0xff09
|
|
|
|
#define RDT_TRANSPORTINFORESPONSE_PACKET 0xff0a
|
|
|
|
#define RDT_BWPROBING_PACKET 0xff0b
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
static const value_string packet_type_vals[] =
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
{ RDT_ASMACTIION_PACKET, "Asm action" },
|
2008-12-17 00:08:38 +00:00
|
|
|
{ RDT_BANDWIDTHREPORT_PACKET, "Bandwidth report" },
|
2005-05-16 06:16:45 +00:00
|
|
|
{ RDT_ACK_PACKET, "Ack" },
|
|
|
|
{ RDT_RTTREQUEST_PACKET, "RTT request" },
|
|
|
|
{ RDT_RTTRESPONSE_PACKET, "RTT response" },
|
|
|
|
{ RDT_CONGESTION_PACKET, "Congestion" },
|
|
|
|
{ RDT_STREAMEND_PACKET, "Stream end" },
|
|
|
|
{ RDT_REPORT_PACKET, "Report" },
|
|
|
|
{ RDT_LATENCYREPORT_PACKET, "Latency report" },
|
|
|
|
{ RDT_TRANSPORTINFO_PACKET, "Transport info" },
|
|
|
|
{ RDT_TRANSPORTINFORESPONSE_PACKET, "Transport info response" },
|
|
|
|
{ RDT_BWPROBING_PACKET, "BW probing" },
|
|
|
|
{ 0, NULL }
|
2005-02-19 22:43:38 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Set up an RDT conversation */
|
|
|
|
void rdt_add_address(packet_info *pinfo,
|
|
|
|
address *addr, int port,
|
|
|
|
int other_port,
|
2005-09-01 05:34:52 +00:00
|
|
|
const gchar *setup_method,
|
|
|
|
gint rdt_feature_level)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
|
|
|
address null_addr;
|
|
|
|
conversation_t* p_conv;
|
2010-01-22 13:56:19 +00:00
|
|
|
struct _rdt_conversation_info *p_conv_data;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* If this isn't the first time this packet has been processed,
|
|
|
|
we've already done this work, so we don't need to do it
|
|
|
|
again. */
|
2005-02-19 22:43:38 +00:00
|
|
|
if (pinfo->fd->flags.visited)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
SET_ADDRESS(&null_addr, AT_NONE, 0, NULL);
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Check if the ip address and port combination is not already registered
|
|
|
|
as a conversation. */
|
2005-09-01 05:34:52 +00:00
|
|
|
p_conv = find_conversation(pinfo->fd->num, addr, &null_addr, PT_UDP, port, other_port,
|
2005-02-19 22:43:38 +00:00
|
|
|
NO_ADDR_B | (!other_port ? NO_PORT_B : 0));
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* If not, create a new conversation. */
|
2005-09-01 05:34:52 +00:00
|
|
|
if ( !p_conv || p_conv->setup_frame != pinfo->fd->num)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-09-01 05:34:52 +00:00
|
|
|
p_conv = conversation_new(pinfo->fd->num, addr, &null_addr, PT_UDP,
|
2005-02-19 22:43:38 +00:00
|
|
|
(guint32)port, (guint32)other_port,
|
|
|
|
NO_ADDR2 | (!other_port ? NO_PORT2 : 0));
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Set dissector */
|
|
|
|
conversation_set_dissector(p_conv, rdt_handle);
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Check if the conversation has data associated with it. */
|
2005-02-19 22:43:38 +00:00
|
|
|
p_conv_data = conversation_get_proto_data(p_conv, proto_rdt);
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* If not, add a new data item. */
|
2005-02-19 22:43:38 +00:00
|
|
|
if (!p_conv_data)
|
|
|
|
{
|
|
|
|
/* Create conversation data */
|
2005-08-12 21:29:06 +00:00
|
|
|
p_conv_data = se_alloc(sizeof(struct _rdt_conversation_info));
|
2005-02-19 22:43:38 +00:00
|
|
|
conversation_add_proto_data(p_conv, proto_rdt, p_conv_data);
|
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Update the conversation data. */
|
2008-03-01 17:23:39 +00:00
|
|
|
g_strlcpy(p_conv_data->method, setup_method, MAX_RDT_SETUP_METHOD_SIZE);
|
2005-09-01 05:34:52 +00:00
|
|
|
p_conv_data->frame_number = pinfo->fd->num;
|
|
|
|
p_conv_data->feature_level = rdt_feature_level;
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/****************************************************************************/
|
|
|
|
/* Main dissection function */
|
|
|
|
/****************************************************************************/
|
|
|
|
static void dissect_rdt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
guint previous_offset = 0;
|
|
|
|
gint offset = 0;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_item *ti;
|
2005-02-19 22:43:38 +00:00
|
|
|
proto_tree *rdt_tree = NULL;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *rdt_packet_tree;
|
2005-05-16 06:16:45 +00:00
|
|
|
guint16 packet_type;
|
|
|
|
|
2005-09-01 05:34:52 +00:00
|
|
|
/* Set/clear columns */
|
2009-08-09 07:59:51 +00:00
|
|
|
col_set_str(pinfo->cinfo, COL_PROTOCOL, "RDT");
|
2009-08-09 08:14:59 +00:00
|
|
|
col_clear(pinfo->cinfo, COL_INFO);
|
2005-02-19 22:43:38 +00:00
|
|
|
|
|
|
|
/* Create RDT protocol tree */
|
2005-05-16 06:16:45 +00:00
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_item(tree, proto_rdt, tvb, offset, -1, FALSE);
|
|
|
|
rdt_tree = proto_item_add_subtree(ti, ett_rdt);
|
|
|
|
}
|
2005-02-19 22:43:38 +00:00
|
|
|
|
|
|
|
/* Conversation setup info */
|
|
|
|
if (global_rdt_show_setup_info)
|
|
|
|
{
|
|
|
|
show_setup_info(tvb, pinfo, rdt_tree);
|
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Parse all RDT packets found in the frame */
|
|
|
|
while (offset != -1 && tvb_length_remaining(tvb, offset))
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-27 18:35:19 +00:00
|
|
|
/* Every packet type should have at least 3 bytes */
|
|
|
|
tvb_ensure_bytes_exist(tvb, offset, 3);
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* 2nd & 3rd bytes determine packet type */
|
|
|
|
packet_type = tvb_get_ntohs(tvb, offset+1);
|
|
|
|
|
|
|
|
/* Add a tree for the next individual packet */
|
|
|
|
ti = proto_tree_add_string_format(rdt_tree, hf_rdt_packet, tvb, offset, -1,
|
|
|
|
"",
|
|
|
|
"RDT packet (%s)",
|
|
|
|
packet_type < 0xff00 ? "Data" :
|
|
|
|
val_to_str(packet_type, packet_type_vals, "Unknown"));
|
|
|
|
rdt_packet_tree = proto_item_add_subtree(ti, ett_rdt_packet);
|
|
|
|
|
|
|
|
/* Dissect the details of the next packet in this frame */
|
|
|
|
if (packet_type < 0xff00)
|
|
|
|
{
|
|
|
|
offset = dissect_rdt_data_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
}
|
|
|
|
else
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
switch (packet_type)
|
|
|
|
{
|
|
|
|
case RDT_ASMACTIION_PACKET:
|
|
|
|
offset = dissect_rdt_asm_action_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_BANDWIDTHREPORT_PACKET:
|
|
|
|
offset = dissect_rdt_bandwidth_report_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_ACK_PACKET:
|
|
|
|
offset = dissect_rdt_ack_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_RTTREQUEST_PACKET:
|
|
|
|
offset = dissect_rdt_rtt_request_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_RTTRESPONSE_PACKET:
|
|
|
|
offset = dissect_rdt_rtt_response_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_CONGESTION_PACKET:
|
|
|
|
offset = dissect_rdt_congestion_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_STREAMEND_PACKET:
|
|
|
|
offset = dissect_rdt_stream_end_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_REPORT_PACKET:
|
|
|
|
offset = dissect_rdt_report_packet(tvb, pinfo, rdt_packet_tree, offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
break;
|
2005-05-16 06:16:45 +00:00
|
|
|
case RDT_LATENCYREPORT_PACKET:
|
|
|
|
offset = dissect_rdt_latency_report_packet(tvb, pinfo, rdt_packet_tree, offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
break;
|
2005-05-16 06:16:45 +00:00
|
|
|
case RDT_TRANSPORTINFO_PACKET:
|
|
|
|
offset = dissect_rdt_transport_info_request_packet(tvb, pinfo, rdt_packet_tree, offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
break;
|
2005-05-16 06:16:45 +00:00
|
|
|
case RDT_TRANSPORTINFORESPONSE_PACKET:
|
|
|
|
offset = dissect_rdt_transport_info_response_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
case RDT_BWPROBING_PACKET:
|
|
|
|
offset = dissect_rdt_bw_probing_packet(tvb, pinfo, rdt_packet_tree, offset);
|
|
|
|
break;
|
|
|
|
|
2005-02-19 22:43:38 +00:00
|
|
|
default:
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Unknown control packet */
|
|
|
|
offset = dissect_rdt_unknown_control(tvb, pinfo, rdt_packet_tree, offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
break;
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Select correct number of bytes for the tree showing this packet */
|
|
|
|
if (offset != -1)
|
|
|
|
{
|
|
|
|
proto_item_set_len(rdt_packet_tree, offset-previous_offset);
|
|
|
|
}
|
|
|
|
previous_offset = offset;
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************/
|
|
|
|
/* Functions to dissect individual packet types */
|
|
|
|
/************************************************/
|
|
|
|
|
|
|
|
/* Dissect a data packet */
|
|
|
|
guint dissect_rdt_data_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
|
|
|
guint8 need_reliable_flag;
|
|
|
|
guint16 stream_id;
|
|
|
|
guint16 sequence_number;
|
2005-05-27 18:35:19 +00:00
|
|
|
guint8 is_reliable_flag;
|
2005-05-16 06:16:45 +00:00
|
|
|
guint8 flags2;
|
|
|
|
guint32 timestamp;
|
|
|
|
guint16 asm_rule_number;
|
2005-05-27 18:35:19 +00:00
|
|
|
guint8 back_to_back;
|
|
|
|
guint8 slow_data;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree1;
|
|
|
|
proto_tree *flags_tree2;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
|
|
|
need_reliable_flag = (flags1 & 0x40) >> 6;
|
2005-05-16 06:16:45 +00:00
|
|
|
stream_id = (flags1 & 0x3e) >> 1;
|
2005-05-27 18:35:19 +00:00
|
|
|
is_reliable_flag = flags1 & 0x01;
|
|
|
|
|
|
|
|
/* Create subtree for flags1 fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_data_flags1, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u, need-reliable=%u, stream-id=%u, is-reliable=%u",
|
|
|
|
length_included_flag,
|
|
|
|
need_reliable_flag,
|
|
|
|
stream_id,
|
|
|
|
is_reliable_flag);
|
|
|
|
flags_tree1 = proto_item_add_subtree(ti, ett_rdt_data_flags1);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree1, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree1, hf_rdt_data_need_reliable, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree1, hf_rdt_data_stream_id, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree1, hf_rdt_data_is_reliable, tvb, offset, 1, FALSE);
|
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
2005-02-19 22:43:38 +00:00
|
|
|
/* Sequence number */
|
|
|
|
sequence_number = tvb_get_ntohs(tvb, offset);
|
2005-05-16 06:16:45 +00:00
|
|
|
proto_tree_add_item(tree, hf_rdt_sequence_number, tvb, offset, 2, FALSE);
|
2005-02-19 22:43:38 +00:00
|
|
|
offset += 2;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
|
|
|
{
|
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
2005-05-27 18:35:19 +00:00
|
|
|
/* More flags */
|
2005-05-16 06:16:45 +00:00
|
|
|
flags2 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
back_to_back = (flags2 & 0x80) >> 7;
|
|
|
|
slow_data = (flags2 & 0x40) >> 6;
|
2005-05-16 06:16:45 +00:00
|
|
|
asm_rule_number = flags2 & 0x3f;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* Create subtree for flags2 fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_data_flags2, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Back-to-back=%u, slow-data=%u, asm-rule=%u",
|
|
|
|
back_to_back,
|
|
|
|
slow_data,
|
|
|
|
asm_rule_number);
|
|
|
|
|
|
|
|
/* Create subtree for flags and add fields */
|
|
|
|
flags_tree2 = proto_item_add_subtree(ti, ett_rdt_data_flags2);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree2, hf_rdt_data_backtoback, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree2, hf_rdt_data_slowdata, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree2, hf_rdt_data_asmrule, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Timestamp */
|
|
|
|
timestamp = tvb_get_ntohl(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_timestamp, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
|
|
|
/* Stream ID expansion */
|
|
|
|
if (stream_id == 31)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
stream_id = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stream_id_ex, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Total reliable */
|
|
|
|
if (need_reliable_flag)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
proto_tree_add_item(tree, hf_rdt_total_reliable, tvb, offset, 2, FALSE);
|
2005-02-19 22:43:38 +00:00
|
|
|
offset += 2;
|
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Asm rule number */
|
|
|
|
if (asm_rule_number == 63)
|
|
|
|
{
|
|
|
|
asm_rule_number = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_asmrule_ex, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
}
|
|
|
|
|
2009-01-08 07:32:22 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO,
|
2005-09-01 05:34:52 +00:00
|
|
|
"DATA: stream-id=%02u asm-rule=%02u seq=%05u ts=%05u ",
|
2005-05-27 18:35:19 +00:00
|
|
|
stream_id, asm_rule_number, sequence_number, timestamp);
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* The remaining data is unparsed. */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_data, tvb, offset, -1, FALSE);
|
|
|
|
offset += tvb_length_remaining(tvb, offset);
|
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return start_offset + packet_length;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an asm-action packet */
|
|
|
|
guint dissect_rdt_asm_action_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
|
|
|
guint16 stream_id;
|
|
|
|
guint16 rel_seqno;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
2005-05-16 06:16:45 +00:00
|
|
|
stream_id = (flags1 & 0x7c) >> 2;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_item(tree, proto_rdt, tvb, offset, -1, FALSE);
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_aact_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u, stream_id=%u",
|
|
|
|
length_included_flag,
|
|
|
|
stream_id);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_aact_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_aact_stream_id, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-02-19 22:43:38 +00:00
|
|
|
offset++;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
rel_seqno = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_aact_reliable_seqno, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
|
|
|
{
|
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Stream ID expansion */
|
|
|
|
if (stream_id == 31)
|
|
|
|
{
|
|
|
|
stream_id = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stream_id_ex, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
}
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2009-01-08 07:32:22 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO,
|
2005-09-01 05:34:52 +00:00
|
|
|
"ASM-ACTION: stream-id=%02u rel-seqno=%05u ",
|
2005-05-16 06:16:45 +00:00
|
|
|
stream_id, rel_seqno);
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* The remaining data is unparsed. */
|
2005-05-16 06:16:45 +00:00
|
|
|
proto_tree_add_item(tree, hf_rdt_data, tvb, offset, -1, FALSE);
|
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return start_offset + packet_length;
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Dissect an bandwidth-report packet */
|
|
|
|
guint dissect_rdt_bandwidth_report_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_bandwidth_report_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u",
|
|
|
|
length_included_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_bandwidth_report_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
|
|
|
{
|
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
proto_tree_add_item(tree, hf_rdt_brpt_interval, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_brpt_bandwidth, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_brpt_sequence, tvb, offset, 1, FALSE);
|
|
|
|
offset += 1;
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "BANDWIDTH-REPORT: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return start_offset + packet_length;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an ack packet */
|
|
|
|
guint dissect_rdt_ack_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
2005-05-27 18:35:19 +00:00
|
|
|
guint8 lost_high_flag;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
|
|
|
lost_high_flag = (flags1 & 0x40) >> 6;
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_ack_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u, lost-high=%u",
|
|
|
|
length_included_flag,
|
|
|
|
lost_high_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_ack_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_ack_lost_high, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* XXX: The remaining data is unparsed. */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_data, tvb, offset, -1, FALSE);
|
|
|
|
|
2009-01-08 07:32:22 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-09-01 05:34:52 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, "ACK: lh=%u ", lost_high_flag);
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return start_offset + packet_length;
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Dissect an att-request packet */
|
|
|
|
guint dissect_rdt_rtt_request_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint8 flags1;
|
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "RTT-REQUEST: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
2005-02-19 22:43:38 +00:00
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
/* Dissect an att-response packet */
|
|
|
|
guint dissect_rdt_rtt_response_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2005-05-16 06:16:45 +00:00
|
|
|
guint8 flags1;
|
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
proto_tree_add_item(tree, hf_rdt_rtrp_ts_sec, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_rtrp_ts_usec, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "RTT-RESPONSE: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an congestion packet */
|
|
|
|
guint dissect_rdt_congestion_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint8 flags1;
|
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
proto_tree_add_item(tree, hf_rdt_cong_xmit_mult, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_cong_recv_mult, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "CONGESTION: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an stream-end packet */
|
|
|
|
guint dissect_rdt_stream_end_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 need_reliable;
|
|
|
|
guint16 stream_id;
|
|
|
|
guint8 packet_sent;
|
|
|
|
guint8 ext_flag;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
need_reliable = (flags1 & 0x80) >> 7;
|
2005-05-16 06:16:45 +00:00
|
|
|
stream_id = (flags1 & 0x7c) >> 2;
|
2005-05-27 18:35:19 +00:00
|
|
|
packet_sent = (flags1 & 0x2) >> 1;
|
2005-05-16 06:16:45 +00:00
|
|
|
ext_flag = flags1 & 0x1;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_stre_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Need-reliable=%u, stream-id=%u, packet-sent=%u, ext-flag=%u",
|
|
|
|
need_reliable,
|
|
|
|
stream_id,
|
|
|
|
packet_sent,
|
|
|
|
ext_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_stre_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_stre_need_reliable, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_stre_stream_id, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_stre_packet_sent, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_stre_ext_flag, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stre_seqno, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_timestamp, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
|
|
|
/* Stream ID expansion */
|
|
|
|
if (stream_id == 31)
|
|
|
|
{
|
|
|
|
stream_id = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stream_id_ex, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Total reliable */
|
|
|
|
if (need_reliable)
|
|
|
|
{
|
|
|
|
proto_tree_add_item(tree, hf_rdt_total_reliable, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (ext_flag)
|
|
|
|
{
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stre_dummy_flags1, tvb, offset, 1, FALSE);
|
|
|
|
offset += 1;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stre_dummy_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_stre_reason_code, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
/* XXX: Remainder is reason_text */
|
|
|
|
offset += tvb_length_remaining(tvb, offset);
|
|
|
|
}
|
|
|
|
|
2009-01-08 07:32:22 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
2005-09-01 05:34:52 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, "STREAM-END: stream-id=%02u ", stream_id);
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an report packet */
|
|
|
|
guint dissect_rdt_report_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_report_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u",
|
|
|
|
length_included_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_report_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
|
|
|
{
|
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "REPORT: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* The remaining data is unparsed. */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_data, tvb, offset, -1, FALSE);
|
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return start_offset + packet_length;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an latency-report packet */
|
|
|
|
guint dissect_rdt_latency_report_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
|
|
|
guint32 server_out_time;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_latency_report_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u",
|
|
|
|
length_included_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_latency_report_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
|
|
|
{
|
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
server_out_time = tvb_get_ntohl(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_lrpt_server_out_time, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
2009-01-08 07:32:22 +00:00
|
|
|
if (check_col(pinfo->cinfo, COL_INFO))
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
2005-09-01 05:34:52 +00:00
|
|
|
col_append_fstr(pinfo->cinfo, COL_INFO, "LATENCY-REPORT: t=%u ", server_out_time);
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return start_offset + packet_length;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect a transport-info packet */
|
|
|
|
guint dissect_rdt_transport_info_request_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint8 flags1;
|
2005-05-27 18:35:19 +00:00
|
|
|
guint8 request_rtt_info_flag;
|
|
|
|
guint8 request_buffer_info_flag;
|
2005-05-16 06:16:45 +00:00
|
|
|
guint32 request_time_msec;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
request_rtt_info_flag = (flags1 & 0x2) >> 1;
|
|
|
|
request_buffer_info_flag = (flags1 & 0x01);
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_ack_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Request-rtt-info=%u, request-buffer-info=%u",
|
|
|
|
request_rtt_info_flag,
|
|
|
|
request_buffer_info_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_tirq_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_tirq_request_rtt_info, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_tirq_request_buffer_info, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
2005-05-27 18:35:19 +00:00
|
|
|
if (request_rtt_info_flag)
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
request_time_msec = tvb_get_ntohl(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_tirq_request_time_msec, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
}
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "TRANSPORT-INFO-REQUEST: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an transport-info-response packet */
|
|
|
|
guint dissect_rdt_transport_info_response_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 has_rtt_info;
|
|
|
|
guint8 is_delayed;
|
|
|
|
guint8 has_buffer_info;
|
2005-05-27 18:35:19 +00:00
|
|
|
guint32 request_time_msec;
|
|
|
|
guint32 response_time_msec;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
has_rtt_info = (flags1 & 0x4) >> 2;
|
|
|
|
is_delayed = (flags1 & 0x2) >> 1;
|
|
|
|
has_buffer_info = (flags1 & 0x1);
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_tirp_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Has-rtt-info=%u, is-delayed=%u, has-buffer-info=%u",
|
|
|
|
has_rtt_info,
|
|
|
|
is_delayed,
|
|
|
|
has_buffer_info);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_tirp_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_tirp_has_rtt_info, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_tirp_is_delayed, tvb, offset, 1, FALSE);
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_tirp_has_buffer_info, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
2005-05-27 18:35:19 +00:00
|
|
|
/* RTT info */
|
|
|
|
if (has_rtt_info)
|
|
|
|
{
|
|
|
|
request_time_msec = tvb_get_ntohl(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_tirp_request_time_msec, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
|
|
|
if (is_delayed)
|
|
|
|
{
|
|
|
|
response_time_msec = tvb_get_ntohl(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_tirp_response_time_msec, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Buffer info */
|
|
|
|
if (has_buffer_info)
|
|
|
|
{
|
|
|
|
guint16 n;
|
|
|
|
|
|
|
|
/* Read number of buffers */
|
|
|
|
guint16 buffer_info_count = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_tirp_buffer_info_count, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
for (n=0; n < buffer_info_count; n++)
|
|
|
|
{
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *buffer_info_tree;
|
|
|
|
proto_item *ti2;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
/* Each buffer info in a new subtree */
|
2010-01-22 13:56:19 +00:00
|
|
|
ti2 = proto_tree_add_string_format(tree, hf_rdt_tirp_buffer_info, tvb, offset, 14,
|
2005-05-27 18:35:19 +00:00
|
|
|
"",
|
|
|
|
"Buffer info %u",
|
|
|
|
n+1);
|
2010-01-22 13:56:19 +00:00
|
|
|
buffer_info_tree = proto_item_add_subtree(ti2, ett_rdt_tirp_buffer_info);
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
/* Read individual buffer info */
|
|
|
|
proto_tree_add_item(buffer_info_tree, hf_rdt_tirp_buffer_info_stream_id, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
proto_tree_add_item(buffer_info_tree, hf_rdt_tirp_buffer_info_lowest_timestamp, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
proto_tree_add_item(buffer_info_tree, hf_rdt_tirp_buffer_info_highest_timestamp, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
proto_tree_add_item(buffer_info_tree, hf_rdt_tirp_buffer_info_bytes_buffered, tvb, offset, 4, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Report what is left */
|
2005-05-16 06:16:45 +00:00
|
|
|
offset += tvb_length_remaining(tvb, offset);
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "RESPONSE: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect a bw-probing packet */
|
|
|
|
guint dissect_rdt_bw_probing_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint start_offset = offset;
|
|
|
|
guint16 packet_length;
|
|
|
|
guint8 flags1;
|
|
|
|
guint8 length_included_flag;
|
2010-01-22 13:56:19 +00:00
|
|
|
proto_tree *flags_tree;
|
|
|
|
proto_item *ti;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
2005-05-27 18:35:19 +00:00
|
|
|
length_included_flag = (flags1 & 0x80) >> 7;
|
|
|
|
|
|
|
|
/* Create subtree for flags fields */
|
|
|
|
if (tree)
|
|
|
|
{
|
|
|
|
ti = proto_tree_add_string_format(tree, hf_rdt_bw_probing_flags, tvb, offset, 1,
|
|
|
|
"",
|
|
|
|
"Length-included=%u",
|
|
|
|
length_included_flag);
|
|
|
|
flags_tree = proto_item_add_subtree(ti, ett_rdt_bw_probing_flags);
|
|
|
|
|
|
|
|
proto_tree_add_item(flags_tree, hf_rdt_len_included, tvb, offset, 1, FALSE);
|
|
|
|
}
|
2005-05-16 06:16:45 +00:00
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Length field is optional */
|
|
|
|
if (length_included_flag)
|
|
|
|
{
|
|
|
|
packet_length = tvb_get_ntohs(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_length, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* Check that there are as many bytes as reported */
|
|
|
|
tvb_ensure_bytes_exist(tvb, start_offset, packet_length);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
proto_tree_add_item(tree, hf_rdt_bwpp_seqno, tvb, offset, 1, FALSE);
|
|
|
|
offset += 1;
|
|
|
|
proto_tree_add_item(tree, hf_rdt_timestamp, tvb, offset, 1, FALSE);
|
|
|
|
offset += 4;
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "BW-PROBING: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
if (packet_length < (offset - start_offset) ||
|
|
|
|
packet_length > tvb_length_remaining(tvb, start_offset))
|
|
|
|
{
|
|
|
|
proto_tree_add_text(tree, tvb, 0, 0, "Packet length invalid");
|
|
|
|
packet_length = tvb_length_remaining(tvb, start_offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return start_offset + packet_length;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Dissect an unknown control packet */
|
|
|
|
guint dissect_rdt_unknown_control(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
|
|
|
|
{
|
|
|
|
guint8 flags1;
|
|
|
|
|
|
|
|
/* Flags in first byte */
|
|
|
|
flags1 = tvb_get_guint8(tvb, offset);
|
|
|
|
proto_tree_add_item(tree, hf_rdt_unk_flags1, tvb, offset, 1, FALSE);
|
|
|
|
offset++;
|
|
|
|
|
|
|
|
/* Packet type */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_packet_type, tvb, offset, 2, FALSE);
|
|
|
|
offset += 2;
|
|
|
|
|
|
|
|
/* The remaining data is unparsed. */
|
|
|
|
proto_tree_add_item(tree, hf_rdt_data, tvb, offset, -1, FALSE);
|
|
|
|
offset += tvb_length_remaining(tvb, offset);
|
|
|
|
|
2009-09-24 20:00:21 +00:00
|
|
|
col_append_str(pinfo->cinfo, COL_INFO, "UNKNOWN-CTL: ");
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
return offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Look for conversation info and display any setup info found */
|
|
|
|
static void show_setup_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|
|
|
{
|
|
|
|
/* Conversation and current data */
|
2010-01-22 13:56:19 +00:00
|
|
|
conversation_t *p_conv;
|
|
|
|
struct _rdt_conversation_info *p_conv_data;
|
2005-05-16 06:16:45 +00:00
|
|
|
|
|
|
|
/* Use existing packet info if available */
|
|
|
|
p_conv_data = p_get_proto_data(pinfo->fd, proto_rdt);
|
|
|
|
|
|
|
|
if (!p_conv_data)
|
|
|
|
{
|
|
|
|
/* First time, get info from conversation */
|
|
|
|
p_conv = find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
|
|
|
|
pinfo->ptype,
|
|
|
|
pinfo->destport, pinfo->srcport, NO_ADDR_B);
|
|
|
|
if (p_conv)
|
|
|
|
{
|
|
|
|
/* Create space for conversation info */
|
|
|
|
struct _rdt_conversation_info *p_conv_packet_data;
|
|
|
|
p_conv_data = conversation_get_proto_data(p_conv, proto_rdt);
|
|
|
|
|
|
|
|
if (p_conv_data)
|
|
|
|
{
|
|
|
|
/* Save this conversation info into packet info */
|
2005-08-12 21:29:06 +00:00
|
|
|
p_conv_packet_data = se_alloc(sizeof(struct _rdt_conversation_info));
|
2009-10-25 11:43:30 +00:00
|
|
|
g_strlcpy(p_conv_packet_data->method, p_conv_data->method, MAX_RDT_SETUP_METHOD_SIZE);
|
2005-05-16 06:16:45 +00:00
|
|
|
p_conv_packet_data->frame_number = p_conv_data->frame_number;
|
2005-09-01 05:34:52 +00:00
|
|
|
p_conv_packet_data->feature_level = p_conv_data->feature_level;
|
2005-05-16 06:16:45 +00:00
|
|
|
p_add_proto_data(pinfo->fd, proto_rdt, p_conv_packet_data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Create setup info subtree with summary info. */
|
|
|
|
if (p_conv_data)
|
|
|
|
{
|
|
|
|
proto_tree *rdt_setup_tree;
|
|
|
|
proto_item *ti = proto_tree_add_string_format(tree, hf_rdt_setup, tvb, 0, 0,
|
|
|
|
"",
|
2005-09-01 05:34:52 +00:00
|
|
|
"Stream setup by %s (frame %u), feature level %d",
|
2005-05-16 06:16:45 +00:00
|
|
|
p_conv_data->method,
|
2005-09-01 05:34:52 +00:00
|
|
|
p_conv_data->frame_number,
|
|
|
|
p_conv_data->feature_level);
|
2005-05-16 06:16:45 +00:00
|
|
|
PROTO_ITEM_SET_GENERATED(ti);
|
|
|
|
rdt_setup_tree = proto_item_add_subtree(ti, ett_rdt_setup);
|
|
|
|
if (rdt_setup_tree)
|
|
|
|
{
|
|
|
|
/* Add details into subtree */
|
|
|
|
proto_item* item = proto_tree_add_uint(rdt_setup_tree, hf_rdt_setup_frame,
|
|
|
|
tvb, 0, 0, p_conv_data->frame_number);
|
|
|
|
PROTO_ITEM_SET_GENERATED(item);
|
|
|
|
item = proto_tree_add_string(rdt_setup_tree, hf_rdt_setup_method,
|
|
|
|
tvb, 0, 0, p_conv_data->method);
|
|
|
|
PROTO_ITEM_SET_GENERATED(item);
|
2005-09-01 05:34:52 +00:00
|
|
|
item = proto_tree_add_int(rdt_setup_tree, hf_rdt_feature_level,
|
|
|
|
tvb, 0, 0, p_conv_data->feature_level);
|
|
|
|
PROTO_ITEM_SET_GENERATED(item);
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void proto_register_rdt(void)
|
|
|
|
{
|
|
|
|
static hf_register_info hf[] =
|
|
|
|
{
|
|
|
|
{
|
|
|
|
&hf_rdt_packet,
|
|
|
|
{
|
|
|
|
"RDT packet",
|
|
|
|
"rdt.packet",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_data_flags1,
|
|
|
|
{
|
|
|
|
"RDT data flags 1",
|
|
|
|
"rdt.data-flags1",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_len_included,
|
|
|
|
{
|
|
|
|
"Length included",
|
|
|
|
"rdt.length-included",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x80,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_data_need_reliable,
|
|
|
|
{
|
|
|
|
"Need reliable",
|
|
|
|
"rdt.need-reliable",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x40,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_data_stream_id,
|
|
|
|
{
|
|
|
|
"Stream ID",
|
|
|
|
"rdt.stream-id",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x3e,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_data_is_reliable,
|
|
|
|
{
|
|
|
|
"Is reliable",
|
|
|
|
"rdt.is-reliable",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x01,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_data_flags2,
|
|
|
|
{
|
|
|
|
"RDT data flags 2",
|
|
|
|
"rdt.data-flags2",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"RDT data flags2", HFILL
|
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_data_backtoback,
|
|
|
|
{
|
|
|
|
"Back-to-back",
|
|
|
|
"rdt.back-to-back",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x80,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_data_slowdata,
|
|
|
|
{
|
|
|
|
"Slow data",
|
|
|
|
"rdt.slow-data",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x40,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_data_asmrule,
|
|
|
|
{
|
|
|
|
"asm rule",
|
|
|
|
"rdt.asm-rule",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x3f,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_aact_flags,
|
|
|
|
{
|
|
|
|
"RDT asm-action flags 1",
|
|
|
|
"rdt.aact-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"RDT aact flags", HFILL
|
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_aact_stream_id,
|
|
|
|
{
|
|
|
|
"Stream ID",
|
|
|
|
"rdt.stream-id",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x7c,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_sequence_number,
|
|
|
|
{
|
|
|
|
"Sequence number",
|
|
|
|
"rdt.sequence-number",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_packet_type,
|
|
|
|
{
|
|
|
|
"Packet type",
|
|
|
|
"rdt.packet-type",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_HEX,
|
|
|
|
VALS(packet_type_vals),
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_ack_flags,
|
|
|
|
{
|
|
|
|
"RDT ack flags",
|
|
|
|
"rdt.ack-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_ack_lost_high,
|
|
|
|
{
|
|
|
|
"Lost high",
|
|
|
|
"rdt.lost-high",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x40,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_latency_report_flags,
|
|
|
|
{
|
|
|
|
"RDT latency report flags",
|
|
|
|
"rdt.latency-report-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_bandwidth_report_flags,
|
|
|
|
{
|
|
|
|
"RDT bandwidth report flags",
|
|
|
|
"rdt.bandwidth-report-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_flags,
|
|
|
|
{
|
|
|
|
"RDT stream end flags",
|
|
|
|
"rdt.stream-end-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_rtt_request_flags,
|
|
|
|
{
|
|
|
|
"RDT rtt request flags",
|
|
|
|
"rdt.rtt-request-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"RDT RTT request flags", HFILL
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_rtt_response_flags,
|
|
|
|
{
|
|
|
|
"RDT rtt response flags",
|
|
|
|
"rdt.rtt-response-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"RDT RTT response flags", HFILL
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_congestion_flags,
|
|
|
|
{
|
|
|
|
"RDT congestion flags",
|
|
|
|
"rdt.congestion-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_report_flags,
|
|
|
|
{
|
|
|
|
"RDT report flags",
|
|
|
|
"rdt.report-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirq_flags,
|
|
|
|
{
|
|
|
|
"RDT transport info request flags",
|
|
|
|
"rdt.transport-info-request-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_flags,
|
|
|
|
{
|
|
|
|
"RDT transport info response flags",
|
|
|
|
"rdt.transport-info-response-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_bw_probing_flags,
|
|
|
|
{
|
|
|
|
"RDT bw probing flags",
|
|
|
|
"rdt.bw-probing-flags",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_packet_length,
|
|
|
|
{
|
|
|
|
"Packet length",
|
|
|
|
"rdt.packet-length",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_timestamp,
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
|
|
|
"Timestamp",
|
|
|
|
"rdt.timestamp",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_stream_id_ex,
|
|
|
|
{
|
|
|
|
"Stream-id expansion",
|
|
|
|
"rdt.stream-id-expansion",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_asmrule_ex,
|
|
|
|
{
|
|
|
|
"Asm rule expansion",
|
|
|
|
"rdt.asm-rule-expansion",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_total_reliable,
|
|
|
|
{
|
|
|
|
"Total reliable",
|
|
|
|
"rdt.total-reliable",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_data,
|
|
|
|
{
|
|
|
|
"Data",
|
|
|
|
"rdt.data",
|
|
|
|
FT_NONE,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_aact_reliable_seqno,
|
|
|
|
{
|
|
|
|
"Reliable sequence number",
|
|
|
|
"rdt.reliable-seq-no",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_brpt_interval,
|
|
|
|
{
|
|
|
|
"Bandwidth report interval",
|
|
|
|
"rdt.bwid-report-interval",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_brpt_bandwidth,
|
|
|
|
{
|
|
|
|
"Bandwidth report bandwidth",
|
|
|
|
"rdt.bwid-report-bandwidth",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_brpt_sequence,
|
|
|
|
{
|
|
|
|
"Bandwidth report sequence",
|
|
|
|
"rdt.bwid-report-sequence",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_rtrp_ts_sec,
|
|
|
|
{
|
|
|
|
"Round trip response timestamp seconds",
|
|
|
|
"rdt.rtrp-ts-sec",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_rtrp_ts_usec,
|
|
|
|
{
|
|
|
|
"Round trip response timestamp microseconds",
|
|
|
|
"rdt.rtrp-ts-usec",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_cong_xmit_mult,
|
|
|
|
{
|
|
|
|
"Congestion transmit multiplier",
|
|
|
|
"rdt.cong-xmit-mult",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_cong_recv_mult,
|
|
|
|
{
|
|
|
|
"Congestion receive multiplier",
|
|
|
|
"rdt.cong-recv-mult",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_stre_need_reliable,
|
|
|
|
{
|
|
|
|
"Need reliable",
|
|
|
|
"rdt.stre-need-reliable",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x80,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_stream_id,
|
|
|
|
{
|
|
|
|
"Stream id",
|
|
|
|
"rdt.stre-stream-id",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x7c,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_packet_sent,
|
|
|
|
{
|
|
|
|
"Packet sent",
|
|
|
|
"rdt.stre-packet-sent",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x02,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_ext_flag,
|
|
|
|
{
|
|
|
|
"Ext flag",
|
|
|
|
"rdt.stre-ext-flag",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x01,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_stre_seqno,
|
|
|
|
{
|
|
|
|
"Stream end sequence number",
|
|
|
|
"rdt.stre-seqno",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_dummy_flags1,
|
|
|
|
{
|
|
|
|
"Stream end reason dummy flags1",
|
|
|
|
"rdt.stre-reason-dummy-flags1",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_HEX,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_dummy_type,
|
|
|
|
{
|
|
|
|
"Stream end reason dummy type",
|
|
|
|
"rdt.stre-reason-dummy-type",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_HEX,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_stre_reason_code,
|
|
|
|
{
|
|
|
|
"Stream end reason code",
|
|
|
|
"rdt.stre-reason-code",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_HEX,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_lrpt_server_out_time,
|
|
|
|
{
|
|
|
|
"Latency report server out time",
|
|
|
|
"rdt.lrpt-server-out-time",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirq_request_rtt_info,
|
|
|
|
{
|
|
|
|
"Transport info request rtt info flag",
|
|
|
|
"rdt.tirq-request-rtt-info",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x2,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirq_request_buffer_info,
|
|
|
|
{
|
|
|
|
"Transport info request buffer info flag",
|
|
|
|
"rdt.tirq-request-buffer-info",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x1,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirq_request_time_msec,
|
|
|
|
{
|
|
|
|
"Transport info request time msec",
|
|
|
|
"rdt.tirq-request-time-msec",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_has_rtt_info,
|
|
|
|
{
|
|
|
|
"Transport info response has rtt info flag",
|
|
|
|
"rdt.tirp-has-rtt-info",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x4,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_is_delayed,
|
|
|
|
{
|
|
|
|
"Transport info response is delayed",
|
|
|
|
"rdt.tirp-is-delayed",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x2,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_has_buffer_info,
|
|
|
|
{
|
|
|
|
"Transport info response has buffer info",
|
|
|
|
"rdt.tirp-has-buffer-info",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x1,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_tirp_request_time_msec,
|
|
|
|
{
|
|
|
|
"Transport info request time msec",
|
|
|
|
"rdt.tirp-request-time-msec",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_response_time_msec,
|
|
|
|
{
|
|
|
|
"Transport info response time msec",
|
|
|
|
"rdt.tirp-response-time-msec",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_buffer_info_count,
|
|
|
|
{
|
|
|
|
"Transport info buffer into count",
|
|
|
|
"rdt.tirp-buffer-info-count",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_buffer_info,
|
|
|
|
{
|
|
|
|
"RDT buffer info",
|
|
|
|
"rdt.tirp-buffer-info",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_buffer_info_stream_id,
|
|
|
|
{
|
|
|
|
"Buffer info stream-id",
|
|
|
|
"rdt.tirp-buffer-info-stream-id",
|
|
|
|
FT_UINT16,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_buffer_info_lowest_timestamp,
|
|
|
|
{
|
|
|
|
"Lowest timestamp",
|
|
|
|
"rdt.tirp-buffer-info-lowest-timestamp",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_buffer_info_highest_timestamp,
|
|
|
|
{
|
|
|
|
"Highest timestamp",
|
|
|
|
"rdt.tirp-buffer-info-highest-timestamp",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_tirp_buffer_info_bytes_buffered,
|
|
|
|
{
|
|
|
|
"Bytes buffered",
|
|
|
|
"rdt.tirp-buffer-info-bytes-buffered",
|
|
|
|
FT_UINT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-27 18:35:19 +00:00
|
|
|
}
|
|
|
|
},
|
2005-05-16 06:16:45 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_bwpp_seqno,
|
|
|
|
{
|
|
|
|
"Bandwidth probing packet seqno",
|
|
|
|
"rdt.bwpp-seqno",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_unk_flags1,
|
|
|
|
{
|
|
|
|
"Unknown packet flags",
|
|
|
|
"rdt.unk-flags1",
|
|
|
|
FT_UINT8,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-05-16 06:16:45 +00:00
|
|
|
}
|
|
|
|
},
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
|
|
|
&hf_rdt_setup,
|
|
|
|
{
|
|
|
|
"Stream setup",
|
|
|
|
"rdt.setup",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"Stream setup, method and frame number", HFILL
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_setup_frame,
|
|
|
|
{
|
|
|
|
"Setup frame",
|
|
|
|
"rdt.setup-frame",
|
|
|
|
FT_FRAMENUM,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"Frame that set up this stream", HFILL
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_setup_method,
|
|
|
|
{
|
|
|
|
"Setup Method",
|
|
|
|
"rdt.setup-method",
|
|
|
|
FT_STRING,
|
|
|
|
BASE_NONE,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
|
|
|
"Method used to set up this stream", HFILL
|
|
|
|
}
|
2005-09-01 05:34:52 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
&hf_rdt_feature_level,
|
|
|
|
{
|
|
|
|
"RDT feature level",
|
|
|
|
"rdt.feature-level",
|
|
|
|
FT_INT32,
|
|
|
|
BASE_DEC,
|
|
|
|
NULL,
|
|
|
|
0x0,
|
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
|
|
|
NULL, HFILL
|
2005-09-01 05:34:52 +00:00
|
|
|
}
|
|
|
|
},
|
2005-02-19 22:43:38 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
static gint *ett[] =
|
|
|
|
{
|
|
|
|
&ett_rdt,
|
2005-05-16 06:16:45 +00:00
|
|
|
&ett_rdt_packet,
|
2005-05-27 18:35:19 +00:00
|
|
|
&ett_rdt_setup,
|
|
|
|
&ett_rdt_data_flags1,
|
|
|
|
&ett_rdt_data_flags2,
|
|
|
|
&ett_rdt_aact_flags,
|
|
|
|
&ett_rdt_ack_flags,
|
|
|
|
&ett_rdt_latency_report_flags,
|
|
|
|
&ett_rdt_bandwidth_report_flags,
|
|
|
|
&ett_rdt_stre_flags,
|
|
|
|
&ett_rdt_rtt_request_flags,
|
|
|
|
&ett_rdt_rtt_response_flags,
|
|
|
|
&ett_rdt_congestion_flags,
|
|
|
|
&ett_rdt_report_flags,
|
|
|
|
&ett_rdt_tirq_flags,
|
|
|
|
&ett_rdt_tirp_flags,
|
|
|
|
&ett_rdt_tirp_buffer_info,
|
|
|
|
&ett_rdt_bw_probing_flags
|
2005-02-19 22:43:38 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
module_t *rdt_module;
|
|
|
|
|
|
|
|
/* Register protocol and fields */
|
|
|
|
proto_rdt = proto_register_protocol("Real Data Transport", "RDT", "rdt");
|
|
|
|
proto_register_field_array(proto_rdt, hf, array_length(hf));
|
|
|
|
proto_register_subtree_array(ett, array_length(ett));
|
|
|
|
register_dissector("rdt", dissect_rdt, proto_rdt);
|
|
|
|
|
|
|
|
/* Preference settings */
|
2005-05-27 18:35:19 +00:00
|
|
|
rdt_module = prefs_register_protocol(proto_rdt, proto_reg_handoff_rdt);
|
2005-02-19 22:43:38 +00:00
|
|
|
prefs_register_bool_preference(rdt_module, "show_setup_info",
|
|
|
|
"Show stream setup information",
|
|
|
|
"Where available, show which protocol and frame caused "
|
|
|
|
"this RDT stream to be created",
|
|
|
|
&global_rdt_show_setup_info);
|
|
|
|
|
2005-05-27 18:35:19 +00:00
|
|
|
prefs_register_bool_preference(rdt_module, "register_udp_port",
|
|
|
|
"Register default UDP client port",
|
|
|
|
"Register a client UDP port for RDT traffic",
|
|
|
|
&global_rdt_register_udp_port);
|
|
|
|
|
|
|
|
/* TODO: better to specify a range of ports instead? */
|
|
|
|
prefs_register_uint_preference(rdt_module, "default_udp_port",
|
|
|
|
"Default UDP client port",
|
|
|
|
"Set the UDP port for clients",
|
|
|
|
10, &global_rdt_udp_port);
|
|
|
|
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
|
|
|
|
2005-05-16 06:16:45 +00:00
|
|
|
void proto_reg_handoff_rdt(void)
|
2005-02-19 22:43:38 +00:00
|
|
|
{
|
2008-09-12 16:52:01 +00:00
|
|
|
static gboolean rdt_prefs_initialized = FALSE;
|
|
|
|
/* Also store this so can delete registered setting properly */
|
|
|
|
static gboolean rdt_register_udp_port;
|
|
|
|
static guint rdt_udp_port;
|
2005-05-27 18:35:19 +00:00
|
|
|
|
|
|
|
if (!rdt_prefs_initialized)
|
|
|
|
{
|
2008-09-12 16:52:01 +00:00
|
|
|
/* Register this dissector as one that can be selected by a
|
|
|
|
UDP port number. */
|
|
|
|
rdt_handle = find_dissector("rdt");
|
|
|
|
dissector_add_handle("udp.port", rdt_handle);
|
2005-05-27 18:35:19 +00:00
|
|
|
rdt_prefs_initialized = TRUE;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* Undo any current port registrations */
|
2008-09-12 16:52:01 +00:00
|
|
|
if (rdt_register_udp_port)
|
2005-05-27 18:35:19 +00:00
|
|
|
{
|
|
|
|
dissector_delete("udp.port", rdt_udp_port, rdt_handle);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Remember whether a port is set for next time */
|
|
|
|
rdt_register_udp_port = global_rdt_register_udp_port;
|
|
|
|
|
|
|
|
/* Add any new port registration */
|
|
|
|
if (global_rdt_register_udp_port)
|
|
|
|
{
|
|
|
|
/* Set our port number for future use */
|
|
|
|
rdt_udp_port = global_rdt_udp_port;
|
|
|
|
|
|
|
|
/* And register with this port */
|
|
|
|
dissector_add("udp.port", global_rdt_udp_port, rdt_handle);
|
|
|
|
}
|
2005-02-19 22:43:38 +00:00
|
|
|
}
|
2005-02-20 01:58:29 +00:00
|
|
|
|