Don't do fcn calls in arg of g_?to??(); Macro may very well eval args multiple times.
[obnox/wireshark/wip.git] / epan / dissectors / packet-rsl.c
index e497bae866162152eeb339914dcf6e25346d12e6..945734ffdcc6c19ce507ad4f8f3bd1f6258d2900 100644 (file)
@@ -1,7 +1,7 @@
 /* packet-rsl.c
  * Routines for Radio Signalling Link (RSL) dissection.
  *
- * Copyright 2007, Anders Broman <anders.broman@ericsson.com>
+ * Copyright 2007, 2011, Anders Broman <anders.broman@ericsson.com>
  *
  * $Id$
  *
 # include "config.h"
 #endif
 
-#include <stdlib.h>
-#include <ctype.h>
-
 #include <epan/packet.h>
-#include <epan/proto.h>
-#include <epan/lapd_sapi.h>
 
 #include "packet-gsm_a_common.h"
+#include "lapd_sapi.h"
 
 /* Initialize the protocol and registered fields */
-static int proto_rsl           = -1;
-
-static int hf_rsl_msg_type                     = -1;
-static int hf_rsl_T_bit                                = -1;
-static int hf_rsl_msg_dsc                      = -1;
-static int hf_rsl_ie_id                                = -1;
-static int hf_rsl_ie_length                    = -1;
-static int hf_rsl_ch_no_Cbits          = -1;
-static int hf_rsl_ch_no_TN                     = -1;
-static int hf_rsl_acc_delay                    = -1;
-static int hf_rsl_rach_slot_cnt                = -1;
-static int hf_rsl_rach_busy_cnt                = -1;
-static int hf_rsl_rach_acc_cnt         = -1;
-static int hf_rsl_req_ref_ra           = -1;
-static int hf_rsl_req_ref_T1prim       = -1;
-static int hf_rsl_req_ref_T3           = -1;
-static int hf_rsl_req_ref_T2           = -1;
-static int hf_rsl_timing_adv           = -1;
-static int hf_rsl_ho_ref                       = -1;
-static int hf_rsl_l1inf_power_lev              = -1;
-static int hf_rsl_l1inf_fpc                    = -1;
-static int hf_rsl_ms_power_lev         = -1;
-static int hf_rsl_ms_fpc                       = -1;
-static int hf_rsl_act_timing_adv       = -1;
-static int hf_rsl_phy_ctx                      = -1;
-static int hf_rsl_na                           = -1;
-static int hf_rsl_ch_type                      = -1;
-static int hf_rsl_prio                         = -1;
-static int hf_rsl_sapi                         = -1;
-static int hf_rsl_rbit                         = -1;
-static int hf_rsl_a3a2                         = -1;
-static int hf_rsl_a1_0                         = -1;
-static int hf_rsl_a1_1                         = -1;
-static int hf_rsl_a1_2                         = -1;
-static int hf_rsl_epc_mode                     = -1;
-static int hf_rsl_bs_fpc_epc_mode      = -1;
-static int hf_rsl_bs_power                     = -1;
-static int hf_rsl_cm_dtxd                      = -1;
-static int hf_rsl_cm_dtxu                      = -1;
-static int hf_rsl_speech_or_data       = -1;
-static int hf_rsl_ch_rate_and_type     = -1;
-static int hf_rsl_speech_coding_alg = -1;
-static int hf_rsl_t_nt_bit                     = -1;
-static int hf_rsl_ra_if_data_rte       = -1;
-static int hf_rsl_data_rte                     = -1;
-static int hf_rsl_alg_id                       = -1;
-static int hf_rsl_key                          = -1;
-static int hf_rsl_cause                                = -1;
-static int hf_rsl_rel_mode                     = -1;
-static int hf_rsl_interf_band          = -1;
+static int proto_rsl        = -1;
+
+static int hf_rsl_msg_type             = -1;
+static int hf_rsl_T_bit                = -1;
+static int hf_rsl_msg_dsc              = -1;
+static int hf_rsl_ie_id                = -1;
+static int hf_rsl_ie_length            = -1;
+static int hf_rsl_ch_no_Cbits          = -1;
+static int hf_rsl_ch_no_TN             = -1;
+static int hf_rsl_acc_delay            = -1;
+static int hf_rsl_rach_slot_cnt        = -1;
+static int hf_rsl_rach_busy_cnt        = -1;
+static int hf_rsl_rach_acc_cnt         = -1;
+static int hf_rsl_req_ref_ra           = -1;
+static int hf_rsl_req_ref_T1prim       = -1;
+static int hf_rsl_req_ref_T3           = -1;
+static int hf_rsl_req_ref_T2           = -1;
+static int hf_rsl_timing_adv           = -1;
+static int hf_rsl_ho_ref               = -1;
+static int hf_rsl_l1inf_power_lev      = -1;
+static int hf_rsl_l1inf_fpc            = -1;
+static int hf_rsl_ms_power_lev         = -1;
+static int hf_rsl_ms_fpc               = -1;
+static int hf_rsl_act_timing_adv       = -1;
+static int hf_rsl_phy_ctx              = -1;
+static int hf_rsl_na                   = -1;
+static int hf_rsl_ch_type              = -1;
+static int hf_rsl_prio                 = -1;
+static int hf_rsl_sapi                 = -1;
+static int hf_rsl_rbit                 = -1;
+static int hf_rsl_a3a2                 = -1;
+static int hf_rsl_a1_0                 = -1;
+static int hf_rsl_a1_1                 = -1;
+static int hf_rsl_a1_2                 = -1;
+static int hf_rsl_epc_mode             = -1;
+static int hf_rsl_bs_fpc_epc_mode      = -1;
+static int hf_rsl_bs_power             = -1;
+static int hf_rsl_cm_dtxd              = -1;
+static int hf_rsl_cm_dtxu              = -1;
+static int hf_rsl_speech_or_data       = -1;
+static int hf_rsl_ch_rate_and_type     = -1;
+static int hf_rsl_speech_coding_alg    = -1;
+static int hf_rsl_t_nt_bit             = -1;
+static int hf_rsl_ra_if_data_rte       = -1;
+static int hf_rsl_data_rte             = -1;
+static int hf_rsl_alg_id               = -1;
+static int hf_rsl_key                  = -1;
+static int hf_rsl_cause                = -1;
+static int hf_rsl_rel_mode             = -1;
+static int hf_rsl_interf_band          = -1;
 static int hf_rsl_interf_band_reserved = -1;
-static int hf_rsl_meas_res_no          = -1;
-static int hf_rsl_extension_bit                = -1;
-static int hf_rsl_dtxd                         = -1;
-static int hf_rsl_rxlev_full_up                = -1;
-static int hf_rsl_rxlev_sub_up         = -1;
-static int hf_rsl_rxqual_full_up       = -1;
-static int hf_rsl_rxqual_sub_up                = -1;
-static int hf_rsl_class                                = -1;
-static int hf_rsl_paging_grp           = -1;
-static int hf_rsl_paging_load          = -1;
-static int hf_rsl_sys_info_type                = -1;
-static int hf_rsl_timing_offset                = -1;
-static int hf_rsl_ch_needed                    = -1;
-static int hf_rsl_cbch_load_type       = -1;
-static int hf_rsl_msg_slt_cnt          = -1;
-static int hf_rsl_ch_ind                       = -1;
-static int hf_rsl_command                      = -1;
-static int hf_rsl_emlpp_prio           = -1;
-static int hf_rsl_rtd                          = -1;
-static int hf_rsl_delay_ind                    = -1;
-static int hf_rsl_tfo                          = -1;
+static int hf_rsl_meas_res_no          = -1;
+static int hf_rsl_extension_bit        = -1;
+static int hf_rsl_dtxd                 = -1;
+static int hf_rsl_rxlev_full_up        = -1;
+static int hf_rsl_rxlev_sub_up         = -1;
+static int hf_rsl_rxqual_full_up       = -1;
+static int hf_rsl_rxqual_sub_up        = -1;
+static int hf_rsl_class                = -1;
+static int hf_rsl_paging_grp           = -1;
+static int hf_rsl_paging_load          = -1;
+static int hf_rsl_sys_info_type        = -1;
+static int hf_rsl_timing_offset        = -1;
+static int hf_rsl_ch_needed            = -1;
+static int hf_rsl_cbch_load_type       = -1;
+static int hf_rsl_msg_slt_cnt          = -1;
+static int hf_rsl_ch_ind               = -1;
+static int hf_rsl_command              = -1;
+static int hf_rsl_emlpp_prio           = -1;
+static int hf_rsl_rtd                  = -1;
+static int hf_rsl_delay_ind            = -1;
+static int hf_rsl_tfo                  = -1;
 
 /* Initialize the subtree pointers */
 static int ett_rsl = -1;
@@ -140,7 +136,7 @@ static int ett_ie_rach_load = -1;
 static int ett_ie_req_ref = -1;
 static int ett_ie_rel_mode = -1;
 static int ett_ie_resource_inf = -1;
-static int ett_ie_rlm_cause    =-1;
+static int ett_ie_rlm_cause =-1;
 static int ett_ie_staring_time = -1;
 static int ett_ie_timing_adv = -1;
 static int ett_ie_uplink_meas = -1;
@@ -177,8 +173,7 @@ static int ett_ie_sys_info_type = -1;
 static proto_tree *top_tree;
 static dissector_handle_t gsm_a_ccch_handle;
 static dissector_handle_t gsm_a_dtap_handle;
-
-static gboolean is_si2q = FALSE;
+static dissector_handle_t gsm_a_sacch_handle;
 
 /* Forward declarations */
 static int dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset);
@@ -201,360 +196,365 @@ static const true_false_string rsl_extension_bit_value = {
 /*
  * 9.1 Message discriminator
  */
+ /* Radio link Layer Management Messages */
 static const value_string rsl_msg_disc_vals[] = {
-       {  0x00,                "Reserved" },
-       {  0x01,                "Radio Link Layer Management messages" },
-       {  0x04,                "Dedicated Channel Management messages" },
-       {  0x06,                "Common Channel Management messages" },
-       {  0x08,                "TRX Management messages" },
-       {  0x16,                "Location Services messages" },
-       { 0,                    NULL }
+    {  0x00,    "Reserved" },
+    {  0x01,    "Radio Link Layer Management messages" },
+    {  0x04,    "Dedicated Channel Management messages" },
+    {  0x06,    "Common Channel Management messages" },
+    {  0x08,    "TRX Management messages" },
+    {  0x16,    "Location Services messages" },
+    { 0,            NULL }
 };
 /*
  * 9.2 MESSAGE TYPE
  */
-#define RSL_MSG_TYPE_DATA_REQ          1
-#define RSL_MSG_TYPE_DATA_IND          2
-#define RSL_MSG_TYPE_ERROR_IND         3
-#define RSL_MSG_TYPE_EST_REQ           4
-#define RSL_MSG_TYPE_EST_CONF          5
-#define RSL_MSG_EST_IND                                6
-#define RSL_MSG_REL_REQ                                7
-#define RSL_MSG_REL_CONF                       8
-#define RSL_MSG_REL_IND                                9
-#define RSL_MSG_UNIT_DATA_REQ          10
-/* Common Channel Management/TRX Management messages */
-#define RSL_MSG_BCCH_INFO                      17
-#define RSL_MSG_CCCH_LOAD_IND          18
-#define RSL_MSG_CHANRQD                                19
-#define RSL_MSG_DELETE_IND                     20
-#define RSL_MSG_PAGING_CMD                     21
-#define RSL_MSG_IMM_ASS_CMD                    22
-#define RSL_MSG_SMS_BC_REQ                     23      /* 8.5.7 */
-#define RSL_MSG_RF_RES_IND                     25      /* 8.6.1 */
-#define RSL_MSG_SACCH_FILL                     26      /* 8.6.2 */
-
-#define RSL_MSG_OVERLOAD                       27      /* 8.6.3 */
-#define RSL_MSG_ERROR_REPORT           28      /* 8.6.4 */
-#define RSL_MSG_SMS_BC_CMD                     29      /* 8.5.8 */
-#define RSL_MSG_CBCH_LOAD_IND          30      /* 8.5.9 */
-#define RSL_MSG_NOT_CMD                                31      /* 8.5.10 */
+/* Radio link Layer Management Messages */
+#define RSL_MSG_TYPE_DATA_REQ            1   /* 0x01 */
+#define RSL_MSG_TYPE_DATA_IND            2   /* 0x02 */
+#define RSL_MSG_TYPE_ERROR_IND           3   /* 0x03 */
+#define RSL_MSG_TYPE_EST_REQ             4   /* 0x04 */
+#define RSL_MSG_TYPE_EST_CONF            5   /* 0x05 */
+#define RSL_MSG_EST_IND                  6   /* 0x06 */
+#define RSL_MSG_REL_REQ                  7   /* 0x07 */
+#define RSL_MSG_REL_CONF                 8   /* 0x08 */
+#define RSL_MSG_REL_IND                  9   /* 0x09 */
+#define RSL_MSG_UNIT_DATA_REQ           10  /* 0x0a */
+/* Common Channel Management messages */
+#define RSL_MSG_BCCH_INFO               17  /* 0x11 */
+#define RSL_MSG_CCCH_LOAD_IND           18  /* 0x12 */
+#define RSL_MSG_CHANRQD                 19  /* 0x13 */
+#define RSL_MSG_DELETE_IND              20  /* 0x14 */
+#define RSL_MSG_PAGING_CMD              21  /* 0x15 */
+#define RSL_MSG_IMM_ASS_CMD             22  /* 0x16 */
+#define RSL_MSG_SMS_BC_REQ              23  /* 0x17 8.5.7 */
+#define RSL_MSG_RF_RES_IND              25  /* 8.6.1 */
+#define RSL_MSG_SACCH_FILL              26  /* 8.6.2 */
+
+#define RSL_MSG_OVERLOAD                27  /* 8.6.3 */
+#define RSL_MSG_ERROR_REPORT            28  /* 8.6.4 */
+#define RSL_MSG_SMS_BC_CMD              29  /* 8.5.8 */
+#define RSL_MSG_CBCH_LOAD_IND           30  /* 8.5.9 */
+#define RSL_MSG_NOT_CMD                 31  /* 8.5.10 */
 
 /* 0 0 1 - - - - - Dedicated Channel Management messages: */
-#define RSL_MSG_CHAN_ACTIV                     33
-#define RSL_MSG_CHAN_ACTIV_ACK         34
-#define RSL_MSG_CHAN_ACTIV_N_ACK       35
-#define RSL_MSG_CONN_FAIL                      36
-#define RSL_MSG_DEACTIVATE_SACCH       37
-
-#define RSL_MSG_ENCR_CMD                               38      /* 8.4.6 */
-#define RSL_MSG_HANDODET                               39      /* 8.4.7 */
-#define RSL_MSG_MEAS_RES                               40      /* 8.4.8 */
-#define RSL_MSG_MODE_MODIFY_REQ                        41      /* 8.4.9 */
-#define RSL_MSG_MODE_MODIFY_ACK                        42      /* 8.4.10 */
-#define RSL_MSG_MODE_MODIFY_NACK               43      /* 8.4.11 */
-#define RSL_MSG_PHY_CONTEXT_REQ                        44      /* 8.4.12 */
-#define RSL_MSG_PHY_CONTEXT_CONF               45      /* 8.4.13 */
-#define RSL_MSG_RF_CHAN_REL                            46      /* 8.4.14 */
-#define RSL_MSG_MS_POWER_CONTROL               47      /* 8.4.15 */
-#define RSL_MSG_BS_POWER_CONTROL               48      /* 8.4.16 */
-#define RSL_MSG_PREPROC_CONFIG                 49      /* 8.4.17 */
-#define RSL_MSG_PREPROC_MEAS_RES               50      /* 8.4.18 */
-#define RSL_MSG_RF_CHAN_REL_ACK                        51      /* 8.4.19 */
-#define RSL_MSG_SACCH_INFO_MODIFY              52      /* 8.4.20 */
-#define RSL_MSG_TALKER_DET                             53      /* 8.4.21 */
-#define RSL_MSG_LISTENER_DET                   54      /* 8.4.22 */
-#define RSL_MSG_REMOTE_CODEC_CONF_REP  55      /* 8.4.23 */
-#define RSL_MSG_R_T_D_REP                              56      /* 8.4.24 */
-#define RSL_MSG_PRE_HANDO_NOTIF                        57      /* 8.4.25 */
-#define RSL_MSG_MR_CODEC_MOD_REQ               58      /* 8.4.26 */
-#define RSL_MSG_MR_CODEC_MOD_ACK               59      /* 8.4.27 */
-#define RSL_MSG_MR_CODEC_MOD_NACK              60      /* 8.4.28 */
-#define RSL_MSG_MR_CODEC_MOD_PER               61      /* 8.4.29 */
-#define RSL_MSG_TFO_REP                                        62      /* 8.4.30 */
-#define RSL_MSG_TFO_MOD_REQ                            63      /* 8.4.31 */
-       /*      0 1 - - - - - - Location Services messages: */
-#define RSL_MSG_LOC_INF                                        65      /* 8.7.1 */
+#define RSL_MSG_CHAN_ACTIV              33
+#define RSL_MSG_CHAN_ACTIV_ACK          34
+#define RSL_MSG_CHAN_ACTIV_N_ACK        35
+#define RSL_MSG_CONN_FAIL               36
+#define RSL_MSG_DEACTIVATE_SACCH        37
+
+#define RSL_MSG_ENCR_CMD                38  /* 8.4.6 */
+#define RSL_MSG_HANDODET                39  /* 8.4.7 */
+#define RSL_MSG_MEAS_RES                40  /* 8.4.8 */
+#define RSL_MSG_MODE_MODIFY_REQ         41  /* 8.4.9 */
+#define RSL_MSG_MODE_MODIFY_ACK         42  /* 8.4.10 */
+#define RSL_MSG_MODE_MODIFY_NACK        43  /* 8.4.11 */
+#define RSL_MSG_PHY_CONTEXT_REQ         44  /* 8.4.12 */
+#define RSL_MSG_PHY_CONTEXT_CONF        45  /* 8.4.13 */
+#define RSL_MSG_RF_CHAN_REL             46  /* 8.4.14 */
+#define RSL_MSG_MS_POWER_CONTROL        47  /* 8.4.15 */
+#define RSL_MSG_BS_POWER_CONTROL        48  /* 8.4.16 */
+#define RSL_MSG_PREPROC_CONFIG          49  /* 8.4.17 */
+#define RSL_MSG_PREPROC_MEAS_RES        50  /* 8.4.18 */
+#define RSL_MSG_RF_CHAN_REL_ACK         51  /* 8.4.19 */
+#define RSL_MSG_SACCH_INFO_MODIFY       52  /* 8.4.20 */
+#define RSL_MSG_TALKER_DET              53  /* 8.4.21 */
+#define RSL_MSG_LISTENER_DET            54  /* 8.4.22 */
+#define RSL_MSG_REMOTE_CODEC_CONF_REP   55  /* 8.4.23 */
+#define RSL_MSG_R_T_D_REP               56  /* 8.4.24 */
+#define RSL_MSG_PRE_HANDO_NOTIF         57  /* 8.4.25 */
+#define RSL_MSG_MR_CODEC_MOD_REQ        58  /* 8.4.26 */
+#define RSL_MSG_MR_CODEC_MOD_ACK        59  /* 8.4.27 */
+#define RSL_MSG_MR_CODEC_MOD_NACK       60  /* 8.4.28 */
+#define RSL_MSG_MR_CODEC_MOD_PER        61  /* 8.4.29 */
+#define RSL_MSG_TFO_REP                 62  /* 8.4.30 */
+#define RSL_MSG_TFO_MOD_REQ             63  /* 8.4.31 */
+    /*  0 1 - - - - - - Location Services messages: */
+#define RSL_MSG_LOC_INF                 65  /* 8.7.1 */
 
 
 static const value_string rsl_msg_type_vals[] = {
-         /*    0 0 0 0 - - - - Radio Link Layer Management messages: */
-       {  0x01,        "DATA REQuest" },                                                               /* 8.3.1 */
-       {  0x02,        "DATA INDication" },                                                    /* 8.3.2 */
-       {  0x03,        "ERROR INDication" },                                                   /* 8.3.3 */
-       {  0x04,        "ESTablish REQuest" },                                                  /* 8.3.4 */
-       {  0x05,        "ESTablish CONFirm" },                                                  /* 8.3.5 */
-       {  0x06,        "ESTablish INDication" },                                               /* 8.3.6 */
-       {  0x07,        "RELease REQuest" },                                                    /* 8.3.7 */
-       {  0x08,        "RELease CONFirm" },                                                    /* 8.3.8 */
-       {  0x09,        "RELease INDication" },                                                 /* 8.3.9 */
-       {  0x0a,        "UNIT DATA REQuest" },                                                  /* 8.3.10 */
-       /* 0 0 0 1 - - - - Common Channel Management/TRX Management messages: */
-       {  0x11,        "BCCH INFOrmation" },                                                   /* 8.5.1 */
-       {  0x12,        "CCCH LOAD INDication" },                                               /* 8.5.2 */
-       {  0x13,        "CHANnel ReQuireD" },                                                   /* 8.5.3 */
-       {  0x14,        "DELETE INDication" },                                                  /* 8.5.4 */
-       {  0x15,        "PAGING CoMmanD" },                                                             /* 8.5.5 */
-       {  0x16,        "IMMEDIATE ASSIGN COMMAND" },                                   /* 8.5.6 */
-       {  0x17,        "SMS BroadCast REQuest" },                                              /* 8.5.7 */
-       {  0x19,        "RF RESource INDication" },                                             /* 8.6.1 */
-       {  0x1a,        "SACCH FILLing" },                                                              /* 8.6.2 */
-       {  0x1b,        "OVERLOAD" },                                                                   /* 8.6.3 */
-       {  0x1c,        "ERROR REPORT" },                                                               /* 8.6.4 */
-       {  0x1d,        "SMS BroadCast CoMmanD" },                                              /* 8.5.8 */
-       {  0x1e,        "CBCH LOAD INDication" },                                               /* 8.5.9 */
-       {  0x1f,        "NOTification CoMmanD" },                                               /* 8.5.10 */
-       /* 0 0 1 - - - - - Dedicated Channel Management messages: */
-       {  0x21,        "CHANnel ACTIVation" },                                                 /* 8.4.1 */
-       {  0x22,        "CHANnel ACTIVation ACKnowledge" },                             /* 8.4.2 */
-       {  0x23,        "CHANnel ACTIVation Negative ACK" },                    /* 8.4.3 */
-       {  0x24,        "CONNection FAILure" },                                                 /* 8.4.4 */
-       {  0x25,        "DEACTIVATE SACCH" },                                                   /* 8.4.5 */
-       {  0x26,        "ENCRyption CoMmanD" },                                                 /* 8.4.6 */
-       {  0x27,        "HANDOver DETection" },                                                 /* 8.4.7 */
-       {  0x28,        "MEASurement RESult" },                                                 /* 8.4.8 */
-       {  0x29,        "MODE MODIFY REQuest" },                                                /* 8.4.9 */
-       {  0x2a,        "MODE MODIFY ACKnowledge" },                                    /* 8.4.10 */
-       {  0x2b,        "MODE MODIFY Negative ACKnowledge" },                   /* 8.4.11 */
-       {  0x2c,        "PHYsical CONTEXT REQuest" },                                   /* 8.4.12 */
-       {  0x2d,        "PHYsical CONTEXT CONFirm" },                                   /* 8.4.13 */
-       {  0x2e,        "RF CHANnel RELease" },                                                 /* 8.4.14 */
-       {  0x2f,        "MS POWER CONTROL" },                                                   /* 8.4.15 */
-       {  0x30,        "BS POWER CONTROL" },                                                   /* 8.4.16 */
-       {  0x31,        "PREPROCess CONFIGure" },                                               /* 8.4.17 */
-       {  0x32,        "PREPROCessed MEASurement RESult" },                    /* 8.4.18 */
-       {  0x33,        "RF CHANnel RELease ACKnowledge" },                             /* 8.4.19 */
-       {  0x34,        "SACCH INFO MODIFY" },                                                  /* 8.4.20 */
-       {  0x35,        "TALKER DETection" },                                                   /* 8.4.21 */
-       {  0x36,        "LISTENER DETection" },                                                 /* 8.4.22 */
-       {  0x37,        "REMOTE CODEC CONFiguration REPort" },                  /* 8.4.23 */
-       {  0x38,        "Round Trip Delay REPort" },                                    /* 8.4.24 */
-       {  0x39,        "PRE-HANDOver NOTIFication" },                                  /* 8.4.25 */
-       {  0x3a,        "MultiRate CODEC MODification REQest" },                /* 8.4.26 */
-       {  0x3b,        "MultiRate CODEC MOD ACKnowledge" },                    /* 8.4.27 */
-       {  0x3c,        "MultiRate CODEC MOD Negative ACKnowledge" },   /* 8.4.28 */
-       {  0x3d,        "MultiRate CODEC MOD PERformed" },                              /* 8.4.29 */
-       {  0x3e,        "TFO REPort" },                                                                 /* 8.4.30 */
-       {  0x3f,        "TFO MODification REQuest" },                                   /* 8.4.31 */
-       /*      0 1 - - - - - - Location Services messages: */
-       {  0x41,        "Location Information" },                                               /* 8.7.1 */
-       { 0,            NULL }
+      /*    0 0 0 0 - - - - Radio Link Layer Management messages: */
+    {  0x01,    "DATA REQuest" },                               /* 8.3.1 */
+    {  0x02,    "DATA INDication" },                            /* 8.3.2 */
+    {  0x03,    "ERROR INDication" },                           /* 8.3.3 */
+    {  0x04,    "ESTablish REQuest" },                          /* 8.3.4 */
+    {  0x05,    "ESTablish CONFirm" },                          /* 8.3.5 */
+    {  0x06,    "ESTablish INDication" },                       /* 8.3.6 */
+    {  0x07,    "RELease REQuest" },                            /* 8.3.7 */
+    {  0x08,    "RELease CONFirm" },                            /* 8.3.8 */
+    {  0x09,    "RELease INDication" },                         /* 8.3.9 */
+    {  0x0a,    "UNIT DATA REQuest" },                          /* 8.3.10 */
+    /* 0 0 0 1 - - - - Common Channel Management/TRX Management messages: */
+    {  0x11,    "BCCH INFOrmation" },                           /* 8.5.1 */
+    {  0x12,    "CCCH LOAD INDication" },                       /* 8.5.2 */
+    {  0x13,    "CHANnel ReQuireD" },                           /* 8.5.3 */
+    {  0x14,    "DELETE INDication" },                          /* 8.5.4 */
+    {  0x15,    "PAGING CoMmanD" },                             /* 8.5.5 */
+    {  0x16,    "IMMEDIATE ASSIGN COMMAND" },                   /* 8.5.6 */
+    {  0x17,    "SMS BroadCast REQuest" },                      /* 8.5.7 */
+    {  0x19,    "RF RESource INDication" },                     /* 8.6.1 */
+    {  0x1a,    "SACCH FILLing" },                              /* 8.6.2 */
+    {  0x1b,    "OVERLOAD" },                                   /* 8.6.3 */
+    {  0x1c,    "ERROR REPORT" },                               /* 8.6.4 */
+    {  0x1d,    "SMS BroadCast CoMmanD" },                      /* 8.5.8 */
+    {  0x1e,    "CBCH LOAD INDication" },                       /* 8.5.9 */
+    {  0x1f,    "NOTification CoMmanD" },                       /* 8.5.10 */
+    /* 0 0 1 - - - - - Dedicated Channel Management messages: */
+    {  0x21,    "CHANnel ACTIVation" },                         /* 8.4.1 */
+    {  0x22,    "CHANnel ACTIVation ACKnowledge" },             /* 8.4.2 */
+    {  0x23,    "CHANnel ACTIVation Negative ACK" },            /* 8.4.3 */
+    {  0x24,    "CONNection FAILure" },                         /* 8.4.4 */
+    {  0x25,    "DEACTIVATE SACCH" },                           /* 8.4.5 */
+    {  0x26,    "ENCRyption CoMmanD" },                         /* 8.4.6 */
+    {  0x27,    "HANDOver DETection" },                         /* 8.4.7 */
+    {  0x28,    "MEASurement RESult" },                         /* 8.4.8 */
+    {  0x29,    "MODE MODIFY REQuest" },                        /* 8.4.9 */
+    {  0x2a,    "MODE MODIFY ACKnowledge" },                    /* 8.4.10 */
+    {  0x2b,    "MODE MODIFY Negative ACKnowledge" },           /* 8.4.11 */
+    {  0x2c,    "PHYsical CONTEXT REQuest" },                   /* 8.4.12 */
+    {  0x2d,    "PHYsical CONTEXT CONFirm" },                   /* 8.4.13 */
+    {  0x2e,    "RF CHANnel RELease" },                         /* 8.4.14 */
+    {  0x2f,    "MS POWER CONTROL" },                           /* 8.4.15 */
+    {  0x30,    "BS POWER CONTROL" },                           /* 8.4.16 */
+    {  0x31,    "PREPROCess CONFIGure" },                       /* 8.4.17 */
+    {  0x32,    "PREPROCessed MEASurement RESult" },            /* 8.4.18 */
+    {  0x33,    "RF CHANnel RELease ACKnowledge" },             /* 8.4.19 */
+    {  0x34,    "SACCH INFO MODIFY" },                          /* 8.4.20 */
+    {  0x35,    "TALKER DETection" },                           /* 8.4.21 */
+    {  0x36,    "LISTENER DETection" },                         /* 8.4.22 */
+    {  0x37,    "REMOTE CODEC CONFiguration REPort" },          /* 8.4.23 */
+    {  0x38,    "Round Trip Delay REPort" },                    /* 8.4.24 */
+    {  0x39,    "PRE-HANDOver NOTIFication" },                  /* 8.4.25 */
+    {  0x3a,    "MultiRate CODEC MODification REQest" },        /* 8.4.26 */
+    {  0x3b,    "MultiRate CODEC MOD ACKnowledge" },            /* 8.4.27 */
+    {  0x3c,    "MultiRate CODEC MOD Negative ACKnowledge" },   /* 8.4.28 */
+    {  0x3d,    "MultiRate CODEC MOD PERformed" },              /* 8.4.29 */
+    {  0x3e,    "TFO REPort" },                                 /* 8.4.30 */
+    {  0x3f,    "TFO MODification REQuest" },                   /* 8.4.31 */
+    /*  0 1 - - - - - - Location Services messages: */
+    {  0x41,    "Location Information" },                       /* 8.7.1 */
+    { 0,        NULL }
 };
-
-#define RSL_IE_CH_NO                   1
-#define RSL_IE_LINK_ID                 2
-#define RSL_IE_ACT_TYPE                        3
-#define RSL_IE_BS_POW                  4
-#define RSL_IE_CH_ID                   5
-#define RSL_IE_CH_MODE                 6
-#define RSL_IE_ENC_INF                 7
-#define RSL_IE_FRAME_NO                        8
-#define RSL_IE_HO_REF                  9
-#define RSL_IE_L1_INF                  10
-#define RSL_IE_L3_INF                  11
-#define RSL_IE_MS_ID                   12
-#define RSL_IE_MS_POW                  13
-#define RSL_IE_PAGING_GRP              14
-#define RSL_IE_PAGING_LOAD             15
-#define RSL_IE_PHY_CTX                 16
-#define RSL_IE_ACCESS_DELAY            17
-#define RSL_IE_RACH_LOAD               18
-#define RSL_IE_REQ_REF                 19
-#define RSL_IE_REL_MODE                        20
-#define RSL_IE_RESOURCE_INF            21
-#define RSL_IE_RLM_CAUSE               22
-#define RSL_IE_STARTING_TIME   23
-#define RSL_IE_TIMING_ADV              24
-#define RSL_IE_UPLINK_MEAS             25
-#define RSL_IE_CAUSE                   26
-#define RSL_IE_MEAS_RES_NO             27
-#define RSL_IE_MESSAGE_ID              28
-
-#define RSL_IE_SYS_INFO_TYPE   30
-
-
-
-
-#define RSL_IE_FULL_IMM_ASS_INF                        35
-#define RSL_IE_SMSCB_INF                               36
-#define RSL_IE_FULL_MS_TIMING_OFFSET   37
-#define RSL_IE_ERR_MSG                                 38
-#define RSL_IE_FULL_BCCH_INF                   39
-#define RSL_IE_CH_NEEDED                               40
-#define RSL_IE_CB_CMD_TYPE                             41
-#define RSL_IE_SMSCB_MESS                              42
-#define RSL_IE_CBCH_LOAD_INF                   43
-
-
-#define RSL_IE_SMSCB_CH_IND                            46
-#define RSL_IE_GRP_CALL_REF                            47
-#define RSL_IE_CH_DESC                                 48
-#define RSL_IE_NCH_DRX_INF                             49
-#define RSL_IE_CMD_IND                                 50
-#define RSL_IE_EMLPP_PRIO                              51
-#define RSL_IE_UIC                                             52
-#define RSL_IE_MAIN_CH_REF                             53
-#define RSL_IE_MULTIRATE_CONF                  54
-#define RSL_IE_MULTIRATE_CNTRL                 55
-#define RSL_IE_SUP_CODEC_TYPES                 56
-#define RSL_IE_CODEC_CONF                              57
-#define RSL_IE_RTD                                             58
-#define RSL_IE_TFO_STATUS                              59
-#define RSL_IE_LLP_APDU                                        60
-#define RSL_IE_TFO_TRANSP_CONT                 61
+static value_string_ext rsl_msg_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_msg_type_vals);
+
+#define RSL_IE_CH_NO                     1
+#define RSL_IE_LINK_ID                   2
+#define RSL_IE_ACT_TYPE                  3
+#define RSL_IE_BS_POW                    4
+#define RSL_IE_CH_ID                     5
+#define RSL_IE_CH_MODE                   6
+#define RSL_IE_ENC_INF                   7
+#define RSL_IE_FRAME_NO                  8
+#define RSL_IE_HO_REF                    9
+#define RSL_IE_L1_INF                   10
+#define RSL_IE_L3_INF                   11
+#define RSL_IE_MS_ID                    12
+#define RSL_IE_MS_POW                   13
+#define RSL_IE_PAGING_GRP               14
+#define RSL_IE_PAGING_LOAD              15
+#define RSL_IE_PHY_CTX                  16
+#define RSL_IE_ACCESS_DELAY             17
+#define RSL_IE_RACH_LOAD                18
+#define RSL_IE_REQ_REF                  19
+#define RSL_IE_REL_MODE                 20
+#define RSL_IE_RESOURCE_INF             21
+#define RSL_IE_RLM_CAUSE                22
+#define RSL_IE_STARTING_TIME            23
+#define RSL_IE_TIMING_ADV               24
+#define RSL_IE_UPLINK_MEAS              25
+#define RSL_IE_CAUSE                    26
+#define RSL_IE_MEAS_RES_NO              27
+#define RSL_IE_MESSAGE_ID               28
+
+#define RSL_IE_SYS_INFO_TYPE            30
+
+
+
+
+#define RSL_IE_FULL_IMM_ASS_INF         35
+#define RSL_IE_SMSCB_INF                36
+#define RSL_IE_FULL_MS_TIMING_OFFSET    37
+#define RSL_IE_ERR_MSG                  38
+#define RSL_IE_FULL_BCCH_INF            39
+#define RSL_IE_CH_NEEDED                40
+#define RSL_IE_CB_CMD_TYPE              41
+#define RSL_IE_SMSCB_MESS               42
+#define RSL_IE_CBCH_LOAD_INF            43
+
+
+#define RSL_IE_SMSCB_CH_IND             46
+#define RSL_IE_GRP_CALL_REF             47
+#define RSL_IE_CH_DESC                  48
+#define RSL_IE_NCH_DRX_INF              49
+#define RSL_IE_CMD_IND                  50
+#define RSL_IE_EMLPP_PRIO               51
+#define RSL_IE_UIC                      52
+#define RSL_IE_MAIN_CH_REF              53
+#define RSL_IE_MULTIRATE_CONF           54
+#define RSL_IE_MULTIRATE_CNTRL          55
+#define RSL_IE_SUP_CODEC_TYPES          56
+#define RSL_IE_CODEC_CONF               57
+#define RSL_IE_RTD                      58
+#define RSL_IE_TFO_STATUS               59
+#define RSL_IE_LLP_APDU                 60
+#define RSL_IE_TFO_TRANSP_CONT          61
 
 static const value_string rsl_ie_type_vals[] = {
-       {  0x01,        "Channel Number" },                             /*  9.3.1 */
-       {  0x02,        "Link Identifier" },                    /*  9.3.2 */
-       {  0x03,        "Activation Type" },                    /*  9.3.3 */
-       {  0x04,        "BS Power" },                                   /*  9.3.4 */
-       {  0x05,        "Channel Identification" },             /*  9.3.5 */
-       {  0x06,        "Channel Mode" },                               /*  9.3.6 */
-       {  0x07,        "Encryption Information" },             /*  9.3.7 */
-       {  0x08,        "Frame Number" },                               /*  9.3.8 */
-       {  0x09,        "Handover Reference" },                 /*  9.3.9 */
-       {  0x0a,        "L1 Information" },                             /*  9.3.10 */
-       {  0x0b,        "L3 Information" },                             /*  9.3.11 */
-       {  0x0c,        "MS Identity" },                                /*  9.3.12 */
-       {  0x0d,        "MS Power" },                                   /*  9.3.13 */
-       {  0x0e,        "Paging Group" },                               /*  9.3.14 */
-       {  0x0f,        "Paging Load" },                                /*  9.3.15 */
-       {  0x10,        "Physical Context" },                   /*  9.3.16 */
-       {  0x11,        "Access Delay" },                               /*  9.3.17 */
-       {  0x12,        "RACH Load" },                                  /*  9.3.18 */
-       {  0x13,        "Request Reference" },                  /*  9.3.19 */
-       {  0x14,        "Release Mode" },                               /*  9.3.20 */
-       {  0x15,        "Resource Information" },               /*  9.3.21 */
-       {  0x16,        "RLM Cause" },                                  /*  9.3.22 */
-       {  0x17,        "Starting Time" },                              /*  9.3.23 */
-       {  0x18,        "Timing Advance" },                             /*  9.3.24 */
-       {  0x19,        "Uplink Measurements" },                /*  9.3.25 */
-       {  0x1a,        "Cause" },                                              /*  9.3.26 */
-       {  0x1b,        "Measurement Result Number" },  /*  9.3.27 */
-       {  0x1c,        "Message Identifier" },                 /*  9.3.28 */
-       {  0x1d,        "reserved" },                                   /*  */
-       {  0x1e,        "System Info Type" },                   /*  9.3.30 */
-       {  0x1f,        "MS Power Parameters" },                /*  9.3.31 */
-       {  0x20,        "BS Power Parameters" },                /*  9.3.32 */
-       {  0x21,        "Pre-processing Parameters" },  /*  9.3.33 */
-       {  0x22,        "Pre-processed Measurements" }, /*  9.3.34 */
-       {  0x23,        "reserved" },                                   /*  */
-       {  0x24,        "SMSCB Information" },                  /*  9.3.36 */
-       {  0x25,        "MS Timing Offset" },                   /*  9.3.37 */
-       {  0x26,        "Erroneous Message" },                  /*  9.3.38 */
-       {  0x27,        "Full BCCH Information" },              /*  9.3.39 */
-       {  0x28,        "Channel Needed" },                             /*  9.3.40 */
-       {  0x29,        "CB Command type" },                    /*  9.3.41 */
-       {  0x2a,        "SMSCB Message" },                              /*  9.3.42 */
-       {  0x2b,        "Full Immediate Assign Info" }, /*  9.3.35 */
-       {  0x2c,        "SACCH Information" },                  /*  9.3.29 */
-       {  0x2d,        "CBCH Load Information" },              /*  9.3.43 */
-       {  0x2e,        "SMSCB Channel Indicator" },    /*  9.3.44 */
-       {  0x2f,        "Group Call Reference" },               /*  9.3.45 */
-       {  0x30,        "Channel Description" },                /*  9.3.46 */
-       {  0x31,        "NCH DRX Information" },                /*  9.3.47 */
-       {  0x32,        "Command Indicator" },                  /*  9.3.48 */
-       {  0x33,        "eMLPP Priority" },                             /*  9.3.49 */
-       {  0x34,        "UIC" },                                                /*  9.3.50 */
-       {  0x35,        "Main Channel Reference" },             /*  9.3.51 */
-       {  0x36,        "MultiRate Configuration" },    /*  9.3.52 */
-       {  0x37,        "MultiRate Control" },                  /*  9.3.53 */
-       {  0x38,        "Supported Codec Types" },              /*  9.3.54 */
-       {  0x39,        "Codec Configuration" },                /*  9.3.55 */
-       {  0x3a,        "Round Trip Delay" },                   /*  9.3.56 */
-       {  0x3b,        "TFO Status" },                                 /*  9.3.57 */
-       {  0x3c,        "LLP APDU" },                                   /*  9.3.58 */
-       {  0x3d,        "TFO Transparent Container" },  /*  9.3.59 */
-       /*
-                       0 0 1 1 1 1 1 0
-                       to
-                       1 1 1 0 1 1 1 1
-                       Reserved for future use
-
-                       1 1 1 1 0 0 0 0
-                       to
-                       1 1 1 1 1 1 1 1
-                       Not used
-
-       */
-       { 0,                    NULL }
+    {  0x01,    "Channel Number" },             /*  9.3.1 */
+    {  0x02,    "Link Identifier" },            /*  9.3.2 */
+    {  0x03,    "Activation Type" },            /*  9.3.3 */
+    {  0x04,    "BS Power" },                   /*  9.3.4 */
+    {  0x05,    "Channel Identification" },     /*  9.3.5 */
+    {  0x06,    "Channel Mode" },               /*  9.3.6 */
+    {  0x07,    "Encryption Information" },     /*  9.3.7 */
+    {  0x08,    "Frame Number" },               /*  9.3.8 */
+    {  0x09,    "Handover Reference" },         /*  9.3.9 */
+    {  0x0a,    "L1 Information" },             /*  9.3.10 */
+    {  0x0b,    "L3 Information" },             /*  9.3.11 */
+    {  0x0c,    "MS Identity" },                /*  9.3.12 */
+    {  0x0d,    "MS Power" },                   /*  9.3.13 */
+    {  0x0e,    "Paging Group" },               /*  9.3.14 */
+    {  0x0f,    "Paging Load" },                /*  9.3.15 */
+    {  0x10,    "Physical Context" },           /*  9.3.16 */
+    {  0x11,    "Access Delay" },               /*  9.3.17 */
+    {  0x12,    "RACH Load" },                  /*  9.3.18 */
+    {  0x13,    "Request Reference" },          /*  9.3.19 */
+    {  0x14,    "Release Mode" },               /*  9.3.20 */
+    {  0x15,    "Resource Information" },       /*  9.3.21 */
+    {  0x16,    "RLM Cause" },                  /*  9.3.22 */
+    {  0x17,    "Starting Time" },              /*  9.3.23 */
+    {  0x18,    "Timing Advance" },             /*  9.3.24 */
+    {  0x19,    "Uplink Measurements" },        /*  9.3.25 */
+    {  0x1a,    "Cause" },                      /*  9.3.26 */
+    {  0x1b,    "Measurement Result Number" },  /*  9.3.27 */
+    {  0x1c,    "Message Identifier" },         /*  9.3.28 */
+    {  0x1d,    "reserved" },                   /*  */
+    {  0x1e,    "System Info Type" },           /*  9.3.30 */
+    {  0x1f,    "MS Power Parameters" },        /*  9.3.31 */
+    {  0x20,    "BS Power Parameters" },        /*  9.3.32 */
+    {  0x21,    "Pre-processing Parameters" },  /*  9.3.33 */
+    {  0x22,    "Pre-processed Measurements" }, /*  9.3.34 */
+    {  0x23,    "reserved" },                   /*  */
+    {  0x24,    "SMSCB Information" },          /*  9.3.36 */
+    {  0x25,    "MS Timing Offset" },           /*  9.3.37 */
+    {  0x26,    "Erroneous Message" },          /*  9.3.38 */
+    {  0x27,    "Full BCCH Information" },      /*  9.3.39 */
+    {  0x28,    "Channel Needed" },             /*  9.3.40 */
+    {  0x29,    "CB Command type" },            /*  9.3.41 */
+    {  0x2a,    "SMSCB Message" },              /*  9.3.42 */
+    {  0x2b,    "Full Immediate Assign Info" }, /*  9.3.35 */
+    {  0x2c,    "SACCH Information" },          /*  9.3.29 */
+    {  0x2d,    "CBCH Load Information" },      /*  9.3.43 */
+    {  0x2e,    "SMSCB Channel Indicator" },    /*  9.3.44 */
+    {  0x2f,    "Group Call Reference" },       /*  9.3.45 */
+    {  0x30,    "Channel Description" },        /*  9.3.46 */
+    {  0x31,    "NCH DRX Information" },        /*  9.3.47 */
+    {  0x32,    "Command Indicator" },          /*  9.3.48 */
+    {  0x33,    "eMLPP Priority" },             /*  9.3.49 */
+    {  0x34,    "UIC" },                        /*  9.3.50 */
+    {  0x35,    "Main Channel Reference" },     /*  9.3.51 */
+    {  0x36,    "MultiRate Configuration" },    /*  9.3.52 */
+    {  0x37,    "MultiRate Control" },          /*  9.3.53 */
+    {  0x38,    "Supported Codec Types" },      /*  9.3.54 */
+    {  0x39,    "Codec Configuration" },        /*  9.3.55 */
+    {  0x3a,    "Round Trip Delay" },           /*  9.3.56 */
+    {  0x3b,    "TFO Status" },                 /*  9.3.57 */
+    {  0x3c,    "LLP APDU" },                   /*  9.3.58 */
+    {  0x3d,    "TFO Transparent Container" },  /*  9.3.59 */
+    /*
+            0 0 1 1 1 1 1 0
+            to
+            1 1 1 0 1 1 1 1
+            Reserved for future use
+
+            1 1 1 1 0 0 0 0
+            to
+            1 1 1 1 1 1 1 1
+            Not used
+
+    */
+    { 0,            NULL }
 };
+static value_string_ext rsl_ie_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_ie_type_vals);
 
 
 /*
-C5     C4      C3      C2      C1
-0      0       0       0       1       Bm + ACCH's
-0      0       0       1       T       Lm + ACCH's
-0      0       1       T       T       SDCCH/4 + ACCH
-0      1       T       T       T       SDCCH/8 + ACCH
-1      0       0       0       0       BCCH
-1      0       0       0       1       Uplink CCCH (RACH)
-1      0       0       1       0       Downlink CCCH (PCH + AGCH)
+C5  C4  C3  C2  C1
+0   0   0   0   1   Bm + ACCH's
+0   0   0   1   T   Lm + ACCH's
+0   0   1   T   T   SDCCH/4 + ACCH
+0   1   T   T   T   SDCCH/8 + ACCH
+1   0   0   0   0   BCCH
+1   0   0   0   1   Uplink CCCH (RACH)
+1   0   0   1   0   Downlink CCCH (PCH + AGCH)
 */
 static const value_string rsl_ch_no_Cbits_vals[] = {
-       {  0x01,        "Bm + ACCH" },
-       {  0x02,        "Lm + ACCH (sub-chan 0)" },
-       {  0x03,        "Lm + ACCH (sub-chan 1)" },
-       {  0x04,        "SDCCH/4 + ACCH (sub-chan 0)" },
-       {  0x05,        "SDCCH/4 + ACCH (sub-chan 1)" },
-       {  0x06,        "SDCCH/4 + ACCH (sub-chan 2)" },
-       {  0x07,        "SDCCH/4 + ACCH (sub-chan 3)" },
-       {  0x08,        "SDCCH/8 + ACCH (sub-chan 0)" },
-       {  0x09,        "SDCCH/8 + ACCH (sub-chan 1)" },
-       {  0x0a,        "SDCCH/8 + ACCH (sub-chan 2)" },
-       {  0x0b,        "SDCCH/8 + ACCH (sub-chan 3)" },
-       {  0x0c,        "SDCCH/8 + ACCH (sub-chan 4)" },
-       {  0x0d,        "SDCCH/8 + ACCH (sub-chan 5)" },
-       {  0x0e,        "SDCCH/8 + ACCH (sub-chan 6)" },
-       {  0x0f,        "SDCCH/8 + ACCH (sub-chan 7)" },
-       {  0x10,        "BCCH" },
-       {  0x11,        "Uplink CCCH (RACH)" },
-       {  0x12,        "Downlink CCCH (PCH + AGCH)" },
-       { 0,                    NULL }
+    {  0x01,    "Bm + ACCH" },
+    {  0x02,    "Lm + ACCH (sub-chan 0)" },
+    {  0x03,    "Lm + ACCH (sub-chan 1)" },
+    {  0x04,    "SDCCH/4 + ACCH (sub-chan 0)" },
+    {  0x05,    "SDCCH/4 + ACCH (sub-chan 1)" },
+    {  0x06,    "SDCCH/4 + ACCH (sub-chan 2)" },
+    {  0x07,    "SDCCH/4 + ACCH (sub-chan 3)" },
+    {  0x08,    "SDCCH/8 + ACCH (sub-chan 0)" },
+    {  0x09,    "SDCCH/8 + ACCH (sub-chan 1)" },
+    {  0x0a,    "SDCCH/8 + ACCH (sub-chan 2)" },
+    {  0x0b,    "SDCCH/8 + ACCH (sub-chan 3)" },
+    {  0x0c,    "SDCCH/8 + ACCH (sub-chan 4)" },
+    {  0x0d,    "SDCCH/8 + ACCH (sub-chan 5)" },
+    {  0x0e,    "SDCCH/8 + ACCH (sub-chan 6)" },
+    {  0x0f,    "SDCCH/8 + ACCH (sub-chan 7)" },
+    {  0x10,    "BCCH" },
+    {  0x11,    "Uplink CCCH (RACH)" },
+    {  0x12,    "Downlink CCCH (PCH + AGCH)" },
+    { 0,            NULL }
 };
+static value_string_ext rsl_ch_no_Cbits_vals_ext = VALUE_STRING_EXT_INIT(rsl_ch_no_Cbits_vals);
 
-/* 9.3.1 Channel number                        9.3.1   M TV 2 */
+/* 9.3.1 Channel number         9.3.1   M TV 2 */
 static int
 dissect_rsl_ie_ch_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CH_NO)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Channel number IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ch_no);
-
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* C-bits */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_no_Cbits, tvb, offset, 1, FALSE);
-       /* TN is time slot number, binary represented as in 3GPP TS 45.002.
-        * 3 Bits
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_no_TN, tvb, offset, 1, FALSE);
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CH_NO)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Channel number IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ch_no);
+
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* C-bits */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_no_Cbits, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* TN is time slot number, binary represented as in 3GPP TS 45.002.
+     * 3 Bits
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_no_TN, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    return offset;
 }
 
 static const value_string rsl_ch_type_vals[] = {
-       {  0x00,        "Main signalling channel (FACCH or SDCCH)" },
-       {  0x01,        "SACCH" },
-       { 0,                    NULL }
+    {  0x00,    "Main signalling channel (FACCH or SDCCH)" },
+    {  0x01,    "SACCH" },
+    { 0,            NULL }
 };
 
 static const value_string rsl_prio_vals[] = {
-       {  0x00,        "Normal Priority" },
-       {  0x01,        "High Priority" },
-       {  0x02,        "Low Priority" },
-       { 0,                    NULL }
+    {  0x00,    "Normal Priority" },
+    {  0x01,    "High Priority" },
+    {  0x02,    "Low Priority" },
+    { 0,            NULL }
 };
 
 /*
@@ -563,44 +563,44 @@ static const value_string rsl_prio_vals[] = {
 static int
 dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 octet;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_LINK_ID)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2, "Link Identifier IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_link_id);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       octet = tvb_get_guint8(tvb,offset);
-
-       if((octet&0x20) == 0x20){
-               /* Not applicable */
-               proto_tree_add_item(ie_tree, hf_rsl_na, tvb, offset, 1, FALSE);
-               return offset++;
-       }
-       /* channel type */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_type, tvb, offset, 1, FALSE);
-       /* NA - Not applicable */
-       proto_tree_add_item(ie_tree, hf_rsl_na, tvb, offset, 1, FALSE);
-       /* Priority */
-       proto_tree_add_item(ie_tree, hf_rsl_prio, tvb, offset, 1, FALSE);
-       /* SAPI
-        * The SAPI field contains the SAPI value as defined in 3GPP TS 44.005.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_sapi, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 octet;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_LINK_ID)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2, "Link Identifier IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_link_id);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    octet = tvb_get_guint8(tvb,offset);
+
+    if((octet&0x20) == 0x20){
+        /* Not applicable */
+        proto_tree_add_item(ie_tree, hf_rsl_na, tvb, offset, 1, ENC_BIG_ENDIAN);
+        return offset++;
+    }
+    /* channel type */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* NA - Not applicable */
+    proto_tree_add_item(ie_tree, hf_rsl_na, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* Priority */
+    proto_tree_add_item(ie_tree, hf_rsl_prio, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* SAPI
+     * The SAPI field contains the SAPI value as defined in 3GPP TS 44.005.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_sapi, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -612,10 +612,10 @@ static const true_false_string rsl_rbit_vals = {
 };
 
 static const value_string rsl_a3a2_vals[] = {
-       {  0x00,        "Activation related to intra-cell channel change" },
-       {  0x01,        "Activation related to inter-cell channel change (handover)" },
-       {  0x02,        "Activation related to secondary channels" },
-       { 0,                    NULL }
+    {  0x00,    "Activation related to intra-cell channel change" },
+    {  0x01,    "Activation related to inter-cell channel change (handover)" },
+    {  0x02,    "Activation related to secondary channels" },
+    { 0,            NULL }
 };
 
 static const true_false_string rsl_a1_0_vals = {
@@ -636,52 +636,52 @@ static const true_false_string rsl_a1_2_vals = {
 static int
 dissect_rsl_ie_act_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-       guint   octet;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_ACT_TYPE)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Activation Type IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_act_type);
-
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* The R bit indicates if the procedure is an initial activation or a reactivation. */
-       proto_tree_add_item(ie_tree, hf_rsl_rbit, tvb, offset, 1, FALSE);
-
-       /* The A-bits indicate the type of activation, which defines the access procedure
-        * and the operation of the data link layer
-        */
-       octet = (tvb_get_guint8(tvb,offset) & 0x06)>>1;
-       proto_tree_add_item(ie_tree, hf_rsl_a3a2, tvb, offset, 1, FALSE);
-       switch(octet){
-       case 0:
-               /* Activation related to intra-cell channel change */
-               proto_tree_add_item(ie_tree, hf_rsl_a1_0, tvb, offset, 1, FALSE);
-               break;
-       case 1:
-               /* Activation related to inter-cell channel change (handover) */
-               proto_tree_add_item(ie_tree, hf_rsl_a1_1, tvb, offset, 1, FALSE);
-               break;
-       case 2:
-               /* Activation related to secondary channels */
-               proto_tree_add_item(ie_tree, hf_rsl_a1_2, tvb, offset, 1, FALSE);
-               break;
-       default:
-               break;
-       }
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+    guint   octet;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_ACT_TYPE)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Activation Type IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_act_type);
+
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* The R bit indicates if the procedure is an initial activation or a reactivation. */
+    proto_tree_add_item(ie_tree, hf_rsl_rbit, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+    /* The A-bits indicate the type of activation, which defines the access procedure
+     * and the operation of the data link layer
+     */
+    octet = (tvb_get_guint8(tvb,offset) & 0x06)>>1;
+    proto_tree_add_item(ie_tree, hf_rsl_a3a2, tvb, offset, 1, ENC_BIG_ENDIAN);
+    switch(octet){
+    case 0:
+        /* Activation related to intra-cell channel change */
+        proto_tree_add_item(ie_tree, hf_rsl_a1_0, tvb, offset, 1, ENC_BIG_ENDIAN);
+        break;
+    case 1:
+        /* Activation related to inter-cell channel change (handover) */
+        proto_tree_add_item(ie_tree, hf_rsl_a1_1, tvb, offset, 1, ENC_BIG_ENDIAN);
+        break;
+    case 2:
+        /* Activation related to secondary channels */
+        proto_tree_add_item(ie_tree, hf_rsl_a1_2, tvb, offset, 1, ENC_BIG_ENDIAN);
+        break;
+    default:
+        break;
+    }
+    offset++;
+
+    return offset;
 }
 /*
  * 9.3.4 BS Power
@@ -698,59 +698,60 @@ static const true_false_string rsl_fpc_epc_mode_vals = {
 };
 
 static const value_string rsl_rlm_bs_power_vals[] = {
-       {  0x00,        "Pn" },
-       {  0x01,        "Pn - 2 dB" },
-       {  0x02,        "Pn - 4 dB" },
-       {  0x03,        "Pn - 6 dB" },
-       {  0x04,        "Pn - 8 dB" },
-       {  0x05,        "Pn - 10 dB" },
-       {  0x06,        "Pn - 12 dB" },
-       {  0x07,        "Pn - 14 dB" },
-       {  0x08,        "Pn - 16 dB" },
-       {  0x09,        "Pn - 18 dB" },
-       {  0x0a,        "Pn - 20 dB" },
-       {  0x0b,        "Pn - 22 dB" },
-       {  0x0c,        "Pn - 24 dB" },
-       {  0x0d,        "Pn - 26 dB" },
-       {  0x0e,        "Pn - 28 dB" },
-       {  0x0f,        "Pn - 30 dB" },
-       { 0,                    NULL }
+    {  0x00,    "Pn" },
+    {  0x01,    "Pn - 2 dB" },
+    {  0x02,    "Pn - 4 dB" },
+    {  0x03,    "Pn - 6 dB" },
+    {  0x04,    "Pn - 8 dB" },
+    {  0x05,    "Pn - 10 dB" },
+    {  0x06,    "Pn - 12 dB" },
+    {  0x07,    "Pn - 14 dB" },
+    {  0x08,    "Pn - 16 dB" },
+    {  0x09,    "Pn - 18 dB" },
+    {  0x0a,    "Pn - 20 dB" },
+    {  0x0b,    "Pn - 22 dB" },
+    {  0x0c,    "Pn - 24 dB" },
+    {  0x0d,    "Pn - 26 dB" },
+    {  0x0e,    "Pn - 28 dB" },
+    {  0x0f,    "Pn - 30 dB" },
+    { 0,            NULL }
 };
+static value_string_ext rsl_rlm_bs_power_vals_ext = VALUE_STRING_EXT_INIT(rsl_rlm_bs_power_vals);
 
 static int
 dissect_rsl_ie_bs_power(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_BS_POW)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"BS Power IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_bs_power);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* EPC mode */
-       proto_tree_add_item(ie_tree, hf_rsl_epc_mode, tvb, offset, 1, FALSE);
-       /* FPC_EPC mode */
-       proto_tree_add_item(ie_tree, hf_rsl_bs_fpc_epc_mode, tvb, offset, 1, FALSE);
-
-       /* The Power Level field (octet 2) indicates the number of 2 dB steps by
-        * which the power shall be reduced from its nominal value, Pn,
-        * set by the network operator to adjust the coverage.
-        * Thus the Power Level values correspond to the following powers (relative to Pn):
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_bs_power, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_BS_POW)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"BS Power IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_bs_power);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* EPC mode */
+    proto_tree_add_item(ie_tree, hf_rsl_epc_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* FPC_EPC mode */
+    proto_tree_add_item(ie_tree, hf_rsl_bs_fpc_epc_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+    /* The Power Level field (octet 2) indicates the number of 2 dB steps by
+     * which the power shall be reduced from its nominal value, Pn,
+     * set by the network operator to adjust the coverage.
+     * Thus the Power Level values correspond to the following powers (relative to Pn):
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_bs_power, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 /*
  * 9.3.5 Channel Identification
@@ -758,39 +759,46 @@ dissect_rsl_ie_bs_power(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_ch_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 length;
-       int ie_offset;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CH_ID)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Identification IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ch_id);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb, offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       ie_offset = offset;
-
-       /* 3GPP TS 44.018 "Channel Description" */
-       de_rr_ch_dsc(tvb, ie_tree, offset, length, NULL, 0);
-       /*
-        * The 3GPP TS 24.008 "Mobile Allocation" shall for compatibility reasons be
-        * included but empty, i.e. the length shall be zero.
-        */
-       return ie_offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 length;
+    int ie_offset;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CH_ID)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Identification IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ch_id);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb, offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    ie_offset = offset;
+
+    /* 3GPP TS 44.018 "Channel Description"
+     * the whole of the 3GPP TS 44.018 element including the element identifier and
+     * length should be included.
+     * XXX Hmm a type 3 IE (TV).
+     */
+    proto_tree_add_text(ie_tree, tvb,offset, 1, "Channel Description Tag");
+    de_rr_ch_dsc(tvb, ie_tree, pinfo, offset+1, length, NULL, 0);
+    offset+=4;
+    /*
+     * The 3GPP TS 24.008 "Mobile Allocation" shall for compatibility reasons be
+     * included but empty, i.e. the length shall be zero.
+     */
+    proto_tree_add_text(ie_tree, tvb,offset,2,"Mobile Allocation Tag+Length(0)");
+    return ie_offset + length;
 }
 /*
  * 9.3.6 Channel Mode
@@ -801,32 +809,33 @@ static const true_false_string rsl_dtx_vals = {
   "DTX is not applied"
 };
 static const value_string rsl_speech_or_data_vals[] = {
-       {  0x01,        "Speech" },
-       {  0x02,        "Data" },
-       {  0x03,        "Signalling" },
-       { 0,                    NULL }
+    {  0x01,    "Speech" },
+    {  0x02,    "Data" },
+    {  0x03,    "Signalling" },
+    { 0,            NULL }
 };
 static const value_string rsl_ch_rate_and_type_vals[] = {
-       {  0x01,        "SDCCH" },
-       {  0x08,        "Full rate TCH channel Bm" },
-       {  0x09,        "Half rate TCH channel Lm" },
-       {  0x0a,        "Full rate TCH channel bi-directional Bm, Multislot configuration" },
-       {  0x1a,        "Full rate TCH channel uni-directional downlink Bm, Multislot configuration" },
-       {  0x18,        "Full rate TCH channel Bm Group call channel" },
-       {  0x19,        "Half rate TCH channel Lm Group call channel" },
-       {  0x28,        "Full rate TCH channel Bm Broadcast call channel" },
-       {  0x29,        "PHalf rate TCH channel Lm Broadcast call channel" },
-       { 0,                    NULL }
+    {  0x01,    "SDCCH" },
+    {  0x08,    "Full rate TCH channel Bm" },
+    {  0x09,    "Half rate TCH channel Lm" },
+    {  0x0a,    "Full rate TCH channel bi-directional Bm, Multislot configuration" },
+    {  0x1a,    "Full rate TCH channel uni-directional downlink Bm, Multislot configuration" },
+    {  0x18,    "Full rate TCH channel Bm Group call channel" },
+    {  0x19,    "Half rate TCH channel Lm Group call channel" },
+    {  0x28,    "Full rate TCH channel Bm Broadcast call channel" },
+    {  0x29,    "PHalf rate TCH channel Lm Broadcast call channel" },
+    { 0,            NULL }
 };
+static value_string_ext rsl_ch_rate_and_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_ch_rate_and_type_vals);
 
 static const value_string rsl_speech_coding_alg_vals[] = {
-       {  0x01,        "GSM speech coding algorithm version 1: GSM FR or GSM HR" },
-       {  0x11,        "GSM speech coding algorithm version 2: GSM EFR (half rate not defined in this version of the protocol)" },
-       {  0x21,        "GSM speech coding algorithm version 3: FR AMR or HR AMR" },
-       {  0x31,        "GSM speech coding algorithm version 4: OFR AMR-WB or OHR AMR-WB" },
-       {  0x09,        "GSM speech coding algorithm version 5: FR AMR-WB" },
-       {  0x0d,        "GSM speech coding algorithm version 6: OHR AMR" },
-       { 0,                    NULL }
+    {  0x01,    "GSM speech coding algorithm version 1: GSM FR or GSM HR" },
+    {  0x11,    "GSM speech coding algorithm version 2: GSM EFR (half rate not defined in this version of the protocol)" },
+    {  0x21,    "GSM speech coding algorithm version 3: FR AMR or HR AMR" },
+    {  0x31,    "GSM speech coding algorithm version 4: OFR AMR-WB or OHR AMR-WB" },
+    {  0x09,    "GSM speech coding algorithm version 5: FR AMR-WB" },
+    {  0x0d,    "GSM speech coding algorithm version 6: OHR AMR" },
+    { 0,            NULL }
 };
 
 static const true_false_string t_nt_bit_vals = {
@@ -835,112 +844,112 @@ static const true_false_string t_nt_bit_vals = {
 };
 
 static const value_string rsl_ra_if_data_rte_vals[] = {
-       {  0x21,        "asymmetric 43.5 kbit/s (downlink) + 14.5 kbit/s (uplink)" },
-       {  0x22,        "asymmetric 29.0 kbit/s (downlink) + 14.5 kbit/s (uplink)" },
-       {  0x23,        "asymmetric 43.5 kbit/s (downlink) + 29.0 kbit/s (uplink)" },
-       {  0x29,        "asymmetric 14.5 kbit/s (downlink) + 43.5 kbit/s (uplink)" },
-       {  0x2a,        "asymmetric 14.5 kbit/s (downlink) + 29.0 kbit/s (uplink)" },
-       {  0x2b,        "asymmetric 29.0 kbit/s (downlink) + 43.5 kbit/s (uplink)" },
-       {  0x34,        "43.5 kbit/s" },
-       {  0x31,        "28.8 kbit/s" },
-       {  0x18,        "14.5 kbit/s" },
-       {  0x10,        "12 kbit/s" },
-       {  0x11,        "6 kbit/s" },
-       { 0,                    NULL }
+    {  0x21,    "asymmetric 43.5 kbit/s (downlink) + 14.5 kbit/s (uplink)" },
+    {  0x22,    "asymmetric 29.0 kbit/s (downlink) + 14.5 kbit/s (uplink)" },
+    {  0x23,    "asymmetric 43.5 kbit/s (downlink) + 29.0 kbit/s (uplink)" },
+    {  0x29,    "asymmetric 14.5 kbit/s (downlink) + 43.5 kbit/s (uplink)" },
+    {  0x2a,    "asymmetric 14.5 kbit/s (downlink) + 29.0 kbit/s (uplink)" },
+    {  0x2b,    "asymmetric 29.0 kbit/s (downlink) + 43.5 kbit/s (uplink)" },
+    {  0x34,    "43.5 kbit/s" },
+    {  0x31,    "28.8 kbit/s" },
+    {  0x18,    "14.5 kbit/s" },
+    {  0x10,    "12 kbit/s" },
+    {  0x11,    "6 kbit/s" },
+    { 0,            NULL }
 };
 
 static const value_string rsl_data_rte_vals[] = {
-       {  0x38,        "32 kbit/s" },
-       {  0x22,        "39 kbit/s" },
-       {  0x18,        "14.4 kbit/s" },
-       {  0x10,        "9.6 kbit/s" },
-       {  0x11,        "4.8 kbit/s" },
-       {  0x12,        "2.4 kbit/s" },
-       {  0x13,        "1.2 kbit/s" },
-       {  0x14,        "600 bit/s" },
-       {  0x15,        "1 200/75 bit/s (1 200 network-to-MS, 75 MS-to-network)" },
-       { 0,                    NULL }
+    {  0x38,    "32 kbit/s" },
+    {  0x22,    "39 kbit/s" },
+    {  0x18,    "14.4 kbit/s" },
+    {  0x10,    "9.6 kbit/s" },
+    {  0x11,    "4.8 kbit/s" },
+    {  0x12,    "2.4 kbit/s" },
+    {  0x13,    "1.2 kbit/s" },
+    {  0x14,    "600 bit/s" },
+    {  0x15,    "1 200/75 bit/s (1 200 network-to-MS, 75 MS-to-network)" },
+    { 0,            NULL }
 };
 
 static int
 dissect_rsl_ie_ch_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 length;
-       int ie_offset;
-       guint8 ie_id;
-       guint8 octet;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CH_MODE)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Mode IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ch_mode);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb, offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       ie_offset = offset;
-
-       /* The DTX bits of octet 3 indicate whether DTX is applied
-        * DTXd indicates use of DTX in the downlink direction (BTS to MS) and
-        * DTXu indicates use of DTX in the uplink direction (MS to BTS).
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_cm_dtxd, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_cm_dtxu, tvb, offset, 1, FALSE);
-       offset++;
-       /* The "Speech or data indicator" field (octet 4) */
-       proto_tree_add_item(ie_tree, hf_rsl_speech_or_data, tvb, offset, 1, FALSE);
-       octet = tvb_get_guint8(tvb,offset);
-       offset++;
-       /* Channel rate and type */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_rate_and_type, tvb, offset, 1, FALSE);
-       offset++;
-       /* Speech coding algor./data rate + transp ind */
-       switch(octet){
-       case 1:
-               /* Speech */
-               proto_tree_add_item(ie_tree, hf_rsl_speech_coding_alg, tvb, offset, 1, FALSE);
-               break;
-       case 2:
-               /* Data */
-               proto_tree_add_item(ie_tree, hf_rsl_extension_bit, tvb, offset, 1, FALSE);
-               proto_tree_add_item(ie_tree, hf_rsl_t_nt_bit, tvb, offset, 1, FALSE);
-               octet = tvb_get_guint8(tvb,offset);
-               if ((octet&0x40)==0x40){
-                       /* Non-transparent service */
-                       /* For the non-transparent service, bits 6 to 1 indicate the radio interface data rate:*/
-                       proto_tree_add_item(ie_tree, hf_rsl_ra_if_data_rte, tvb, offset, 1, FALSE);
-               }else{
-                       /* For the transparent service, bits 6-1 indicate the data rate: */
-                       proto_tree_add_item(ie_tree, hf_rsl_data_rte, tvb, offset, 1, FALSE);
-               }
-               break;
-       case 3:
-               /* Signalling
-                * If octet 4 indicates signalling then octet 6 is coded as follows:
-                * 0000 0000 No resources required
-                */
-               proto_tree_add_text(tree, tvb,offset,1,"0 No resources required(All other values are reserved)");
-               break;
-       default:
-               /* Should not happen */
-               proto_tree_add_text(ie_tree, tvb,offset,1,"Speech or data indicator != 1,2 or 3");
-               break;
-       }
-
-       offset++;
-
-       return ie_offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 length;
+    int ie_offset;
+    guint8 ie_id;
+    guint8 octet;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CH_MODE)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Mode IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ch_mode);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb, offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    ie_offset = offset;
+
+    /* The DTX bits of octet 3 indicate whether DTX is applied
+     * DTXd indicates use of DTX in the downlink direction (BTS to MS) and
+     * DTXu indicates use of DTX in the uplink direction (MS to BTS).
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_cm_dtxd, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_cm_dtxu, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* The "Speech or data indicator" field (octet 4) */
+    proto_tree_add_item(ie_tree, hf_rsl_speech_or_data, tvb, offset, 1, ENC_BIG_ENDIAN);
+    octet = tvb_get_guint8(tvb,offset);
+    offset++;
+    /* Channel rate and type */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_rate_and_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Speech coding algor./data rate + transp ind */
+    switch(octet){
+    case 1:
+        /* Speech */
+        proto_tree_add_item(ie_tree, hf_rsl_speech_coding_alg, tvb, offset, 1, ENC_BIG_ENDIAN);
+        break;
+    case 2:
+        /* Data */
+        proto_tree_add_item(ie_tree, hf_rsl_extension_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(ie_tree, hf_rsl_t_nt_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
+        octet = tvb_get_guint8(tvb,offset);
+        if ((octet&0x40)==0x40){
+            /* Non-transparent service */
+            /* For the non-transparent service, bits 6 to 1 indicate the radio interface data rate:*/
+            proto_tree_add_item(ie_tree, hf_rsl_ra_if_data_rte, tvb, offset, 1, ENC_BIG_ENDIAN);
+        }else{
+            /* For the transparent service, bits 6-1 indicate the data rate: */
+            proto_tree_add_item(ie_tree, hf_rsl_data_rte, tvb, offset, 1, ENC_BIG_ENDIAN);
+        }
+        break;
+    case 3:
+        /* Signalling
+         * If octet 4 indicates signalling then octet 6 is coded as follows:
+         * 0000 0000 No resources required
+         */
+        proto_tree_add_text(ie_tree, tvb,offset,1,"0 No resources required(All other values are reserved)");
+        break;
+    default:
+        /* Should not happen */
+        proto_tree_add_text(ie_tree, tvb,offset,1,"Speech or data indicator != 1,2 or 3");
+        break;
+    }
+
+    offset++;
+
+    return ie_offset + length;
 }
 
 /*
@@ -949,52 +958,51 @@ dissect_rsl_ie_ch_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 
 /* The Algorithm Identifier field (octet 3) indicates the relevant ciphering algorithm. It is coded as: */
 static const value_string rsl_algorithm_id_vals[] = {
-       {  0x00,        "Pn" },
-       {  0x00,        "Reserved" },
-       {  0x01,        "No encryption shall be used" },
-       {  0x02,        "GSM encryption algorithm version 1 (A5/1)" },
-       {  0x03,        "GSM A5/2" },
-       {  0x04,        "GSM A5/3" },
-       {  0x05,        "GSM A5/4" },
-       {  0x06,        "GSM A5/5" },
-       {  0x07,        "GSM A5/6" },
-       {  0x08,        "GSM A5/7" },
-       { 0,                    NULL }
+    {  0x00,    "Reserved" },
+    {  0x01,    "No encryption shall be used" },
+    {  0x02,    "GSM encryption algorithm version 1 (A5/1)" },
+    {  0x03,    "GSM A5/2" },
+    {  0x04,    "GSM A5/3" },
+    {  0x05,    "GSM A5/4" },
+    {  0x06,    "GSM A5/5" },
+    {  0x07,    "GSM A5/6" },
+    {  0x08,    "GSM A5/7" },
+    { 0,            NULL }
 };
 
 static int
 dissect_rsl_ie_enc_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 length;
-       guint8 ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 length;
+    guint8 ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_ENC_INF)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_ENC_INF)
+            return offset;
+    }
 
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Encryption information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_enc_inf);
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Encryption information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_enc_inf);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb, offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb, offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       /* Algorithm Identifier field (octet 3) */
-       proto_tree_add_item(ie_tree, hf_rsl_alg_id, tvb, offset, 1, FALSE);
+    /* Algorithm Identifier field (octet 3) */
+    proto_tree_add_item(ie_tree, hf_rsl_alg_id, tvb, offset, 1, ENC_BIG_ENDIAN);
 
-       /* key */
-       proto_tree_add_item(ie_tree, hf_rsl_key, tvb, offset+1, length -1, FALSE);
+    /* key */
+    proto_tree_add_item(ie_tree, hf_rsl_key, tvb, offset+1, length -1, ENC_NA);
 
-       return offset + length;
+    return offset + length;
 
 }
 /*
@@ -1003,30 +1011,30 @@ dissect_rsl_ie_enc_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_FRAME_NO)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,3,"Frame Number IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_frame_no);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, FALSE);
-       offset++;
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_FRAME_NO)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,3,"Frame Number IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_frame_no);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -1035,28 +1043,28 @@ dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_ho_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_HO_REF)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_HO_REF)
+            return offset;
+    }
 
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Handover reference IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ho_ref);
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Handover reference IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ho_ref);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       /* Hand-over reference */
-       proto_tree_add_item(ie_tree, hf_rsl_ho_ref, tvb, offset, 1, FALSE);
-       offset++;
+    /* Hand-over reference */
+    proto_tree_add_item(ie_tree, hf_rsl_ho_ref, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       return offset;
+    return offset;
 }
 
 /*
@@ -1066,117 +1074,140 @@ dissect_rsl_ie_ho_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
 static int
 dissect_rsl_ie_l1_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_L1_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset, 3,"L1 Information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_l1_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Octets 2-3 contain the L1 header information of SACCH blocks.
-        * The information fields and codings are as defined in 3GPP TS 44.004.
-        */
-       /* Power level */
-       proto_tree_add_item(ie_tree, hf_rsl_l1inf_power_lev, tvb, offset, 1, FALSE);
-       /* FPC */
-       proto_tree_add_item(ie_tree, hf_rsl_l1inf_fpc, tvb, offset, 1, FALSE);
-       offset++;
-       /* Actual Timing Advance */
-       proto_tree_add_item(ie_tree, hf_rsl_act_timing_adv, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_L1_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset, 3,"L1 Information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_l1_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Octets 2-3 contain the L1 header information of SACCH blocks.
+     * The information fields and codings are as defined in 3GPP TS 44.004.
+     */
+    /* Power level */
+    proto_tree_add_item(ie_tree, hf_rsl_l1inf_power_lev, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* FPC */
+    proto_tree_add_item(ie_tree, hf_rsl_l1inf_fpc, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Actual Timing Advance */
+    proto_tree_add_item(ie_tree, hf_rsl_act_timing_adv, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
+typedef enum
+{
+   L3_INF_CCCH,
+   L3_INF_SACCH,
+   L3_INF_OTHER
+}l3_inf_t;
 /*
- * 9.3.11 L3 Information                       9.3.11  M TLV >=3
+ * 9.3.11 L3 Information            9.3.11  M TLV >=3
  *
  * This element contains a link layer service data unit (L3 message).
  * It is used to forward a complete L3 message as specified in
  * 3GPP TS 24.008 or 3GPP TS 44.018 between BTS and BSC.
  */
 static int
-dissect_rsl_ie_L3_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory)
+dissect_rsl_ie_L3_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory, l3_inf_t type)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       tvbuff_t        *next_tvb;
-       guint16 length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_L3_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"L3 Information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_L3_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_ntohs(tvb, offset);
-       proto_item_set_len(ti, length+3);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 2, FALSE);
-       offset= offset+2;
-
-       /* Link Layer Service Data Unit (i.e. a layer 3 message
-        * as defined in 3GPP TS 24.008 or 3GPP TS 44.018)
-        */
-       proto_tree_add_text(ie_tree, tvb,offset,length,"Link Layer Service Data Unit ( L3 Message)");
-       next_tvb = tvb_new_subset(tvb, offset, length, length);
-       call_dissector(gsm_a_dtap_handle, next_tvb, pinfo, top_tree);
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    tvbuff_t    *next_tvb;
+    guint16 length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_L3_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"L3 Information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_L3_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_ntohs(tvb, offset);
+    proto_item_set_len(ti, length+3);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset= offset+2;
+
+    if (type == L3_INF_CCCH)
+    {
+       /* L3 PDUs carried on CCCH have L2 PSEUDO LENGTH octet or are RR Short PD format */
+       proto_tree_add_text(ie_tree, tvb,offset,length,"Link Layer Service Data Unit ( L3 Message)(SACCH)");
+       next_tvb = tvb_new_subset(tvb, offset, length, length);
+       call_dissector(gsm_a_ccch_handle, next_tvb, pinfo, top_tree);
+    }
+    else if (type == L3_INF_SACCH)
+    {
+       /* L3 PDUs carried on SACCH are normal format or are RR Short PD format */
+       proto_tree_add_text(ie_tree, tvb,offset,length,"Link Layer Service Data Unit ( L3 Message)(SACCH)");
+       next_tvb = tvb_new_subset(tvb, offset, length, length);
+       call_dissector(gsm_a_sacch_handle, next_tvb, pinfo, top_tree);
+    }
+    else
+    {
+       /* Link Layer Service Data Unit (i.e. a layer 3 message
+        * as defined in 3GPP TS 24.008 or 3GPP TS 44.018)
+        */
+       proto_tree_add_text(ie_tree, tvb,offset,length,"Link Layer Service Data Unit ( L3 Message)");
+       next_tvb = tvb_new_subset(tvb, offset, length, length);
+       call_dissector(gsm_a_dtap_handle, next_tvb, pinfo, top_tree);
+    }
+
+    offset = offset + length;
+
+    return offset;
  }
 
 /*
  * 9.3.12 MS Identity
  */
 static int
-dissect_rsl_ie_ms_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
+dissect_rsl_ie_ms_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MS_ID)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"MS Identity IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ms_id);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       de_mid(tvb, ie_tree, offset, length, NULL, 0);
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MS_ID)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"MS Identity IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ms_id);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    de_mid(tvb, ie_tree, pinfo, offset, length, NULL, 0);
+
+    offset = offset + length;
+
+    return offset;
 }
 
 static const true_false_string rsl_ms_fpc_epc_mode_vals = {
@@ -1189,31 +1220,31 @@ static const true_false_string rsl_ms_fpc_epc_mode_vals = {
 static int
 dissect_rsl_ie_ms_pow(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MS_POW)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset, 2,"MS Power IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ms_pow);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* MS power level */
-       proto_tree_add_item(ie_tree, hf_rsl_ms_power_lev, tvb, offset, 1, FALSE);
-       /* FPC */
-       proto_tree_add_item(ie_tree, hf_rsl_ms_fpc, tvb, offset, 1, FALSE);
-       /* Reserved */
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MS_POW)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset, 2,"MS Power IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ms_pow);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* MS power level */
+    proto_tree_add_item(ie_tree, hf_rsl_ms_power_lev, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* FPC */
+    proto_tree_add_item(ie_tree, hf_rsl_ms_fpc, tvb, offset, 1, ENC_BIG_ENDIAN);
+    /* Reserved */
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -1222,29 +1253,29 @@ dissect_rsl_ie_ms_pow(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, i
 static int
 dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_PAGING_GRP)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Paging Group IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_paging_grp);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* The Paging Group field (octet 2) contains the binary representation of the paging
-        * group as defined in 3GPP TS 45.002.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_paging_grp, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_PAGING_GRP)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Paging Group IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_paging_grp);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* The Paging Group field (octet 2) contains the binary representation of the paging
+     * group as defined in 3GPP TS 45.002.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_paging_grp, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 
 }
 
@@ -1254,29 +1285,29 @@ dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
 static int
 dissect_rsl_ie_paging_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_PAGING_LOAD)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,3,"Paging Load IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_paging_load);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /*
-        * Paging Buffer Space.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_paging_load, tvb, offset, 2, FALSE);
-       offset = offset + 2;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_PAGING_LOAD)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,3,"Paging Load IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_paging_load);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /*
+     * Paging Buffer Space.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_paging_load, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset = offset + 2;
+
+    return offset;
 
 }
 /*
@@ -1285,39 +1316,39 @@ dissect_rsl_ie_paging_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
 static int
 dissect_rsl_ie_phy_ctx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_PHY_CTX)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Physical Context IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_phy_ctx);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       /*
-        * Physical Context Information:
-        *      The Physical Context Information field is not specified.
-        *      This information should not be analysed by BSC, but merely
-        *      forwarded from one TRX/channel to another.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_phy_ctx, tvb, offset, length, FALSE);
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_PHY_CTX)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Physical Context IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_phy_ctx);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /*
+     * Physical Context Information:
+     *  The Physical Context Information field is not specified.
+     *  This information should not be analysed by BSC, but merely
+     *  forwarded from one TRX/channel to another.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_phy_ctx, tvb, offset, length, ENC_NA);
+    offset = offset + length;
+
+    return offset;
 }
 /*
  * 9.3.17 Access Delay M TV 2
@@ -1325,25 +1356,25 @@ dissect_rsl_ie_phy_ctx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_access_delay(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_ACCESS_DELAY)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Access Delay IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_access_delay);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       proto_tree_add_item(ie_tree, hf_rsl_acc_delay, tvb, offset, 1, FALSE);
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_ACCESS_DELAY)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Access Delay IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_access_delay);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_acc_delay, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    return offset;
 }
 
 /*
@@ -1353,56 +1384,56 @@ dissect_rsl_ie_access_delay(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
 static int
 dissect_rsl_ie_rach_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-       int ie_offset;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_RACH_LOAD)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"RACH Load IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_rach_load);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       ie_offset = offset;
-
-       /*
-        * This element is used to carry information on the load of the RACH (Random Access Channel)
-        * associated with this CCCH timeslot. It is of variable length.
-        */
-       /*      RACH Slot Count */
-       proto_tree_add_item(ie_tree, hf_rsl_rach_slot_cnt, tvb, offset, 2, FALSE);
-       offset = offset +2;
-       length = length -2;
-       /* RACH Busy Count */
-       proto_tree_add_item(ie_tree, hf_rsl_rach_busy_cnt, tvb, offset, 2, FALSE);
-       offset = offset +2;
-       length = length -2;
-
-       /* RACH Access Count */
-       proto_tree_add_item(ie_tree, hf_rsl_rach_acc_cnt, tvb, offset, 2, FALSE);
-       offset = offset +2;
-       length = length -2;
-
-       /* Supplementary Information */
-       if( length > 0){
-               proto_tree_add_text(ie_tree, tvb, offset,length ,"Supplementary Information");
-       }
-       offset = ie_offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+    int ie_offset;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_RACH_LOAD)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"RACH Load IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_rach_load);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    ie_offset = offset;
+
+    /*
+     * This element is used to carry information on the load of the RACH (Random Access Channel)
+     * associated with this CCCH timeslot. It is of variable length.
+     */
+    /*  RACH Slot Count */
+    proto_tree_add_item(ie_tree, hf_rsl_rach_slot_cnt, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset = offset +2;
+    length = length -2;
+    /* RACH Busy Count */
+    proto_tree_add_item(ie_tree, hf_rsl_rach_busy_cnt, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset = offset +2;
+    length = length -2;
+
+    /* RACH Access Count */
+    proto_tree_add_item(ie_tree, hf_rsl_rach_acc_cnt, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset = offset +2;
+    length = length -2;
+
+    /* Supplementary Information */
+    if( length > 0){
+        proto_tree_add_text(ie_tree, tvb, offset,length ,"Supplementary Information");
+    }
+    offset = ie_offset + length;
+
+    return offset;
 }
 
 /*
@@ -1411,89 +1442,90 @@ dissect_rsl_ie_rach_load(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
 static int
 dissect_rsl_ie_req_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_REQ_REF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,4,"Request Reference IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_req_ref);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_ra, tvb, offset, 1, FALSE);
-       offset++;
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, FALSE);
-       offset++;
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, FALSE);
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_REQ_REF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,4,"Request Reference IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_req_ref);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_ra, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    return offset;
 }
 
 static const value_string rel_mode_vals[] = {
-       {  0x00,        "Normal Release" },
-       {  0x01,        "Local End Release" },
-       { 0,                    NULL }
+    {  0x00,    "Normal Release" },
+    {  0x01,    "Local End Release" },
+    { 0,            NULL }
 };
 
 /*
- * 9.3.20 Release Mode                         9.3.20  M TV 2
+ * 9.3.20 Release Mode              9.3.20  M TV 2
  */
 static int
 dissect_rsl_ie_rel_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_REL_MODE)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,4,"Release Mode IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_rel_mode);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /*      The M bit is coded as follows:
-        * 0 normal release
-        * 1 local end release
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_rel_mode, tvb, offset, 1, FALSE);
-
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_REL_MODE)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,4,"Release Mode IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_rel_mode);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /*  The M bit is coded as follows:
+     * 0 normal release
+     * 1 local end release
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_rel_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+    offset++;
+    return offset;
 }
 
 static const value_string rsl_rlm_cause_vals[] = {
-       {  0x00,        "reserved" },
-       {  0x01,        "timer T200 expired (N200+1) times" },
-       {  0x02,        "re-establishment request" },
-       {  0x03,        "unsolicited UA response" },
-       {  0x04,        "unsolicited DM response" },
-       {  0x05,        "unsolicited DM response, multiple frame established state" },
-       {  0x06,        "unsolicited supervisory response" },
-       {  0x07,        "sequence error" },
-       {  0x08,        "U-frame with incorrect parameters" },
-       {  0x09,        "S-frame with incorrect parameters" },
-       {  0x0a,        "I-frame with incorrect use of M bit" },
-       {  0x0b,        "I-frame with incorrect length" },
-       {  0x0c,        "frame not implemented" },
-       {  0x0d,        "SABM command, multiple frame established state" },
-       {  0x0e,        "SABM frame with information not allowed in this state" },
-       { 0,                    NULL }
+    {  0x00,    "reserved" },
+    {  0x01,    "timer T200 expired (N200+1) times" },
+    {  0x02,    "re-establishment request" },
+    {  0x03,    "unsolicited UA response" },
+    {  0x04,    "unsolicited DM response" },
+    {  0x05,    "unsolicited DM response, multiple frame established state" },
+    {  0x06,    "unsolicited supervisory response" },
+    {  0x07,    "sequence error" },
+    {  0x08,    "U-frame with incorrect parameters" },
+    {  0x09,    "S-frame with incorrect parameters" },
+    {  0x0a,    "I-frame with incorrect use of M bit" },
+    {  0x0b,    "I-frame with incorrect length" },
+    {  0x0c,    "frame not implemented" },
+    {  0x0d,    "SABM command, multiple frame established state" },
+    {  0x0e,    "SABM frame with information not allowed in this state" },
+    { 0,            NULL }
 };
+static value_string_ext rsl_rlm_cause_vals_ext = VALUE_STRING_EXT_INIT(rsl_rlm_cause_vals);
 
 /*
  * 9.3.21 Resource Information
@@ -1501,126 +1533,127 @@ static const value_string rsl_rlm_cause_vals[] = {
 static int
 dissect_rsl_ie_resource_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-       guint           length;
-       int ie_offset;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_RESOURCE_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Resource Information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_resource_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       ie_offset = offset;
-
-       while (length > 0){
-               proto_tree_add_item(ie_tree, hf_rsl_ch_no_Cbits, tvb, offset, 1, FALSE);
-               /* TN is time slot number, binary represented as in 3GPP TS 45.002.
-                * 3 Bits
-                */
-               proto_tree_add_item(ie_tree, hf_rsl_ch_no_TN, tvb, offset, 1, FALSE);
-               offset++;
-
-               /* Interference level (1) */
-               /* Interf Band */
-               proto_tree_add_item(ie_tree, hf_rsl_interf_band, tvb, offset, 1, FALSE);
-               /* Interf Band reserved bits */
-               proto_tree_add_item(ie_tree, hf_rsl_interf_band_reserved, tvb, offset, 1, FALSE);
-               offset++;
-               length = length - 2;
-       }
-       return ie_offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+    guint       length;
+    int ie_offset;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_RESOURCE_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Resource Information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_resource_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    ie_offset = offset;
+
+    while (length > 0){
+        proto_tree_add_item(ie_tree, hf_rsl_ch_no_Cbits, tvb, offset, 1, ENC_BIG_ENDIAN);
+        /* TN is time slot number, binary represented as in 3GPP TS 45.002.
+         * 3 Bits
+         */
+        proto_tree_add_item(ie_tree, hf_rsl_ch_no_TN, tvb, offset, 1, ENC_BIG_ENDIAN);
+        offset++;
+
+        /* Interference level (1) */
+        /* Interf Band */
+        proto_tree_add_item(ie_tree, hf_rsl_interf_band, tvb, offset, 1, ENC_BIG_ENDIAN);
+        /* Interf Band reserved bits */
+        proto_tree_add_item(ie_tree, hf_rsl_interf_band_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+        offset++;
+        length = length - 2;
+    }
+    return ie_offset + length;
 }
 
 /*
- * 9.3.22 RLM Cause                            9.3.22  M TLV 2-4
+ * 9.3.22 RLM Cause             9.3.22  M TLV 2-4
  */
 static int
 dissect_rsl_ie_rlm_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-
-       guint           length;
-       guint8          octet;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_RLM_CAUSE)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"RLM Cause IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_rlm_cause);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* The Cause Value is a one octet field if the extension bit is set to 0.
-        * If the extension bit is set to 1, the Cause Value is a two octet field.
-        */
-       octet = tvb_get_guint8(tvb,offset);
-       proto_tree_add_item(tree, hf_rsl_extension_bit, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_cause, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+
+    guint       length;
+    /* guint8       octet; */
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_RLM_CAUSE)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"RLM Cause IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_rlm_cause);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* The Cause Value is a one octet field if the extension bit is set to 0.
+     * If the extension bit is set to 1, the Cause Value is a two octet field.
+     */
+        /* XXX: Code doesn't reflect the comment above ?? */
+    /* octet = tvb_get_guint8(tvb,offset); */
+    proto_tree_add_item(tree, hf_rsl_extension_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_cause, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
  * 9.3.23 Starting Time
  */
 static int
-dissect_rsl_ie_staring_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
+dissect_rsl_ie_starting_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_STARTING_TIME)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,3,"Starting Time IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_staring_time);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, FALSE);
-       offset++;
-       proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_STARTING_TIME)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,3,"Starting Time IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_staring_time);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, ENC_BIG_ENDIAN);
+    offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -1629,27 +1662,27 @@ dissect_rsl_ie_staring_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
 static int
 dissect_rsl_ie_timing_adv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_TIMING_ADV)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_TIMING_ADV)
+            return offset;
+    }
 
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Timing Advance IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_timing_adv);
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Timing Advance IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_timing_adv);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       proto_tree_add_item(ie_tree, hf_rsl_timing_adv, tvb, offset, 1, FALSE);
-       offset++;
+    proto_tree_add_item(ie_tree, hf_rsl_timing_adv, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       return offset;
+    return offset;
 }
 
 /*
@@ -1663,71 +1696,71 @@ static const true_false_string rsl_dtxd_vals = {
 static int
 dissect_rsl_ie_uplik_meas(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint           length;
-       int                     ie_offset;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_UPLINK_MEAS)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Uplink Measurements IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_uplink_meas);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       ie_offset = offset;
-
-       /* Octet 3
-        * 8    7        6      5       4       3       2       1
-        * rfu  DTXd | RXLEV.FULL.up
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_dtxd, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_rxlev_full_up, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Octet4
-        * 8    7       6       5       4       3       2       1
-        * Reserved |  RXLEV.SUB.up 4
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_rxlev_sub_up, tvb, offset, 1, FALSE);
-       offset++;
-       /* Octet 5
-        * 8    7        6      5       4                 3     2       1
-        * Reserved | RXQUAL.FULL.up | RXQUAL.SUB.up
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_rxqual_full_up, tvb, offset, 1, FALSE);
-       proto_tree_add_item(ie_tree, hf_rsl_rxqual_sub_up, tvb, offset, 1, FALSE);
-        offset++;
-       /* Octet 6 - N
-        * Supplementary Measurement Information
-        */
-       return ie_offset+length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint       length;
+    int         ie_offset;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_UPLINK_MEAS)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Uplink Measurements IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_uplink_meas);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    ie_offset = offset;
+
+    /* Octet 3
+     * 8    7    6  5   4   3   2   1
+     * rfu  DTXd | RXLEV.FULL.up
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_dtxd, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_rxlev_full_up, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Octet4
+     * 8    7   6   5   4   3   2   1
+     * Reserved |  RXLEV.SUB.up 4
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_rxlev_sub_up, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Octet 5
+     * 8    7    6  5   4         3 2   1
+     * Reserved | RXQUAL.FULL.up | RXQUAL.SUB.up
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_rxqual_full_up, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(ie_tree, hf_rsl_rxqual_sub_up, tvb, offset, 1, ENC_BIG_ENDIAN);
+     offset++;
+    /* Octet 6 - N
+     * Supplementary Measurement Information
+     */
+    return ie_offset+length;
 }
 
 
 static const value_string rsl_class_vals[] = {
-       {  0x00,        "Normal event" },
-       {  0x01,        "Normal event" },
-       {  0x02,        "Resource unavailable" },
-       {  0x03,        "Service or option not available" },
-       {  0x04,        "Service or option not implemented" },
-       {  0x05,        "Invalid message (e.g. parameter out of range)" },
-       {  0x06,        "Protocol error" },
-       {  0x07,        "Interworking" },
-       { 0,                    NULL }
+    {  0x00,    "Normal event" },
+    {  0x01,    "Normal event" },
+    {  0x02,    "Resource unavailable" },
+    {  0x03,    "Service or option not available" },
+    {  0x04,    "Service or option not implemented" },
+    {  0x05,    "Invalid message (e.g. parameter out of range)" },
+    {  0x06,    "Protocol error" },
+    {  0x07,    "Interworking" },
+    { 0,            NULL }
 };
 
  /*
@@ -1736,42 +1769,42 @@ static const value_string rsl_class_vals[] = {
 static int
 dissect_rsl_ie_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint           length;
-       guint8          octet;
-       int                     ie_offset;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CAUSE)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Cause IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_cause);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       ie_offset = offset;
-
-       /* Cause Value */
-       octet = tvb_get_guint8(tvb,offset);
-       proto_tree_add_item(tree, hf_rsl_extension_bit, tvb, offset, 1, FALSE);
-       proto_tree_add_item(tree, hf_rsl_class, tvb, offset, 1, FALSE);
-       if ((octet & 0x80) == 80)
-       /* Cause Extension*/
-               offset++;
-
-       /* Diagnostic(s) if any */
-       return ie_offset+length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint       length;
+    guint8      octet;
+    int         ie_offset;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CAUSE)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Cause IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_cause);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    ie_offset = offset;
+
+    /* Cause Value */
+    octet = tvb_get_guint8(tvb,offset);
+    proto_tree_add_item(tree, hf_rsl_extension_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
+    proto_tree_add_item(tree, hf_rsl_class, tvb, offset, 1, ENC_BIG_ENDIAN);
+    if ((octet & 0x80) == 0x80)
+    /* Cause Extension*/
+        offset++;
+
+    /* Diagnostic(s) if any */
+    return ie_offset+length;
 }
 /*
  * 9.3.27 Measurement result number
@@ -1780,28 +1813,28 @@ dissect_rsl_ie_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, in
 static int
 dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MEAS_RES_NO)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MEAS_RES_NO)
+            return offset;
+    }
 
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Measurement result number IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_meas_res_no);
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Measurement result number IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_meas_res_no);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       /* Measurement result number */
-       proto_tree_add_item(ie_tree, hf_rsl_meas_res_no, tvb, offset, 1, FALSE);
-       offset++;
+    /* Measurement result number */
+    proto_tree_add_item(ie_tree, hf_rsl_meas_res_no, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       return offset;
+    return offset;
 }
 /*
  * 9.3.28 Message Identifier
@@ -1809,87 +1842,83 @@ dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
 static int
 dissect_rsl_ie_message_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MESSAGE_ID)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Message Identifier IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_message_id);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Message Type */
-       proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, FALSE);
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MESSAGE_ID)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Message Identifier IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_message_id);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Message Type */
+    proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    return offset;
 }
 /*
  * 9.3.30 System Info Type
  */
 static const value_string rsl_sys_info_type_vals[] = {
-       {  0x00,        "SYSTEM INFORMATION 8" },
-       {  0x01,        "SYSTEM INFORMATION 1" },
-       {  0x02,        "SYSTEM INFORMATION 2" },
-       {  0x03,        "SYSTEM INFORMATION 3" },
-       {  0x04,        "SYSTEM INFORMATION 4" },
-       {  0x05,        "SYSTEM INFORMATION 5" },
-       {  0x06,        "SYSTEM INFORMATION 6" },
-       {  0x07,        "SYSTEM INFORMATION 7" },
-       {  0x08,        "SYSTEM INFORMATION 16" },
-       {  0x09,        "SYSTEM INFORMATION 17" },
-       {  0x0a,        "SYSTEM INFORMATION 2bis" },
-       {  0x0b,        "SYSTEM INFORMATION 2ter" },
-       {  0x0d,        "SYSTEM INFORMATION 5bis" },
-       {  0x0e,        "SYSTEM INFORMATION 5ter" },
-       {  0x0f,        "SYSTEM INFORMATION 10" },
-       {  0x47,        "EXTENDED MEASUREMENT ORDER" },
-       {  0x48,        "MEASUREMENT INFORMATION" },
-       {  0x28,        "SYSTEM INFORMATION 13" },
-       {  0x29,        "SYSTEM INFORMATION 2quater" },
-       {  0x2a,        "SYSTEM INFORMATION 9" },
-       {  0x2b,        "SYSTEM INFORMATION 18" },
-       {  0x2c,        "SYSTEM INFORMATION 19" },
-       {  0x2d,        "SYSTEM INFORMATION 20" },
-       { 0,                    NULL }
+    {  0x00,    "SYSTEM INFORMATION 8" },
+    {  0x01,    "SYSTEM INFORMATION 1" },
+    {  0x02,    "SYSTEM INFORMATION 2" },
+    {  0x03,    "SYSTEM INFORMATION 3" },
+    {  0x04,    "SYSTEM INFORMATION 4" },
+    {  0x05,    "SYSTEM INFORMATION 5" },
+    {  0x06,    "SYSTEM INFORMATION 6" },
+    {  0x07,    "SYSTEM INFORMATION 7" },
+    {  0x08,    "SYSTEM INFORMATION 16" },
+    {  0x09,    "SYSTEM INFORMATION 17" },
+    {  0x0a,    "SYSTEM INFORMATION 2bis" },
+    {  0x0b,    "SYSTEM INFORMATION 2ter" },
+    {  0x0d,    "SYSTEM INFORMATION 5bis" },
+    {  0x0e,    "SYSTEM INFORMATION 5ter" },
+    {  0x0f,    "SYSTEM INFORMATION 10" },
+    {  0x47,    "EXTENDED MEASUREMENT ORDER" },
+    {  0x48,    "MEASUREMENT INFORMATION" },
+    {  0x28,    "SYSTEM INFORMATION 13" },
+    {  0x29,    "SYSTEM INFORMATION 2quater" },
+    {  0x2a,    "SYSTEM INFORMATION 9" },
+    {  0x2b,    "SYSTEM INFORMATION 18" },
+    {  0x2c,    "SYSTEM INFORMATION 19" },
+    {  0x2d,    "SYSTEM INFORMATION 20" },
+    { 0,            NULL }
 };
+static value_string_ext rsl_sys_info_type_vals_ext = VALUE_STRING_EXT_INIT(rsl_sys_info_type_vals);
 
 
 static int
 dissect_rsl_ie_sys_info_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id, sitype;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_SYS_INFO_TYPE)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"System Info Type IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_sys_info_type);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Message Type */
-       proto_tree_add_item(tree, hf_rsl_sys_info_type, tvb, offset, 1, FALSE);
-       sitype = tvb_get_guint8(tvb, offset);
-       offset++;
-
-       /* Check if SI is 2q, if so set flag */
-       if (sitype==0x29) {
-               is_si2q = TRUE; }
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_SYS_INFO_TYPE)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"System Info Type IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_sys_info_type);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Message Type */
+    proto_tree_add_item(tree, hf_rsl_sys_info_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -1898,43 +1927,43 @@ dissect_rsl_ie_sys_info_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
 static int
 dissect_rsl_ie_full_imm_ass_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-
-       guint           length;
-       tvbuff_t        *next_tvb;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_FULL_IMM_ASS_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Full Immediate Assign Info IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_full_imm_ass_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       /*      The Full Immediate Assign Info field (octets 3-25)
-        * contains a complete immediate assign message (IMMEDIATE ASSIGNMENT or
-        * IMMEDIATE ASSIGNMENT EXTENDED or IMMEDIATE ASSIGNMENT REJECT)
-        * as defined in 3GPP TS 44.018.
-        */
-       proto_tree_add_text(ie_tree, tvb,offset,length,"Full Immediate Assign Info field");
-       next_tvb = tvb_new_subset(tvb, offset, length, length);
-       call_dissector(gsm_a_ccch_handle, next_tvb, pinfo, top_tree);
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+
+    guint       length;
+    tvbuff_t    *next_tvb;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_FULL_IMM_ASS_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Full Immediate Assign Info IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_full_imm_ass_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /*  The Full Immediate Assign Info field (octets 3-25)
+     * contains a complete immediate assign message (IMMEDIATE ASSIGNMENT or
+     * IMMEDIATE ASSIGNMENT EXTENDED or IMMEDIATE ASSIGNMENT REJECT)
+     * as defined in 3GPP TS 44.018.
+     */
+    proto_tree_add_text(ie_tree, tvb,offset,length,"Full Immediate Assign Info field");
+    next_tvb = tvb_new_subset(tvb, offset, length, length);
+    call_dissector(gsm_a_ccch_handle, next_tvb, pinfo, top_tree);
+
+    offset = offset + length;
+
+    return offset;
 }
 
 /*
@@ -1946,38 +1975,38 @@ dissect_rsl_ie_full_imm_ass_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
 static int
 dissect_rsl_ie_smscb_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-
-       guint           length;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_SMSCB_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Information IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       /*
-        * SMSCB frame
-        */
-       proto_tree_add_text(ie_tree, tvb,offset,length,"SMSCB frame");
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+
+    guint       length;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_SMSCB_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Information IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /*
+     * SMSCB frame
+     */
+    proto_tree_add_text(ie_tree, tvb,offset,length,"SMSCB frame");
+
+    offset = offset + length;
+
+    return offset;
 }
 
 /*
@@ -1987,32 +2016,32 @@ dissect_rsl_ie_smscb_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
 static int
 dissect_rsl_ie_ms_timing_offset(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_FULL_MS_TIMING_OFFSET)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"MS Timing Offset IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ms_timing_offset);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Timing Offset
-        * The meaning of the MS Timing Offset is as defined in 3GPP TS 45.010.
-        * The value of MS Timing Offset is the binary value of the 8-bit Timing Offset field (octet 2) - 63.
-        * The range of MS Timing Offset is therefore -63 to 192.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_timing_offset, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_FULL_MS_TIMING_OFFSET)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"MS Timing Offset IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ms_timing_offset);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Timing Offset
+     * The meaning of the MS Timing Offset is as defined in 3GPP TS 45.010.
+     * The value of MS Timing Offset is the binary value of the 8-bit Timing Offset field (octet 2) - 63.
+     * The range of MS Timing Offset is therefore -63 to 192.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_timing_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -2023,34 +2052,34 @@ dissect_rsl_ie_ms_timing_offset(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
 static int
 dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-
-       guint           length;
-       guint8          ie_id;
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_ERR_MSG)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Erroneous Message IE ");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_err_msg);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Received Message */
-       offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+
+    guint       length;
+    guint8      ie_id;
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_ERR_MSG)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Erroneous Message IE ");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_err_msg);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Received Message */
+    offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
+
+    return offset;
 }
 
 /*
@@ -2059,80 +2088,80 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
 static int
 dissect_rsl_ie_full_bcch_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       tvbuff_t        *next_tvb;
-       guint16 length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_FULL_BCCH_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Full BCCH Information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_full_bcch_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb, offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       /*
-        * Octets 3-25 contain the complete L3 message as defined in 3GPP TS 44.018.
-        */
-
-       proto_tree_add_text(ie_tree, tvb,offset,length,"Layer 3 message");
-       next_tvb = tvb_new_subset(tvb, offset, length, length);
-       call_dissector(gsm_a_ccch_handle, next_tvb, pinfo, top_tree);
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    tvbuff_t    *next_tvb;
+    guint16 length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_FULL_BCCH_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Full BCCH Information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_full_bcch_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb, offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /*
+     * Octets 3-25 contain the complete L3 message as defined in 3GPP TS 44.018.
+     */
+
+    proto_tree_add_text(ie_tree, tvb,offset,length,"Layer 3 message");
+    next_tvb = tvb_new_subset(tvb, offset, length, length);
+    call_dissector(gsm_a_ccch_handle, next_tvb, pinfo, top_tree);
+
+    offset = offset + length;
+
+    return offset;
  }
 
 /*
  * 9.3.40 Channel Needed
  */
 static const value_string rsl_ch_needed_vals[] = {
-       {  0x00,        "Any Channel" },
-       {  0x01,        "SDCCH" },
-       {  0x02,        "TCH/F (Full rate)" },
-       {  0x03,        "TCH/F or TCH/H (Dual rate)" },
-       { 0,            NULL }
+    {  0x00,    "Any Channel" },
+    {  0x01,    "SDCCH" },
+    {  0x02,    "TCH/F (Full rate)" },
+    {  0x03,    "TCH/F or TCH/H (Dual rate)" },
+    { 0,            NULL }
 };
 
 static int
 dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CH_NEEDED)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CH_NEEDED)
+            return offset;
+    }
 
 
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Needed IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ch_needed);
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Needed IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ch_needed);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       /* Channel */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_needed, tvb, offset, 1, FALSE);
-       offset++;
+    /* Channel */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_needed, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       return offset;
+    return offset;
 }
 /*
  * 9.3.41 CB Command type
@@ -2140,29 +2169,29 @@ dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
 static int
 dissect_rsl_ie_cb_cmd_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CB_CMD_TYPE)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CB_CMD_TYPE)
+            return offset;
+    }
 
 
-       ti = proto_tree_add_text(tree, tvb,offset,0,"CB Command type IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_cb_cmd_type);
+    ti = proto_tree_add_text(tree, tvb,offset,0,"CB Command type IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_cb_cmd_type);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       /* Channel */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_needed, tvb, offset, 1, FALSE);
-       offset++;
+    /* Channel */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_needed, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       return offset;
+    return offset;
 }
 
 /*
@@ -2171,39 +2200,39 @@ dissect_rsl_ie_cb_cmd_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
 static int
 dissect_rsl_ie_smscb_mess(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-       int     ie_offset;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_SMSCB_MESS)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Message IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_mess);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-       ie_offset = offset;
-
-       /*
-        * SMSCB Message
-        */
-
-       proto_tree_add_text(ie_tree, tvb,offset,length ,"SMSCB Message");
-
-       offset = ie_offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+    int ie_offset;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_SMSCB_MESS)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Message IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_mess);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    ie_offset = offset;
+
+    /*
+     * SMSCB Message
+     */
+
+    proto_tree_add_text(ie_tree, tvb,offset,length ,"SMSCB Message");
+
+    offset = ie_offset + length;
+
+    return offset;
 }
 
 /*
@@ -2218,39 +2247,39 @@ static const true_false_string rsl_cbch_load_type_vals = {
 static int
 dissect_rsl_ie_cbch_load_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti, *item;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-       guint8          octet;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CBCH_LOAD_INF)
-                       return offset;
-       }
-
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"CBCH Load Information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_cbch_load_inf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       octet = tvb_get_guint8(tvb,offset);
-       /* CBCH Load Type */
-       proto_tree_add_item(ie_tree, hf_rsl_cbch_load_type, tvb, offset, 1, FALSE);
-
-       /* Message Slot Count */
-       item = proto_tree_add_item(ie_tree, hf_rsl_msg_slt_cnt, tvb, offset, 1, FALSE);
-       if ((octet & 0x80) == 0x80){
-               proto_item_append_text(item,"The amount of SMSCB messages (1 to 15) that are needed immediately by BTS");
-       }else{
-               proto_item_append_text(item,"The amount of delay in message slots (1 to 15) that is needed immediately by BTS");
-       }
-       offset++;
-
-       return offset;
+    proto_item *ti, *item;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+    guint8      octet;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CBCH_LOAD_INF)
+            return offset;
+    }
+
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"CBCH Load Information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_cbch_load_inf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    octet = tvb_get_guint8(tvb,offset);
+    /* CBCH Load Type */
+    proto_tree_add_item(ie_tree, hf_rsl_cbch_load_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+    /* Message Slot Count */
+    item = proto_tree_add_item(ie_tree, hf_rsl_msg_slt_cnt, tvb, offset, 1, ENC_BIG_ENDIAN);
+    if ((octet & 0x80) == 0x80){
+        proto_item_append_text(item,"The amount of SMSCB messages (1 to 15) that are needed immediately by BTS");
+    }else{
+        proto_item_append_text(item,"The amount of delay in message slots (1 to 15) that is needed immediately by BTS");
+    }
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -2258,78 +2287,78 @@ dissect_rsl_ie_cbch_load_inf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
  */
 
 static const value_string rsl_ch_ind_vals[] = {
-       {  0x00,        "Basic CBCH" },
-       {  0x01,        "Extended CBCH (supporting the extended CBCH by the network or MSs is optional)" },
-       { 0,            NULL }
+    {  0x00,    "Basic CBCH" },
+    {  0x01,    "Extended CBCH (supporting the extended CBCH by the network or MSs is optional)" },
+    { 0,            NULL }
 };
 
 static int
 dissect_rsl_ie_smscb_ch_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
 
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_SMSCB_CH_IND)
-                       return offset;
-       }
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_SMSCB_CH_IND)
+            return offset;
+    }
 
 
-       ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Channel Indicator IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_ch_ind);
+    ti = proto_tree_add_text(tree, tvb,offset,0,"SMSCB Channel Indicator IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_smscb_ch_ind);
 
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       /* Channel Ind */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_ind, tvb, offset, 1, FALSE);
-       offset++;
+    /* Channel Ind */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_ind, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       return offset;
+    return offset;
 }
 
 /*
  * 9.3.45 Group call reference
  */
 static int
-dissect_rsl_ie_grp_call_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
+dissect_rsl_ie_grp_call_ref(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_GRP_CALL_REF)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Group call reference IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_grp_call_ref);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       proto_tree_add_text(ie_tree, tvb,offset,length,"Descriptive group or broadcast call reference");
-
-       /* The octets 3 to 7 are coded in the same way as the octets 2 to 6
-        * in the Descriptive group or broadcast call reference
-        * information element as defined in 3GPP TS 24.008.
-        */
-       de_d_gb_call_ref(tvb, ie_tree, offset, length, NULL, 0);
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_GRP_CALL_REF)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Group call reference IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_grp_call_ref);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    proto_tree_add_text(ie_tree, tvb,offset,length,"Descriptive group or broadcast call reference");
+
+    /* The octets 3 to 7 are coded in the same way as the octets 2 to 6
+     * in the Descriptive group or broadcast call reference
+     * information element as defined in 3GPP TS 24.008.
+     */
+    de_d_gb_call_ref(tvb, ie_tree, pinfo, offset, length, NULL, 0);
+
+    offset = offset + length;
+
+    return offset;
 }
 /*
  * 9.3.46 Channel description
@@ -2337,38 +2366,38 @@ dissect_rsl_ie_grp_call_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t
 static int
 dissect_rsl_ie_ch_desc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CH_DESC)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Channel description IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_ch_desc);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       proto_tree_add_text(ie_tree, tvb,offset,length,"Group Channel Description");
-
-       /* Octet j (j = 3, 4, ..., n) is the unchanged octet j-2 of a radio interface Group Channel description
-        * information element as defined in 3GPP TS 44.018, n-2 is equal to the length of the radio interface
-        * Group channel description information element
-        */
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CH_DESC)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Channel description IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_ch_desc);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    proto_tree_add_text(ie_tree, tvb,offset,length,"Group Channel Description");
+
+    /* Octet j (j = 3, 4, ..., n) is the unchanged octet j-2 of a radio interface Group Channel description
+     * information element as defined in 3GPP TS 44.018, n-2 is equal to the length of the radio interface
+     * Group channel description information element
+     */
+
+    offset = offset + length;
+
+    return offset;
 }
 /*
  * 9.3.47 NCH DRX information
@@ -2378,35 +2407,35 @@ dissect_rsl_ie_ch_desc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_nch_drx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_NCH_DRX_INF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"NCH DRX information IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_nch_drx);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* NCH DRX information */
-       /* Octet 3 bits 7 and 8 are spare and set to zero. */
-       /* Octet 3 bit 6 is the NLN status parameter as defined in 3GPP TS 44.018.*/
-       /* Octet 3 bits 3, 4 and 5 are bits 1, 2 and 3 of the radio interface
-        * eMLPP priority as defined in 3GPP TS 44.018.
-        */
-       /* Octet 3 bits 1 and 2 are bits 1 and 2 of the radio interface NLN
-        * as defined in 3GPP TS 44.018.
-        */
-
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_NCH_DRX_INF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"NCH DRX information IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_nch_drx);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* NCH DRX information */
+    /* Octet 3 bits 7 and 8 are spare and set to zero. */
+    /* Octet 3 bit 6 is the NLN status parameter as defined in 3GPP TS 44.018.*/
+    /* Octet 3 bits 3, 4 and 5 are bits 1, 2 and 3 of the radio interface
+     * eMLPP priority as defined in 3GPP TS 44.018.
+     */
+    /* Octet 3 bits 1 and 2 are bits 1 and 2 of the radio interface NLN
+     * as defined in 3GPP TS 44.018.
+     */
+
+    offset++;
+
+    return offset;
 }
 /*
  * 9.3.48 Command indicator
@@ -2415,89 +2444,89 @@ dissect_rsl_ie_nch_drx(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_cmd_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-       guint8          octet;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CMD_IND)
-                       return offset;
-       }
-
-
-       /* TODO Length wrong if extended */
-       ti = proto_tree_add_text(tree, tvb,offset,2,"Command indicator IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_cmd_ind);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Extension bit */
-       proto_tree_add_item(ie_tree, hf_rsl_extension_bit, tvb, offset, 1, FALSE);
-
-
-       /* TODO this should probably be add_uint instead!!! */
-       octet = tvb_get_guint8(tvb,offset);
-       if ((octet&0x80)==0x80){
-               /* extended */
-               /* Command Extension */
-               proto_tree_add_item(ie_tree, hf_rsl_command, tvb, offset, 2, FALSE);
-               offset = offset+2;
-       }else{
-               /* Command Value */
-               proto_tree_add_item(ie_tree, hf_rsl_command, tvb, offset, 1, FALSE);
-               offset++;
-       }
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+    guint8      octet;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CMD_IND)
+            return offset;
+    }
+
+
+    /* TODO Length wrong if extended */
+    ti = proto_tree_add_text(tree, tvb,offset,2,"Command indicator IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_cmd_ind);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Extension bit */
+    proto_tree_add_item(ie_tree, hf_rsl_extension_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
+
+
+    /* TODO this should probably be add_uint instead!!! */
+    octet = tvb_get_guint8(tvb,offset);
+    if ((octet&0x80)==0x80){
+        /* extended */
+        /* Command Extension */
+        proto_tree_add_item(ie_tree, hf_rsl_command, tvb, offset, 2, ENC_BIG_ENDIAN);
+        offset = offset+2;
+    }else{
+        /* Command Value */
+        proto_tree_add_item(ie_tree, hf_rsl_command, tvb, offset, 1, ENC_BIG_ENDIAN);
+        offset++;
+    }
+
+    return offset;
 }
 /*
  * 9.3.49 eMLPP Priority
  */
 static const value_string rsl_emlpp_prio_vals[] = {
-       {  0x00,        "no priority applied" },
-       {  0x01,        "call priority level 4" },
-       {  0x02,        "call priority level 3" },
-       {  0x03,        "call priority level 2" },
-       {  0x04,        "call priority level 1" },
-       {  0x05,        "call priority level 0" },
-       {  0x06,        "call priority level B" },
-       {  0x07,        "call priority level A" },
-       { 0,                    NULL }
+    {  0x00,    "no priority applied" },
+    {  0x01,    "call priority level 4" },
+    {  0x02,    "call priority level 3" },
+    {  0x03,    "call priority level 2" },
+    {  0x04,    "call priority level 1" },
+    {  0x05,    "call priority level 0" },
+    {  0x06,    "call priority level B" },
+    {  0x07,    "call priority level A" },
+    { 0,            NULL }
 };
 
 static int
 dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_EMLPP_PRIO)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,2,"eMLPP Priority IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_emlpp_prio);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* The call priority field (bit 3 to 1 of octet 2) is coded in the same way
-        * as the call priority field (bit 3 to 1 of octet 5) in the
-        * Descriptive group or broadcast call reference information element
-        * as defined in 3GPP TS 24.008.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_emlpp_prio, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_EMLPP_PRIO)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,2,"eMLPP Priority IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_emlpp_prio);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* The call priority field (bit 3 to 1 of octet 2) is coded in the same way
+     * as the call priority field (bit 3 to 1 of octet 5) in the
+     * Descriptive group or broadcast call reference information element
+     * as defined in 3GPP TS 24.008.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_emlpp_prio, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -2506,30 +2535,30 @@ dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
 static int
 dissect_rsl_ie_uic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_UIC)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"UIC IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_uic);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Octet 3 bits 1 to 6 contain the radio interface octet 2 bits 3 to 8 of the
-        * UIC information element as defined in 3GPP TS 44.018.
-        */
-       proto_tree_add_text(ie_tree, tvb,offset,1,"UIC");
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_UIC)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"UIC IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_uic);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Octet 3 bits 1 to 6 contain the radio interface octet 2 bits 3 to 8 of the
+     * UIC information element as defined in 3GPP TS 44.018.
+     */
+    proto_tree_add_text(ie_tree, tvb,offset,1,"UIC");
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -2539,29 +2568,29 @@ dissect_rsl_ie_uic(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
 static int
 dissect_rsl_ie_main_ch_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MAIN_CH_REF)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Main channel reference IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_main_ch_ref);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* TN is time slot number, binary represented as in 3GPP TS 45.002.
-        * 3 Bits
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_ch_no_TN, tvb, offset, 1, FALSE);
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MAIN_CH_REF)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Main channel reference IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_main_ch_ref);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* TN is time slot number, binary represented as in 3GPP TS 45.002.
+     * 3 Bits
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_ch_no_TN, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    return offset;
 }
 
 /*
@@ -2569,39 +2598,39 @@ dissect_rsl_ie_main_ch_ref(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
  */
 
 static int
-dissect_rsl_ie_multirate_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
+dissect_rsl_ie_multirate_conf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MULTIRATE_CONF)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"MultiRate configuration IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_multirate_conf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Rest of element coded as in 3GPP TS 44.018 not including
-        * 3GPP TS 44.018 element identifier or 3GPP TS 44.018 octet length value
-        */
-
-       de_rr_multirate_conf(tvb, ie_tree, offset, length, NULL, 0);
-
-       offset = offset + length;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MULTIRATE_CONF)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"MultiRate configuration IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_multirate_conf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Rest of element coded as in 3GPP TS 44.018 not including
+     * 3GPP TS 44.018 element identifier or 3GPP TS 44.018 octet length value
+     */
+
+    de_rr_multirate_conf(tvb, ie_tree, pinfo, offset, length, NULL, 0);
+
+    offset = offset + length;
+
+    return offset;
 }
 
 /*
@@ -2610,31 +2639,31 @@ dissect_rsl_ie_multirate_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
 static int
 dissect_rsl_ie_multirate_cntrl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_MULTIRATE_CNTRL)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,2,"MultiRate Control IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_multirate_cntrl);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Bit 8 -5 Spare */
-       /* The OD field (bit 5 of octet 3) indicates if the BSC expects distant parameters or
-        * TFO Decision algorithm result from the BTS
-        */
-       /* The PRE field (bit 4 of octet 3) indicates if an handover is to be expected soon or not. */
-       /* The RAE field (bits 2-3, octet 3) defines whether the RATSCCH mechanism is enabled or not.*/
-       offset++;
-
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_MULTIRATE_CNTRL)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,2,"MultiRate Control IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_multirate_cntrl);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Bit 8 -5 Spare */
+    /* The OD field (bit 5 of octet 3) indicates if the BSC expects distant parameters or
+     * TFO Decision algorithm result from the BTS
+     */
+    /* The PRE field (bit 4 of octet 3) indicates if an handover is to be expected soon or not. */
+    /* The RAE field (bits 2-3, octet 3) defines whether the RATSCCH mechanism is enabled or not.*/
+    offset++;
+
+    return offset;
 }
 
 /*
@@ -2644,50 +2673,50 @@ dissect_rsl_ie_multirate_cntrl(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
 static int
 dissect_rsl_ie_sup_codec_types(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_SUP_CODEC_TYPES)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Supported Codec Types IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_sup_codec_types);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       proto_tree_add_text(tree, tvb,offset,length,"Codec List");
-
-       /* The Codec List field (octet 4) lists the codec types that are supported
-        * by the BSS and Transcoder, and are therefore potential candidates for TFO
-        * establishment.
-        */
-       /* The Codec List extension 1 field (octet 5) lists additional codec types
-        * that are supported by the BSS and Transcoder, and are therefore potential
-        * candidates for TFO establishment. When no codec from this list is supported,
-        * then this field shall not be sent, and the extension bit of octet 4 shall
-        * be set to 0.
-        */
-       /* If bit 4 of the Codec List field (octet 4) indicates that FR AMR is supported
-        * or if bit 5 of the Codec List field (octet 4) indicates that HR AMR is supported
-        * and bit 8 is set to 0, or if bit 6 of the Codec List field (octet 4) indicates
-        * that UMTS AMR is supported, or if bit 7 of the Codec List field (octet 4)
-        * indicates that UMTS AMR 2 is supported, or if bit 1, 3, 4 or 5 of the Codec List
-        * extension 1 field (octet 5) indicates that AMR WB is supported, the following
-        * two octets (after the Codec List field and its extensions) is present
-        */
-
-       return offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_SUP_CODEC_TYPES)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Supported Codec Types IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_sup_codec_types);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    proto_tree_add_text(tree, tvb,offset,length,"Codec List");
+
+    /* The Codec List field (octet 4) lists the codec types that are supported
+     * by the BSS and Transcoder, and are therefore potential candidates for TFO
+     * establishment.
+     */
+    /* The Codec List extension 1 field (octet 5) lists additional codec types
+     * that are supported by the BSS and Transcoder, and are therefore potential
+     * candidates for TFO establishment. When no codec from this list is supported,
+     * then this field shall not be sent, and the extension bit of octet 4 shall
+     * be set to 0.
+     */
+    /* If bit 4 of the Codec List field (octet 4) indicates that FR AMR is supported
+     * or if bit 5 of the Codec List field (octet 4) indicates that HR AMR is supported
+     * and bit 8 is set to 0, or if bit 6 of the Codec List field (octet 4) indicates
+     * that UMTS AMR is supported, or if bit 7 of the Codec List field (octet 4)
+     * indicates that UMTS AMR 2 is supported, or if bit 1, 3, 4 or 5 of the Codec List
+     * extension 1 field (octet 5) indicates that AMR WB is supported, the following
+     * two octets (after the Codec List field and its extensions) is present
+     */
+
+    return offset + length;
 
 }
 /*
@@ -2712,31 +2741,31 @@ All other values are reserved for future use
 static int
 dissect_rsl_ie_codec_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint length;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_CODEC_CONF)
-                       return offset;
-       }
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Codec Configuration IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_codec_conf);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb,offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* Active Codec Type */
-
-       return offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint length;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_CODEC_CONF)
+            return offset;
+    }
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Codec Configuration IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_codec_conf);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb,offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* Active Codec Type */
+
+    return offset + length;
 }
 
 /*
@@ -2746,45 +2775,45 @@ dissect_rsl_ie_codec_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
  */
 
 static const value_string rsl_delay_ind_vals[] = {
-       {  0x00,        "The RTD field contains the BTS-Transcoder round trip delay" },
-       {  0x01,        "The RTD field contains the BTS-Remote BTS round trip delay" },
-       { 0,                    NULL }
+    {  0x00,    "The RTD field contains the BTS-Transcoder round trip delay" },
+    {  0x01,    "The RTD field contains the BTS-Remote BTS round trip delay" },
+    { 0,            NULL }
 };
 static int
 dissect_rsl_ie_rtd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti, *rtd_item;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-       guint8          rtd;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_RTD)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"Round Trip Delay IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_rtd);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       /* The RTD field is the binary representation of the value of the
-        * round trip delay in 20 ms increments.
-        */
-       rtd = (tvb_get_guint8(tvb,offset)>>1)*20;
-       rtd_item = proto_tree_add_uint(tree, hf_rsl_rtd, tvb,offset,1,rtd);
-       proto_item_append_text(rtd_item," ms");
-
-       /* The Delay IND field indicates if the delay corresponds to a BTS
-        * to transcoder delay or to a BTS to remote BTS delay.
-        */
-       proto_tree_add_item(ie_tree, hf_rsl_delay_ind, tvb, offset, 1, FALSE);
-       offset++;
-
-       return offset;
+    proto_item *ti, *rtd_item;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+    guint8      rtd;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_RTD)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"Round Trip Delay IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_rtd);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    /* The RTD field is the binary representation of the value of the
+     * round trip delay in 20 ms increments.
+     */
+    rtd = (tvb_get_guint8(tvb,offset)>>1)*20;
+    rtd_item = proto_tree_add_uint(tree, hf_rsl_rtd, tvb,offset,1,rtd);
+    proto_item_append_text(rtd_item," ms");
+
+    /* The Delay IND field indicates if the delay corresponds to a BTS
+     * to transcoder delay or to a BTS to remote BTS delay.
+     */
+    proto_tree_add_item(ie_tree, hf_rsl_delay_ind, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    return offset;
 }
 /*
  * 9.3.57 TFO Status
@@ -2799,26 +2828,26 @@ static const true_false_string rsl_tfo_vals = {
 static int
 dissect_rsl_ie_tfo_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8          ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_TFO_STATUS)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"TFO Status IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_tfo_status);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-
-       proto_tree_add_item(ie_tree, hf_rsl_tfo, tvb, offset, 1, FALSE);
-       offset++;
-       return offset;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8      ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_TFO_STATUS)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"TFO Status IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_tfo_status);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    proto_tree_add_item(ie_tree, hf_rsl_tfo, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    return offset;
 }
 /*
  * 9.3.58 LLP APDU
@@ -2827,41 +2856,41 @@ dissect_rsl_ie_tfo_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
 static int
 dissect_rsl_ie_llp_apdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 length;
-       int ie_offset;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_LLP_APDU)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"LLP APDU IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_llp_apdu);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb, offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       ie_offset = offset;
-
-       /* The rest of the information element contains the embedded message
-        * that contains a Facility Information Element as defined in
-        * 3GPP TS 44.071 excluding the Facility IEI and length of Facility IEI
-        * octets defined in 3GPP TS 44.071.
-        */
-       /* TODO: Given traces with LLP data this IE could be further dissected */
-       proto_tree_add_text(tree, tvb,offset,length,
-               "Facility Information Element as defined in 3GPP TS 44.071");
-       return ie_offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 length;
+    int ie_offset;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_LLP_APDU)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"LLP APDU IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_llp_apdu);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb, offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    ie_offset = offset;
+
+    /* The rest of the information element contains the embedded message
+     * that contains a Facility Information Element as defined in
+     * 3GPP TS 44.071 excluding the Facility IEI and length of Facility IEI
+     * octets defined in 3GPP TS 44.071.
+     */
+    /* TODO: Given traces with LLP data this IE could be further dissected */
+    proto_tree_add_text(tree, tvb,offset,length,
+        "Facility Information Element as defined in 3GPP TS 44.071");
+    return ie_offset + length;
 }
 /*
  * 9.3.59 TFO transparent container
@@ -2873,1092 +2902,1091 @@ dissect_rsl_ie_llp_apdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
 static int
 dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
 {
-       proto_item *ti;
-       proto_tree *ie_tree;
-       guint8 length;
-       int ie_offset;
-       guint8 ie_id;
-
-       if(is_mandatory == FALSE){
-               ie_id = tvb_get_guint8(tvb,offset);
-               if (ie_id != RSL_IE_TFO_TRANSP_CONT)
-                       return offset;
-       }
-
-       ti = proto_tree_add_text(tree, tvb,offset,0,"TFO transparent container IE");
-       ie_tree = proto_item_add_subtree(ti, ett_ie_tfo_transp_cont);
-
-       /* Element identifier */
-       proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
-       offset++;
-       /* Length */
-       length = tvb_get_guint8(tvb, offset);
-       proto_item_set_len(ti, length+2);
-       proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
-       offset++;
-
-       ie_offset = offset;
-
-       /* The rest of the information element contains the embedded message
-        * that contains a Facility Information Element as defined in
-        * 3GPP TS 44.071 excluding the Facility IEI and length of Facility IEI
-        * octets defined in 3GPP TS 44.071.
-        */
-       proto_tree_add_text(tree, tvb,offset,length,
-               "Embedded message that contains the TFO configuration");
-       return ie_offset + length;
+    proto_item *ti;
+    proto_tree *ie_tree;
+    guint8 length;
+    int ie_offset;
+    guint8 ie_id;
+
+    if(is_mandatory == FALSE){
+        ie_id = tvb_get_guint8(tvb,offset);
+        if (ie_id != RSL_IE_TFO_TRANSP_CONT)
+            return offset;
+    }
+
+    ti = proto_tree_add_text(tree, tvb,offset,0,"TFO transparent container IE");
+    ie_tree = proto_item_add_subtree(ti, ett_ie_tfo_transp_cont);
+
+    /* Element identifier */
+    proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+    /* Length */
+    length = tvb_get_guint8(tvb, offset);
+    proto_item_set_len(ti, length+2);
+    proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
+
+    ie_offset = offset;
+
+    /* The rest of the information element contains the embedded message
+     * that contains a Facility Information Element as defined in
+     * 3GPP TS 44.071 excluding the Facility IEI and length of Facility IEI
+     * octets defined in 3GPP TS 44.071.
+     */
+    proto_tree_add_text(tree, tvb,offset,length,
+        "Embedded message that contains the TFO configuration");
+    return ie_offset + length;
 }
 
 static int
 dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
 {
-       guint8  msg_type;
+    guint8  msg_type;
 
-       msg_type = tvb_get_guint8(tvb,offset)&0x7f;
-       proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, FALSE);
-       offset++;
+    msg_type = tvb_get_guint8(tvb,offset)&0x7f;
+    proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+    offset++;
 
-       switch (msg_type){
+    switch (msg_type){
 /* Radio Link Layer Management messages */
-       /* 8.3.1 DATA REQUEST */
-       case RSL_MSG_TYPE_DATA_REQ:
-               /* Channel number                       9.3.1   M TV 2          */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Link Identifier                      9.3.2   M TV 2          */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /* L3 Information                       9.3.11  M TLV >=3       */
-               offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.2 DATA INDICATION */
-       case RSL_MSG_TYPE_DATA_IND:
-               /* Channel number                       9.3.1   M TV 2          */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Link Identifier                      9.3.2   M TV 2          */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /* L3 Information                       9.3.11  M TLV >=3       */
-               offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.3 ERROR INDICATION */
-       case RSL_MSG_TYPE_ERROR_IND:
-               /* Channel number                       9.3.1   M TV 2          */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Link Identifier                      9.3.2   M TV 2          */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /* RLM Cause                            9.3.22  M TLV 2-4       */
-               offset = dissect_rsl_ie_rlm_cause(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.4 ESTABLISH REQUEST */
-       case RSL_MSG_TYPE_EST_REQ:
-               /* Channel number                       9.3.1   M TV 2          */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Link Identifier                      9.3.2   M TV 2          */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.5 ESTABLISH CONFIRM */
-       case RSL_MSG_TYPE_EST_CONF:
-               /* Channel number                       9.3.1   M TV 2          */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Link Identifier                      9.3.2   M TV 2          */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.6 */
-       case RSL_MSG_EST_IND:
-               /*      Channel number                  9.3.1   M TV 2                           */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /*      Link Identifier                 9.3.2   M TV 2                           */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /*      L3 Information                  9.3.11  O (note 1) TLV 3-23      */
-               if(tvb_length_remaining(tvb,offset) >1)
-                       offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.3.7 RELEASE REQUEST */
-       case RSL_MSG_REL_REQ:
-               /*      Channel number                  9.3.1   M TV 2                           */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /*      Link Identifier                 9.3.2   M TV 2                           */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /* Release Mode                         9.3.20  M TV 2                          */
-               offset = dissect_rsl_ie_rel_mode(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.8 RELEASE CONFIRM */
-       case RSL_MSG_REL_CONF:
-               /*      Channel number                  9.3.1   M TV 2                           */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /*      Link Identifier                 9.3.2   M TV 2                           */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.9 RELEASE INDICATION */
-       case RSL_MSG_REL_IND:
-               /*      Channel number                  9.3.1   M TV 2                           */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /*      Link Identifier                 9.3.2   M TV 2                           */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.3.10 UNIT DATA REQUEST 10 */
-       case RSL_MSG_UNIT_DATA_REQ:
-               /*      Channel number                  9.3.1   M TV 2                           */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /*      Link Identifier                 9.3.2   M TV 2                           */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /*      L3 Information                  9.3.11  O (note 1) TLV 3-23      */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE);
-               break;
+    /* 8.3.1 DATA REQUEST */
+    case RSL_MSG_TYPE_DATA_REQ:
+        /* Channel number           9.3.1   M TV 2      */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Link Identifier          9.3.2   M TV 2      */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /* L3 Information           9.3.11  M TLV >=3   */
+        offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, TRUE, L3_INF_OTHER);
+        break;
+    /* 8.3.2 DATA INDICATION */
+    case RSL_MSG_TYPE_DATA_IND:
+        /* Channel number           9.3.1   M TV 2      */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Link Identifier          9.3.2   M TV 2      */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /* L3 Information           9.3.11  M TLV >=3   */
+        offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, TRUE, L3_INF_OTHER);
+        break;
+    /* 8.3.3 ERROR INDICATION */
+    case RSL_MSG_TYPE_ERROR_IND:
+        /* Channel number           9.3.1   M TV 2      */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Link Identifier          9.3.2   M TV 2      */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /* RLM Cause                9.3.22  M TLV 2-4   */
+        offset = dissect_rsl_ie_rlm_cause(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.3.4 ESTABLISH REQUEST */
+    case RSL_MSG_TYPE_EST_REQ:
+        /* Channel number           9.3.1   M TV 2      */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Link Identifier          9.3.2   M TV 2      */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.3.5 ESTABLISH CONFIRM */
+    case RSL_MSG_TYPE_EST_CONF:
+        /* Channel number           9.3.1   M TV 2      */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Link Identifier          9.3.2   M TV 2      */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.3.6 */
+    case RSL_MSG_EST_IND:
+        /*  Channel number          9.3.1   M TV 2               */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /*  Link Identifier         9.3.2   M TV 2               */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /*  L3 Information          9.3.11  O (note 1) TLV 3-23  */
+        if(tvb_length_remaining(tvb,offset) >1)
+            offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_OTHER);
+        break;
+    /* 8.3.7 RELEASE REQUEST */
+    case RSL_MSG_REL_REQ:
+        /*  Channel number          9.3.1   M TV 2               */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /*  Link Identifier         9.3.2   M TV 2               */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /* Release Mode             9.3.20  M TV 2              */
+        offset = dissect_rsl_ie_rel_mode(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.3.8 RELEASE CONFIRM */
+    case RSL_MSG_REL_CONF:
+        /*  Channel number          9.3.1   M TV 2               */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /*  Link Identifier         9.3.2   M TV 2               */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.3.9 RELEASE INDICATION */
+    case RSL_MSG_REL_IND:
+        /*  Channel number          9.3.1   M TV 2               */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /*  Link Identifier         9.3.2   M TV 2               */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.3.10 UNIT DATA REQUEST 10 */
+    case RSL_MSG_UNIT_DATA_REQ:
+        /*  Channel number          9.3.1   M TV 2               */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /*  Link Identifier         9.3.2   M TV 2               */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /*  L3 Information          9.3.11  O (note 1) TLV 3-23  */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_OTHER);
+        break;
 /* Common Channel Management/TRX Management messages */
-       /* 8.5.1 BCCH INFORMATION 17*/
-       case RSL_MSG_BCCH_INFO:
-               /*      Channel number                  9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /*      System Info Type                9.3.30  M TV 2 */
-               offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
-               /*      Full BCCH Info (SYS INFO) 9.3.39 O 1) TLV 25 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_full_bcch_inf(tvb, pinfo, tree, offset, TRUE);
-               /*      Starting Time                   9.3.23  O 2) TV 3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_staring_time(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.5.2 CCCH LOAD INDICATION 18*/
-       case RSL_MSG_CCCH_LOAD_IND:
-               /*      Channel number (note)   9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Either RACH Load or Paging Load present */
-               /*      RACH Load                               9.3.18  C 1) TLV >=8 */
-               offset = dissect_rsl_ie_rach_load(tvb, pinfo, tree, offset, FALSE);
-               /*      Paging Load                             9.3.15  C 2) TV 3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_paging_load(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.5.3 */
-       case RSL_MSG_CHANRQD: /* 19 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Request Reference            9.3.19  M TV 4 */
-               offset = dissect_rsl_ie_req_ref(tvb, pinfo, tree, offset, TRUE);
-               /* Access Delay                         9.3.17  M TV 2 */
-               offset = dissect_rsl_ie_access_delay(tvb, pinfo, tree, offset, TRUE);
-               /* Physical Context                     9.3.16  O 1) TLV >=2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.5.4 DELETE INDICATION */
-       case RSL_MSG_DELETE_IND: /* 20 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Full Imm. Assign Info        9.3.35  M TLV 25 */
-               offset = dissect_rsl_ie_full_imm_ass_inf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       case RSL_MSG_PAGING_CMD:        /* 21 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Paging Group                         9.3.14  M TV 2 2 */
-               offset = dissect_rsl_ie_paging_grp(tvb, pinfo, tree, offset, TRUE);
-               /* MS Identity                          9.3.12  M TLV 2-10 2 */
-               offset = dissect_rsl_ie_ms_id(tvb, pinfo, tree, offset, TRUE);
-               /* Channel Needed                       9.3.40  O 1) TV 2 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ch_needed(tvb, pinfo, tree, offset, FALSE);
-               /* eMLPP Priority                       9.3.49  O 2) TV 2 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_emlpp_prio(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.5.6 IMMEDIATE ASSIGN COMMAND */
-       case RSL_MSG_IMM_ASS_CMD:       /* 22 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Full Imm. Assign Info        9.3.35  M TLV 25 */
-               offset = dissect_rsl_ie_full_imm_ass_inf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.5.7 SMS BROADCAST REQUEST */
-       case RSL_MSG_SMS_BC_REQ:        /*      23       8.5.7 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* SMSCB Information            9.3.36  M TV 24 */
-               offset = dissect_rsl_ie_smscb_inf(tvb, pinfo, tree, offset, TRUE);
-               /* SMSCB Channel Indicator      9.3.44  O 1) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
-               break;
+    /* 8.5.1 BCCH INFORMATION 17*/
+    case RSL_MSG_BCCH_INFO:
+        /*  Channel number          9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /*  System Info Type        9.3.30  M TV 2 */
+        offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
+        /*  Full BCCH Info (SYS INFO) 9.3.39 O 1) TLV 25 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_full_bcch_inf(tvb, pinfo, tree, offset, TRUE);
+        /*  Starting Time           9.3.23  O 2) TV 3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_starting_time(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.5.2 CCCH LOAD INDICATION 18*/
+    case RSL_MSG_CCCH_LOAD_IND:
+        /*  Channel number (note)   9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Either RACH Load or Paging Load present */
+        /*  RACH Load               9.3.18  C 1) TLV >=8 */
+        offset = dissect_rsl_ie_rach_load(tvb, pinfo, tree, offset, FALSE);
+        /*  Paging Load             9.3.15  C 2) TV 3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_paging_load(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.5.3 */
+    case RSL_MSG_CHANRQD: /* 19 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Request Reference        9.3.19  M TV 4 */
+        offset = dissect_rsl_ie_req_ref(tvb, pinfo, tree, offset, TRUE);
+        /* Access Delay             9.3.17  M TV 2 */
+        offset = dissect_rsl_ie_access_delay(tvb, pinfo, tree, offset, TRUE);
+        /* Physical Context         9.3.16  O 1) TLV >=2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.5.4 DELETE INDICATION */
+    case RSL_MSG_DELETE_IND: /* 20 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Full Imm. Assign Info    9.3.35  M TLV 25 */
+        offset = dissect_rsl_ie_full_imm_ass_inf(tvb, pinfo, tree, offset, TRUE);
+        break;
+    case RSL_MSG_PAGING_CMD:    /* 21 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Paging Group             9.3.14  M TV 2 2 */
+        offset = dissect_rsl_ie_paging_grp(tvb, pinfo, tree, offset, TRUE);
+        /* MS Identity              9.3.12  M TLV 2-10 2 */
+        offset = dissect_rsl_ie_ms_id(tvb, pinfo, tree, offset, TRUE);
+        /* Channel Needed           9.3.40  O 1) TV 2 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ch_needed(tvb, pinfo, tree, offset, FALSE);
+        /* eMLPP Priority           9.3.49  O 2) TV 2 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_emlpp_prio(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.5.6 IMMEDIATE ASSIGN COMMAND */
+    case RSL_MSG_IMM_ASS_CMD:   /* 22 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Full Imm. Assign Info    9.3.35  M TLV 25 */
+        offset = dissect_rsl_ie_full_imm_ass_inf(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.5.7 SMS BROADCAST REQUEST */
+    case RSL_MSG_SMS_BC_REQ:    /*  23   8.5.7 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* SMSCB Information        9.3.36  M TV 24 */
+        offset = dissect_rsl_ie_smscb_inf(tvb, pinfo, tree, offset, TRUE);
+        /* SMSCB Channel Indicator  9.3.44  O 1) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
+        break;
 /* 8.6 TRX MANAGEMENT MESSAGES */
-       /* 8.6.1 RF RESOURCE INDICATION */
-       case RSL_MSG_RF_RES_IND:        /*      24       8.6.1 */
-               /* Resource Information         9.3.21  M TLV >=2 */
-               offset = dissect_rsl_ie_resource_inf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.6.2 SACCH FILLING */
-       case RSL_MSG_SACCH_FILL:        /*      25       8.6.2 */
-               /* System Info Type                     9.3.30  M TV 2 */
-               offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
-               /* L3 Info (SYS INFO)           9.3.11 O 1) TLV 22 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE);
-               /* Starting Time                        9.3.23 O 2) TV 3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_staring_time(tvb, pinfo, tree, offset, FALSE);
-               break;
-       case RSL_MSG_OVERLOAD:          /*      27       8.6.3 */
-               /* Cause                                        9.3.26  M TLV >=3 */
-               offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
-               break;
-       case RSL_MSG_ERROR_REPORT:      /*      28       8.6.4 */
-               /* Cause                                        9.3.26  M TLV >=3 */
-               offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
-               /* Message Identifier           9.3.28  O 1) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_message_id(tvb, pinfo, tree, offset, FALSE);
-               /* Channel Number                       9.3.1   O 2) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Link identifier                      9.3.2   O 3) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /* Erroneous Message            9.3.38  O 4) TLV >=3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_err_msg(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.5.8 SMS BROADCAST COMMAND */
-       case RSL_MSG_SMS_BC_CMD:        /*      29       8.5.8 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* CB Command type                      9.3.41  M TV 2 */
-               offset = dissect_rsl_ie_cb_cmd_type(tvb, pinfo, tree, offset, TRUE);
-               /* SMSCB message                        9.3.42  M TLV 2-90 */
-               offset = dissect_rsl_ie_smscb_mess(tvb, pinfo, tree, offset, TRUE);
-               /* SMSCB Channel Indicator      9.3.44  O 1) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
-               break;
-       case RSL_MSG_CBCH_LOAD_IND:     /*      30       8.5.9 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* CBCH Load Information        9.3.43  M TV 2 */
-               offset = dissect_rsl_ie_cbch_load_inf(tvb, pinfo, tree, offset, TRUE);
-               /* SMSCB Channel Indicator      9.3.44 O 1) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
-               break;
-       case RSL_MSG_NOT_CMD:           /*      31       8.5.10 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Command indicator            9.3.48 M 1) TLV 3-4 */
-               offset = dissect_rsl_ie_cmd_ind(tvb, pinfo, tree, offset, TRUE);
-               /* Group call reference         9.3.45 O TLV 7 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_grp_call_ref(tvb, pinfo, tree, offset, FALSE);
-               /* Channel Description          9.3.46 O TLV 3-n */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ch_desc(tvb, pinfo, tree, offset, FALSE);
-               /* NCH DRX information          9.3.47 O TLV 3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_nch_drx(tvb, pinfo, tree, offset, FALSE);
-               break;
+    /* 8.6.1 RF RESOURCE INDICATION */
+    case RSL_MSG_RF_RES_IND:    /*  24   8.6.1 */
+        /* Resource Information     9.3.21  M TLV >=2 */
+        offset = dissect_rsl_ie_resource_inf(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.6.2 SACCH FILLING */
+    case RSL_MSG_SACCH_FILL:    /*  25   8.6.2 */
+        /* System Info Type         9.3.30  M TV 2 */
+        offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
+        /* L3 Info (SYS INFO)       9.3.11 O 1) TLV 22 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+           offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_CCCH);
+        /* Starting Time            9.3.23 O 2) TV 3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_starting_time(tvb, pinfo, tree, offset, FALSE);
+        break;
+    case RSL_MSG_OVERLOAD:      /*  27   8.6.3 */
+        /* Cause                    9.3.26  M TLV >=3 */
+        offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
+        break;
+    case RSL_MSG_ERROR_REPORT:  /*  28   8.6.4 */
+        /* Cause                    9.3.26  M TLV >=3 */
+        offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
+        /* Message Identifier       9.3.28  O 1) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_message_id(tvb, pinfo, tree, offset, FALSE);
+        /* Channel Number           9.3.1   O 2) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Link identifier          9.3.2   O 3) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /* Erroneous Message        9.3.38  O 4) TLV >=3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_err_msg(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.5.8 SMS BROADCAST COMMAND */
+    case RSL_MSG_SMS_BC_CMD:    /*  29   8.5.8 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* CB Command type          9.3.41  M TV 2 */
+        offset = dissect_rsl_ie_cb_cmd_type(tvb, pinfo, tree, offset, TRUE);
+        /* SMSCB message            9.3.42  M TLV 2-90 */
+        offset = dissect_rsl_ie_smscb_mess(tvb, pinfo, tree, offset, TRUE);
+        /* SMSCB Channel Indicator  9.3.44  O 1) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
+        break;
+    case RSL_MSG_CBCH_LOAD_IND: /*  30   8.5.9 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* CBCH Load Information    9.3.43  M TV 2 */
+        offset = dissect_rsl_ie_cbch_load_inf(tvb, pinfo, tree, offset, TRUE);
+        /* SMSCB Channel Indicator  9.3.44 O 1) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_smscb_ch_ind(tvb, pinfo, tree, offset, FALSE);
+        break;
+    case RSL_MSG_NOT_CMD:       /*  31   8.5.10 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Command indicator        9.3.48 M 1) TLV 3-4 */
+        offset = dissect_rsl_ie_cmd_ind(tvb, pinfo, tree, offset, TRUE);
+        /* Group call reference     9.3.45 O TLV 7 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_grp_call_ref(tvb, pinfo, tree, offset, FALSE);
+        /* Channel Description      9.3.46 O TLV 3-n */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ch_desc(tvb, pinfo, tree, offset, FALSE);
+        /* NCH DRX information      9.3.47 O TLV 3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_nch_drx(tvb, pinfo, tree, offset, FALSE);
+        break;
 
 /* Dedicated Channel Management messages: */
-       /* 8.4.1 CHANNEL ACTIVATION 33*/
-       case RSL_MSG_CHAN_ACTIV:
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Activation Type                      9.3.3   M TV 2                  */
-               offset = dissect_rsl_ie_act_type(tvb, pinfo, tree, offset, TRUE);
-               /* Channel Mode                         9.3.6   M TLV 8-9               */
-               offset = dissect_rsl_ie_ch_mode(tvb, pinfo, tree, offset, TRUE);
-               /* Channel Identification       9.3.5   O 7) TLV 8              */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ch_id(tvb, pinfo, tree, offset, FALSE);
-               /* Encryption information       9.3.7   O 1) TLV >=3    */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, FALSE);
-               /* Handover Reference           9.3.9   C 2) TV 2               */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ho_ref(tvb, pinfo, tree, offset, FALSE);
-               /* BS Power                                     9.3.4   O 3) TV 2               */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, FALSE);
-               /* MS Power                                     9.3.13  O 3) TV 2               */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE);
-               /* Timing Advance                       9.3.24  C 3) 4) TV 2    */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_timing_adv(tvb, pinfo, tree, offset, FALSE);
-               /* BS Power Parameters          9.3.32  O 5) TLV >=2    */
-               /* MS Power Parameters          9.3.31  O 5) TLV >=2    */
-               /* Physical Context                     9.3.16  O 6) TLV >=2    */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
-               /* SACCH Information            9.3.29  O 8) TLV >=3    */
-               /* UIC                                          9.3.50  O 9) TLV 3              */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_uic(tvb, pinfo, tree, offset, FALSE);
-               /* Main channel reference       9.3.51  O 10) TV 2              */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_main_ch_ref(tvb, pinfo, tree, offset, FALSE);
-               /* MultiRate configuration      9.3.52  O 11) TLV >=4   */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
-               /* MultiRate Control            9.3.53  O 12) TV 2              */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, FALSE);
-                       /* Supported Codec Types        9.3.54  O 12) TLV >=5   */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
-               /* TFO transparent container 9.3.59 O 12) TLV >=3       */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
-               break;
-
-       /* 8.4.2 CHANNEL ACTIVATION ACKNOWLEDGE 34*/
-       case RSL_MSG_CHAN_ACTIV_ACK:
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Frame number                         9.3.8   M TV 3                  */
-               offset = dissect_rsl_ie_frame_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       case RSL_MSG_CHAN_ACTIV_N_ACK:
-       /* 8.4.3 CHANNEL ACTIVATION NEGATIVE ACKNOWLEDGE */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Cause                                        9.3.26  M TLV >=3               */
-               offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.4 CONNECTION FAILURE INDICATION */
-       case RSL_MSG_CONN_FAIL:
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Cause                                        9.3.26  M TLV >=3               */
-               offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.5 DEACTIVATE SACCH */
-       case RSL_MSG_DEACTIVATE_SACCH:
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.6 ENCRYPTION COMMAND */
-       case RSL_MSG_ENCR_CMD:                  /*      38       8.4.6 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Encryption information       9.3.7   M TLV >=3               */
-               offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, TRUE);
-               /* Link Identifier                      9.3.2   M TV 2                  */
-               offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
-               /* L3 Info (CIPH MOD CMD)       9.3.11  M TLV 6                 */
-               offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.7 HANDOVER DETECTION */
-       case RSL_MSG_HANDODET:                  /*      39       8.4.7 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Access Delay                         9.3.17 O 1) TV 2                */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_access_delay(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.8 MEASUREMENT RESULT 40 */
-       case RSL_MSG_MEAS_RES:
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Measurement result number 9.3.27 M TV 2                      */
-               offset = dissect_rsl_ie_meas_res_no(tvb, pinfo, tree, offset, TRUE);
-               /* Uplink Measurements          9.3.25  M TLV >=5               */
-               offset = dissect_rsl_ie_uplik_meas(tvb, pinfo, tree, offset, TRUE);
-               /* BS Power                                     9.3.4   M TV 2                  */
-               offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
-               /* L1 Information                       9.3.10 O 1) TV 3                */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_l1_inf(tvb, pinfo, tree, offset, FALSE);
-               /* L3 Info (MEAS REP, EXT MEAS REP or ENH MEAS REP) 9.3.11 O 1) TLV 21 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE);
-               /* MS Timing Offset                     9.3.37 O 2) TV 2                */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ms_timing_offset(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.9 MODE MODIFY */
-       case RSL_MSG_MODE_MODIFY_REQ:   /*      41      8.4.9 */
-               /* Channel number                       9.3.1 M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Channel Mode                         9.3.6 M TLV 8-9 */
-               offset = dissect_rsl_ie_ch_mode(tvb, pinfo, tree, offset, TRUE);
-               /* Encryption information       9.3.7 O 1) TLV >=3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, FALSE);
-               /* Main channel reference       9.3.45 O 2) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_main_ch_ref(tvb, pinfo, tree, offset, FALSE);
-               /* MultiRate configuration      9.3.52 O 3) TLV >=3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
-               /* Multirate Control            9.3.53 O 4) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, FALSE);
-               /* Supported Codec Types        9.3.54 O 4) TLV >=5 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
-               /* TFO transparent container 9.3.59 O 4) TLV */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.10 MODE MODIFY ACKNOWLEDGE */
-       case RSL_MSG_MODE_MODIFY_ACK:   /*      42      8.4.10 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.11 MODE MODIFY NEGATIVE ACKNOWLEDGE */
-       case RSL_MSG_MODE_MODIFY_NACK:  /*      43      8.4.11 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Cause                                        9.3.26  M TLV >=3               */
-               offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.12 PHYSICAL CONTEXT REQUEST */
-       case RSL_MSG_PHY_CONTEXT_REQ:   /*      44      8.4.12 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.13 PHYSICAL CONTEXT CONFIRM */
-       case RSL_MSG_PHY_CONTEXT_CONF:  /*      45      8.4.13 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* BS Power                                     9.3.4   M TV 2 */
-               offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
-               /* MS Power                                     9.3.13  M TV 2 */
-               offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, TRUE);
-               /* Timing Advance                       9.3.24  M TV 2 */
-               offset = dissect_rsl_ie_timing_adv(tvb, pinfo, tree, offset, TRUE);
-               /* Physical Context                     9.3.16  O 1) TLV */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.14 RF CHANNEL RELEASE */
-       case RSL_MSG_RF_CHAN_REL:               /*      46      8.4.14 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.15 MS POWER CONTROL */
-       case RSL_MSG_MS_POWER_CONTROL:  /*      47      8.4.15 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* MS Power                                     9.3.13  M TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE);
-               /* MS Power Parameters          9.3.31  O 1) TLV >=2 */
-               break;
-       /* 8.4.16 BS POWER CONTROL */
-       case RSL_MSG_BS_POWER_CONTROL:  /*      48      8.4.16 */
-               /* Channel number                       9.3.1 M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* BS Power                                     9.3.4 M TV 2 */
-               offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
-               /* BS Power Parameters          9.3.32 O 1) TLV >=2 */
-               break;
-       /* 8.4.17 PREPROCESS CONFIGURE */
-       case RSL_MSG_PREPROC_CONFIG:            /*      49      8.4.17 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Preproc. Parameters          9.3.33  M TLV >=3 */
-               break;
-       /* 8.4.18 PREPROCESSED MEASUREMENT RESULT */
-       case RSL_MSG_PREPROC_MEAS_RES:  /*      50      8.4.18 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Preproc. Measurements        9.3.34  M TLV >=2 */
-               break;
-       /* 8.4.19 RF CHANNEL RELEASE ACKNOWLEDGE */
-       case RSL_MSG_RF_CHAN_REL_ACK:           /*      51      8.4.19 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.20 SACCH INFO MODIFY */
-       case RSL_MSG_SACCH_INFO_MODIFY: /*      52      8.4.20 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* System Info Type                     9.3.30  M TV 2 */
-               offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
-               /* L3 Info                                      9.3.11  O 1) TLV 22 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE);
-               /* Starting Time                        9.3.23  O 2) TV 3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_staring_time(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.21 TALKER DETECTION */
-       case RSL_MSG_TALKER_DET:                        /*      53      8.4.21 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Access Delay                         9.3.17  O 1) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.22 LISTENER DETECTION */
-       case RSL_MSG_LISTENER_DET:              /*      54      8.4.22 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Access Delay                         9.3.17  O 1) TV 2 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.23 REMOTE CODEC CONFIGURATION REPORT */
-       case RSL_MSG_REMOTE_CODEC_CONF_REP:/*   55      8.4.23 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Codec Configuration          9.3.55  M TLV >=3 */
-               offset = dissect_rsl_ie_codec_conf(tvb, pinfo, tree, offset, TRUE);
-               /* Supported Codec Types        9.3.54  M TLV >=5 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
-               /* TFO transparent container 9.3.59 O 4) TLV >=3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.24 ROUND TRIP DELAY REPORT */
-       case RSL_MSG_R_T_D_REP:                 /*      56      8.4.24 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Round Trip Delay                     9.3.56  M TV 2 */
-               offset = dissect_rsl_ie_rtd(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.25 PRE-HANDOVER NOTIFICATION */
-       case RSL_MSG_PRE_HANDO_NOTIF:           /*      57      8.4.25 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* MultiRateControl                     9.3.53  M TV 2 */
-               offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, TRUE);
-               /* Codec Configuration          9.3.55  M TLV >=3 */
-               offset = dissect_rsl_ie_codec_conf(tvb, pinfo, tree, offset, TRUE);
-               /* TFO transparent container 9.3.59 O 4) TLV >=3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.26 MULTIRATE CODEC MODIFICATION REQUEST */
-       case RSL_MSG_MR_CODEC_MOD_REQ:  /*      58      8.4.26 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* MultiRate Configuration      9.3.52  O 1) TLV >=4 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /*  8.4.27 MULTIRATE CODEC MODIFICATION ACKNOWLEDGE */
-       case RSL_MSG_MR_CODEC_MOD_ACK:  /*      59      8.4.27 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* MultiRate Configuration      9.3.52  O 1) TLV >=4 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /* 8.4.28 MULTIRATE CODEC MODIFICATION NEGATIVE ACKNOWLEDGE */
-       case RSL_MSG_MR_CODEC_MOD_NACK: /*      60      8.4.28 */
-               /* Channel number                       9.3.1   M TV 2                  */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* Cause                                        9.3.26  M TLV >=3               */
-               offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.29 MULTIRATE CODEC MODIFICATION PERFORMED */
-       case RSL_MSG_MR_CODEC_MOD_PER:  /*      61      8.4.29 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* MultiRate Configuration      9.3.52  M TLV >=4 */
-               offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.30 TFO REPORT */
-       case RSL_MSG_TFO_REP:                           /*      62      8.4.30 */
-               /* Channel number                       9.3.1   M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* TFO Status                           9.3.57  M TV 1 */
-               offset = dissect_rsl_ie_tfo_status(tvb, pinfo, tree, offset, TRUE);
-               break;
-       /* 8.4.31 TFO MODIFICATION REQUEST */
-       case RSL_MSG_TFO_MOD_REQ:                       /*      63      8.4.31 */
-               /* Channel number                       9.3.1 M TV 2 */
-               offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
-               /* MultiRateControl                     9.3.53 M TV 2 */
-               offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, TRUE);
-               /* Supported Codec Type         9.3.54 O 1) TLV >=5 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
-               /* TFO transparent container 9.3.59 O 4) TLV >=3 */
-               if(tvb_length_remaining(tvb,offset) > 0)
-                       offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
-               break;
-       /*      0 1 - - - - - - Location Services messages: */
-       /* 8.7.1 LOCATION INFORMATION */
-       case RSL_MSG_LOC_INF:                           /*      65      8.7.1 */
-               /* LLP APDU 9.3.58 M LV 2-N */
-               offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
-               break;
-       default:
-               break;
-       }
-
-       return offset;
+    /* 8.4.1 CHANNEL ACTIVATION 33*/
+    case RSL_MSG_CHAN_ACTIV:
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Activation Type          9.3.3   M TV 2          */
+        offset = dissect_rsl_ie_act_type(tvb, pinfo, tree, offset, TRUE);
+        /* Channel Mode             9.3.6   M TLV 8-9       */
+        offset = dissect_rsl_ie_ch_mode(tvb, pinfo, tree, offset, TRUE);
+        /* Channel Identification   9.3.5   O 7) TLV 8      */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ch_id(tvb, pinfo, tree, offset, FALSE);
+        /* Encryption information   9.3.7   O 1) TLV >=3    */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, FALSE);
+        /* Handover Reference       9.3.9   C 2) TV 2       */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ho_ref(tvb, pinfo, tree, offset, FALSE);
+        /* BS Power                 9.3.4   O 3) TV 2       */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, FALSE);
+        /* MS Power                 9.3.13  O 3) TV 2       */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE);
+        /* Timing Advance           9.3.24  C 3) 4) TV 2    */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_timing_adv(tvb, pinfo, tree, offset, FALSE);
+        /* BS Power Parameters      9.3.32  O 5) TLV >=2    */
+        /* MS Power Parameters      9.3.31  O 5) TLV >=2    */
+        /* Physical Context         9.3.16  O 6) TLV >=2    */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
+        /* SACCH Information        9.3.29  O 8) TLV >=3    */
+        /* UIC                      9.3.50  O 9) TLV 3      */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_uic(tvb, pinfo, tree, offset, FALSE);
+        /* Main channel reference   9.3.51  O 10) TV 2      */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_main_ch_ref(tvb, pinfo, tree, offset, FALSE);
+        /* MultiRate configuration  9.3.52  O 11) TLV >=4   */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
+        /* MultiRate Control        9.3.53  O 12) TV 2      */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, FALSE);
+            /* Supported Codec Types    9.3.54  O 12) TLV >=5   */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
+        /* TFO transparent container 9.3.59 O 12) TLV >=3   */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
+        break;
+
+    /* 8.4.2 CHANNEL ACTIVATION ACKNOWLEDGE 34*/
+    case RSL_MSG_CHAN_ACTIV_ACK:
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Frame number             9.3.8   M TV 3          */
+        offset = dissect_rsl_ie_frame_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    case RSL_MSG_CHAN_ACTIV_N_ACK:
+    /* 8.4.3 CHANNEL ACTIVATION NEGATIVE ACKNOWLEDGE */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Cause                    9.3.26  M TLV >=3       */
+        offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.4 CONNECTION FAILURE INDICATION */
+    case RSL_MSG_CONN_FAIL:
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Cause                    9.3.26  M TLV >=3       */
+        offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.5 DEACTIVATE SACCH */
+    case RSL_MSG_DEACTIVATE_SACCH:
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.6 ENCRYPTION COMMAND */
+    case RSL_MSG_ENCR_CMD:          /*  38   8.4.6 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Encryption information   9.3.7   M TLV >=3       */
+        offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, TRUE);
+        /* Link Identifier          9.3.2   M TV 2          */
+        offset = dissect_rsl_ie_link_id(tvb, pinfo, tree, offset, TRUE);
+        /* L3 Info (CIPH MOD CMD)   9.3.11  M TLV 6         */
+        offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, TRUE, L3_INF_OTHER);
+        break;
+    /* 8.4.7 HANDOVER DETECTION */
+    case RSL_MSG_HANDODET:          /*  39   8.4.7 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Access Delay             9.3.17 O 1) TV 2        */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_access_delay(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.8 MEASUREMENT RESULT 40 */
+    case RSL_MSG_MEAS_RES:
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Measurement result number 9.3.27 M TV 2          */
+        offset = dissect_rsl_ie_meas_res_no(tvb, pinfo, tree, offset, TRUE);
+        /* Uplink Measurements      9.3.25  M TLV >=5       */
+        offset = dissect_rsl_ie_uplik_meas(tvb, pinfo, tree, offset, TRUE);
+        /* BS Power                 9.3.4   M TV 2          */
+        offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
+        /* L1 Information           9.3.10 O 1) TV 3        */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_l1_inf(tvb, pinfo, tree, offset, FALSE);
+        /* L3 Info (MEAS REP, EXT MEAS REP or ENH MEAS REP) 9.3.11 O 1) TLV 21 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_SACCH);
+        /* MS Timing Offset         9.3.37 O 2) TV 2        */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ms_timing_offset(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.9 MODE MODIFY */
+    case RSL_MSG_MODE_MODIFY_REQ:   /*  41  8.4.9 */
+        /* Channel number           9.3.1 M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Channel Mode             9.3.6 M TLV 8-9 */
+        offset = dissect_rsl_ie_ch_mode(tvb, pinfo, tree, offset, TRUE);
+        /* Encryption information   9.3.7 O 1) TLV >=3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_enc_inf(tvb, pinfo, tree, offset, FALSE);
+        /* Main channel reference   9.3.45 O 2) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_main_ch_ref(tvb, pinfo, tree, offset, FALSE);
+        /* MultiRate configuration  9.3.52 O 3) TLV >=3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
+        /* Multirate Control        9.3.53 O 4) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, FALSE);
+        /* Supported Codec Types    9.3.54 O 4) TLV >=5 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
+        /* TFO transparent container 9.3.59 O 4) TLV */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.10 MODE MODIFY ACKNOWLEDGE */
+    case RSL_MSG_MODE_MODIFY_ACK:   /*  42  8.4.10 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.11 MODE MODIFY NEGATIVE ACKNOWLEDGE */
+    case RSL_MSG_MODE_MODIFY_NACK:  /*  43  8.4.11 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Cause                    9.3.26  M TLV >=3       */
+        offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.12 PHYSICAL CONTEXT REQUEST */
+    case RSL_MSG_PHY_CONTEXT_REQ:   /*  44  8.4.12 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.13 PHYSICAL CONTEXT CONFIRM */
+    case RSL_MSG_PHY_CONTEXT_CONF:  /*  45  8.4.13 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* BS Power                 9.3.4   M TV 2 */
+        offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
+        /* MS Power                 9.3.13  M TV 2 */
+        offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, TRUE);
+        /* Timing Advance           9.3.24  M TV 2 */
+        offset = dissect_rsl_ie_timing_adv(tvb, pinfo, tree, offset, TRUE);
+        /* Physical Context         9.3.16  O 1) TLV */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.14 RF CHANNEL RELEASE */
+    case RSL_MSG_RF_CHAN_REL:       /*  46  8.4.14 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.15 MS POWER CONTROL */
+    case RSL_MSG_MS_POWER_CONTROL:  /*  47  8.4.15 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* MS Power                 9.3.13  M TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_ms_pow(tvb, pinfo, tree, offset, FALSE);
+        /* MS Power Parameters      9.3.31  O 1) TLV >=2 */
+        break;
+    /* 8.4.16 BS POWER CONTROL */
+    case RSL_MSG_BS_POWER_CONTROL:  /*  48  8.4.16 */
+        /* Channel number           9.3.1 M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* BS Power                 9.3.4 M TV 2 */
+        offset = dissect_rsl_ie_bs_power(tvb, pinfo, tree, offset, TRUE);
+        /* BS Power Parameters      9.3.32 O 1) TLV >=2 */
+        break;
+    /* 8.4.17 PREPROCESS CONFIGURE */
+    case RSL_MSG_PREPROC_CONFIG:        /*  49  8.4.17 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Preproc. Parameters      9.3.33  M TLV >=3 */
+        break;
+    /* 8.4.18 PREPROCESSED MEASUREMENT RESULT */
+    case RSL_MSG_PREPROC_MEAS_RES:  /*  50  8.4.18 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Preproc. Measurements    9.3.34  M TLV >=2 */
+        break;
+    /* 8.4.19 RF CHANNEL RELEASE ACKNOWLEDGE */
+    case RSL_MSG_RF_CHAN_REL_ACK:       /*  51  8.4.19 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.20 SACCH INFO MODIFY */
+    case RSL_MSG_SACCH_INFO_MODIFY: /*  52  8.4.20 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* System Info Type         9.3.30  M TV 2 */
+        offset = dissect_rsl_ie_sys_info_type(tvb, pinfo, tree, offset, TRUE);
+        /* L3 Info                  9.3.11  O 1) TLV 22 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_L3_inf(tvb, pinfo, tree, offset, FALSE, L3_INF_SACCH);
+        /* Starting Time            9.3.23  O 2) TV 3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_starting_time(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.21 TALKER DETECTION */
+    case RSL_MSG_TALKER_DET:            /*  53  8.4.21 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Access Delay             9.3.17  O 1) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+                offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.22 LISTENER DETECTION */
+    case RSL_MSG_LISTENER_DET:      /*  54  8.4.22 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Access Delay             9.3.17  O 1) TV 2 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+                offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.23 REMOTE CODEC CONFIGURATION REPORT */
+    case RSL_MSG_REMOTE_CODEC_CONF_REP:/*   55  8.4.23 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Codec Configuration      9.3.55  M TLV >=3 */
+        offset = dissect_rsl_ie_codec_conf(tvb, pinfo, tree, offset, TRUE);
+        /* Supported Codec Types    9.3.54  M TLV >=5 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
+        /* TFO transparent container 9.3.59 O 4) TLV >=3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.24 ROUND TRIP DELAY REPORT */
+    case RSL_MSG_R_T_D_REP:         /*  56  8.4.24 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Round Trip Delay         9.3.56  M TV 2 */
+        offset = dissect_rsl_ie_rtd(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.25 PRE-HANDOVER NOTIFICATION */
+    case RSL_MSG_PRE_HANDO_NOTIF:       /*  57  8.4.25 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* MultiRateControl         9.3.53  M TV 2 */
+        offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, TRUE);
+        /* Codec Configuration      9.3.55  M TLV >=3 */
+        offset = dissect_rsl_ie_codec_conf(tvb, pinfo, tree, offset, TRUE);
+        /* TFO transparent container 9.3.59 O 4) TLV >=3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.26 MULTIRATE CODEC MODIFICATION REQUEST */
+    case RSL_MSG_MR_CODEC_MOD_REQ:  /*  58  8.4.26 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* MultiRate Configuration  9.3.52  O 1) TLV >=4 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /*  8.4.27 MULTIRATE CODEC MODIFICATION ACKNOWLEDGE */
+    case RSL_MSG_MR_CODEC_MOD_ACK:  /*  59  8.4.27 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* MultiRate Configuration  9.3.52  O 1) TLV >=4 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /* 8.4.28 MULTIRATE CODEC MODIFICATION NEGATIVE ACKNOWLEDGE */
+    case RSL_MSG_MR_CODEC_MOD_NACK: /*  60  8.4.28 */
+        /* Channel number           9.3.1   M TV 2          */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* Cause                    9.3.26  M TLV >=3       */
+        offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.29 MULTIRATE CODEC MODIFICATION PERFORMED */
+    case RSL_MSG_MR_CODEC_MOD_PER:  /*  61  8.4.29 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* MultiRate Configuration  9.3.52  M TLV >=4 */
+        offset = dissect_rsl_ie_multirate_conf(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.30 TFO REPORT */
+    case RSL_MSG_TFO_REP:               /*  62  8.4.30 */
+        /* Channel number           9.3.1   M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* TFO Status               9.3.57  M TV 1 */
+        offset = dissect_rsl_ie_tfo_status(tvb, pinfo, tree, offset, TRUE);
+        break;
+    /* 8.4.31 TFO MODIFICATION REQUEST */
+    case RSL_MSG_TFO_MOD_REQ:           /*  63  8.4.31 */
+        /* Channel number           9.3.1 M TV 2 */
+        offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
+        /* MultiRateControl         9.3.53 M TV 2 */
+        offset = dissect_rsl_ie_multirate_cntrl(tvb, pinfo, tree, offset, TRUE);
+        /* Supported Codec Type     9.3.54 O 1) TLV >=5 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_sup_codec_types(tvb, pinfo, tree, offset, FALSE);
+        /* TFO transparent container 9.3.59 O 4) TLV >=3 */
+        if(tvb_length_remaining(tvb,offset) > 0)
+            offset = dissect_rsl_ie_tfo_transp_cont(tvb, pinfo, tree, offset, FALSE);
+        break;
+    /*  0 1 - - - - - - Location Services messages: */
+    /* 8.7.1 LOCATION INFORMATION */
+    case RSL_MSG_LOC_INF:               /*  65  8.7.1 */
+        /* LLP APDU 9.3.58 M LV 2-N */
+        offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
+        break;
+    default:
+        break;
+    }
+
+    return offset;
 
 }
 static void
 dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 {
-       proto_item *ti;
-       proto_tree *rsl_tree;
-       guint8  msg_type;
+    proto_item *ti;
+    proto_tree *rsl_tree;
+    guint8  msg_type;
 
 
-       int offset = 0;
+    int offset = 0;
 
-       col_set_str(pinfo->cinfo, COL_PROTOCOL, "RSL");
-       col_clear(pinfo->cinfo, COL_INFO);
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "RSL");
+    col_clear(pinfo->cinfo, COL_INFO);
 
-       msg_type = tvb_get_guint8(tvb,offset+1)&0x7f;
+    msg_type = tvb_get_guint8(tvb,offset+1)&0x7f;
 
-       if (check_col(pinfo->cinfo, COL_INFO)){
-               col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",val_to_str(msg_type, rsl_msg_type_vals,"unknown %u"));
-       }
+    col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",val_to_str_ext(msg_type, &rsl_msg_type_vals_ext,"unknown %u"));
 
-       top_tree = tree;
-       if (tree) {
-               ti = proto_tree_add_item(tree, proto_rsl, tvb, 0, -1, FALSE);
-               rsl_tree = proto_item_add_subtree(ti, ett_rsl);
+    top_tree = tree;
+    if (tree) {
+        ti = proto_tree_add_item(tree, proto_rsl, tvb, 0, -1, ENC_NA);
+        rsl_tree = proto_item_add_subtree(ti, ett_rsl);
 
-               /* 9.1 Message discriminator */
-               proto_tree_add_item(rsl_tree, hf_rsl_msg_dsc, tvb, offset, 1, FALSE);
-               proto_tree_add_item(rsl_tree, hf_rsl_T_bit, tvb, offset, 1, FALSE);
-               offset++;
+        /* 9.1 Message discriminator */
+        proto_tree_add_item(rsl_tree, hf_rsl_msg_dsc, tvb, offset, 1, ENC_BIG_ENDIAN);
+        proto_tree_add_item(rsl_tree, hf_rsl_T_bit, tvb, offset, 1, ENC_BIG_ENDIAN);
+        offset++;
 
-               offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
+        offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
 
-       }
+    }
 
 }
 
-void
-proto_reg_handoff_rsl(void)
+/* Register the protocol with Wireshark */
+void proto_register_rsl(void)
 {
-       dissector_handle_t rsl_handle;
+    void proto_reg_handoff_rsl(void);
+
+    /* Setup list of header fields */
+    static hf_register_info hf[] = {
+        { &hf_rsl_msg_dsc,
+          { "Message discriminator",           "rsl.msg_dsc",
+            FT_UINT8, BASE_DEC, VALS(rsl_msg_disc_vals), 0xfe,
+            NULL, HFILL }
+        },
+        { &hf_rsl_T_bit,
+          { "T bit",           "rsl.T_bit",
+            FT_BOOLEAN, 8, TFS(&rsl_t_bit_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_msg_type,
+          { "Message type",           "rsl.msg_type",
+            FT_UINT8, BASE_HEX_DEC|BASE_EXT_STRING, &rsl_msg_type_vals_ext, 0x7f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ie_id,
+          { "Element identifier",           "rsl.ie_id",
+            FT_UINT8, BASE_HEX_DEC|BASE_EXT_STRING, &rsl_ie_type_vals_ext, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ie_length,
+          { "Length",           "rsl.ie_length",
+            FT_UINT16, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ch_no_Cbits,
+          { "C-bits",           "rsl.ch_no_Cbits",
+            FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rsl_ch_no_Cbits_vals_ext, 0xf8,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ch_no_TN,
+          { "Time slot number (TN)",  "rsl.ch_no_TN",
+            FT_UINT8, BASE_DEC, NULL, 0x07,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rtd,
+          { "Round Trip Delay (RTD)",  "rsl.rtd",
+            FT_UINT8, BASE_DEC, NULL, 0xfe,
+            NULL, HFILL }
+        },
+        { &hf_rsl_delay_ind,
+          { "Delay IND",  "rsl.delay_ind",
+            FT_UINT8, BASE_DEC, rsl_delay_ind_vals, 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_tfo,
+          { "TFO",           "rsl.tfo",
+            FT_BOOLEAN, 8, TFS(&rsl_tfo_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_req_ref_ra,
+          { "Random Access Information (RA)", "rsl.req_ref_ra",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_req_ref_T1prim,
+          { "T1'",           "rsl.req_ref_T1prim",
+            FT_UINT8, BASE_DEC, NULL, 0xf8,
+            NULL, HFILL }
+        },
+        { &hf_rsl_req_ref_T3,
+          { "T3",           "rsl.req_ref_T3",
+            FT_UINT16, BASE_DEC, NULL, 0x07e0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_req_ref_T2,
+          { "T2",           "rsl.req_ref_T2",
+            FT_UINT8, BASE_DEC, NULL, 0x1f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_timing_adv,
+          { "Timing Advance",           "rsl.timing_adv",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ho_ref,
+          { "Hand-over reference",           "rsl.ho_ref",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_l1inf_power_lev,
+          { "MS power level",           "rsl.ms_power_lev",
+            FT_UINT8, BASE_DEC, NULL, 0xf8,
+            NULL, HFILL }
+        },
+        { &hf_rsl_l1inf_fpc,
+          { "FPC/EPC",           "rsl.ms_fpc",
+            FT_BOOLEAN, 8, TFS(&rsl_ms_fpc_epc_mode_vals), 0x04,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ms_power_lev,
+          { "MS power level",           "rsl.ms_power_lev",
+            FT_UINT8, BASE_DEC, NULL, 0x1f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ms_fpc,
+          { "FPC/EPC",           "rsl.ms_fpc",
+            FT_BOOLEAN, 8, TFS(&rsl_ms_fpc_epc_mode_vals), 0x20,
+            NULL, HFILL }
+        },
+        { &hf_rsl_act_timing_adv,
+          { "Actual Timing Advance",           "rsl.act_timing_adv",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_dtxd,
+          { "DTXd",           "rsl.dtxd",
+            FT_BOOLEAN, 8, TFS(&rsl_dtxd_vals), 0x40,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rxlev_full_up,
+          { "RXLEV.FULL.up",           "rsl.rxlev_full_up",
+            FT_UINT8, BASE_DEC, NULL, 0x3f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rxlev_sub_up,
+          { "RXLEV.SUB.up",           "rsl.rxlev_sub_up",
+            FT_UINT8, BASE_DEC, NULL, 0x3f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rxqual_full_up,
+          { "RXQUAL.FULL.up",           "rsl.rxqual_full_up",
+            FT_UINT8, BASE_DEC, NULL, 0x38,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rxqual_sub_up,
+          { "RXQUAL.SUB.up",           "rsl.rxqual_sub_up",
+            FT_UINT8, BASE_DEC, NULL, 0x07,
+            NULL, HFILL }
+        },
+        { &hf_rsl_acc_delay,
+          { "Access Delay",           "rsl.acc_del",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rach_slot_cnt,
+          { "RACH Slot Count",           "rsl.rach_slot_cnt",
+            FT_UINT16, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rach_busy_cnt,
+          { "RACH Busy Count",           "rsl.rach_busy_cnt",
+            FT_UINT16, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rach_acc_cnt,
+          { "RACH Access Count",           "rsl.rach_acc_cnt",
+            FT_UINT16, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_phy_ctx,
+          { "Physical Context",           "rsl.phy_ctx",
+            FT_BYTES, BASE_NONE, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_na,
+          { "Not applicable (NA)",           "rsl.na",
+            FT_BOOLEAN, 8, TFS(&rsl_na_vals), 0x20,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ch_type,
+          { "channel type",           "rsl.ch_type",
+            FT_UINT8, BASE_DEC, VALS(rsl_ch_type_vals), 0xc0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_prio,
+          { "Priority",           "rsl.prio",
+            FT_UINT8, BASE_DEC, VALS(rsl_prio_vals), 0x18,
+            NULL, HFILL }
+        },
+        { &hf_rsl_sapi,
+          { "SAPI",           "rsl.sapi",
+            FT_UINT8, BASE_DEC, NULL, 0x07,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rbit,
+          { "R",           "rsl.rbit",
+            FT_BOOLEAN, 8, TFS(&rsl_rbit_vals), 0x80,
+            NULL, HFILL }
+        },
+        { &hf_rsl_a3a2,
+          { "A3A2",           "rsl.a3a2",
+            FT_UINT8, BASE_DEC, VALS(rsl_a3a2_vals), 0x06,
+            NULL, HFILL }
+        },
+        { &hf_rsl_a1_0,
+          { "A1",           "rsl.a1_0",
+            FT_BOOLEAN, 8, TFS(&rsl_a1_0_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_a1_1,
+          { "A1",           "rsl.a1_1",
+            FT_BOOLEAN, 8, TFS(&rsl_a1_1_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_a1_2,
+          { "A1",           "rsl.a2_0",
+            FT_BOOLEAN, 8, TFS(&rsl_a1_2_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_epc_mode,
+          { "EPC mode", "rsl.epc_mode",
+            FT_BOOLEAN, 8, TFS(&rsl_epc_mode_vals), 0x20,
+            NULL, HFILL }
+        },
+        { &hf_rsl_bs_fpc_epc_mode,
+          { "FPC-EPC mode", "rsl.fpc_epc_mode",
+            FT_BOOLEAN, 8, TFS(&rsl_fpc_epc_mode_vals), 0x10,
+            NULL, HFILL }
+        },
+        { &hf_rsl_bs_power,
+          { "Power Level",           "rsl.bs_power",
+            FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rsl_rlm_bs_power_vals_ext, 0x0f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_cm_dtxd,
+          { "DTXd", "rsl.cm_dtxd",
+            FT_BOOLEAN, 8, TFS(&rsl_dtx_vals), 0x02,
+            NULL, HFILL }
+        },
+        { &hf_rsl_cm_dtxu,
+          { "DTXu", "rsl.cm_dtxu",
+            FT_BOOLEAN, 8, TFS(&rsl_dtx_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_speech_or_data,
+          { "Speech or data indicator",           "rsl.speech_or_data",
+            FT_UINT8, BASE_DEC, VALS(rsl_speech_or_data_vals), 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ch_rate_and_type,
+          { "Channel rate and type",           "rsl.ch_rate_and_type",
+            FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rsl_ch_rate_and_type_vals_ext, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_speech_coding_alg,
+          { "Speech coding algorithm",           "rsl.speech_coding_alg",
+            FT_UINT8, BASE_DEC, VALS(rsl_speech_coding_alg_vals), 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_t_nt_bit,
+          { "Transparent indication", "rsl.t_nt_bit",
+            FT_BOOLEAN, 8, TFS(&t_nt_bit_vals), 0x40,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ra_if_data_rte,
+          { "Radio interface data rate",           "rsl.ra_if_data_rte",
+            FT_UINT8, BASE_DEC, VALS(rsl_ra_if_data_rte_vals), 0x3f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_data_rte,
+          { "Data rate",           "rsl.data_rte",
+            FT_UINT8, BASE_DEC, VALS(rsl_ra_if_data_rte_vals), 0x3f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_alg_id,
+          { "Algorithm Identifier",           "rsl.alg_id",
+            FT_UINT8, BASE_DEC, VALS(rsl_algorithm_id_vals), 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_key,
+          { "KEY",           "rsl.key",
+            FT_BYTES, BASE_NONE, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_cause,
+          { "Cause",           "rsl.cause",
+            FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rsl_rlm_cause_vals_ext, 0x7f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_rel_mode,
+          { "Release Mode",           "rsl.rel_mode",
+            FT_UINT8, BASE_DEC, VALS(rel_mode_vals), 0x01,
+            NULL, HFILL }
+        },
+        { &hf_rsl_interf_band,
+          { "Interf Band",           "rsl.interf_band",
+            FT_UINT8, BASE_DEC, NULL, 0xe0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_interf_band_reserved,
+          { "Interf Band reserved bits",           "rsl.interf_band_reserved",
+            FT_UINT8, BASE_DEC, NULL, 0x1f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_meas_res_no,
+          { "Measurement result number",           "rsl.meas_res_no",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_extension_bit,
+          { "Extension", "rsl.extension_bit",
+            FT_BOOLEAN, 8, TFS(&rsl_extension_bit_value), 0x80,
+            NULL, HFILL }},
+        { &hf_rsl_class,
+          { "Class",           "rsl.class",
+            FT_UINT8, BASE_DEC, VALS(rsl_class_vals), 0x70,
+            NULL, HFILL }
+        },
+        { &hf_rsl_paging_grp,
+          { "Paging Group",           "rsl.paging_grp",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_paging_load,
+          { "Paging Buffer Space",           "rsl.paging_load",
+            FT_UINT16, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_sys_info_type,
+          { "System Info Type",           "rsl.sys_info_type",
+            FT_UINT8, BASE_DEC|BASE_EXT_STRING, &rsl_sys_info_type_vals_ext, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_timing_offset,
+          { "Timing Offset",           "rsl.timing_offset",
+            FT_UINT8, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ch_needed,
+          { "Channel Needed",           "rsl.ch_needed",
+            FT_UINT8, BASE_DEC, VALS(rsl_ch_needed_vals), 0x03,
+            NULL, HFILL }
+        },
+        { &hf_rsl_cbch_load_type,
+          { "CBCH Load Type", "rsl.cbch_load_type",
+            FT_BOOLEAN, 8, TFS(&rsl_cbch_load_type_vals), 0x80,
+            NULL, HFILL }
+        },
+        { &hf_rsl_msg_slt_cnt,
+          { "Message Slot Count", "rsl.sg_slt_cnt",
+            FT_UINT8, BASE_DEC, NULL, 0x0f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_ch_ind,
+          { "Channel Ind",           "rsl.ch_ind",
+            FT_UINT8, BASE_DEC, VALS(rsl_ch_ind_vals), 0x0f,
+            NULL, HFILL }
+        },
+        { &hf_rsl_command,
+          { "Command",           "rsl.cmd",
+            FT_UINT16, BASE_DEC, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_rsl_emlpp_prio,
+          { "eMLPP Priority",           "rsl.emlpp_prio",
+            FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
+            NULL, HFILL }
+        },
+    };
+    static gint *ett[] = {
+        &ett_rsl,
+        &ett_ie_link_id,
+        &ett_ie_act_type,
+        &ett_ie_bs_power,
+        &ett_ie_ch_id,
+        &ett_ie_ch_mode,
+        &ett_ie_enc_inf,
+        &ett_ie_ch_no,
+        &ett_ie_frame_no,
+        &ett_ie_ho_ref,
+        &ett_ie_l1_inf,
+        &ett_ie_L3_inf,
+        &ett_ie_ms_id,
+        &ett_ie_ms_pow,
+        &ett_ie_phy_ctx,
+        &ett_ie_paging_grp,
+        &ett_ie_paging_load,
+        &ett_ie_access_delay,
+        &ett_ie_rach_load,
+        &ett_ie_req_ref,
+        &ett_ie_rel_mode,
+        &ett_ie_resource_inf,
+        &ett_ie_rlm_cause,
+        &ett_ie_staring_time,
+        &ett_ie_timing_adv,
+        &ett_ie_uplink_meas,
+        &ett_ie_full_imm_ass_inf,
+        &ett_ie_smscb_inf,
+        &ett_ie_ms_timing_offset,
+        &ett_ie_err_msg,
+        &ett_ie_full_bcch_inf,
+        &ett_ie_ch_needed,
+        &ett_ie_cb_cmd_type,
+        &ett_ie_smscb_mess,
+        &ett_ie_cbch_load_inf,
+        &ett_ie_smscb_ch_ind,
+        &ett_ie_grp_call_ref,
+        &ett_ie_ch_desc,
+        &ett_ie_nch_drx,
+        &ett_ie_cmd_ind,
+        &ett_ie_emlpp_prio,
+        &ett_ie_uic,
+        &ett_ie_main_ch_ref,
+        &ett_ie_multirate_conf,
+        &ett_ie_multirate_cntrl,
+        &ett_ie_sup_codec_types,
+        &ett_ie_codec_conf,
+        &ett_ie_rtd,
+        &ett_ie_tfo_status,
+        &ett_ie_llp_apdu,
+        &ett_ie_tfo_transp_cont,
+        &ett_ie_cause,
+        &ett_ie_meas_res_no,
+        &ett_ie_message_id,
+        &ett_ie_sys_info_type,
+    };
+
+    /* Register the protocol name and description */
+    proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)", "RSL", "rsl");
+
+    proto_register_field_array(proto_rsl, hf, array_length(hf));
+    proto_register_subtree_array(ett, array_length(ett));
+
+    register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
 
-       rsl_handle = create_dissector_handle(dissect_rsl, proto_rsl);
-       dissector_add("lapd.gsm.sapi", LAPD_GSM_SAPI_RA_SIG_PROC, rsl_handle);
-
-       gsm_a_ccch_handle = find_dissector("gsm_a_ccch");
-       gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
 }
 
-/* Register the protocol with Wireshark */
-void proto_register_rsl(void)
+void
+proto_reg_handoff_rsl(void)
 {
+    dissector_handle_t rsl_handle;
 
-       /* Setup list of header fields */
-       static hf_register_info hf[] = {
-               { &hf_rsl_msg_dsc,
-                       { "Message discriminator",           "rsl.msg_dsc",
-                       FT_UINT8, BASE_DEC, VALS(rsl_msg_disc_vals), 0xfe,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_T_bit,
-                       { "T bit",           "rsl.T_bit",
-                       FT_BOOLEAN, 8, TFS(&rsl_t_bit_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_msg_type,
-                       { "Message type",           "rsl.msg_type",
-                       FT_UINT8, BASE_HEX_DEC, VALS(rsl_msg_type_vals), 0x7f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ie_id,
-                       { "Element identifier",           "rsl.ie_id",
-                       FT_UINT8, BASE_HEX_DEC, VALS(rsl_ie_type_vals), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ie_length,
-                       { "Length",           "rsl.ie_length",
-                       FT_UINT16, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ch_no_Cbits,
-                       { "C-bits",           "rsl.ch_no_Cbits",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ch_no_Cbits_vals), 0xf8,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ch_no_TN,
-                       { "Time slot number (TN)",  "rsl.ch_no_TN",
-                       FT_UINT8, BASE_DEC, NULL, 0x07,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rtd,
-                       { "Round Trip Delay (RTD)",  "rsl.rtd",
-                       FT_UINT8, BASE_DEC, NULL, 0xfe,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_delay_ind,
-                       { "Delay IND",  "rsl.delay_ind",
-                       FT_UINT8, BASE_DEC, rsl_delay_ind_vals, 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_tfo,
-                       { "TFO",           "rsl.tfo",
-                       FT_BOOLEAN, 8, TFS(&rsl_tfo_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_req_ref_ra,
-                       { "Random Access Information (RA)", "rsl.req_ref_ra",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_req_ref_T1prim,
-                       { "T1'",           "rsl.req_ref_T1prim",
-                       FT_UINT8, BASE_DEC, NULL, 0xf8,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_req_ref_T3,
-                       { "T3",           "rsl.req_ref_T3",
-                       FT_UINT16, BASE_DEC, NULL, 0x07e0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_req_ref_T2,
-                       { "T2",           "rsl.req_ref_T2",
-                       FT_UINT8, BASE_DEC, NULL, 0x1f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_timing_adv,
-                       { "Timing Advance",           "rsl.timing_adv",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ho_ref,
-                       { "Hand-over reference",           "rsl.ho_ref",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_l1inf_power_lev,
-                       { "MS power level",           "rsl.ms_power_lev",
-                       FT_UINT8, BASE_DEC, NULL, 0xf8,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_l1inf_fpc,
-                       { "FPC/EPC",           "rsl.ms_fpc",
-                       FT_BOOLEAN, 8, TFS(&rsl_ms_fpc_epc_mode_vals), 0x04,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ms_power_lev,
-                       { "MS power level",           "rsl.ms_power_lev",
-                       FT_UINT8, BASE_DEC, NULL, 0x1f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ms_fpc,
-                       { "FPC/EPC",           "rsl.ms_fpc",
-                       FT_BOOLEAN, 8, TFS(&rsl_ms_fpc_epc_mode_vals), 0x20,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_act_timing_adv,
-                       { "Actual Timing Advance",           "rsl.act_timing_adv",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_dtxd,
-                       { "DTXd",           "rsl.dtxd",
-                       FT_BOOLEAN, 8, TFS(&rsl_dtxd_vals), 0x40,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rxlev_full_up,
-                       { "RXLEV.FULL.up",           "rsl.rxlev_full_up",
-                       FT_UINT8, BASE_DEC, NULL, 0x3f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rxlev_sub_up,
-                       { "RXLEV.SUB.up",           "rsl.rxlev_sub_up",
-                       FT_UINT8, BASE_DEC, NULL, 0x3f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rxqual_full_up,
-                       { "RXQUAL.FULL.up",           "rsl.rxqual_full_up",
-                       FT_UINT8, BASE_DEC, NULL, 0x38,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rxqual_sub_up,
-                       { "RXQUAL.SUB.up",           "rsl.rxqual_sub_up",
-                       FT_UINT8, BASE_DEC, NULL, 0x07,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_acc_delay,
-                       { "Access Delay",           "rsl.acc_del",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rach_slot_cnt,
-                       { "RACH Slot Count",           "rsl.rach_slot_cnt",
-                       FT_UINT16, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rach_busy_cnt,
-                       { "RACH Busy Count",           "rsl.rach_busy_cnt",
-                       FT_UINT16, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rach_acc_cnt,
-                       { "RACH Access Count",           "rsl.rach_acc_cnt",
-                       FT_UINT16, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_phy_ctx,
-                       { "Physical Context",           "rsl.phy_ctx",
-                       FT_BYTES, BASE_NONE, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_na,
-                       { "Not applicable (NA)",           "rsl.na",
-                       FT_BOOLEAN, 8, TFS(&rsl_na_vals), 0x20,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ch_type,
-                       { "channel type",           "rsl.ch_type",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ch_type_vals), 0xc0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_prio,
-                       { "Priority",           "rsl.prio",
-                       FT_UINT8, BASE_DEC, VALS(rsl_prio_vals), 0x18,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_sapi,
-                       { "SAPI",           "rsl.sapi",
-                       FT_UINT8, BASE_DEC, NULL, 0x07,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rbit,
-                       { "R",           "rsl.rbit",
-                       FT_BOOLEAN, 8, TFS(&rsl_rbit_vals), 0x80,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_a3a2,
-                       { "A3A2",           "rsl.a3a2",
-                       FT_UINT8, BASE_DEC, VALS(rsl_a3a2_vals), 0x06,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_a1_0,
-                       { "A1",           "rsl.a1_0",
-                       FT_BOOLEAN, 8, TFS(&rsl_a1_0_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_a1_1,
-                       { "A1",           "rsl.a1_1",
-                       FT_BOOLEAN, 8, TFS(&rsl_a1_1_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_a1_2,
-                       { "A1",           "rsl.a2_0",
-                       FT_BOOLEAN, 8, TFS(&rsl_a1_2_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_epc_mode,
-                       { "EPC mode", "rsl.epc_mode",
-                       FT_BOOLEAN, 8, TFS(&rsl_epc_mode_vals), 0x20,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_bs_fpc_epc_mode,
-                       { "FPC-EPC mode", "rsl.fpc_epc_mode",
-                       FT_BOOLEAN, 8, TFS(&rsl_fpc_epc_mode_vals), 0x10,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_bs_power,
-                       { "Power Level",           "rsl.bs_power",
-                       FT_UINT8, BASE_DEC, VALS(rsl_rlm_bs_power_vals), 0x0f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_cm_dtxd,
-                       { "DTXd", "rsl.cm_dtxd",
-                       FT_BOOLEAN, 8, TFS(&rsl_dtx_vals), 0x02,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_cm_dtxu,
-                       { "DTXu", "rsl.cm_dtxu",
-                       FT_BOOLEAN, 8, TFS(&rsl_dtx_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_speech_or_data,
-                       { "Speech or data indicator",           "rsl.speech_or_data",
-                       FT_UINT8, BASE_DEC, VALS(rsl_speech_or_data_vals), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ch_rate_and_type,
-                       { "Channel rate and type",           "rsl.speech_or_data",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ch_rate_and_type_vals), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_speech_coding_alg,
-                       { "Speech coding algorithm",           "rsl.speech_coding_alg",
-                       FT_UINT8, BASE_DEC, VALS(rsl_speech_coding_alg_vals), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_t_nt_bit,
-                       { "Transparent indication", "rsl.t_nt_bit",
-                       FT_BOOLEAN, 8, TFS(&t_nt_bit_vals), 0x40,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ra_if_data_rte,
-                       { "Radio interface data rate",           "rsl.ra_if_data_rte",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ra_if_data_rte_vals), 0x3f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_data_rte,
-                       { "Data rate",           "rsl.data_rte",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ra_if_data_rte_vals), 0x3f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_alg_id,
-                       { "Algorithm Identifier",           "rsl.alg_id",
-                       FT_UINT8, BASE_DEC, VALS(rsl_algorithm_id_vals), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_key,
-                       { "KEY",           "rsl.key",
-                       FT_BYTES, BASE_NONE, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_cause,
-                       { "Cause",           "rsl.cause",
-                       FT_UINT8, BASE_DEC, VALS(rsl_rlm_cause_vals), 0x7f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_rel_mode,
-                       { "Release Mode",           "rsl.rel_mode",
-                       FT_UINT8, BASE_DEC, VALS(rel_mode_vals), 0x01,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_interf_band,
-                       { "Interf Band",           "rsl.interf_band",
-                       FT_UINT8, BASE_DEC, NULL, 0xe0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_interf_band_reserved,
-                       { "Interf Band reserved bits",           "rsl.interf_band_reserved",
-                       FT_UINT8, BASE_DEC, NULL, 0x1f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_meas_res_no,
-                       { "Measurement result number",           "rsl.meas_res_no",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_extension_bit,
-                       { "Extension", "rsl.extension_bit",
-                       FT_BOOLEAN, 8, TFS(&rsl_extension_bit_value), 0x80,
-                       NULL, HFILL }},
-               { &hf_rsl_class,
-                       { "Class",           "rsl.class",
-                       FT_UINT8, BASE_DEC, VALS(rsl_class_vals), 0x70,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_paging_grp,
-                       { "Paging Group",           "rsl.paging_grp",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_paging_load,
-                       { "Paging Buffer Space",           "rsl.paging_load",
-                       FT_UINT16, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_sys_info_type,
-                       { "System Info Type",           "rsl.sys_info_type",
-                       FT_UINT8, BASE_DEC, VALS(rsl_sys_info_type_vals), 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_timing_offset,
-                       { "Timing Offset",           "rsl.timing_offset",
-                       FT_UINT8, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ch_needed,
-                       { "Channel Needed",           "rsl.ch_needed",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ch_needed_vals), 0x03,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_cbch_load_type,
-                       { "CBCH Load Type", "rsl.cbch_load_type",
-                       FT_BOOLEAN, 8, TFS(&rsl_cbch_load_type_vals), 0x80,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_msg_slt_cnt,
-                       { "Message Slot Count", "rsl.sg_slt_cnt",
-                       FT_UINT8, BASE_DEC, NULL, 0x0f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_ch_ind,
-                       { "Channel Ind",           "rsl.ch_ind",
-                       FT_UINT8, BASE_DEC, VALS(rsl_ch_ind_vals), 0x0f,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_command,
-                       { "Command",           "rsl.cmd",
-                       FT_UINT16, BASE_DEC, NULL, 0x0,
-                       NULL, HFILL }
-               },
-               { &hf_rsl_emlpp_prio,
-                       { "eMLPP Priority",           "rsl.emlpp_prio",
-                       FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
-                       NULL, HFILL }
-               },
-       };
-       static gint *ett[] = {
-               &ett_rsl,
-               &ett_ie_link_id,
-               &ett_ie_act_type,
-               &ett_ie_bs_power,
-               &ett_ie_ch_id,
-               &ett_ie_ch_mode,
-               &ett_ie_enc_inf,
-               &ett_ie_ch_no,
-               &ett_ie_frame_no,
-               &ett_ie_ho_ref,
-               &ett_ie_l1_inf,
-               &ett_ie_L3_inf,
-               &ett_ie_ms_id,
-               &ett_ie_ms_pow,
-               &ett_ie_phy_ctx,
-               &ett_ie_paging_grp,
-               &ett_ie_paging_load,
-               &ett_ie_access_delay,
-               &ett_ie_rach_load,
-               &ett_ie_req_ref,
-               &ett_ie_rel_mode,
-               &ett_ie_resource_inf,
-               &ett_ie_rlm_cause,
-               &ett_ie_staring_time,
-               &ett_ie_timing_adv,
-               &ett_ie_uplink_meas,
-               &ett_ie_full_imm_ass_inf,
-               &ett_ie_smscb_inf,
-               &ett_ie_ms_timing_offset,
-               &ett_ie_err_msg,
-               &ett_ie_full_bcch_inf,
-               &ett_ie_ch_needed,
-               &ett_ie_cb_cmd_type,
-               &ett_ie_smscb_mess,
-               &ett_ie_cbch_load_inf,
-               &ett_ie_smscb_ch_ind,
-               &ett_ie_grp_call_ref,
-               &ett_ie_ch_desc,
-               &ett_ie_nch_drx,
-               &ett_ie_cmd_ind,
-               &ett_ie_emlpp_prio,
-               &ett_ie_uic,
-               &ett_ie_main_ch_ref,
-               &ett_ie_multirate_conf,
-               &ett_ie_multirate_cntrl,
-               &ett_ie_sup_codec_types,
-               &ett_ie_codec_conf,
-               &ett_ie_rtd,
-               &ett_ie_tfo_status,
-               &ett_ie_llp_apdu,
-               &ett_ie_tfo_transp_cont,
-               &ett_ie_cause,
-               &ett_ie_meas_res_no,
-               &ett_ie_message_id,
-               &ett_ie_sys_info_type,
-       };
-
-       /* Register the protocol name and description */
-       proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)",
-                                           "RSL", "rsl");
-
-       proto_register_field_array(proto_rsl, hf, array_length(hf));
-       proto_register_subtree_array(ett, array_length(ett));
-
-       register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
+    rsl_handle = create_dissector_handle(dissect_rsl, proto_rsl);
+    dissector_add_uint("lapd.gsm.sapi", LAPD_GSM_SAPI_RA_SIG_PROC, rsl_handle);
 
+    gsm_a_ccch_handle = find_dissector("gsm_a_ccch");
+    gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
+    gsm_a_sacch_handle = find_dissector("gsm_a_sacch");
 }