diff --git a/wireshark/0001-abis_oml.patch b/wireshark/0001-abis_oml.patch
index f67a431..90f4480 100644
--- a/wireshark/0001-abis_oml.patch
+++ b/wireshark/0001-abis_oml.patch
@@ -15,9 +15,9 @@
 
 Index: wireshark/epan/CMakeLists.txt
 ===================================================================
---- wireshark.orig/epan/CMakeLists.txt	2011-03-24 20:00:54.000000000 +0100
-+++ wireshark/epan/CMakeLists.txt	2011-03-24 20:01:02.000000000 +0100
-@@ -590,6 +590,7 @@
+--- wireshark.orig/epan/CMakeLists.txt	2011-09-06 12:30:00.000000000 +0200
++++ wireshark/epan/CMakeLists.txt	2011-09-06 13:56:18.000000000 +0200
+@@ -591,6 +591,7 @@
  	dissectors/packet-gsm_a_gm.c
  	dissectors/packet-gsm_a_rp.c
  	dissectors/packet-gsm_a_rr.c
@@ -27,9 +27,9 @@
  	dissectors/packet-gsm_bssmap_le.c
 Index: wireshark/epan/dissectors/Makefile.common
 ===================================================================
---- wireshark.orig/epan/dissectors/Makefile.common	2011-03-24 20:00:54.000000000 +0100
-+++ wireshark/epan/dissectors/Makefile.common	2011-03-24 20:01:02.000000000 +0100
-@@ -503,6 +503,7 @@
+--- wireshark.orig/epan/dissectors/Makefile.common	2011-09-06 12:29:41.000000000 +0200
++++ wireshark/epan/dissectors/Makefile.common	2011-09-06 13:56:18.000000000 +0200
+@@ -509,6 +509,7 @@
  	packet-gsm_a_gm.c	\
  	packet-gsm_a_rp.c	\
  	packet-gsm_a_rr.c	\
@@ -40,8 +40,8 @@
 Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2011-03-24 20:01:48.000000000 +0100
-@@ -0,0 +1,1735 @@
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2011-09-06 13:56:21.000000000 +0200
+@@ -0,0 +1,1744 @@
 +/* packet-abis_oml.c
 + * Routines for packet dissection of GSM A-bis OML (3GPP TS 12.21)
 + * Copyright 2009-2011 by Harald Welte <laforge@gnumonks.org>
@@ -578,24 +578,32 @@
 +	{ 0, NULL }
 +};
 +
-+static const gchar *
-+_match_oml_fom_msgtype(const guint32 val, const value_string_ext *vs, gint *idx)
++static const value_string *
++_match_oml_fom_msgtype(const guint32 val, const value_string_ext *vs)
 +{
 +	const char *ret;
-+	ret = match_strval_idx(val, vs->_vs_p, idx);
-+	if (!ret)
-+		ret = match_strval_idx(val, _oml_fom_msgtype_vals, idx);
-+	return ret;
++	gint idx;
++	ret = match_strval_idx(val, vs->_vs_p, &idx);
++	if (!ret) {
++		ret = match_strval_idx(val, _oml_fom_msgtype_vals, &idx);
++		if (!ret)
++			return NULL;
++	}
++	return &(vs->_vs_p[idx]);
 +}
 +
-+static const gchar *
-+_match_oml_fom_attr(const guint32 val, const value_string_ext *vs, gint *idx)
++static const value_string *
++_match_oml_fom_attr(const guint32 val, const value_string_ext *vs)
 +{
 +	const char *ret;
-+	ret = match_strval_idx(val, vs->_vs_p, idx);
-+	if (!ret)
-+		ret = match_strval_idx(val, _oml_fom_attr_vals, idx);
-+	return ret;
++	gint idx;
++	ret = match_strval_idx(val, vs->_vs_p, &idx);
++	if (!ret) {
++		ret = match_strval_idx(val, _oml_fom_attr_vals, &idx);
++		if (!ret)
++			return NULL;
++	}
++	return &(vs->_vs_p[idx]);
 +}
 +
 +/* Section 9.4.4: Administrative State */
@@ -757,7 +765,8 @@
 +/* Parse the ip.access specific BCCH Information IE embedded into the Test
 + * Report IE */
 +static gint
-+ipacc_tr_ie_bcch(tvbuff_t *tvb, proto_tree *att_tree, int offset)
++ipacc_tr_ie_bcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *att_tree,
++		 int offset)
 +{
 +	guint16 binfo_type, tmp;
 +
@@ -794,7 +803,7 @@
 +	proto_tree_add_item(att_tree, hf_attr_ipa_tr_bsic,
 +			    tvb, offset++, 1, TRUE);
 +
-+	de_lai(tvb, att_tree, offset, 5, NULL, 0);
++	de_lai(tvb, att_tree, pinfo, offset, 5, NULL, 0);
 +	offset += 5;
 +
 +	proto_tree_add_item(att_tree, hf_attr_ipa_tr_cell_id,
@@ -852,7 +861,7 @@
 +
 +/* Parse the ip.access specific format of the standard test report IE */
 +static gint
-+dissect_ipacc_test_rep(proto_tree *tree, tvbuff_t *tvb)
++dissect_ipacc_test_rep(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb)
 +{
 +	gint offset = 0;
 +
@@ -880,7 +889,7 @@
 +						 	att_tree, offset);
 +			break;
 +		case NM_IPACC_TR_IE_BCCH_INFO:
-+			offset = ipacc_tr_ie_bcch(tvb,
++			offset = ipacc_tr_ie_bcch(tvb, pinfo,
 +						  att_tree, offset);
 +			break;
 +		default:
@@ -1038,7 +1047,7 @@
 +					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_TEST_REPORT:
-+			dissect_ipacc_test_rep(att_tree, sub_tvb);
++			dissect_ipacc_test_rep(att_tree, pinfo, sub_tvb);
 +			break;
 +		case NM_ATT_TEST_NO:
 +			proto_tree_add_item(att_tree, hf_attr_test_no, tvb,
@@ -1723,8 +1732,8 @@
 +	NM_ATT_TLVDEF_IPA(NM_ATT_IPACC_CGI,		TLV_TYPE_TL16V, 0);
 +
 +	/* assign our custom match functions */
-+	oml_fom_msgtype_vse._vs_match = _match_oml_fom_msgtype;
-+	oml_fom_attr_vse._vs_match = _match_oml_fom_attr;
++	oml_fom_msgtype_vse._vs_match2 = _match_oml_fom_msgtype;
++	oml_fom_attr_vse._vs_match2 = _match_oml_fom_attr;
 +
 +	proto_abis_oml = proto_register_protocol("GSM A-bis OML", "A-bis OML",
 +						 "gsm_abis_oml");
@@ -1780,7 +1789,7 @@
 Index: wireshark/epan/dissectors/packet-gsm_abis_oml.h
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.h	2011-03-24 20:01:02.000000000 +0100
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.h	2011-09-06 12:30:44.000000000 +0200
 @@ -0,0 +1,667 @@
 +/* GSM Network Management messages on the A-bis interface
 + * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */
diff --git a/wireshark/0002-ericsson_rbs2409.patch b/wireshark/0002-ericsson_rbs2409.patch
index b13e416..d467354 100644
--- a/wireshark/0002-ericsson_rbs2409.patch
+++ b/wireshark/0002-ericsson_rbs2409.patch
@@ -15,11 +15,11 @@
  create mode 100644 epan/dissectors/packet-ehdlc.c
  create mode 100644 epan/dissectors/packet-gsm_abis_om2000.c
 
-diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt
-index 0b09335..9217ec0 100644
---- a/epan/CMakeLists.txt
-+++ b/epan/CMakeLists.txt
-@@ -184,6 +184,8 @@ set(DIRTY_PIDL_DISSECTOR_SRC
+Index: wireshark/epan/CMakeLists.txt
+===================================================================
+--- wireshark.orig/epan/CMakeLists.txt	2011-09-06 13:37:42.000000000 +0200
++++ wireshark/epan/CMakeLists.txt	2011-09-06 13:53:22.000000000 +0200
+@@ -180,6 +180,8 @@
  	dissectors/packet-dcerpc-eventlog.c
  	dissectors/packet-dcerpc-lsa.c
  	dissectors/packet-dcerpc-winreg.c
@@ -28,11 +28,11 @@
  )
  set(ASN1_DISSECTOR_SRC
  	dissectors/packet-acp133.c
-diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
-index 7ce83b6..4c7094b 100644
---- a/epan/dissectors/Makefile.common
-+++ b/epan/dissectors/Makefile.common
-@@ -67,6 +67,8 @@ DIRTY_PIDL_DISSECTOR_SRC = \
+Index: wireshark/epan/dissectors/Makefile.common
+===================================================================
+--- wireshark.orig/epan/dissectors/Makefile.common	2011-09-06 13:37:42.000000000 +0200
++++ wireshark/epan/dissectors/Makefile.common	2011-09-06 13:53:22.000000000 +0200
+@@ -67,6 +67,8 @@
  	packet-dcerpc-dnsserver.c 	\
  	packet-dcerpc-eventlog.c \
  	packet-dcerpc-lsa.c \
@@ -41,12 +41,11 @@
  	packet-dcerpc-winreg.c
  
  #
-diff --git a/epan/dissectors/packet-ehdlc.c b/epan/dissectors/packet-ehdlc.c
-new file mode 100644
-index 0000000..40bb3ab
---- /dev/null
-+++ b/epan/dissectors/packet-ehdlc.c
-@@ -0,0 +1,319 @@
+Index: wireshark/epan/dissectors/packet-ehdlc.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ wireshark/epan/dissectors/packet-ehdlc.c	2011-09-06 13:37:48.000000000 +0200
+@@ -0,0 +1,321 @@
 +/* packet-ehdlc.c
 + * Routines for packet dissection of Ericsson HDLC as used in A-bis over IP
 + * Copyright 2010 by Harald Welte <laforge@gnumonks.org>
@@ -242,6 +241,8 @@
 +					    len-header_length, FALSE);
 +		}
 +
++		if (len == 0)
++			len = 1;
 +		offset += len;
 +	}
 +}
@@ -366,11 +367,10 @@
 +
 +	ehdlc_handle = create_dissector_handle(dissect_ehdlc, proto_ehdlc);
 +}
-diff --git a/epan/dissectors/packet-gsm_abis_om2000.c b/epan/dissectors/packet-gsm_abis_om2000.c
-new file mode 100644
-index 0000000..bf67aea
---- /dev/null
-+++ b/epan/dissectors/packet-gsm_abis_om2000.c
+Index: wireshark/epan/dissectors/packet-gsm_abis_om2000.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ wireshark/epan/dissectors/packet-gsm_abis_om2000.c	2011-09-06 13:37:48.000000000 +0200
 @@ -0,0 +1,1439 @@
 +/* packet-abis_om2000.c
 + * Routines for packet dissection of Ericsson A-bis OML (OM 2000)
@@ -1811,11 +1811,11 @@
 +		/* preferences have been changed */
 +	}
 +}
-diff --git a/epan/dissectors/packet-gsm_abis_oml.c b/epan/dissectors/packet-gsm_abis_oml.c
-index f0b69e7..46a9fad 100644
---- a/epan/dissectors/packet-gsm_abis_oml.c
-+++ b/epan/dissectors/packet-gsm_abis_oml.c
-@@ -119,9 +119,12 @@ static int ett_oml_fom_att = -1;
+Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
+===================================================================
+--- wireshark.orig/epan/dissectors/packet-gsm_abis_oml.c	2011-09-06 13:37:42.000000000 +0200
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2011-09-06 13:56:14.000000000 +0200
+@@ -119,9 +119,12 @@
  
  /* Decode things as nanoBTS traces */
  static gboolean global_oml_use_nano_bts = TRUE;
@@ -1828,7 +1828,7 @@
  /* TS 12.21 Chapter 8.1 / TS 08.59 */
  static const value_string oml_msg_disc_vals[] = {
  	{ ABIS_OM_MDISC_FOM,	"Formatted O&M" },
-@@ -1196,6 +1199,7 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+@@ -1161,6 +1164,7 @@
  	top_tree = tree;
  	if (tree) {
  		u_int8_t msg_disc = tvb_get_guint8(tvb, offset);
@@ -1836,7 +1836,7 @@
  
  		ti = proto_tree_add_item(tree, proto_abis_oml, tvb, 0, -1, FALSE);
  		oml_tree = proto_item_add_subtree(ti, ett_oml);
-@@ -1209,6 +1213,14 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+@@ -1174,6 +1178,14 @@
  		proto_tree_add_item(oml_tree, hf_oml_length, tvb, offset++,
  				    1, TRUE);
  
@@ -1851,7 +1851,7 @@
  		switch (msg_disc) {
  		case ABIS_OM_MDISC_FOM:
  			offset = dissect_oml_fom(tvb, pinfo, oml_tree,
-@@ -1222,6 +1234,8 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+@@ -1187,6 +1199,8 @@
  		default:
  			break;
  		}
@@ -1860,7 +1860,7 @@
  	}
  }
  
-@@ -1569,6 +1583,11 @@ proto_register_abis_oml(void)
+@@ -1696,6 +1710,11 @@
  		    "Use nanoBTS definitions",
  		    "Use ipaccess nanoBTS specific definitions for OML",
  		    &global_oml_use_nano_bts);
@@ -1872,18 +1872,18 @@
  }
  
  /* This function is called once at startup and every time the user hits
-@@ -1605,4 +1624,6 @@ proto_reg_handoff_abis_oml(void)
+@@ -1732,4 +1751,6 @@
  		oml_fom_attr_vse._vs_num_entries =
  				array_length(oml_fom_attr_vals_bs11)-1;
  	}
 +
 +	sub_om2000 = find_dissector("gsm_abis_om2000");
  }
-diff --git a/epan/dissectors/packet-l2tp.c b/epan/dissectors/packet-l2tp.c
-index 4380bbc..0ebcd9d 100644
---- a/epan/dissectors/packet-l2tp.c
-+++ b/epan/dissectors/packet-l2tp.c
-@@ -148,6 +148,7 @@ static enum_val_t l2tpv3_cookies[] = {
+Index: wireshark/epan/dissectors/packet-l2tp.c
+===================================================================
+--- wireshark.orig/epan/dissectors/packet-l2tp.c	2011-09-06 13:37:42.000000000 +0200
++++ wireshark/epan/dissectors/packet-l2tp.c	2011-09-06 13:37:48.000000000 +0200
+@@ -148,6 +148,7 @@
  #define L2TPv3_PROTOCOL_AAL5    6
  #define L2TPv3_PROTOCOL_LAPD    7
  #define L2TPv3_PROTOCOL_DOCSIS_DMPT 8
@@ -1891,7 +1891,7 @@
  
  static enum_val_t l2tpv3_protocols[] = {
      {"eth",     "Ethernet",     L2TPv3_PROTOCOL_ETH},
-@@ -159,6 +160,7 @@ static enum_val_t l2tpv3_protocols[] = {
+@@ -159,6 +160,7 @@
      {"aal5",    "AAL5",         L2TPv3_PROTOCOL_AAL5},
      {"lapd",    "LAPD",         L2TPv3_PROTOCOL_LAPD},
      {"docsis-dmpt", "DOCSIS-DMPT", L2TPv3_PROTOCOL_DOCSIS_DMPT},
@@ -1899,7 +1899,7 @@
      {NULL, NULL, 0}
  };
  
-@@ -583,6 +585,7 @@ static dissector_handle_t atm_oam_handle;
+@@ -583,6 +585,7 @@
  static dissector_handle_t llc_handle;
  static dissector_handle_t lapd_handle;
  static dissector_handle_t mp2t_handle;
@@ -1907,7 +1907,7 @@
  static dissector_handle_t data_handle;
  
  /*
-@@ -1498,6 +1501,9 @@ process_l2tpv3_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+@@ -1495,6 +1498,9 @@
  	case L2TPv3_PROTOCOL_LAPD:
  		call_dissector(lapd_handle, next_tvb, pinfo, tree);
  		break;
@@ -1917,13 +1917,10 @@
  	default:
  		call_dissector(data_handle, next_tvb, pinfo, tree);
  		break;
-@@ -2171,5 +2177,6 @@ proto_reg_handoff_l2tp(void)
+@@ -2167,5 +2173,6 @@
  	llc_handle = find_dissector("llc");
  	lapd_handle = find_dissector("lapd");
  	mp2t_handle = find_dissector("mp2t");
 +	ehdlc_handle = find_dissector("ehdlc");
  	data_handle = find_dissector("data");
  }
--- 
-1.7.3.4
-
diff --git a/wireshark/0003-lucent-hnb.patch b/wireshark/0003-lucent-hnb.patch
index 4957db7..c9fc3dc 100644
--- a/wireshark/0003-lucent-hnb.patch
+++ b/wireshark/0003-lucent-hnb.patch
@@ -11,11 +11,11 @@
  3 files changed, 105 insertions(+), 0 deletions(-)
  create mode 100644 epan/dissectors/packet-lucent_hnb.c
 
-diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt
-index 9217ec0..ac76ab9 100644
---- a/epan/CMakeLists.txt
-+++ b/epan/CMakeLists.txt
-@@ -728,6 +728,7 @@ set(DISSECTOR_SRC
+Index: wireshark/epan/CMakeLists.txt
+===================================================================
+--- wireshark.orig/epan/CMakeLists.txt	2011-09-06 12:30:50.000000000 +0200
++++ wireshark/epan/CMakeLists.txt	2011-09-06 12:30:52.000000000 +0200
+@@ -738,6 +738,7 @@
  	dissectors/packet-lpd.c
  	dissectors/packet-lsc.c
  	dissectors/packet-ltp.c
@@ -23,11 +23,11 @@
  	dissectors/packet-lwapp.c
  	dissectors/packet-lwres.c
  	dissectors/packet-m2pa.c
-diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
-index 4c7094b..9931f28 100644
---- a/epan/dissectors/Makefile.common
-+++ b/epan/dissectors/Makefile.common
-@@ -638,6 +638,7 @@ DISSECTOR_SRC = \
+Index: wireshark/epan/dissectors/Makefile.common
+===================================================================
+--- wireshark.orig/epan/dissectors/Makefile.common	2011-09-06 12:30:50.000000000 +0200
++++ wireshark/epan/dissectors/Makefile.common	2011-09-06 12:30:52.000000000 +0200
+@@ -657,6 +657,7 @@
  	packet-lpd.c		\
  	packet-lsc.c		\
  	packet-ltp.c		\
@@ -35,11 +35,10 @@
  	packet-lwapp.c		\
  	packet-lwres.c		\
  	packet-m2pa.c		\
-diff --git a/epan/dissectors/packet-lucent_hnb.c b/epan/dissectors/packet-lucent_hnb.c
-new file mode 100644
-index 0000000..296f98b
---- /dev/null
-+++ b/epan/dissectors/packet-lucent_hnb.c
+Index: wireshark/epan/dissectors/packet-lucent_hnb.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ wireshark/epan/dissectors/packet-lucent_hnb.c	2011-09-06 12:30:52.000000000 +0200
 @@ -0,0 +1,103 @@
 +/* packet-lucent_hnb.c
 + * Routines for packet dissection of Alcatel/Lucent HomeNodeB
@@ -144,6 +143,3 @@
 +	dissector_add("sctp.ppi", LHNB_SCTP_PPI_GMM, lhnb_handle);
 +	dissector_add("sctp.port", LHNB_SCTP_PORT, lhnb_handle);
 +}
--- 
-1.7.3.4
-
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",
diff --git a/wireshark/0005-rsl-hsl.patch b/wireshark/0005-rsl-hsl.patch
index 409d724..4ffaccd 100644
--- a/wireshark/0005-rsl-hsl.patch
+++ b/wireshark/0005-rsl-hsl.patch
@@ -1,28 +1,28 @@
 Index: wireshark/epan/dissectors/packet-rsl.c
 ===================================================================
---- wireshark.orig/epan/dissectors/packet-rsl.c	2011-01-13 12:51:02.000000000 +0100
-+++ wireshark/epan/dissectors/packet-rsl.c	2011-01-15 18:05:20.000000000 +0100
-@@ -2,7 +2,7 @@
+--- wireshark.orig/epan/dissectors/packet-rsl.c	2011-09-06 13:57:15.000000000 +0200
++++ wireshark/epan/dissectors/packet-rsl.c	2011-09-06 14:11:09.000000000 +0200
+@@ -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>
+  * Copyright 2007, 2011, Anders Broman <anders.broman@ericsson.com>
 + * Copyright 2009-2011, Harald Welte <laforge@gnumonks.org>
   *
-  * $Id: packet-rsl.c 35224 2010-12-20 05:35:29Z guy $
+  * $Id: packet-rsl.c 38413 2011-08-08 17:59:32Z wmeier $
   *
-@@ -137,6 +137,14 @@
- 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;
+@@ -136,7 +137,14 @@
+ 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;
+-
 +/* HSL */
-+static int hf_rsl_hsl_bts_serno			= -1;
-+static int hf_rsl_hsl_bts_ver			= -1;
-+static int hf_rsl_hsl_dsp_ver			= -1;
-+static int hf_rsl_hsl_fpga_ver			= -1;
-+static int hf_rsl_hsl_trau_remote_port		= -1;
-+static int hf_rsl_hsl_trau_remote_ip		= -1;
-+static int hf_rsl_hsl_tx_power			= -1;
++static int hf_rsl_hsl_bts_serno		= -1;
++static int hf_rsl_hsl_bts_ver		= -1;
++static int hf_rsl_hsl_dsp_ver		= -1;
++static int hf_rsl_hsl_fpga_ver		= -1;
++static int hf_rsl_hsl_trau_remote_port	= -1;
++static int hf_rsl_hsl_trau_remote_ip	= -1;
++static int hf_rsl_hsl_tx_power		= -1;
  
  /* Initialize the subtree pointers */
  static int ett_rsl = -1;
@@ -34,19 +34,19 @@
  
  static gboolean is_si2q = FALSE;
  
-@@ -239,9 +248,11 @@
- 	{  0x08,		"TRX Management messages" },
- 	{  0x16,		"Location Services messages" },
- 	{  0x3f,		"ip.access Vendor Specific messages" },
-+	{  0x80,		"HSL Vendor Specific messages" },
- 	{ 0,			NULL }
+@@ -243,9 +252,11 @@
+     {  0x08,        "TRX Management messages" },
+     {  0x16,        "Location Services messages" },
+     {  0x3f,	    "ip.access Vendor Specific messages" },
++    {  0x80,	    "HSL Vendor Specific messages" },
+     { 0,            NULL }
  };
  #define RSL_MSGDISC_IPACCESS	0x3f
 +#define RSL_MSGDISC_HSL		0x40
- 
  /*
   * 9.2 MESSAGE TYPE
-@@ -353,6 +364,22 @@
+  */
+@@ -357,6 +368,22 @@
  #define RSL_IE_IPAC_RTP_MPLEX		0xfd
  #define RSL_IE_IPAC_RTP_MPLEX_ID	0xfe
  
@@ -67,30 +67,30 @@
 +#define RSL_IE_HSL_FPGA_VERSION		0xc7
 +
  static const value_string rsl_msg_type_vals[] = {
- 	  /* 	0 0 0 0 - - - - Radio Link Layer Management messages: */
- 	{  0x01,	"DATA REQuest" },								/* 8.3.1 */
-@@ -434,6 +461,12 @@
- 	{  0x77,	"ip.access DLCX" },
- 	{  0x78,	"ip.access DLCX ACK" },
- 	{  0x79,	"ip.access DLCX NACK" },
-+	/* HSL */
-+	{  0x80,	"HSL IDENTIFY" },
-+	{  0x81,	"HSL CONNECT TRAU" },
-+	{  0x82,	"HSL BSSGP" },
-+	{  0x83,	"HSL GPRS TS ALLOC" },
-+	{  0x8a,	"HSL TX SET POWER" },
- 	{ 0,		NULL }
+       /*    0 0 0 0 - - - - Radio Link Layer Management messages: */
+     {  0x01,    "DATA REQuest" },                               /* 8.3.1 */
+@@ -438,6 +465,12 @@
+     {  0x77,	"ip.access DLCX" },
+     {  0x78,	"ip.access DLCX ACK" },
+     {  0x79,	"ip.access DLCX NACK" },
++    /* HSL */
++    {  0x80,	"HSL IDENTIFY" },
++    {  0x81,	"HSL CONNECT TRAU" },
++    {  0x82,	"HSL BSSGP" },
++    {  0x83,	"HSL GPRS TS ALLOC" },
++    {  0x8a,	"HSL TX SET POWER" },
+     { 0,        NULL }
  };
  
-@@ -573,6 +606,7 @@
- 			Not used
+@@ -578,6 +611,7 @@
+             Not used
  
- 	*/
+     */
 +	/* ip.access */
  	{ 0xe0,		"SRTP Configuration" },
  	{ 0xe1,		"BSC Proxy UDP Port" },
  	{ 0xe2,		"BSC Multiplex Timeout" },
-@@ -591,6 +625,13 @@
+@@ -596,6 +630,13 @@
  	{ 0xfc,		"RTP Payload Type 2" },
  	{ 0xfd,		"RTP Multiplex" },
  	{ 0xfe,		"RTP Multiplex Identifier" },
@@ -101,24 +101,10 @@
 +	{ 0xc5,		"HSL BTS SW Version" },
 +	{ 0xc6,		"HSL DSP SW Version" },
 +	{ 0xc7,		"HSL FPGA SW Version" },
- 	{ 0,			NULL }
+     { 0,            NULL }
  };
  
-@@ -714,6 +755,13 @@
- 		[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 },
-+		/* HSL */
-+		[RSL_IE_HSL_BTS_SERNO]		= { TLV_TYPE_TLV,0 },
-+		[RSL_IE_HSL_TRAU_PARAMS]	= { TLV_TYPE_TLV,0 },
-+		[RSL_IE_HSL_TX_POWER]		= { TLV_TYPE_TV, 0 },
-+		[RSL_IE_HSL_BTS_VERSION]	= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_HSL_DSP_VERSION]	= { TLV_TYPE_TLV, 0 },
-+		[RSL_IE_HSL_FPGA_VERSION]	= { TLV_TYPE_TLV, 0 },
- 	},
- };
- 
-@@ -3118,9 +3166,10 @@
+@@ -3062,9 +3103,10 @@
  	guint8 msg_type;
  	guint32 local_addr = 0;
  	guint16 local_port = 0;
@@ -130,7 +116,7 @@
  	offset++;
  
  #if 0
-@@ -3259,20 +3308,62 @@
+@@ -3203,20 +3245,62 @@
  			proto_tree_add_item(ie_tree, hf_rsl_cstat_avg_tx_dly, tvb,
  					    offset+24, 4, FALSE);
  			break;
@@ -193,48 +179,48 @@
  		break;
  	}
  	return offset;
-@@ -3284,10 +3375,12 @@
- 	guint8	msg_disc, msg_type;
+@@ -3228,10 +3312,12 @@
+     guint8  msg_disc, msg_type;
  
- 	msg_disc = tvb_get_guint8(tvb, offset++) >> 1;
--	msg_type = tvb_get_guint8(tvb,offset)&0x7f;
-+	msg_type = tvb_get_guint8(tvb,offset)&0xff;
- 	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;
++    msg_type = tvb_get_guint8(tvb,offset);
+     proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
  
--	if (msg_disc == RSL_MSGDISC_IPACCESS) {
-+	switch (msg_disc) {
-+	case RSL_MSGDISC_HSL:
-+	case RSL_MSGDISC_IPACCESS:
- 		offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset);
- 		return offset;
- 	}
-@@ -3924,7 +4017,7 @@
- 	col_set_str(pinfo->cinfo, COL_PROTOCOL, "RSL");
- 	col_clear(pinfo->cinfo, COL_INFO);
+-    if (msg_disc == RSL_MSGDISC_IPACCESS) {
++    switch (msg_disc) {
++    case RSL_MSGDISC_HSL:
++    case RSL_MSGDISC_IPACCESS:
+         offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset);
+         return offset;
+     }
+@@ -3868,7 +3954,7 @@
+     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)&0xff;
+-    msg_type = tvb_get_guint8(tvb,offset+1)&0x7f;
++    msg_type = tvb_get_guint8(tvb,offset+1);
  
- 	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"));
-@@ -3955,6 +4048,7 @@
+     col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",val_to_str(msg_type, rsl_msg_type_vals,"unknown %u"));
  
- 	gsm_a_ccch_handle = find_dissector("gsm_a_ccch");
- 	gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
-+	bssgp_handle = find_dissector("bssgp");
+@@ -3905,6 +3991,7 @@
+ 
+     gsm_a_ccch_handle = find_dissector("gsm_a_ccch");
+     gsm_a_dtap_handle = find_dissector("gsm_a_dtap");
++    bssgp_handle = find_dissector("bssgp");
  }
  
  /* Register the protocol with Wireshark */
-@@ -3975,7 +4069,7 @@
- 		},
- 		{ &hf_rsl_msg_type,
- 			{ "Message type",           "rsl.msg_type",
--			FT_UINT8, BASE_HEX_DEC, VALS(rsl_msg_type_vals), 0x7f,
-+			FT_UINT8, BASE_HEX_DEC, VALS(rsl_msg_type_vals), 0xff,
- 			NULL, HFILL }
- 		},
- 		{ &hf_rsl_ie_id,
-@@ -4392,6 +4486,36 @@
+@@ -3925,7 +4012,7 @@
+         },
+         { &hf_rsl_msg_type,
+             { "Message type",           "rsl.msg_type",
+-            FT_UINT8, BASE_HEX_DEC, VALS(rsl_msg_type_vals), 0x7f,
++            FT_UINT8, BASE_HEX_DEC, VALS(rsl_msg_type_vals), 0xff,
+             NULL, HFILL }
+         },
+         { &hf_rsl_ie_id,
+@@ -4342,6 +4429,35 @@
  			{ "Average Tx Delay", "rsl.ipacc.cstat.avg_tx_delay",
  			  FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }
  		},
@@ -267,7 +253,20 @@
 +			{ "HSL TRAU Remote IP Address", "rsl.hsl.trau.remote_ip",
 +			  FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL },
 +		},
-+
- 	};
- 	static gint *ett[] = {
- 		&ett_rsl,
+     };
+     static gint *ett[] = {
+         &ett_rsl,
+@@ -4481,6 +4597,13 @@
+ 	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);
++	/* HSL */
++	RSL_ATT_TLVDEF(RSL_IE_HSL_BTS_SERNO,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_HSL_TRAU_PARAMS,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_HSL_TX_POWER,	TLV_TYPE_TV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_HSL_BTS_VERSION,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_HSL_DSP_VERSION,	TLV_TYPE_TLV,		0);
++	RSL_ATT_TLVDEF(RSL_IE_HSL_FPGA_VERSION,	TLV_TYPE_TLV,		0);
+ 
+     /* Register the protocol name and description */
+     proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)",
diff --git a/wireshark/0006-abis_oml-hsl.patch b/wireshark/0006-abis_oml-hsl.patch
index 28885ab..e31610e 100644
--- a/wireshark/0006-abis_oml-hsl.patch
+++ b/wireshark/0006-abis_oml-hsl.patch
@@ -1,7 +1,7 @@
 Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
 ===================================================================
---- wireshark.orig/epan/dissectors/packet-gsm_abis_oml.c	2011-01-13 10:11:08.000000000 +0100
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2011-01-13 10:13:22.000000000 +0100
+--- wireshark.orig/epan/dissectors/packet-gsm_abis_oml.c	2011-09-06 13:57:13.000000000 +0200
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2011-09-06 14:12:12.000000000 +0200
 @@ -131,6 +131,7 @@
  	{ ABIS_OM_MDISC_MMI,	"MMI Transfer" },
  	{ ABIS_OM_MDISC_TRAU,	"TRAU O&M" },
@@ -10,7 +10,7 @@
  };
  
  /* TS 12.21 Chapter 8.1.1 */
-@@ -1223,6 +1224,7 @@
+@@ -1197,6 +1198,7 @@
  
  		switch (msg_disc) {
  		case ABIS_OM_MDISC_FOM:
@@ -20,8 +20,8 @@
  			break;
 Index: wireshark/epan/dissectors/packet-gsm_abis_oml.h
 ===================================================================
---- wireshark.orig/epan/dissectors/packet-gsm_abis_oml.h	2011-01-13 10:11:25.000000000 +0100
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.h	2011-01-13 10:11:54.000000000 +0100
+--- wireshark.orig/epan/dissectors/packet-gsm_abis_oml.h	2011-09-06 12:30:44.000000000 +0200
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.h	2011-09-06 14:12:12.000000000 +0200
 @@ -40,6 +40,7 @@
  #define ABIS_OM_MDISC_MMI		0x40
  #define ABIS_OM_MDISC_TRAU		0x20
diff --git a/wireshark/README b/wireshark/README
index 39c1809..d3cde1a 100644
--- a/wireshark/README
+++ b/wireshark/README
@@ -1,7 +1,7 @@
 These are patches to wireshark to add/enhance the GSM support.
 
 == Basic ==
-The patches apply to SVN revision r35476 and were created
+The patches apply to SVN revision r38894 and were created
 using git format-patch. They can be either applied via the
 patch command or using git am on a git clone of wireshark.
 
