From 318e86e2d74ca020786523bd8afa5f495cd16f72 Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Mon, 6 Jun 2011 20:01:53 +0000 Subject: From Pascal Quantin: Add the following enhancements to the UMTS RLC dissector (as specified in 3GPP 25.322 v9.2.0): - UDP framing protocol to allow dissection of RLC PDUs over UDP (like what is done for LTE MAC/RLC/PDCP protocols) - 15 bits Length Indicator support (both with variable and fixed LI size) - Poll type SUFI - enhanced dissection of LIST, Relative List and Bitmap SUFI - dissection of Reset and Reset Ack Control PDU - an option to decode RLC headers only - an option to skip SDU reassembly svn path=/trunk/; revision=37576 --- epan/dissectors/packet-rlc.h | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'epan/dissectors/packet-rlc.h') diff --git a/epan/dissectors/packet-rlc.h b/epan/dissectors/packet-rlc.h index 875f0b5bd8..5a6f5a53bd 100644 --- a/epan/dissectors/packet-rlc.h +++ b/epan/dissectors/packet-rlc.h @@ -27,12 +27,84 @@ enum rlc_mode { RLC_AM }; +enum rlc_li_size { + RLC_LI_VARIABLE, + RLC_LI_7BITS, + RLC_LI_15BITS + }; + #define MAX_RLC_CHANS 64 typedef struct rlc_info { guint32 urnti[MAX_RLC_CHANS]; guint8 mode[MAX_RLC_CHANS]; guint8 rbid[MAX_RLC_CHANS]; + enum rlc_li_size li_size[MAX_RLC_CHANS]; gboolean ciphered[MAX_RLC_CHANS]; gboolean deciphered[MAX_RLC_CHANS]; } rlc_info; + +/*****************************************************************/ +/* UDP framing format */ +/* ----------------------- */ +/* Several people have asked about dissecting RLC by framing */ +/* PDUs over IP. A suggested format over UDP has been defined */ +/* and implemented by this dissector, using the definitions */ +/* below. A link to an example program showing you how to encode */ +/* these headers and send RLC PDUs on a UDP socket is provided */ +/* at http://wiki.wireshark.org/RLC */ +/* */ +/* A heuristic dissecter (enabled by a preference) will */ +/* recognise a signature at the beginning of these frames. */ +/* Until someone is using this format, suggestions for changes */ +/* are welcome. */ +/*****************************************************************/ + + +/* Signature. Rather than try to define a port for this, or make the + port number a preference, frames will start with this string (with no + terminating NULL */ +#define RLC_START_STRING "umts-rlc" + +/* Conditional fields. The channel type or RLC mode should be present. + If the channel type is present, the RLC mode will be ignored. + If none of them is present, the decoding will be skipped. + The RLC mode tag uses the values from the rlc_mode enum. */ + +#define CHANNEL_TYPE_UNSPECIFIED 0 +#define CHANNEL_TYPE_PCCH 1 +#define CHANNEL_TYPE_CCCH 2 +#define CHANNEL_TYPE_DCCH 3 +#define CHANNEL_TYPE_PS_DTCH 4 +#define CHANNEL_TYPE_CTCH 5 + +#define RLC_CHANNEL_TYPE_TAG 0x02 +/* 1 byte */ + +#define RLC_MODE_TAG 0x03 +/* 1 byte, enum rlc_mode value */ + +/* Optional fields. Attaching this info to frames will allow you + to show you display/filter/plot/add-custom-columns on these fields, so should + be added if available. + The format is to have the tag, followed by the value (there is no length field, + its implicit from the tag) */ + +#define DIRECTION_UPLINK 0 +#define DIRECTION_DOWNLINK 1 + +#define RLC_DIRECTION_TAG 0x04 +/* 1 byte */ + +#define RLC_URNTI_TAG 0x05 +/* 4 bytes, network order */ + +#define RLC_RADIO_BEARER_ID_TAG 0x06 +/* 1 byte */ + +#define RLC_LI_SIZE_TAG 0x07 +/* 1 byte, enum rlc_li_size value */ + +/* RLC PDU. Following this tag comes the actual RLC PDU (there is no length, the PDU + continues until the end of the frame) */ +#define RLC_PAYLOAD_TAG 0x01 -- cgit v1.2.3