diff --git a/wireshark/abis_oml.patch b/wireshark/0001-abis_oml.patch
similarity index 97%
rename from wireshark/abis_oml.patch
rename to wireshark/0001-abis_oml.patch
index ab51a12..2d5b5d4 100644
--- a/wireshark/abis_oml.patch
+++ b/wireshark/0001-abis_oml.patch
@@ -1,32 +1,47 @@
-From b659280ff645354bb55529b05114419b9f0efd6f Mon Sep 17 00:00:00 2001
+From c6c10dab54b9a667308004ab5c72dd08f52e4fc1 Mon Sep 17 00:00:00 2001
 From: Holger Hans Peter Freyther <zecke@selfish.org>
-Date: Mon, 19 Apr 2010 13:23:51 +0800
-Subject: [PATCH 1/2] Add the Abis OML patch.
+Date: Tue, 11 Jan 2011 15:08:42 +0100
+Subject: [PATCH 1/4] abis_oml
 
+Add the GSM ABIS OML dissector from OpenBSC
 ---
+ epan/CMakeLists.txt                   |    1 +
  epan/dissectors/Makefile.common       |    1 +
- epan/dissectors/packet-gsm_abis_oml.c | 1405 +++++++++++++++++++++++++++++++++
- epan/dissectors/packet-gsm_abis_oml.h |  800 +++++++++++++++++++
- 3 files changed, 2206 insertions(+), 0 deletions(-)
+ epan/dissectors/packet-gsm_abis_oml.c | 1608 +++++++++++++++++++++++++++++++++
+ epan/dissectors/packet-gsm_abis_oml.h |  830 +++++++++++++++++
+ 4 files changed, 2440 insertions(+), 0 deletions(-)
  create mode 100644 epan/dissectors/packet-gsm_abis_oml.c
  create mode 100644 epan/dissectors/packet-gsm_abis_oml.h
 
-Index: wireshark/epan/dissectors/Makefile.common
-===================================================================
---- wireshark.orig/epan/dissectors/Makefile.common
-+++ wireshark/epan/dissectors/Makefile.common
-@@ -495,6 +495,7 @@
+diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt
+index a22406c..0b09335 100644
+--- a/epan/CMakeLists.txt
++++ b/epan/CMakeLists.txt
+@@ -586,6 +586,7 @@ set(DISSECTOR_SRC
+ 	dissectors/packet-gsm_a_gm.c
+ 	dissectors/packet-gsm_a_rp.c
+ 	dissectors/packet-gsm_a_rr.c
++	dissectors/packet-gsm_abis_oml.c
+ 	dissectors/packet-gsm_ipa.c
+ 	dissectors/packet-gsm_bsslap.c
+ 	dissectors/packet-gsm_bssmap_le.c
+diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common
+index c496b36..7ce83b6 100644
+--- a/epan/dissectors/Makefile.common
++++ b/epan/dissectors/Makefile.common
+@@ -496,6 +496,7 @@ DISSECTOR_SRC = \
  	packet-gsm_a_gm.c	\
  	packet-gsm_a_rp.c	\
  	packet-gsm_a_rr.c	\
 +	packet-gsm_abis_oml.c	\
- 	packet-gsm_ipa.c	\
  	packet-gsm_bsslap.c	\
  	packet-gsm_bssmap_le.c	\
-Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
-===================================================================
+ 	packet-gsm_ipa.c	\
+diff --git a/epan/dissectors/packet-gsm_abis_oml.c b/epan/dissectors/packet-gsm_abis_oml.c
+new file mode 100644
+index 0000000..f0b69e7
 --- /dev/null
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.c
++++ b/epan/dissectors/packet-gsm_abis_oml.c
 @@ -0,0 +1,1608 @@
 +/* packet-abis_oml.c
 + * Routines for packet dissection of GSM A-bis over IP (3GPP TS 12.21)
@@ -606,22 +621,22 @@
 +#endif
 +
 +static const gchar *
-+_match_oml_fom_msgtype(const guint32 val, const value_string_ext *vs)
++_match_oml_fom_msgtype(const guint32 val, const value_string_ext *vs, gint *idx)
 +{
 +	const char *ret;
-+	ret = match_strval(val, vs->_vs_p);
++	ret = match_strval_idx(val, vs->_vs_p, idx);
 +	if (!ret)
-+		ret = match_strval(val, _oml_fom_msgtype_vals);
++		ret = match_strval_idx(val, _oml_fom_msgtype_vals, idx);
 +	return ret;
 +}
 +
 +static const gchar *
-+_match_oml_fom_attr(const guint32 val, const value_string_ext *vs)
++_match_oml_fom_attr(const guint32 val, const value_string_ext *vs, gint *idx)
 +{
 +	const char *ret;
-+	ret = match_strval(val, vs->_vs_p);
++	ret = match_strval_idx(val, vs->_vs_p, idx);
 +	if (!ret)
-+		ret = match_strval(val, _oml_fom_attr_vals);
++		ret = match_strval_idx(val, _oml_fom_attr_vals, idx);
 +	return ret;
 +}
 +
@@ -1636,10 +1651,11 @@
 +				array_length(oml_fom_attr_vals_bs11)-1;
 +	}
 +}
-Index: wireshark/epan/dissectors/packet-gsm_abis_oml.h
-===================================================================
+diff --git a/epan/dissectors/packet-gsm_abis_oml.h b/epan/dissectors/packet-gsm_abis_oml.h
+new file mode 100644
+index 0000000..3cd2769
 --- /dev/null
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.h
++++ b/epan/dissectors/packet-gsm_abis_oml.h
 @@ -0,0 +1,830 @@
 +/* 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 */
@@ -2471,3 +2487,6 @@
 +};
 +
 +#endif /* _NM_H */
+-- 
+1.7.3.4
+
diff --git a/wireshark/ericsson_rbs2409.patch b/wireshark/0002-ericsson_rbs2409.patch
similarity index 95%
rename from wireshark/ericsson_rbs2409.patch
rename to wireshark/0002-ericsson_rbs2409.patch
index e8cdb86..b13e416 100644
--- a/wireshark/ericsson_rbs2409.patch
+++ b/wireshark/0002-ericsson_rbs2409.patch
@@ -1,8 +1,38 @@
-Index: wireshark/epan/dissectors/Makefile.common
-===================================================================
---- wireshark.orig/epan/dissectors/Makefile.common
-+++ wireshark/epan/dissectors/Makefile.common
-@@ -67,6 +67,8 @@
+From 6254ee454147eab6f6a51792544716472e20073f Mon Sep 17 00:00:00 2001
+From: Holger Hans Peter Freyther <zecke@selfish.org>
+Date: Tue, 11 Jan 2011 15:09:18 +0100
+Subject: [PATCH 2/4] ericsson_rbs2409
+
+Add Ericsson RBS2409 dissector
+---
+ epan/CMakeLists.txt                      |    2 +
+ epan/dissectors/Makefile.common          |    2 +
+ epan/dissectors/packet-ehdlc.c           |  319 +++++++
+ epan/dissectors/packet-gsm_abis_om2000.c | 1439 ++++++++++++++++++++++++++++++
+ epan/dissectors/packet-gsm_abis_oml.c    |   21 +
+ epan/dissectors/packet-l2tp.c            |    7 +
+ 6 files changed, 1790 insertions(+), 0 deletions(-)
+ 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
+ 	dissectors/packet-dcerpc-eventlog.c
+ 	dissectors/packet-dcerpc-lsa.c
+ 	dissectors/packet-dcerpc-winreg.c
++	dissectors/packet-ehdlc.c
++	dissectors/packet-gsm_abis_om2000.c
+ )
+ 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 = \
  	packet-dcerpc-dnsserver.c 	\
  	packet-dcerpc-eventlog.c \
  	packet-dcerpc-lsa.c \
@@ -11,55 +41,336 @@
  	packet-dcerpc-winreg.c
  
  #
-Index: wireshark/epan/dissectors/packet-l2tp.c
-===================================================================
---- wireshark.orig/epan/dissectors/packet-l2tp.c
-+++ wireshark/epan/dissectors/packet-l2tp.c
-@@ -148,6 +148,7 @@
- #define L2TPv3_PROTOCOL_AAL5    6
- #define L2TPv3_PROTOCOL_LAPD    7
- #define L2TPv3_PROTOCOL_DOCSIS_DMPT 8
-+#define L2TPv3_PROTOCOL_ERICSSON 9
- 
- static enum_val_t l2tpv3_protocols[] = {
-     {"eth",     "Ethernet",     L2TPv3_PROTOCOL_ETH},
-@@ -159,6 +160,7 @@
-     {"aal5",    "AAL5",         L2TPv3_PROTOCOL_AAL5},
-     {"lapd",    "LAPD",         L2TPv3_PROTOCOL_LAPD},
-     {"docsis-dmpt", "DOCSIS-DMPT", L2TPv3_PROTOCOL_DOCSIS_DMPT},
-+    {"ehdlc",	"Ericsson HDLC", L2TPv3_PROTOCOL_ERICSSON},
-     {NULL, NULL, 0}
- };
- 
-@@ -583,6 +585,7 @@
- static dissector_handle_t llc_handle;
- static dissector_handle_t lapd_handle;
- static dissector_handle_t mp2t_handle;
-+static dissector_handle_t ehdlc_handle;
- static dissector_handle_t data_handle;
- 
- /*
-@@ -1498,6 +1501,9 @@
- 	case L2TPv3_PROTOCOL_LAPD:
- 		call_dissector(lapd_handle, next_tvb, pinfo, tree);
- 		break;
-+	case L2TPv3_PROTOCOL_ERICSSON:
-+		call_dissector(ehdlc_handle, next_tvb, pinfo, tree);
-+		break;
- 	default:
- 		call_dissector(data_handle, next_tvb, pinfo, tree);
- 		break;
-@@ -2171,5 +2177,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");
- }
-Index: wireshark/epan/dissectors/packet-gsm_abis_om2000.c
-===================================================================
+diff --git a/epan/dissectors/packet-ehdlc.c b/epan/dissectors/packet-ehdlc.c
+new file mode 100644
+index 0000000..40bb3ab
 --- /dev/null
-+++ wireshark/epan/dissectors/packet-gsm_abis_om2000.c
++++ b/epan/dissectors/packet-ehdlc.c
+@@ -0,0 +1,319 @@
++/* 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>
++ *
++ * $Id: packet-ehdlc.c 33767 2010-08-11 11:59:47Z etxrab $
++ *
++ * Wireshark - Network traffic analyzer
++ * By Gerald Combs <gerald@wireshark.org>
++ * Copyright 1998 Gerald Combs
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++#ifdef HAVE_CONFIG_H
++# include "config.h"
++#endif
++
++#include <glib.h>
++
++#include <epan/packet.h>
++#include <epan/ipproto.h>
++#include <epan/xdlc.h>
++
++/* Initialize the protocol and registered fields */
++static int proto_ehdlc = -1;
++
++static int hf_ehdlc_data_len = -1;
++static int hf_ehdlc_protocol = -1;
++static int hf_ehdlc_sapi = -1;
++static int hf_ehdlc_c_r = -1;
++
++static int hf_ehdlc_xid_payload = -1;
++static int hf_ehdlc_control = -1;
++
++static int hf_ehdlc_p = -1;
++static int hf_ehdlc_f = -1;
++static int hf_ehdlc_u_modifier_cmd = -1;
++static int hf_ehdlc_u_modifier_resp = -1;
++static int hf_ehdlc_ftype_s_u = -1;
++
++static int hf_ehdlc_n_r = -1;
++static int hf_ehdlc_n_s = -1;
++static int hf_ehdlc_p_ext = -1;
++static int hf_ehdlc_f_ext = -1;
++static int hf_ehdlc_s_ftype = -1;
++static int hf_ehdlc_ftype_i = -1;
++static int hf_ehdlc_ftype_s_u_ext = -1;
++
++/* Used only for U frames */
++static const xdlc_cf_items ehdlc_cf_items = {
++	NULL,
++	NULL,
++	&hf_ehdlc_p,
++	&hf_ehdlc_f,
++	NULL,
++	&hf_ehdlc_u_modifier_cmd,
++	&hf_ehdlc_u_modifier_resp,
++	NULL,
++	&hf_ehdlc_ftype_s_u
++};
++
++/* Used only for I and S frames */
++static const xdlc_cf_items ehdlc_cf_items_ext = {
++	&hf_ehdlc_n_r,
++	&hf_ehdlc_n_s,
++	&hf_ehdlc_p_ext,
++	&hf_ehdlc_f_ext,
++	&hf_ehdlc_s_ftype,
++	NULL,
++	NULL,
++	&hf_ehdlc_ftype_i,
++	&hf_ehdlc_ftype_s_u_ext,
++};
++
++/* Initialize the subtree pointers */
++static gint ett_ehdlc = -1;
++static gint ett_ehdlc_control = -1;
++
++static const value_string ehdlc_protocol_vals[] = {
++	{ 0x20,		"RSL" },
++	{ 0xa0,		"ACK" },
++	{ 0xc0,		"OML" },
++	{ 0, 		NULL }
++};
++
++enum {
++	SUB_RSL,
++	SUB_OML,
++	SUB_DATA,
++
++	SUB_MAX
++};
++
++static dissector_handle_t sub_handles[SUB_MAX];
++
++/* Code to actually dissect the packets */
++static void
++dissect_ehdlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
++{
++	gint remaining;
++	int offset = 4;
++
++	col_set_str(pinfo->cinfo, COL_PROTOCOL, "EHDLC");
++	col_clear(pinfo->cinfo, COL_INFO);
++
++	while ((remaining = tvb_reported_length_remaining(tvb, offset)) > 0) {
++		proto_item *ti = NULL;
++		proto_tree *ehdlc_tree = NULL;
++		guint16 len, msg_type;
++		tvbuff_t *next_tvb;
++		guint16 control;
++		gboolean is_response = 0, is_extended = TRUE;
++		gint header_length = 2;	/* Address + Length field */
++
++		msg_type = tvb_get_guint8(tvb, offset);
++		len = tvb_get_guint8(tvb, offset+1);
++#if 0
++		col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
++		                val_to_str(msg_type, ehdlc_protocol_vals,
++		                           "unknown 0x%02x"));
++#endif
++		if (tree) {
++			ti = proto_tree_add_protocol_format(tree, proto_ehdlc,
++					tvb, offset, len,
++					"Ericsson HDLC protocol, type: %s",
++					val_to_str(msg_type, ehdlc_protocol_vals,
++						   "unknown 0x%02x"));
++			ehdlc_tree = proto_item_add_subtree(ti, ett_ehdlc);
++			proto_tree_add_item(ehdlc_tree, hf_ehdlc_protocol,
++					    tvb, offset, 1, FALSE);
++#if 0
++			proto_tree_add_item(ehdlc_tree, hf_ehdlc_sapi,
++					    tvb, offset, 1, FALSE);
++			proto_tree_add_item(ehdlc_tree, hf_ehdlc_c_r,
++					    tvb, offset, 1, FALSE);
++#endif
++			proto_tree_add_item(ehdlc_tree, hf_ehdlc_data_len,
++					    tvb, offset+1, 1, FALSE);
++		}
++
++		control = dissect_xdlc_control(tvb, offset+2, pinfo, ehdlc_tree, hf_ehdlc_control,
++					       ett_ehdlc_control, &ehdlc_cf_items, &ehdlc_cf_items_ext,
++					       NULL, NULL, is_response, is_extended, FALSE);
++		header_length += XDLC_CONTROL_LEN(control, is_extended);
++
++		if (XDLC_IS_INFORMATION(control)) {
++			next_tvb = tvb_new_subset(tvb, offset+header_length,
++						  len-header_length, len);
++
++			switch (msg_type) {
++			case 0x20:
++				/* len == 4 seems to be some kind of ACK */
++				if (len <= 4)
++					break;
++				call_dissector(sub_handles[SUB_RSL], next_tvb, pinfo, tree);
++				break;
++			case 0xbc:
++			case 0xdc:
++			case 0xa0:
++			case 0xc0:
++				/* len == 4 seems to be some kind of ACK */
++				if (len <= 4)
++					break;
++				call_dissector(sub_handles[SUB_OML], next_tvb, pinfo, tree);
++				break;
++			default:
++				call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, tree);
++				break;
++			}
++		} else if (control == XDLC_U | XDLC_XID) {
++			/* XID is formatted like ISO 8885, typically we see
++ 			 * something like
++			 * 82		format identifier
++			 * 80		group identifier
++			 * 00 09 	length
++			 * 07 01 05 	Window Size Tx
++			 * 09 01 04	Ack Timer (msec)
++			 * 08 01 05	Window Size Rx */
++			proto_tree_add_item(ehdlc_tree, hf_ehdlc_xid_payload,
++					    tvb, offset+header_length,
++					    len-header_length, FALSE);
++		}
++
++		offset += len;
++	}
++}
++
++void proto_register_ehdlc(void)
++{
++	static hf_register_info hf[] = {
++		{ &hf_ehdlc_data_len,
++		  { "DataLen", "ehdlc.data_len",
++		    FT_UINT8, BASE_DEC, NULL, 0x0,
++		    "The length of the data (in bytes)", HFILL }
++		},
++		{ &hf_ehdlc_protocol,
++		  { "Protocol", "ehdlc.protocol",
++		    FT_UINT8, BASE_HEX, VALS(ehdlc_protocol_vals), 0x0,
++		    "The HDLC Sub-Protocol", HFILL }
++		},
++		{ &hf_ehdlc_sapi,
++		  { "SAPI", "ehdlc.sapi",
++		    FT_UINT8, BASE_DEC, NULL, 0x1f,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_c_r,
++		  { "C/R", "ehdlc.c_r",
++		    FT_UINT8, BASE_HEX, NULL, 0x20,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_xid_payload,
++		  { "XID Payload", "ehdlc.xid_payload",
++		    FT_BYTES, BASE_NONE, NULL, 0,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_control,
++		  { "Control Field", "ehdlc.control",
++		    FT_UINT16, BASE_HEX, NULL, 0,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_n_r,
++		  { "N(R)", "ehdlc.control.n_r",
++		    FT_UINT16, BASE_DEC, NULL, XDLC_N_R_EXT_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_n_s,
++		  { "N(S)", "ehdlc.control.n_s",
++		    FT_UINT16, BASE_DEC, NULL, XDLC_N_S_EXT_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_p,
++		  { "Poll", "ehdlc.control.p",
++		    FT_BOOLEAN, 8, TFS(&tfs_set_notset), XDLC_P_F,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_p_ext,
++		  { "Poll", "ehdlc.control.p",
++		    FT_BOOLEAN, 16, TFS(&tfs_set_notset), XDLC_P_F_EXT,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_f,
++		  { "Final", "ehdlc.control.f",
++		    FT_BOOLEAN, 8, TFS(&tfs_set_notset), XDLC_P_F,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_f_ext,
++		  { "Final", "ehdlc.control.f",
++		    FT_BOOLEAN, 16, TFS(&tfs_set_notset), XDLC_P_F_EXT,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_s_ftype,
++		  { "Supervisory frame type", "ehdlc.control.s_ftype",
++		    FT_UINT16, BASE_HEX, VALS(stype_vals), XDLC_S_FTYPE_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_u_modifier_cmd,
++		  { "Command", "ehdlc.control.u_modifier_cmd",
++		    FT_UINT8, BASE_HEX, VALS(modifier_vals_cmd), XDLC_U_MODIFIER_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_u_modifier_resp,
++		  { "Response", "ehdlc.control.u_modifier_resp",
++		    FT_UINT8, BASE_HEX, VALS(modifier_vals_resp), XDLC_U_MODIFIER_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_ftype_i,
++		  { "Frame Type", "ehdlc.control.ftype",
++		    FT_UINT16, BASE_HEX, VALS(ftype_vals), XDLC_I_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_ftype_s_u,
++		  { "Frame Type", "ehdlc.control.ftype",
++		    FT_UINT8, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK,
++		    NULL, HFILL }
++		},
++		{ &hf_ehdlc_ftype_s_u_ext,
++		  { "Frame Type", "ehdlc.control.ftype",
++		    FT_UINT16, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK,
++		    NULL, HFILL }
++		},
++	};
++
++	static gint *ett[] = {
++		&ett_ehdlc,
++		&ett_ehdlc_control,
++	};
++
++	proto_ehdlc =
++	    proto_register_protocol("Ericsson HDLC",
++				    "Ericsson HDLC as used in A-bis over IP", "ehdlc");
++
++	proto_register_field_array(proto_ehdlc, hf, array_length(hf));
++	proto_register_subtree_array(ett, array_length(ett));
++
++	register_dissector("ehdlc", dissect_ehdlc, proto_ehdlc);
++}
++
++void proto_reg_handoff_ehdlc(void)
++{
++	dissector_handle_t ehdlc_handle;
++
++	sub_handles[SUB_RSL] = find_dissector("gsm_abis_rsl");
++	sub_handles[SUB_OML] = find_dissector("gsm_abis_oml");
++	sub_handles[SUB_DATA] = find_dissector("data");
++
++	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
 @@ -0,0 +1,1439 @@
 +/* packet-abis_om2000.c
 + * Routines for packet dissection of Ericsson A-bis OML (OM 2000)
@@ -1500,11 +1811,11 @@
 +		/* preferences have been changed */
 +	}
 +}
-Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
-===================================================================
---- wireshark.orig/epan/dissectors/packet-gsm_abis_oml.c
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.c
-@@ -119,9 +119,12 @@
+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;
  
  /* Decode things as nanoBTS traces */
  static gboolean global_oml_use_nano_bts = TRUE;
@@ -1517,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 @@
+@@ -1196,6 +1199,7 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
  	top_tree = tree;
  	if (tree) {
  		u_int8_t msg_disc = tvb_get_guint8(tvb, offset);
@@ -1525,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 @@
+@@ -1209,6 +1213,14 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
  		proto_tree_add_item(oml_tree, hf_oml_length, tvb, offset++,
  				    1, TRUE);
  
@@ -1540,7 +1851,7 @@
  		switch (msg_disc) {
  		case ABIS_OM_MDISC_FOM:
  			offset = dissect_oml_fom(tvb, pinfo, oml_tree,
-@@ -1222,6 +1234,8 @@
+@@ -1222,6 +1234,8 @@ dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
  		default:
  			break;
  		}
@@ -1549,7 +1860,7 @@
  	}
  }
  
-@@ -1569,6 +1583,11 @@
+@@ -1569,6 +1583,11 @@ proto_register_abis_oml(void)
  		    "Use nanoBTS definitions",
  		    "Use ipaccess nanoBTS specific definitions for OML",
  		    &global_oml_use_nano_bts);
@@ -1561,334 +1872,58 @@
  }
  
  /* This function is called once at startup and every time the user hits
-@@ -1605,4 +1624,6 @@
+@@ -1605,4 +1624,6 @@ proto_reg_handoff_abis_oml(void)
  		oml_fom_attr_vse._vs_num_entries =
  				array_length(oml_fom_attr_vals_bs11)-1;
  	}
 +
 +	sub_om2000 = find_dissector("gsm_abis_om2000");
  }
-Index: wireshark/epan/dissectors/packet-ehdlc.c
-===================================================================
---- /dev/null
-+++ wireshark/epan/dissectors/packet-ehdlc.c
-@@ -0,0 +1,319 @@
-+/* 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>
-+ *
-+ * $Id: packet-ehdlc.c 33767 2010-08-11 11:59:47Z etxrab $
-+ *
-+ * Wireshark - Network traffic analyzer
-+ * By Gerald Combs <gerald@wireshark.org>
-+ * Copyright 1998 Gerald Combs
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib.h>
-+
-+#include <epan/packet.h>
-+#include <epan/ipproto.h>
-+#include <epan/xdlc.h>
-+
-+/* Initialize the protocol and registered fields */
-+static int proto_ehdlc = -1;
-+
-+static int hf_ehdlc_data_len = -1;
-+static int hf_ehdlc_protocol = -1;
-+static int hf_ehdlc_sapi = -1;
-+static int hf_ehdlc_c_r = -1;
-+
-+static int hf_ehdlc_xid_payload = -1;
-+static int hf_ehdlc_control = -1;
-+
-+static int hf_ehdlc_p = -1;
-+static int hf_ehdlc_f = -1;
-+static int hf_ehdlc_u_modifier_cmd = -1;
-+static int hf_ehdlc_u_modifier_resp = -1;
-+static int hf_ehdlc_ftype_s_u = -1;
-+
-+static int hf_ehdlc_n_r = -1;
-+static int hf_ehdlc_n_s = -1;
-+static int hf_ehdlc_p_ext = -1;
-+static int hf_ehdlc_f_ext = -1;
-+static int hf_ehdlc_s_ftype = -1;
-+static int hf_ehdlc_ftype_i = -1;
-+static int hf_ehdlc_ftype_s_u_ext = -1;
-+
-+/* Used only for U frames */
-+static const xdlc_cf_items ehdlc_cf_items = {
-+	NULL,
-+	NULL,
-+	&hf_ehdlc_p,
-+	&hf_ehdlc_f,
-+	NULL,
-+	&hf_ehdlc_u_modifier_cmd,
-+	&hf_ehdlc_u_modifier_resp,
-+	NULL,
-+	&hf_ehdlc_ftype_s_u
-+};
-+
-+/* Used only for I and S frames */
-+static const xdlc_cf_items ehdlc_cf_items_ext = {
-+	&hf_ehdlc_n_r,
-+	&hf_ehdlc_n_s,
-+	&hf_ehdlc_p_ext,
-+	&hf_ehdlc_f_ext,
-+	&hf_ehdlc_s_ftype,
-+	NULL,
-+	NULL,
-+	&hf_ehdlc_ftype_i,
-+	&hf_ehdlc_ftype_s_u_ext,
-+};
-+
-+/* Initialize the subtree pointers */
-+static gint ett_ehdlc = -1;
-+static gint ett_ehdlc_control = -1;
-+
-+static const value_string ehdlc_protocol_vals[] = {
-+	{ 0x20,		"RSL" },
-+	{ 0xa0,		"ACK" },
-+	{ 0xc0,		"OML" },
-+	{ 0, 		NULL }
-+};
-+
-+enum {
-+	SUB_RSL,
-+	SUB_OML,
-+	SUB_DATA,
-+
-+	SUB_MAX
-+};
-+
-+static dissector_handle_t sub_handles[SUB_MAX];
-+
-+/* Code to actually dissect the packets */
-+static void
-+dissect_ehdlc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
-+{
-+	gint remaining;
-+	int offset = 4;
-+
-+	col_set_str(pinfo->cinfo, COL_PROTOCOL, "EHDLC");
-+	col_clear(pinfo->cinfo, COL_INFO);
-+
-+	while ((remaining = tvb_reported_length_remaining(tvb, offset)) > 0) {
-+		proto_item *ti = NULL;
-+		proto_tree *ehdlc_tree = NULL;
-+		guint16 len, msg_type;
-+		tvbuff_t *next_tvb;
-+		guint16 control;
-+		gboolean is_response = 0, is_extended = TRUE;
-+		gint header_length = 2;	/* Address + Length field */
-+
-+		msg_type = tvb_get_guint8(tvb, offset);
-+		len = tvb_get_guint8(tvb, offset+1);
-+#if 0
-+		col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
-+		                val_to_str(msg_type, ehdlc_protocol_vals,
-+		                           "unknown 0x%02x"));
-+#endif
-+		if (tree) {
-+			ti = proto_tree_add_protocol_format(tree, proto_ehdlc,
-+					tvb, offset, len,
-+					"Ericsson HDLC protocol, type: %s",
-+					val_to_str(msg_type, ehdlc_protocol_vals,
-+						   "unknown 0x%02x"));
-+			ehdlc_tree = proto_item_add_subtree(ti, ett_ehdlc);
-+			proto_tree_add_item(ehdlc_tree, hf_ehdlc_protocol,
-+					    tvb, offset, 1, FALSE);
-+#if 0
-+			proto_tree_add_item(ehdlc_tree, hf_ehdlc_sapi,
-+					    tvb, offset, 1, FALSE);
-+			proto_tree_add_item(ehdlc_tree, hf_ehdlc_c_r,
-+					    tvb, offset, 1, FALSE);
-+#endif
-+			proto_tree_add_item(ehdlc_tree, hf_ehdlc_data_len,
-+					    tvb, offset+1, 1, FALSE);
-+		}
-+
-+		control = dissect_xdlc_control(tvb, offset+2, pinfo, ehdlc_tree, hf_ehdlc_control,
-+					       ett_ehdlc_control, &ehdlc_cf_items, &ehdlc_cf_items_ext,
-+					       NULL, NULL, is_response, is_extended, FALSE);
-+		header_length += XDLC_CONTROL_LEN(control, is_extended);
-+
-+		if (XDLC_IS_INFORMATION(control)) {
-+			next_tvb = tvb_new_subset(tvb, offset+header_length,
-+						  len-header_length, len);
-+
-+			switch (msg_type) {
-+			case 0x20:
-+				/* len == 4 seems to be some kind of ACK */
-+				if (len <= 4)
-+					break;
-+				call_dissector(sub_handles[SUB_RSL], next_tvb, pinfo, tree);
-+				break;
-+			case 0xbc:
-+			case 0xdc:
-+			case 0xa0:
-+			case 0xc0:
-+				/* len == 4 seems to be some kind of ACK */
-+				if (len <= 4)
-+					break;
-+				call_dissector(sub_handles[SUB_OML], next_tvb, pinfo, tree);
-+				break;
-+			default:
-+				call_dissector(sub_handles[SUB_DATA], next_tvb, pinfo, tree);
-+				break;
-+			}
-+		} else if (control == XDLC_U | XDLC_XID) {
-+			/* XID is formatted like ISO 8885, typically we see
-+ 			 * something like
-+			 * 82		format identifier
-+			 * 80		group identifier
-+			 * 00 09 	length
-+			 * 07 01 05 	Window Size Tx
-+			 * 09 01 04	Ack Timer (msec)
-+			 * 08 01 05	Window Size Rx */
-+			proto_tree_add_item(ehdlc_tree, hf_ehdlc_xid_payload,
-+					    tvb, offset+header_length,
-+					    len-header_length, FALSE);
-+		}
-+
-+		offset += len;
-+	}
-+}
-+
-+void proto_register_ehdlc(void)
-+{
-+	static hf_register_info hf[] = {
-+		{ &hf_ehdlc_data_len,
-+		  { "DataLen", "ehdlc.data_len",
-+		    FT_UINT8, BASE_DEC, NULL, 0x0,
-+		    "The length of the data (in bytes)", HFILL }
-+		},
-+		{ &hf_ehdlc_protocol,
-+		  { "Protocol", "ehdlc.protocol",
-+		    FT_UINT8, BASE_HEX, VALS(ehdlc_protocol_vals), 0x0,
-+		    "The HDLC Sub-Protocol", HFILL }
-+		},
-+		{ &hf_ehdlc_sapi,
-+		  { "SAPI", "ehdlc.sapi",
-+		    FT_UINT8, BASE_DEC, NULL, 0x1f,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_c_r,
-+		  { "C/R", "ehdlc.c_r",
-+		    FT_UINT8, BASE_HEX, NULL, 0x20,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_xid_payload,
-+		  { "XID Payload", "ehdlc.xid_payload",
-+		    FT_BYTES, BASE_NONE, NULL, 0,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_control,
-+		  { "Control Field", "ehdlc.control",
-+		    FT_UINT16, BASE_HEX, NULL, 0,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_n_r,
-+		  { "N(R)", "ehdlc.control.n_r",
-+		    FT_UINT16, BASE_DEC, NULL, XDLC_N_R_EXT_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_n_s,
-+		  { "N(S)", "ehdlc.control.n_s",
-+		    FT_UINT16, BASE_DEC, NULL, XDLC_N_S_EXT_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_p,
-+		  { "Poll", "ehdlc.control.p",
-+		    FT_BOOLEAN, 8, TFS(&tfs_set_notset), XDLC_P_F,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_p_ext,
-+		  { "Poll", "ehdlc.control.p",
-+		    FT_BOOLEAN, 16, TFS(&tfs_set_notset), XDLC_P_F_EXT,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_f,
-+		  { "Final", "ehdlc.control.f",
-+		    FT_BOOLEAN, 8, TFS(&tfs_set_notset), XDLC_P_F,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_f_ext,
-+		  { "Final", "ehdlc.control.f",
-+		    FT_BOOLEAN, 16, TFS(&tfs_set_notset), XDLC_P_F_EXT,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_s_ftype,
-+		  { "Supervisory frame type", "ehdlc.control.s_ftype",
-+		    FT_UINT16, BASE_HEX, VALS(stype_vals), XDLC_S_FTYPE_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_u_modifier_cmd,
-+		  { "Command", "ehdlc.control.u_modifier_cmd",
-+		    FT_UINT8, BASE_HEX, VALS(modifier_vals_cmd), XDLC_U_MODIFIER_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_u_modifier_resp,
-+		  { "Response", "ehdlc.control.u_modifier_resp",
-+		    FT_UINT8, BASE_HEX, VALS(modifier_vals_resp), XDLC_U_MODIFIER_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_ftype_i,
-+		  { "Frame Type", "ehdlc.control.ftype",
-+		    FT_UINT16, BASE_HEX, VALS(ftype_vals), XDLC_I_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_ftype_s_u,
-+		  { "Frame Type", "ehdlc.control.ftype",
-+		    FT_UINT8, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK,
-+		    NULL, HFILL }
-+		},
-+		{ &hf_ehdlc_ftype_s_u_ext,
-+		  { "Frame Type", "ehdlc.control.ftype",
-+		    FT_UINT16, BASE_HEX, VALS(ftype_vals), XDLC_S_U_MASK,
-+		    NULL, HFILL }
-+		},
-+	};
-+
-+	static gint *ett[] = {
-+		&ett_ehdlc,
-+		&ett_ehdlc_control,
-+	};
-+
-+	proto_ehdlc =
-+	    proto_register_protocol("Ericsson HDLC",
-+				    "Ericsson HDLC as used in A-bis over IP", "ehdlc");
-+
-+	proto_register_field_array(proto_ehdlc, hf, array_length(hf));
-+	proto_register_subtree_array(ett, array_length(ett));
-+
-+	register_dissector("ehdlc", dissect_ehdlc, proto_ehdlc);
-+}
-+
-+void proto_reg_handoff_ehdlc(void)
-+{
-+	dissector_handle_t ehdlc_handle;
-+
-+	sub_handles[SUB_RSL] = find_dissector("gsm_abis_rsl");
-+	sub_handles[SUB_OML] = find_dissector("gsm_abis_oml");
-+	sub_handles[SUB_DATA] = find_dissector("data");
-+
-+	ehdlc_handle = create_dissector_handle(dissect_ehdlc, proto_ehdlc);
-+}
+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[] = {
+ #define L2TPv3_PROTOCOL_AAL5    6
+ #define L2TPv3_PROTOCOL_LAPD    7
+ #define L2TPv3_PROTOCOL_DOCSIS_DMPT 8
++#define L2TPv3_PROTOCOL_ERICSSON 9
+ 
+ static enum_val_t l2tpv3_protocols[] = {
+     {"eth",     "Ethernet",     L2TPv3_PROTOCOL_ETH},
+@@ -159,6 +160,7 @@ static enum_val_t l2tpv3_protocols[] = {
+     {"aal5",    "AAL5",         L2TPv3_PROTOCOL_AAL5},
+     {"lapd",    "LAPD",         L2TPv3_PROTOCOL_LAPD},
+     {"docsis-dmpt", "DOCSIS-DMPT", L2TPv3_PROTOCOL_DOCSIS_DMPT},
++    {"ehdlc",	"Ericsson HDLC", L2TPv3_PROTOCOL_ERICSSON},
+     {NULL, NULL, 0}
+ };
+ 
+@@ -583,6 +585,7 @@ static dissector_handle_t atm_oam_handle;
+ static dissector_handle_t llc_handle;
+ static dissector_handle_t lapd_handle;
+ static dissector_handle_t mp2t_handle;
++static dissector_handle_t ehdlc_handle;
+ static dissector_handle_t data_handle;
+ 
+ /*
+@@ -1498,6 +1501,9 @@ process_l2tpv3_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
+ 	case L2TPv3_PROTOCOL_LAPD:
+ 		call_dissector(lapd_handle, next_tvb, pinfo, tree);
+ 		break;
++	case L2TPv3_PROTOCOL_ERICSSON:
++		call_dissector(ehdlc_handle, next_tvb, pinfo, tree);
++		break;
+ 	default:
+ 		call_dissector(data_handle, next_tvb, pinfo, tree);
+ 		break;
+@@ -2171,5 +2177,6 @@ proto_reg_handoff_l2tp(void)
+ 	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/lucent-hnb.patch b/wireshark/0003-lucent-hnb.patch
similarity index 70%
rename from wireshark/lucent-hnb.patch
rename to wireshark/0003-lucent-hnb.patch
index 4c85195..4957db7 100644
--- a/wireshark/lucent-hnb.patch
+++ b/wireshark/0003-lucent-hnb.patch
@@ -1,7 +1,45 @@
-Index: wireshark/epan/dissectors/packet-lucent_hnb.c
-===================================================================
+From 48f2a191de62686c2ffdb97e46b5cc6bb61a868d Mon Sep 17 00:00:00 2001
+From: Holger Hans Peter Freyther <zecke@selfish.org>
+Date: Tue, 11 Jan 2011 15:16:19 +0100
+Subject: [PATCH 3/4] lucent-hnb
+
+Add lucent hnb patch from OpenBSC
+---
+ epan/CMakeLists.txt                 |    1 +
+ epan/dissectors/Makefile.common     |    1 +
+ epan/dissectors/packet-lucent_hnb.c |  103 +++++++++++++++++++++++++++++++++++
+ 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
+ 	dissectors/packet-lpd.c
+ 	dissectors/packet-lsc.c
+ 	dissectors/packet-ltp.c
++	dissectors/packet-lucent_hnb.c
+ 	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 = \
+ 	packet-lpd.c		\
+ 	packet-lsc.c		\
+ 	packet-ltp.c		\
++	packet-lucent_hnb.c	\
+ 	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
-+++ wireshark/epan/dissectors/packet-lucent_hnb.c
++++ b/epan/dissectors/packet-lucent_hnb.c
 @@ -0,0 +1,103 @@
 +/* packet-lucent_hnb.c
 + * Routines for packet dissection of Alcatel/Lucent HomeNodeB
@@ -106,15 +144,6 @@
 +	dissector_add("sctp.ppi", LHNB_SCTP_PPI_GMM, lhnb_handle);
 +	dissector_add("sctp.port", LHNB_SCTP_PORT, lhnb_handle);
 +}
-Index: wireshark/epan/dissectors/Makefile.common
-===================================================================
---- wireshark.orig/epan/dissectors/Makefile.common
-+++ wireshark/epan/dissectors/Makefile.common
-@@ -605,6 +605,7 @@
- 	packet-loop.c		\
- 	packet-lpd.c		\
- 	packet-lsc.c		\
-+	packet-lucent_hnb.c	\
- 	packet-lwapp.c		\
- 	packet-lwres.c		\
- 	packet-m2pa.c		\
+-- 
+1.7.3.4
+
diff --git a/wireshark/rsl-ipaccess.patch b/wireshark/0004-rsl-ipaccess.patch
similarity index 94%
rename from wireshark/rsl-ipaccess.patch
rename to wireshark/0004-rsl-ipaccess.patch
index 29220b8..6f2b8c1 100644
--- a/wireshark/rsl-ipaccess.patch
+++ b/wireshark/0004-rsl-ipaccess.patch
@@ -1,14 +1,15 @@
-From 8f35d623641dbba90e6186604c11e892bf515ecc Mon Sep 17 00:00:00 2001
+From 54882db58b6ec12da6b80071e0ac2344d42df24c Mon Sep 17 00:00:00 2001
 From: Holger Hans Peter Freyther <zecke@selfish.org>
-Date: Mon, 19 Apr 2010 13:32:58 +0800
-Subject: [PATCH 2/2] RSL patch
+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(-)
 
 diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c
-index b10a671..a455cf3 100644
+index bf83f6f..d858e1a 100644
 --- a/epan/dissectors/packet-rsl.c
 +++ b/epan/dissectors/packet-rsl.c
 @@ -2,6 +2,7 @@
@@ -28,7 +29,7 @@
  
  /* Initialize the protocol and registered fields */
  static int proto_rsl		= -1;
-@@ -115,6 +118,24 @@ static int hf_rsl_emlpp_prio		= -1;
+@@ -116,6 +119,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;
@@ -53,7 +54,7 @@
  
  /* Initialize the subtree pointers */
  static int ett_rsl = -1;
-@@ -172,6 +193,15 @@ static int ett_ie_cause = -1;
+@@ -173,6 +194,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;
@@ -67,9 +68,9 @@
 +static int ett_ie_rtp_payload = -1;
 +
  
- proto_tree *top_tree;
- dissector_handle_t gsm_a_ccch_handle;
-@@ -207,8 +237,11 @@ static const value_string rsl_msg_disc_vals[] = {
+ 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[] = {
  	{  0x06,		"Common Channel Management messages" },
  	{  0x08,		"TRX Management messages" },
  	{  0x16,		"Location Services messages" },
@@ -81,7 +82,7 @@
  /*
   * 9.2 MESSAGE TYPE
   */
-@@ -275,6 +308,49 @@ static const value_string rsl_msg_disc_vals[] = {
+@@ -276,6 +309,49 @@ static const value_string rsl_msg_disc_vals[] = {
  	/* 	0 1 - - - - - - Location Services messages: */
  #define RSL_MSG_LOC_INF					65	/* 8.7.1 */
  
@@ -131,7 +132,7 @@
  
  static const value_string rsl_msg_type_vals[] = {
  	  /* 	0 0 0 0 - - - - Radio Link Layer Management messages: */
-@@ -337,6 +413,26 @@ static const value_string rsl_msg_type_vals[] = {
+@@ -338,6 +414,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 */
@@ -158,7 +159,7 @@
  	{ 0,		NULL }
  };
  
-@@ -370,10 +466,10 @@ static const value_string rsl_msg_type_vals[] = {
+@@ -371,10 +467,10 @@ static const value_string rsl_msg_type_vals[] = {
  #define RSL_IE_MESSAGE_ID		28
  
  #define RSL_IE_SYS_INFO_TYPE	30
@@ -173,7 +174,7 @@
  #define RSL_IE_FULL_IMM_ASS_INF			35
  #define RSL_IE_SMSCB_INF				36
  #define RSL_IE_FULL_MS_TIMING_OFFSET	37
-@@ -476,6 +572,24 @@ static const value_string rsl_ie_type_vals[] = {
+@@ -477,6 +573,24 @@ static const value_string rsl_ie_type_vals[] = {
  			Not used
  
  	*/
@@ -198,7 +199,7 @@
  	{ 0,			NULL }
  };
  
-@@ -512,6 +626,96 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
+@@ -513,6 +627,96 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
  	{ 0,			NULL }
  };
  
@@ -295,7 +296,7 @@
  /* 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)
-@@ -2042,7 +2246,6 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
+@@ -2045,7 +2249,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);
@@ -303,7 +304,7 @@
  
  	/* Received Message */
  	offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
-@@ -2907,12 +3110,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
+@@ -2910,12 +3113,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
  }
  
  static int
@@ -489,7 +490,7 @@
  	offset++;
  
  	switch (msg_type){
-@@ -3480,6 +3855,18 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+@@ -3483,6 +3858,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;
@@ -508,7 +509,7 @@
  	default:
  		break;
  	}
-@@ -3487,6 +3874,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+@@ -3490,6 +3877,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
  	return offset;
  
  }
@@ -549,7 +550,7 @@
  static void
  dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
  {
-@@ -3514,7 +3935,6 @@ 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)
  		/* 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);
@@ -557,7 +558,7 @@
  
  		offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
  
-@@ -3884,6 +4304,86 @@ void proto_register_rsl(void)
+@@ -3892,6 +4312,86 @@ void proto_register_rsl(void)
  			FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
  			NULL, HFILL }
  		},
@@ -644,7 +645,7 @@
  	};
  	static gint *ett[] = {
  		&ett_rsl,
-@@ -3941,6 +4441,14 @@ void proto_register_rsl(void)
+@@ -3949,6 +4449,14 @@ void proto_register_rsl(void)
  		&ett_ie_meas_res_no,
  		&ett_ie_message_id,
  		&ett_ie_sys_info_type,
@@ -660,5 +661,5 @@
  
  	/* Register the protocol name and description */
 -- 
-1.7.0.1
+1.7.3.4
 
diff --git a/wireshark/README b/wireshark/README
new file mode 100644
index 0000000..3a28fcf
--- /dev/null
+++ b/wireshark/README
@@ -0,0 +1,19 @@
+These are patches to wireshark to add/enhance the GSM support.
+
+== Basic ==
+The patches apply to SVN revision r35476 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.
+
+
+== Rebasing with git ==
+It is the easiest to checkout the above revision, apply the
+patches and then use git rebase git-svn to get to the latest
+svn version. 
+
+== patches ==
+0001-abis_oml.patch               Add support for Abis OML
+0002-ericsson_rbs2409.patch       Add support for Ericsson Abis over IP
+0003-lucent-hnb.patch             Add support for Lucent HomeNodeB
+0004-rsl-ipaccess.patch           Add IPaccess RSL extensions
+
