diff --git a/wireshark/0004-rsl-ipaccess.patch b/wireshark/0004-rsl-ipaccess.patch
index e68c362..992d130 100644
--- a/wireshark/0004-rsl-ipaccess.patch
+++ b/wireshark/0004-rsl-ipaccess.patch
@@ -9,21 +9,13 @@
  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..213ae28 100644
---- a/epan/dissectors/packet-rsl.c
-+++ b/epan/dissectors/packet-rsl.c
-@@ -2,6 +2,7 @@
-  * Routines for Radio Signalling Link (RSL) dissection.
-  *
-  * Copyright 2007, Anders Broman <anders.broman@ericsson.com>
-+ * Copyright 2009, Harald Welte <laforge@gnumonks.org>
-  *
-  * $Id$
-  *
-@@ -40,8 +41,11 @@
+Index: wireshark/epan/dissectors/packet-rsl.c
+===================================================================
+--- wireshark.orig/epan/dissectors/packet-rsl.c	2011-09-06 12:29:45.000000000 +0200
++++ wireshark/epan/dissectors/packet-rsl.c	2011-09-06 13:25:12.000000000 +0200
+@@ -39,8 +39,11 @@
+ 
  #include <epan/packet.h>
- #include <epan/proto.h>
  #include <epan/lapd_sapi.h>
 +#include <epan/prefs.h>
  
@@ -32,33 +24,34 @@
 +#include "packet-rtcp.h"
  
  /* Initialize the protocol and registered fields */
- static int proto_rsl		= -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;
-+static int hf_rsl_speech_mode_s			= -1;
-+static int hf_rsl_speech_mode_m			= -1;
-+static int hf_rsl_conn_stat			= -1;
-+static int hf_rsl_conn_id			= -1;
-+static int hf_rsl_rtp_payload			= -1;
-+static int hf_rsl_rtp_csd_fmt_d			= -1;
-+static int hf_rsl_rtp_csd_fmt_ir		= -1;
-+static int hf_rsl_local_port			= -1;
-+static int hf_rsl_remote_port			= -1;
-+static int hf_rsl_local_ip			= -1;
-+static int hf_rsl_remote_ip			= -1;
-+static int hf_rsl_cstat_tx_pkts			= -1;
-+static int hf_rsl_cstat_tx_octs			= -1;
-+static int hf_rsl_cstat_rx_pkts			= -1;
-+static int hf_rsl_cstat_rx_octs			= -1;
-+static int hf_rsl_cstat_lost_pkts		= -1;
-+static int hf_rsl_cstat_ia_jitter		= -1;
-+static int hf_rsl_cstat_avg_tx_dly		= -1;
+ static int proto_rsl        = -1;
+@@ -115,6 +118,25 @@
+ static int hf_rsl_rtd               = -1;
+ static int hf_rsl_delay_ind         = -1;
+ static int hf_rsl_tfo               = -1;
++static int hf_rsl_speech_mode_s		= -1;
++static int hf_rsl_speech_mode_m		= -1;
++static int hf_rsl_conn_stat		= -1;
++static int hf_rsl_conn_id		= -1;
++static int hf_rsl_rtp_payload		= -1;
++static int hf_rsl_rtp_csd_fmt_d		= -1;
++static int hf_rsl_rtp_csd_fmt_ir	= -1;
++static int hf_rsl_local_port		= -1;
++static int hf_rsl_remote_port		= -1;
++static int hf_rsl_local_ip		= -1;
++static int hf_rsl_remote_ip		= -1;
++static int hf_rsl_cstat_tx_pkts		= -1;
++static int hf_rsl_cstat_tx_octs		= -1;
++static int hf_rsl_cstat_rx_pkts		= -1;
++static int hf_rsl_cstat_rx_octs		= -1;
++static int hf_rsl_cstat_lost_pkts	= -1;
++static int hf_rsl_cstat_ia_jitter	= -1;
++static int hf_rsl_cstat_avg_tx_dly	= -1;
++
  
  /* Initialize the subtree pointers */
  static int ett_rsl = -1;
-@@ -173,6 +195,15 @@ static int ett_ie_cause = -1;
+@@ -172,6 +194,15 @@
  static int ett_ie_meas_res_no = -1;
  static int ett_ie_message_id = -1;
  static int ett_ie_sys_info_type = -1;
@@ -74,7 +67,7 @@
  
  static proto_tree *top_tree;
  static dissector_handle_t gsm_a_ccch_handle;
-@@ -180,6 +211,9 @@ static dissector_handle_t gsm_a_dtap_handle;
+@@ -179,6 +210,9 @@
  
  static gboolean is_si2q = FALSE;
  
@@ -84,21 +77,20 @@
  /* 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" },
-+	{  0x3f,		"ip.access Vendor Specific messages" },
- 	{ 0,			NULL }
+@@ -208,8 +242,10 @@
+     {  0x06,        "Common Channel Management messages" },
+     {  0x08,        "TRX Management messages" },
+     {  0x16,        "Location Services messages" },
++    {  0x3f,	    "ip.access Vendor Specific messages" },
+     { 0,            NULL }
  };
 +#define RSL_MSGDISC_IPACCESS	0x3f
-+
  /*
   * 9.2 MESSAGE TYPE
   */
-@@ -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 */
+@@ -277,6 +313,49 @@
+     /*  0 1 - - - - - - Location Services messages: */
+ #define RSL_MSG_LOC_INF                 65  /* 8.7.1 */
  
 +/* Vendor-Specific messages of ip.access nanoBTS. There is no public documentation
 + * about those extensions, all information in this dissector is based on lawful
@@ -145,39 +137,38 @@
 +#define RSL_IE_IPAC_RTP_MPLEX_ID	0xfe
  
  static const value_string rsl_msg_type_vals[] = {
- 	  /* 	0 0 0 0 - - - - Radio Link Layer Management messages: */
-@@ -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 */
-+	/* ip.access */
-+	{  0x48,	"ip.access PDCH ACTIVATION" },
-+	{  0x49,	"ip.access PDCH ACTIVATION ACK" },
-+	{  0x4a,	"ip.access PDCH ACTIVATION NACK" },
-+	{  0x4b,	"ip.access PDCH DEACTIVATION" },
-+	{  0x4c,	"ip.access PDCH DEACTIVATION ACK" },
-+	{  0x4d,	"ip.access PDCH DEACTIVATION NACK" },
-+	{  0x60,	"ip.access MEASurement PREPROCessing DeFauLT" },
-+	{  0x61,	"ip.access HANDOover CANDidate ENQuiry" },
-+	{  0x62,	"ip.access HANDOover CANDidate RESPonse" },
-+	{  0x70,	"ip.access CRCX" },
-+	{  0x71,	"ip.access CRCX ACK" },
-+	{  0x72,	"ip.access CRCX NACK" },
-+	{  0x73,	"ip.access MDCX" },
-+	{  0x74,	"ip.access MDCX ACK" },
-+	{  0x75,	"ip.access MDCX NACK" },
-+	{  0x76,	"ip.access DLCX INDication" },
-+	{  0x77,	"ip.access DLCX" },
-+	{  0x78,	"ip.access DLCX ACK" },
-+	{  0x79,	"ip.access DLCX NACK" },
- 	{ 0,		NULL }
+       /*    0 0 0 0 - - - - Radio Link Layer Management messages: */
+@@ -339,6 +418,26 @@
+     {  0x3f,    "TFO MODification REQuest" },                   /* 8.4.31 */
+     /*  0 1 - - - - - - Location Services messages: */
+     {  0x41,    "Location Information" },                       /* 8.7.1 */
++    /* ip.access */
++    {  0x48,	"ip.access PDCH ACTIVATION" },
++    {  0x49,	"ip.access PDCH ACTIVATION ACK" },
++    {  0x4a,	"ip.access PDCH ACTIVATION NACK" },
++    {  0x4b,	"ip.access PDCH DEACTIVATION" },
++    {  0x4c,	"ip.access PDCH DEACTIVATION ACK" },
++    {  0x4d,	"ip.access PDCH DEACTIVATION NACK" },
++    {  0x60,	"ip.access MEASurement PREPROCessing DeFauLT" },
++    {  0x61,	"ip.access HANDOover CANDidate ENQuiry" },
++    {  0x62,	"ip.access HANDOover CANDidate RESPonse" },
++    {  0x70,	"ip.access CRCX" },
++    {  0x71,	"ip.access CRCX ACK" },
++    {  0x72,	"ip.access CRCX NACK" },
++    {  0x73,	"ip.access MDCX" },
++    {  0x74,	"ip.access MDCX ACK" },
++    {  0x75,	"ip.access MDCX NACK" },
++    {  0x76,	"ip.access DLCX INDication" },
++    {  0x77,	"ip.access DLCX" },
++    {  0x78,	"ip.access DLCX ACK" },
++    {  0x79,	"ip.access DLCX NACK" },
+     { 0,        NULL }
  };
  
-@@ -371,10 +471,10 @@ static const value_string rsl_msg_type_vals[] = {
- #define RSL_IE_MESSAGE_ID		28
+@@ -373,9 +472,10 @@
  
- #define RSL_IE_SYS_INFO_TYPE	30
--
+ #define RSL_IE_SYS_INFO_TYPE    30
+ 
 -
 -
 -
@@ -185,13 +176,13 @@
 +#define RSL_IE_BS_POWER_PARAM		32
 +#define RSL_IE_PREPROC_PARAM		33
 +#define RSL_IE_PREPROC_MEAS		34
- #define RSL_IE_FULL_IMM_ASS_INF			35
- #define RSL_IE_SMSCB_INF				36
- #define RSL_IE_FULL_MS_TIMING_OFFSET	37
-@@ -477,6 +577,24 @@ static const value_string rsl_ie_type_vals[] = {
- 			Not used
+ #define RSL_IE_FULL_IMM_ASS_INF         35
+ #define RSL_IE_SMSCB_INF                36
+ #define RSL_IE_FULL_MS_TIMING_OFFSET    37
+@@ -478,6 +578,24 @@
+             Not used
  
- 	*/
+     */
 +	{ 0xe0,		"SRTP Configuration" },
 +	{ 0xe1,		"BSC Proxy UDP Port" },
 +	{ 0xe2,		"BSC Multiplex Timeout" },
@@ -210,11 +201,11 @@
 +	{ 0xfc,		"RTP Payload Type 2" },
 +	{ 0xfd,		"RTP Multiplex" },
 +	{ 0xfe,		"RTP Multiplex Identifier" },
- 	{ 0,			NULL }
+     { 0,            NULL }
  };
  
-@@ -513,6 +631,27 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
- 	{ 0,			NULL }
+@@ -514,6 +632,27 @@
+     { 0,            NULL }
  };
  
 +/* From openbsc/include/openbsc/tlv.h */
@@ -238,18 +229,10 @@
 +/* 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 */
+ /* 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 +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);
--	offset++;
- 
- 	/* Received Message */
- 	offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
-@@ -2910,12 +3048,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
+@@ -2918,12 +3057,184 @@
  }
  
  static int
@@ -421,41 +404,41 @@
 +static int
  dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
  {
--	guint8	msg_type;
-+	guint8	msg_disc, msg_type;
+-    guint8  msg_type;
++    guint8  msg_disc, msg_type;
  
-+	msg_disc = tvb_get_guint8(tvb, offset++) >> 1;
- 	msg_type = tvb_get_guint8(tvb,offset)&0x7f;
- 	proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, FALSE);
++    msg_disc = tvb_get_guint8(tvb, offset++) >> 1;
+     msg_type = tvb_get_guint8(tvb,offset)&0x7f;
+     proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
 +
-+	if (msg_disc == RSL_MSGDISC_IPACCESS) {
-+		offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset);
-+		return offset;
-+	}
- 	offset++;
++    if (msg_disc == RSL_MSGDISC_IPACCESS) {
++        offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset);
++        return offset;
++    }
+     offset++;
  
- 	switch (msg_type){
-@@ -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;
+     switch (msg_type){
+@@ -3491,6 +3802,18 @@
+         /* LLP APDU 9.3.58 M LV 2-N */
+         offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
+         break;
 +	/* the following messages are ip.access specific but sent without
 +	 * ip.access memssage discriminator */
-+	case RSL_MSG_TYPE_IPAC_MEAS_PP_DEF:
-+	case RSL_MSG_TYPE_IPAC_HO_CAND_INQ:
-+	case RSL_MSG_TYPE_IPAC_HO_CAND_RESP:
-+	case RSL_MSG_TYPE_IPAC_PDCH_ACT:
-+	case RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK:
-+	case RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK:
-+	case RSL_MSG_TYPE_IPAC_PDCH_DEACT:
-+	case RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK:
-+	case RSL_MSG_TYPE_IPAC_PDCH_DEACT_NACK:
-+		offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset-1);
- 	default:
- 		break;
- 	}
-@@ -3490,6 +3812,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
- 	return offset;
++    case RSL_MSG_TYPE_IPAC_MEAS_PP_DEF:
++    case RSL_MSG_TYPE_IPAC_HO_CAND_INQ:
++    case RSL_MSG_TYPE_IPAC_HO_CAND_RESP:
++    case RSL_MSG_TYPE_IPAC_PDCH_ACT:
++    case RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK:
++    case RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK:
++    case RSL_MSG_TYPE_IPAC_PDCH_DEACT:
++    case RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK:
++    case RSL_MSG_TYPE_IPAC_PDCH_DEACT_NACK:
++	offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset-1);
+     default:
+         break;
+     }
+@@ -3498,6 +3821,40 @@
+     return offset;
  
  }
 +
@@ -495,31 +478,31 @@
  static void
  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);
+@@ -3518,12 +3875,19 @@
+     top_tree = tree;
+     if (tree) {
+         ti = proto_tree_add_item(tree, proto_rsl, tvb, 0, -1, ENC_BIG_ENDIAN);
 +
-+		/* 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 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);
++		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);
--		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);
  
-@@ -3892,6 +4255,86 @@ void proto_register_rsl(void)
- 			FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
- 			NULL, HFILL }
- 		},
+@@ -3898,6 +4262,86 @@
+             FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
+             NULL, HFILL }
+         },
 +		{ &hf_rsl_speech_mode_s,
 +			{ "ip.access Speech Mode S", "rsl.ipacc.speech_mode_s",
 +			  FT_UINT8, BASE_HEX, VALS(rsl_ipacc_spm_s_vals),
@@ -600,22 +583,22 @@
 +			{ "Average Tx Delay", "rsl.ipacc.cstat.avg_tx_delay",
 +			  FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
 +		},
- 	};
- 	static gint *ett[] = {
- 		&ett_rsl,
-@@ -3949,7 +4392,88 @@ void proto_register_rsl(void)
- 		&ett_ie_meas_res_no,
- 		&ett_ie_message_id,
- 		&ett_ie_sys_info_type,
-+		&ett_ie_speech_mode,
-+		&ett_ie_conn_stat,
-+		&ett_ie_conn_id,
-+		&ett_ie_remote_ip,
-+		&ett_ie_remote_port,
-+		&ett_ie_local_port,
-+		&ett_ie_local_ip,
-+		&ett_ie_rtp_payload,
- 	};
+     };
+     static gint *ett[] = {
+         &ett_rsl,
+@@ -3955,7 +4399,88 @@
+         &ett_ie_meas_res_no,
+         &ett_ie_message_id,
+         &ett_ie_sys_info_type,
++	&ett_ie_speech_mode,
++	&ett_ie_conn_stat,
++	&ett_ie_conn_id,
++	&ett_ie_remote_ip,
++	&ett_ie_remote_port,
++	&ett_ie_local_port,
++	&ett_ie_local_ip,
++	&ett_ie_rtp_payload,
+     };
 +	module_t *rsl_module;
 +
 +#define RSL_ATT_TLVDEF(_attr, _type, _fixed_len)		\
@@ -690,11 +673,11 @@
 +	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 */
- 	proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)",
-@@ -3960,5 +4484,9 @@ void proto_register_rsl(void)
+     /* Register the protocol name and description */
+     proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)",
+@@ -3966,5 +4491,9 @@
  
- 	register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
+     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",
