diff --git a/wireshark/0003-lucent-hnb.patch b/wireshark/0003-lucent-hnb.patch
new file mode 100644
index 0000000..4957db7
--- /dev/null
+++ b/wireshark/0003-lucent-hnb.patch
@@ -0,0 +1,149 @@
+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
++++ b/epan/dissectors/packet-lucent_hnb.c
+@@ -0,0 +1,103 @@
++/* packet-lucent_hnb.c
++ * Routines for packet dissection of Alcatel/Lucent HomeNodeB
++ * Copyright 2009 by Harald Welte <laforge@gnumonks.org>
++ *
++ * This protocol decoder is based entirely on reverse engineering, i.e.
++ * on educated guesses.
++ *
++ * $Id: packet-lucent_hnb.c 29254 2009-07-31 19:19:25Z gerald $
++ *
++ * 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
++
++#define LHNB_SCTP_PPI_MM	1
++#define LHNB_SCTP_PPI_GMM	6
++
++#define LHNB_SCTP_PORT		6005
++
++#include <glib.h>
++
++#include <epan/packet.h>
++
++/* Initialize the protocol and registered fields */
++static int proto_lhnb = -1;
++
++static int hf_lhnb_length = -1;
++
++/* Initialize the subtree pointers */
++static gint ett_lhnb = -1;
++
++static dissector_handle_t ranap_handle;
++
++/* Code to actually dissect the packets */
++static void
++dissect_lhnb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
++{
++
++	int offset = 0;
++	u_int16_t len;
++	tvbuff_t *next_tvb;
++
++	col_set_str(pinfo->cinfo, COL_PROTOCOL, "LHNB");
++	col_clear(pinfo->cinfo, COL_INFO);
++
++	proto_tree_add_item(tree, hf_lhnb_length, tvb, offset+2, 2, FALSE);
++	len = tvb_get_ntohs(tvb, offset+2);
++	next_tvb = tvb_new_subset(tvb, offset+2+6, len-4, -1);
++
++	call_dissector(ranap_handle, next_tvb, pinfo, tree);
++}
++
++void proto_register_lucent_hnb(void)
++{
++	static hf_register_info hf[] = {
++		{&hf_lhnb_length,
++		 {"Length", "lhnb.len",
++		  FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}
++		 },
++	};
++
++	static gint *ett[] = {
++		&ett_lhnb,
++	};
++
++	proto_lhnb =
++	    proto_register_protocol("Alcatel/Lucent HomeNodeB",
++				    "Lucent HNB", "lhnb");
++
++	proto_register_field_array(proto_lhnb, hf, array_length(hf));
++	proto_register_subtree_array(ett, array_length(ett));
++}
++
++void proto_reg_handoff_lucent_hnb(void)
++{
++	dissector_handle_t lhnb_handle;
++
++	ranap_handle = find_dissector("ranap");
++
++	lhnb_handle = create_dissector_handle(dissect_lhnb, proto_lhnb);
++
++	dissector_add("sctp.ppi", LHNB_SCTP_PPI_MM, lhnb_handle);
++	dissector_add("sctp.ppi", LHNB_SCTP_PPI_GMM, lhnb_handle);
++	dissector_add("sctp.port", LHNB_SCTP_PORT, lhnb_handle);
++}
+-- 
+1.7.3.4
+
