forked from osmocom/wireshark
eff40f65db
svn path=/trunk/; revision=16561
184 lines
3.5 KiB
C
184 lines
3.5 KiB
C
/* packet-rmt-norm.h
|
|
* Reliable Multicast Transport (RMT)
|
|
* NORM Protocol Instantiation function definitions
|
|
* Copyright 2005, Stefano Pettini <spettini@users.sourceforge.net>
|
|
*
|
|
* $Id$
|
|
*
|
|
* Ethereal - Network traffic analyzer
|
|
* By Gerald Combs <gerald@ethereal.com>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* Extensive changes to decode more information Julian Onions
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef __PACKET_RMT_NORM__
|
|
#define __PACKET_RMT_NORM__
|
|
|
|
#include "packet-rmt-common.h"
|
|
#include "packet-rmt-fec.h"
|
|
#include "packet-rmt-lct.h"
|
|
|
|
/* Type definitions */
|
|
/* ================ */
|
|
|
|
/* Logical NORM packet representation */
|
|
struct _norm
|
|
{
|
|
guint8 version;
|
|
guint8 type;
|
|
guint8 hlen;
|
|
guint16 sequence;
|
|
guint32 source_id;
|
|
|
|
struct _fec fec;
|
|
};
|
|
|
|
enum {
|
|
NORM_INFO = 1,
|
|
NORM_DATA = 2,
|
|
NORM_CMD = 3,
|
|
NORM_NACK = 4,
|
|
NORM_ACK = 5,
|
|
NORM_REPORT = 6,
|
|
|
|
NORM_CMD_FLUSH = 1,
|
|
NORM_CMD_EOT = 2,
|
|
NORM_CMD_SQUELCH = 3,
|
|
NORM_CMD_CC = 4,
|
|
NORM_CMD_REPAIR_ADV = 5,
|
|
NORM_CMD_ACK_REQ = 6,
|
|
NORM_CMD_APPLICATION = 7,
|
|
|
|
|
|
NORM_FLAG_REPAIR = 0x01,
|
|
NORM_FLAG_EXPLICIT = 0x02,
|
|
NORM_FLAG_INFO = 0x04,
|
|
NORM_FLAG_UNRELIABLE = 0x08,
|
|
NORM_FLAG_FILE = 0x10,
|
|
NORM_FLAG_STREAM = 0x20,
|
|
NORM_FLAG_MSG_START = 0x40,
|
|
|
|
NORM_ACK_CC = 1,
|
|
NORM_ACK_FLUSH = 2,
|
|
|
|
NORM_NACK_ITEMS = 1,
|
|
NORM_NACK_RANGES = 2,
|
|
NORM_NACK_ERASURES = 3,
|
|
|
|
NORM_NACK_SEGMENT = 0x01,
|
|
NORM_NACK_BLOCK = 0x02,
|
|
NORM_NACK_INFO = 0x04,
|
|
NORM_NACK_OBJECT = 0x08,
|
|
|
|
|
|
NORM_FLAG_CC_CLR = 0x01,
|
|
NORM_FLAG_CC_PLR = 0x02,
|
|
NORM_FLAG_CC_RTT = 0x04,
|
|
NORM_FLAG_CC_START = 0x08,
|
|
NORM_FLAG_CC_LEAVE = 0x10
|
|
|
|
};
|
|
|
|
|
|
/* Ethereal stuff */
|
|
/* ============== */
|
|
|
|
/* NORM header field definitions*/
|
|
struct _norm_hf
|
|
{
|
|
int version;
|
|
int type;
|
|
int hlen;
|
|
int sequence;
|
|
int source_id;
|
|
int instance_id;
|
|
int grtt;
|
|
int backoff;
|
|
int gsize;
|
|
int flags;
|
|
int cmd_flavor;
|
|
int reserved;
|
|
int cc_sequence;
|
|
int cc_sts;
|
|
int cc_stus;
|
|
int cc_node_id;
|
|
int cc_flags;
|
|
int cc_flags_clr;
|
|
int cc_flags_plr;
|
|
int cc_flags_rtt;
|
|
int cc_flags_start;
|
|
int cc_flags_leave;
|
|
int cc_rtt;
|
|
int cc_rate;
|
|
int cc_transport_id;
|
|
int ack_source;
|
|
int ack_type;
|
|
int ack_id;
|
|
int ack_grtt_sec;
|
|
int ack_grtt_usec;
|
|
int nack_server;
|
|
int nack_grtt_sec;
|
|
int nack_grtt_usec;
|
|
int nack_form;
|
|
int nack_length;
|
|
int nack_flags;
|
|
int nack_flags_segment;
|
|
int nack_flags_block;
|
|
int nack_flags_info;
|
|
int nack_flags_object;
|
|
struct flaglist {
|
|
int repair;
|
|
int explicit;
|
|
int info;
|
|
int unreliable;
|
|
int file;
|
|
int stream;
|
|
int msgstart;
|
|
} flag;
|
|
int object_transport_id;
|
|
int extension;
|
|
int payload_len;
|
|
int payload_offset;
|
|
struct _fec_hf fec;
|
|
|
|
int payload;
|
|
};
|
|
|
|
/* NORM subtrees */
|
|
struct _norm_ett
|
|
{
|
|
gint main;
|
|
gint hdrext;
|
|
gint flags;
|
|
gint streampayload;
|
|
gint congestioncontrol;
|
|
gint nackdata;
|
|
struct _fec_ett fec;
|
|
};
|
|
|
|
/* NORM preferences */
|
|
struct _norm_prefs
|
|
{
|
|
struct _fec_prefs fec;
|
|
};
|
|
|
|
/* Function declarations */
|
|
/* ===================== */
|
|
|
|
#endif
|