diff --git a/wireshark/0004-rsl-ipaccess.patch b/wireshark/0004-rsl-ipaccess.patch
index 6f2b8c1..e68c362 100644
--- a/wireshark/0004-rsl-ipaccess.patch
+++ b/wireshark/0004-rsl-ipaccess.patch
@@ -1,15 +1,16 @@
 From 54882db58b6ec12da6b80071e0ac2344d42df24c Mon Sep 17 00:00:00 2001
+
 From: Holger Hans Peter Freyther <zecke@selfish.org>
-Date: Tue, 11 Jan 2011 16:22:33 +0100
+
 Subject: [PATCH 4/4] rsl-ipaccess
 
 Add vendor specific commands for RSL.
 ---
- epan/dissectors/packet-rsl.c |  522 +++++++++++++++++++++++++++++++++++++++++-
- 1 files changed, 515 insertions(+), 7 deletions(-)
+ epan/dissectors/packet-rsl.c |  544 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 536 insertions(+), 8 deletions(-)
 
 diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c
-index bf83f6f..d858e1a 100644
+index bf83f6f..213ae28 100644
 --- a/epan/dissectors/packet-rsl.c
 +++ b/epan/dissectors/packet-rsl.c
 @@ -2,6 +2,7 @@
@@ -20,8 +21,11 @@
   *
   * $Id$
   *
-@@ -42,6 +43,8 @@
+@@ -40,8 +41,11 @@
+ #include <epan/packet.h>
+ #include <epan/proto.h>
  #include <epan/lapd_sapi.h>
++#include <epan/prefs.h>
  
  #include "packet-gsm_a_common.h"
 +#include "packet-rtp.h"
@@ -29,7 +33,7 @@
  
  /* Initialize the protocol and registered fields */
  static int proto_rsl		= -1;
-@@ -116,6 +119,24 @@ static int hf_rsl_emlpp_prio		= -1;
+@@ -116,6 +120,24 @@ 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;
@@ -54,7 +58,7 @@
  
  /* Initialize the subtree pointers */
  static int ett_rsl = -1;
-@@ -173,6 +194,15 @@ static int ett_ie_cause = -1;
+@@ -173,6 +195,15 @@ static int ett_ie_cause = -1;
  static int ett_ie_meas_res_no = -1;
  static int ett_ie_message_id = -1;
  static int ett_ie_sys_info_type = -1;
@@ -70,7 +74,17 @@
  
  static proto_tree *top_tree;
  static dissector_handle_t gsm_a_ccch_handle;
-@@ -208,8 +238,11 @@ static const value_string rsl_msg_disc_vals[] = {
+@@ -180,6 +211,9 @@ static dissector_handle_t gsm_a_dtap_handle;
+ 
+ static gboolean is_si2q = FALSE;
+ 
++/* Decode things as nanoBTS traces */
++static gboolean global_rsl_use_nano_bts = TRUE;
++
+ /* Forward declarations */
+ static int dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset);
+ 
+@@ -208,8 +242,11 @@ static const value_string rsl_msg_disc_vals[] = {
  	{  0x06,		"Common Channel Management messages" },
  	{  0x08,		"TRX Management messages" },
  	{  0x16,		"Location Services messages" },
@@ -82,7 +96,7 @@
  /*
   * 9.2 MESSAGE TYPE
   */
-@@ -276,6 +309,49 @@ static const value_string rsl_msg_disc_vals[] = {
+@@ -276,6 +313,49 @@ static const value_string rsl_msg_disc_vals[] = {
  	/* 	0 1 - - - - - - Location Services messages: */
  #define RSL_MSG_LOC_INF					65	/* 8.7.1 */
  
@@ -132,7 +146,7 @@
  
  static const value_string rsl_msg_type_vals[] = {
  	  /* 	0 0 0 0 - - - - Radio Link Layer Management messages: */
-@@ -338,6 +414,26 @@ static const value_string rsl_msg_type_vals[] = {
+@@ -338,6 +418,26 @@ static const value_string rsl_msg_type_vals[] = {
  	{  0x3f,	"TFO MODification REQuest" },					/* 8.4.31 */
  	/* 	0 1 - - - - - - Location Services messages: */
  	{  0x41,	"Location Information" },						/* 8.7.1 */
@@ -159,7 +173,7 @@
  	{ 0,		NULL }
  };
  
-@@ -371,10 +467,10 @@ static const value_string rsl_msg_type_vals[] = {
+@@ -371,10 +471,10 @@ static const value_string rsl_msg_type_vals[] = {
  #define RSL_IE_MESSAGE_ID		28
  
  #define RSL_IE_SYS_INFO_TYPE	30
@@ -174,7 +188,7 @@
  #define RSL_IE_FULL_IMM_ASS_INF			35
  #define RSL_IE_SMSCB_INF				36
  #define RSL_IE_FULL_MS_TIMING_OFFSET	37
-@@ -477,6 +573,24 @@ static const value_string rsl_ie_type_vals[] = {
+@@ -477,6 +577,24 @@ static const value_string rsl_ie_type_vals[] = {
  			Not used
  
  	*/
@@ -199,7 +213,7 @@
  	{ 0,			NULL }
  };
  
-@@ -513,6 +627,96 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
+@@ -513,6 +631,27 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
  	{ 0,			NULL }
  };
  
@@ -221,82 +235,13 @@
 +	struct tlv_def def[0xff];
 +};
 +
-+static const struct tlv_definition rsl_att_tlvdef = {
-+	.def = {
-+		[RSL_IE_CH_NO]			= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_LINK_ID]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_ACT_TYPE]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_BS_POW]			= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_CH_ID]			= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CH_MODE]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_ENC_INF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_FRAME_NO]		= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_HO_REF]			= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_L1_INF]			= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_L3_INF]			= { TLV_TYPE_TL16V, 0 },
-+		[RSL_IE_MS_ID]			= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_MS_POW]			= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_PAGING_GRP]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_PAGING_LOAD]		= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_PHY_CTX]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_ACCESS_DELAY]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_RACH_LOAD]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_REQ_REF]		= { TLV_TYPE_FIXED, 3 },
-+		[RSL_IE_REL_MODE]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_RESOURCE_INF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_RLM_CAUSE]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_STARTING_TIME]		= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_TIMING_ADV]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_UPLINK_MEAS]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CAUSE]			= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_MEAS_RES_NO]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_MESSAGE_ID]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_SYS_INFO_TYPE]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_MS_POWER_PARAM]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_BS_POWER_PARAM]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_PREPROC_PARAM]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_PREPROC_MEAS]		= { TLV_TYPE_TLV, 0 },
-+		//[RSL_IE_IMM_ASS_INFO]		= { TLV_TYPE_TLV, 0 },
-+		//[RSL_IE_SMSCB_INFO]		= { TLV_TYPE_FIXED, 23 },
-+		//[RSL_IE_MS_TIMING_OFFSET]	= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_ERR_MSG]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_FULL_BCCH_INF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CH_NEEDED]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_CB_CMD_TYPE]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_SMSCB_MESS]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_FULL_IMM_ASS_INF]	= { TLV_TYPE_TLV, 0 },
-+		//[RSL_IE_SACCH_INFO]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CBCH_LOAD_INF]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_SMSCB_CH_IND]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_GRP_CALL_REF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CH_DESC]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_NCH_DRX_INF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CMD_IND]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_EMLPP_PRIO]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_UIC]			= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_MAIN_CH_REF]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_MULTIRATE_CONF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_MULTIRATE_CNTRL]	= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_SUP_CODEC_TYPES]	= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_CODEC_CONF]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_RTD]			= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_TFO_STATUS]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_LLP_APDU]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_IPAC_REMOTE_IP]		= { TLV_TYPE_FIXED, 4 },
-+		[RSL_IE_IPAC_REMOTE_PORT]	= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_IPAC_LOCAL_IP]		= { TLV_TYPE_FIXED, 4 },
-+		[RSL_IE_IPAC_CONN_STAT]		= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_IPAC_LOCAL_PORT]	= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_IPAC_SPEECH_MODE]	= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_IPAC_CONN_ID]		= { TLV_TYPE_FIXED, 2 },
-+		[RSL_IE_IPAC_RTP_PAYLOAD2]	= { TLV_TYPE_TV, 0 },
-+	},
-+};
++/* This structure is initialized in proto_register_rsl() */
++static struct tlv_definition rsl_att_tlvdef;
 +
  /* 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)
-@@ -2045,7 +2249,6 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
+@@ -2045,7 +2184,6 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
  	proto_item_set_len(ti, length+2);
  
  	proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
@@ -304,7 +249,7 @@
  
  	/* Received Message */
  	offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
-@@ -2910,12 +3113,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
+@@ -2910,12 +3048,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
  }
  
  static int
@@ -490,7 +435,7 @@
  	offset++;
  
  	switch (msg_type){
-@@ -3483,6 +3858,18 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+@@ -3483,6 +3793,18 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
  		/* LLP APDU 9.3.58 M LV 2-N */
  		offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
  		break;
@@ -509,7 +454,7 @@
  	default:
  		break;
  	}
-@@ -3490,6 +3877,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+@@ -3490,6 +3812,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
  	return offset;
  
  }
@@ -550,7 +495,20 @@
  static void
  dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
  {
-@@ -3517,7 +3938,6 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+@@ -3512,12 +3868,19 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+ 	top_tree = tree;
+ 	if (tree) {
+ 		ti = proto_tree_add_item(tree, proto_rsl, tvb, 0, -1, FALSE);
++
++		/* if nanoBTS specific vendor messages are not enabled, skip */
++		if (!global_rsl_use_nano_bts) {
++			guint8 msg_disc = tvb_get_guint8(tvb, offset) >> 1;
++
++			if (msg_disc == RSL_MSGDISC_IPACCESS)
++				return;
++		}
+ 		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);
@@ -558,7 +516,7 @@
  
  		offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
  
-@@ -3892,6 +4312,86 @@ void proto_register_rsl(void)
+@@ -3892,6 +4255,86 @@ void proto_register_rsl(void)
  			FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
  			NULL, HFILL }
  		},
@@ -645,7 +603,7 @@
  	};
  	static gint *ett[] = {
  		&ett_rsl,
-@@ -3949,6 +4449,14 @@ void proto_register_rsl(void)
+@@ -3949,7 +4392,88 @@ void proto_register_rsl(void)
  		&ett_ie_meas_res_no,
  		&ett_ie_message_id,
  		&ett_ie_sys_info_type,
@@ -658,8 +616,90 @@
 +		&ett_ie_local_ip,
 +		&ett_ie_rtp_payload,
  	};
++	module_t *rsl_module;
++
++#define RSL_ATT_TLVDEF(_attr, _type, _fixed_len)		\
++	rsl_att_tlvdef.def[_attr].type = _type;			\
++	rsl_att_tlvdef.def[_attr].fixed_len = _fixed_len;	\
++
++	RSL_ATT_TLVDEF(RSL_IE_CH_NO,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_LINK_ID,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_ACT_TYPE,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_BS_POW,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CH_ID,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CH_MODE,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_ENC_INF,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_FRAME_NO,		TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_HO_REF,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_L1_INF,		TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_L3_INF,		TLV_TYPE_TL16V,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MS_ID,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MS_POW,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_PAGING_GRP,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_PAGING_LOAD,	TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_PHY_CTX,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_ACCESS_DELAY,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_RACH_LOAD,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_REQ_REF,		TLV_TYPE_FIXED,		3);
++	RSL_ATT_TLVDEF(RSL_IE_REL_MODE,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_RESOURCE_INF,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_RLM_CAUSE,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_STARTING_TIME,	TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_TIMING_ADV,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_UPLINK_MEAS,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CAUSE,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MEAS_RES_NO,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MESSAGE_ID,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_SYS_INFO_TYPE,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MS_POWER_PARAM,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_BS_POWER_PARAM,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_PREPROC_PARAM,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_PREPROC_MEAS,	TLV_TYPE_TLV,		0);
++//	RSL_ATT_TLVDEF(RSL_IE_IMM_ASS_INFO,	TLV_TYPE_TLV,		0);
++//	RSL_ATT_TLVDEF(RSL_IE_SMSCB_INFO,	TLV_TYPE_FIXED,		23);
++//	RSL_ATT_TLVDEF(RSL_IE_MS_TIMING_OFFSET,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_ERR_MSG,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_FULL_BCCH_INF,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CH_NEEDED,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CB_CMD_TYPE,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_SMSCB_MESS,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_FULL_IMM_ASS_INF,	TLV_TYPE_TLV,		0);
++//	RSL_ATT_TLVDEF(RSL_IE_SACCH_INFO,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CBCH_LOAD_INF,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_SMSCB_CH_IND,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_GRP_CALL_REF,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CH_DESC,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_NCH_DRX_INF,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CMD_IND,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_EMLPP_PRIO,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_UIC,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MAIN_CH_REF,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CONF,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CNTRL,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_SUP_CODEC_TYPES,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_CODEC_CONF,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_RTD,		TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_TFO_STATUS,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_LLP_APDU,		TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_IP,	TLV_TYPE_FIXED,		4);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_PORT,	TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_IP,	TLV_TYPE_FIXED,		4);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_STAT,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_PORT,	TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_SPEECH_MODE,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_ID,	TLV_TYPE_FIXED,		2);
++	RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_PAYLOAD2,TLV_TYPE_TV,		0);
  
  	/* Register the protocol name and description */
--- 
-1.7.3.4
-
+ 	proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)",
+@@ -3960,5 +4484,9 @@ void proto_register_rsl(void)
+ 
+ 	register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
+ 
++	rsl_module = prefs_register_protocol(proto_rsl, proto_reg_handoff_rsl);
++	prefs_register_bool_preference(rsl_module, "use_ipaccess_rsl",
++			"Use nanoBTS definitions",
++			"Use ipaccess nanoBTS specific definitions for RSL",
++			&global_rsl_use_nano_bts);
+ }
+-
