diff --git a/wireshark/abis_oml.patch b/wireshark/abis_oml.patch
index 4b89916..e54868c 100644
--- a/wireshark/abis_oml.patch
+++ b/wireshark/abis_oml.patch
@@ -1,7 +1,7 @@
 Index: wireshark/epan/dissectors/Makefile.common
 ===================================================================
---- wireshark.orig/epan/dissectors/Makefile.common	2009-06-24 13:35:12.000000000 +0200
-+++ wireshark/epan/dissectors/Makefile.common	2009-06-24 13:35:54.000000000 +0200
+--- wireshark.orig/epan/dissectors/Makefile.common	2009-06-25 15:04:16.000000000 +0200
++++ wireshark/epan/dissectors/Makefile.common	2009-06-29 13:30:06.000000000 +0200
 @@ -874,6 +874,7 @@
  #
  DIRTY_DISSECTOR_SRC =	\
@@ -13,8 +13,8 @@
 Index: wireshark/epan/dissectors/packet-abis_oml.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ wireshark/epan/dissectors/packet-abis_oml.c	2009-06-24 15:26:50.000000000 +0200
-@@ -0,0 +1,776 @@
++++ wireshark/epan/dissectors/packet-abis_oml.c	2009-07-01 17:39:35.000000000 +0200
+@@ -0,0 +1,1115 @@
 +/* packet-abis_oml.c
 + * Routines for packet dissection of GSM A-bis over IP (3GPP TS 12.21)
 + * Copyright 2009 by Harald Welte <laforge@gnumonks.org>
@@ -51,6 +51,7 @@
 +#include <epan/emem.h>
 +
 +#include "packet-abis_oml.h"
++#include "packet-gsm_a_common.h"
 +
 +/* initialize the protocol and registered fields */
 +static int proto_abis_oml = -1;
@@ -75,6 +76,31 @@
 +static int hf_attr_avail_state = -1;
 +static int hf_attr_event_type = -1;
 +static int hf_attr_severity = -1;
++static int hf_attr_bcch_arfcn = -1;
++static int hf_attr_bsic = -1;
++static int hf_attr_test_no = -1;
++static int hf_attr_tsc = -1;
++static int hf_attr_tei = -1;
++static int hf_attr_ach_btsp = -1;
++static int hf_attr_ach_tslot = -1;
++static int hf_attr_ach_sslot = -1;
++static int hf_attr_gsm_time = -1;
++static int hf_attr_chan_comb = -1;
++/* Ipaccess */
++static int hf_oml_ipa_tres_attr_tag = -1;
++static int hf_oml_ipa_tres_attr_len = -1;
++static int hf_attr_ipa_test_res = -1;
++static int hf_attr_ipa_tr_rxlev = -1;
++static int hf_attr_ipa_tr_arfcn = -1;
++static int hf_attr_ipa_tr_f_qual = -1;
++static int hf_attr_ipa_tr_f_err = -1;
++static int hf_attr_ipa_tr_rxqual = -1;
++static int hf_attr_ipa_tr_frame_offs = -1;
++static int hf_attr_ipa_tr_framenr_offs = -1;
++static int hf_attr_ipa_tr_bsic = -1;
++static int hf_attr_ipa_tr_cell_id = -1;
++static int hf_attr_ipa_rsl_ip = -1;
++static int hf_attr_ipa_rsl_port = -1;
 +
 +/* initialize the subtree pointers */
 +static int ett_oml = -1;
@@ -204,6 +230,15 @@
 +	{ NM_MT_IPACC_RSL_CONNECT,	"IPA RSL Connect" },
 +	{ NM_MT_IPACC_RSL_CONNECT_ACK,	"IPA RSL Connect ACK" },
 +	{ NM_MT_IPACC_RSL_CONNECT_NACK,	"IPA RSL Connect NACK" },
++	{ NM_MT_IPACC_RSL_DISCONNECT,	"IPA RSL Disconnect" },
++	{ NM_MT_IPACC_RSL_DISCONNECT_ACK, "IPA RSL Disconnect ACK" },
++	{ NM_MT_IPACC_RSL_DISCONNECT_NACK, "IPA RSL Disconnect NACK" },
++	{ NM_MT_IPACC_CONN_TRAF,	"IPA Connect Traffic" },
++	{ NM_MT_IPACC_CONN_TRAF_ACK,	"IPA Connect Traffic ACK" },
++	{ NM_MT_IPACC_CONN_TRAF_NACK,	"IPA Connect Traffic NACK" },
++	{ NM_MT_IPACC_DEF_BOOT_SW,	"IPA Default Boot Software" },
++	{ NM_MT_IPACC_DEF_BOOT_SW_ACK,	"IPA Default Boot Software ACK" },
++	{ NM_MT_IPACC_DEF_BOOT_SW_NACK,	"IPA Default Boot Software NACK" },
 +	{ NM_MT_IPACC_SET_NVATTR,	"IPA Set NVRAM Attributes" },
 +	{ NM_MT_IPACC_SET_NVATTR_ACK,	"IPA Set NVRAM Attributes ACK" },
 +	{ NM_MT_IPACC_SET_NVATTR_NACK,	"IPA Set NVRAM Attributes NACK" },
@@ -286,6 +321,7 @@
 +	{ NM_ATT_HW_CONFIG,		"HW Configuration" },
 +	{ NM_ATT_HW_DESC,		"HW Description" },
 +	{ NM_ATT_INTAVE_PARAM,		"Intave Parameter" },
++	{ NM_ATT_INTERF_BOUND,		"Interference Boundaries" },
 +	{ NM_ATT_LIST_REQ_ATTR,		"List of required Attributes" },
 +	{ NM_ATT_MAIO,			"MAIO" },
 +	{ NM_ATT_MANUF_STATE,		"Manufacturer Dependent State" },
@@ -348,11 +384,23 @@
 +	{ NM_ATT_BS11_FACCH_QUAL,	"SIE FACCH Quality" },
 +	{ NM_ATT_IPACC_RSL_BSC_IP,	"IPA BSC RSL IP Address" },
 +	{ NM_ATT_IPACC_RSL_BSC_PORT,	"IPA BSC RSL TCP Port" },
++	{ NM_ATT_IPACC_NV_FLAGS,	"IPA NVRAM Flags" },
++	{ NM_ATT_IPACC_FREQ_CTRL,	"IPA Frequency Control" },
++	{ NM_ATT_IPACC_IP_IF_CFG,	"IPA IP Interface Config" },
++	{ NM_ATT_IPACC_IP_GW_CFG,	"IPA IP Gateway Config" },
++	{ NM_ATT_IPACC_IN_SERV_TIME,	"IPA In Service Time" },
 +	{ NM_ATT_IPACC_LOCATION,	"IPA Location Name" },
 +	{ NM_ATT_IPACC_UNIT_ID,		"IPA Unit ID" },
 +	{ NM_ATT_IPACC_UNIT_NAME,	"IPA Unit Name" },
++	{ NM_ATT_IPACC_SNMP_CFG,	"IPA SNMP Config" },
 +	{ NM_ATT_IPACC_PRIM_OML_IP,	"IPA Primary OML IP Address" },
 +	{ NM_ATT_IPACC_SEC_OML_IP,	"IPA Secondary OML IP Address" },
++	{ NM_ATT_IPACC_CUR_SW_CFG,	"IPA Current Software Config" },
++	{ NM_ATT_IPACC_ALM_THRESH_LIST,	"IPA Alarm Threshold List" },
++	{ NM_ATT_IPACC_UPTIME,		"IPA Uptime" },
++	{ NM_ATT_IPACC_SSL_CFG,		"IPA SSL Configuration" },
++	{ NM_ATT_IPACC_SEC_POSSIBLE,	"IPA Security Possoble" },
++	{ NM_ATT_IPACC_REVOC_DATE,	"IPA Revocation Date" },
 +	/* FIXME: More SIE */
 +};
 +
@@ -451,6 +499,124 @@
 +	{ 0xff,				"NULL" },
 +};
 +
++static const value_string oml_test_no_vals[] = {
++	{ NM_IPACC_TESTNO_CHAN_USAGE,	"Channel Usage" },
++	{ NM_IPACC_TESTNO_BCCH_CHAN_USAGE, "BCCH Channel Usage" },
++	{ NM_IPACC_TESTNO_FREQ_SYNC,	"Frequency Synchronization" },
++	{ NM_IPACC_TESTNO_BCCH_INFO,	"BCCH Information" },
++	{ NM_IPACC_TESTNO_TX_BEACON,	"Tx Beacon" },
++};
++
++static const value_string ipacc_test_res_vals[] = {
++	{ NM_IPACC_TESTRES_SUCCESS,	"Success" },
++	{ NM_IPACC_TESTRES_TIMEOUT,	"Timeout" },
++	{ NM_IPACC_TESTRES_NO_CHANS,	"No suitable channels available" },
++	{ NM_IPACC_TESTRES_PARTIAL,	"Partial" },
++	{ NM_IPACC_TESTRES_STOPPED,	"Stopped" },
++};
++
++static const value_string ipacc_testres_ie_vals[] = {
++	{ NM_IPACC_TR_IE_FREQ_ERR_LIST,	"Frequency Error List" },
++	{ NM_IPACC_TR_IE_CHAN_USAGE,	"Channel Usage" },
++	{ NM_IPACC_TR_IE_BCCH_INFO,	"BCCH Information" },
++	{ NM_IPACC_TR_IE_RESULT_DETAILS,"Result Details" },
++	{ NM_IPACC_TR_IE_FREQ_ERR,	"Frequency Error" },
++};
++
++/* 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)
++{
++	guint16 binfo_type = tvb_get_ntohs(tvb, offset);
++	guint16 tmp = tvb_get_ntohs(tvb, offset+2);
++
++	/* FIXME: there are still some bugs remaining here */
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_arfcn,
++			    tvb, offset, 2, TRUE);
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_f_qual,
++			    tvb, offset, 2, TRUE);
++	offset += 2;
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_rxlev,
++			    tvb, offset++, 1, TRUE);
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_rxqual,
++			    tvb, offset++, 1, TRUE);
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_f_err,
++			    tvb, offset, 2, TRUE);
++	offset += 2;
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_frame_offs,
++			    tvb, offset, 2, TRUE);
++	offset += 2;
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_framenr_offs,
++			    tvb, offset, 4, TRUE);
++	offset += 4;
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_bsic,
++			    tvb, offset++, 1, TRUE);
++	de_lai(tvb, att_tree, offset, 5, NULL, 0);
++	offset += 5;
++	proto_tree_add_item(att_tree, hf_attr_ipa_tr_cell_id,
++			    tvb, offset, 2, TRUE);
++	offset += 2;
++	/* FIXME: parse GSM 04.18 IE's */
++
++	return offset;
++}
++
++/* Parse the ip.access specific Channel Usage IE embedded into the Test
++ * Report IE */
++static gint
++ipacc_tr_ie_chan_usage(tvbuff_t *tvb, proto_tree *att_tree, int offset)
++{
++	while (tvb_reported_length_remaining(tvb, offset) != 0) {
++		guint16 result = tvb_get_ntohs(tvb, offset);
++		proto_tree_add_uint(att_tree, hf_attr_ipa_tr_arfcn,
++				    tvb, offset, 2, result);
++		proto_tree_add_uint(att_tree, hf_attr_ipa_tr_rxlev,
++				    tvb, offset, 2, result);
++		offset += 2;
++	}
++	return offset;
++}
++
++/* Parse the ip.access specific format of the standard test report IE */
++static gint
++dissect_ipacc_test_rep(proto_tree *tree, tvbuff_t *tvb)
++{
++	gint offset = 0;
++	guint8 test_res = tvb_get_guint8(tvb, offset);
++
++	proto_tree_add_item(tree, hf_attr_ipa_test_res, tvb, offset++,
++			    1, FALSE);
++
++	while (tvb_reported_length_remaining(tvb, offset) != 0) {
++		guint8 ie = tvb_get_guint8(tvb, offset);
++		guint16 len = tvb_get_ntohs(tvb, offset+1);
++		proto_item *ti;
++		proto_tree *att_tree;
++
++		ti = proto_tree_add_item(tree, hf_oml_ipa_tres_attr_tag, tvb,
++					 offset++, 1, FALSE);
++		att_tree = proto_item_add_subtree(ti, ett_oml_fom_att);
++		proto_tree_add_uint(att_tree, hf_oml_ipa_tres_attr_len, tvb,
++				    offset, 2, len);
++		offset += 2;
++
++		switch (ie) {
++		case NM_IPACC_TR_IE_CHAN_USAGE:
++			offset = ipacc_tr_ie_chan_usage(tvb,
++						 	att_tree, offset);
++			break;
++		case NM_IPACC_TR_IE_BCCH_INFO:
++			offset = ipacc_tr_ie_bcch(tvb,
++						  att_tree, offset);
++			break;
++		default:
++			break;
++		}
++	}
++}
++
++/* Dissect OML FOM Attributes after OML + FOM header */
 +static gint
 +dissect_oml_attrs(tvbuff_t *tvb, int base_offs, packet_info *pinfo,
 +		  proto_tree *tree)
@@ -459,11 +625,11 @@
 +
 +	while (tvb_reported_length_remaining(tvb, offset) != 0) {
 +		guint8 tag, val8;
-+		guint16 val16;
 +		unsigned int len, len_len, hlen;
-+		struct tlv_def *tdef;
++		const struct tlv_def *tdef;
 +		proto_item *ti;
 +		proto_tree *att_tree;
++		tvbuff_t *sub_tvb;
 +
 +		tag = tvb_get_guint8(tvb, offset);
 +		tdef = &nm_att_tlvdef.def[tag];
@@ -504,9 +670,17 @@
 +				    offset+1, len_len, len);
 +		offset += hlen;
 +
++		sub_tvb = tvb_new_subset(tvb, offset, len, len);
++
 +		switch (tag) {
 +		/* parse only the most common IE for now */
 +		case NM_ATT_ABIS_CHANNEL:
++			proto_tree_add_item(att_tree, hf_attr_ach_btsp, tvb,
++					    offset, 1, TRUE);
++			proto_tree_add_item(att_tree, hf_attr_ach_tslot, tvb,
++					    offset+1, 1, TRUE);
++			proto_tree_add_item(att_tree, hf_attr_ach_sslot, tvb,
++					    offset+2, 1, TRUE);
 +			break;
 +		case NM_ATT_ADM_STATE:
 +			proto_tree_add_item(att_tree, hf_attr_adm_state, tvb,
@@ -538,22 +712,24 @@
 +
 +			break;
 +		case NM_ATT_BCCH_ARFCN:
++			proto_tree_add_item(att_tree, hf_attr_bcch_arfcn, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_BSIC:
++			proto_tree_add_item(att_tree, hf_attr_bsic, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_CHAN_COMB:
++			proto_tree_add_item(att_tree, hf_attr_chan_comb, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_EVENT_TYPE:
 +			proto_tree_add_item(att_tree, hf_attr_event_type, tvb,
-+					    offset, len, FALSE);
-+			break;
-+		case NM_ATT_FILE_ID:
-+			break;
-+		case NM_ATT_FILE_VERSION:
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_GSM_TIME:
-+			break;
-+		case NM_ATT_MANUF_STATE:
++			proto_tree_add_item(att_tree, hf_attr_gsm_time, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_OPER_STATE:
 +			proto_tree_add_item(att_tree, hf_attr_oper_state, tvb,
@@ -567,18 +743,40 @@
 +			}
 +			break;
 +		case NM_ATT_TEI:
++			proto_tree_add_item(att_tree, hf_attr_tei, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_TSC:
++			proto_tree_add_item(att_tree, hf_attr_tsc, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_SEVERITY:
 +			proto_tree_add_item(att_tree, hf_attr_severity, tvb,
-+					    offset, len, FALSE);
++					    offset, len, TRUE);
++			break;
++		case NM_ATT_TEST_REPORT:
++			dissect_ipacc_test_rep(att_tree, sub_tvb);
++			break;
++		case NM_ATT_TEST_NO:
++			proto_tree_add_item(att_tree, hf_attr_test_no, tvb,
++					    offset, len, TRUE);
++			if (check_col(pinfo->cinfo, COL_INFO)) {
++				val8 = tvb_get_guint8(tvb, offset);
++				col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
++						val_to_str(val8,
++							   oml_test_no_vals,
++							   "%02x"));
++			}
 +			break;
 +
 +		/* proprietary ip.access extensions */
 +		case NM_ATT_IPACC_RSL_BSC_IP:
++			proto_tree_add_item(att_tree, hf_attr_ipa_rsl_ip, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_IPACC_RSL_BSC_PORT:
++			proto_tree_add_item(att_tree, hf_attr_ipa_rsl_port, tvb,
++					    offset, len, TRUE);
 +			break;
 +		case NM_ATT_IPACC_LOCATION:
 +			break;
@@ -632,13 +830,25 @@
 +	return offset;
 +}
 +
++static const guint8 ipaccess_magic[] = "com.ipaccess";
++
++static int
++dissect_oml_manuf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
++{
++	if (tvb_get_guint8(tvb, offset) != 0x0d ||
++	    tvb_memeql(tvb, offset+1, ipaccess_magic, sizeof(ipaccess_magic)))
++		return offset;
++
++	offset += sizeof(ipaccess_magic) + 1;
++
++	return dissect_oml_fom(tvb, pinfo, tree, offset);
++}
 +
 +static void
 +dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
 +{
 +	proto_item *ti;
 +	proto_tree *oml_tree;
-+	guint8 msg_type;
 +
 +	int offset = 0;
 +
@@ -656,18 +866,24 @@
 +		ti = proto_tree_add_item(tree, proto_abis_oml, tvb, 0, -1, FALSE);
 +		oml_tree = proto_item_add_subtree(ti, ett_oml);
 +
-+		proto_tree_add_item(oml_tree, hf_oml_msg_disc, tvb, offset++, 1, FALSE);
-+		proto_tree_add_item(oml_tree, hf_oml_placement, tvb, offset++, 1, FALSE);
-+		proto_tree_add_item(oml_tree, hf_oml_sequence, tvb, offset++, 1, FALSE);
-+		proto_tree_add_item(oml_tree, hf_oml_length, tvb, offset++, 1, FALSE);
++		proto_tree_add_item(oml_tree, hf_oml_msg_disc, tvb, offset++,
++				    1, TRUE);
++		proto_tree_add_item(oml_tree, hf_oml_placement, tvb, offset++,
++				    1, TRUE);
++		proto_tree_add_item(oml_tree, hf_oml_sequence, tvb, offset++,
++				    1, TRUE);
++		proto_tree_add_item(oml_tree, hf_oml_length, tvb, offset++,
++				    1, TRUE);
 +
 +		switch (msg_disc) {
 +		case ABIS_OM_MDISC_FOM:
 +			offset = dissect_oml_fom(tvb, pinfo, oml_tree, offset);
 +			break;
++		case ABIS_OM_MDISC_MANUF:
++			offset = dissect_oml_manuf(tvb, pinfo, oml_tree, offset);
++			break;
 +		case ABIS_OM_MDISC_MMI:
 +		case ABIS_OM_MDISC_TRAU:
-+		case ABIS_OM_MDISC_MANUF:
 +		default:
 +			break;
 +		}
@@ -767,6 +983,129 @@
 +			  FT_UINT8, BASE_HEX, VALS(oml_severity_vals), 0,
 +			  "Severity", HFILL }
 +		},
++		{ &hf_attr_bcch_arfcn,
++			{ "BCCH ARFCN", "oml.fom.attr.bcch_arfcn",
++			  FT_UINT16, BASE_DEC, NULL, 0,
++			  "ARFCN of the BCCH", HFILL }
++		},
++		{ &hf_attr_bsic,
++			{ "BSIC", "oml.fom.attr.bsic",
++			  FT_UINT16, BASE_HEX, NULL, 0,
++			  "Base Station Identity Cdoe", HFILL }
++		},
++		{ &hf_attr_test_no,
++			{ "Test Number", "oml.fom.attr.test_no",
++			  FT_UINT8, BASE_HEX, VALS(oml_test_no_vals), 0,
++			  "Test Number", HFILL }
++		},
++		{ &hf_attr_tsc,
++			{ "TSC", "oml.fom.attr.tsc",
++			  FT_UINT8, BASE_HEX, NULL, 0,
++			  "Training Sequence Code", HFILL }
++		},
++		{ &hf_attr_tei,
++			{ "TEI", "oml.fom.attr.tei",
++			  FT_UINT8, BASE_DEC, NULL, 0,
++			  "TEI", HFILL }
++		},
++		{ &hf_attr_ach_btsp,
++			{ "BTS Port", "oml.fom.attr.abis_ch.bts_port",
++			  FT_UINT8, BASE_DEC, NULL, 0,
++			  "BTS Port", HFILL }
++		},
++		{ &hf_attr_ach_tslot,
++			{ "Timeslot", "oml.fom.attr.abis_ch.timeslot",
++			  FT_UINT8, BASE_DEC, NULL, 0,
++			  "Time Slot", HFILL }
++		},
++		{ &hf_attr_ach_sslot,
++			{ "Subslot", "oml.fom.attr.abis_ch.subslot",
++			  FT_UINT8, BASE_DEC, NULL, 0,
++			  "Subslot", HFILL }
++		},
++		{ &hf_attr_gsm_time,
++			{ "GSM Time", "oml.fom.attr.gsm_time",
++			  FT_UINT16, BASE_DEC, NULL, 0,
++			  "GSM Time", HFILL }
++		},
++		{ &hf_attr_chan_comb,
++			{ "Channel Combination", "oml.fom.attr.chan_comb",
++			  FT_UINT8, BASE_HEX, VALS(oml_chan_comb_vals), 0,
++			  "Channel Combination", HFILL }
++		},
++		/* IP Access */
++		{ &hf_oml_ipa_tres_attr_tag,
++			{ "IPA Test Result Embedded IE",
++						"oml.fom.testrep.ipa_tag",
++			  FT_UINT8, BASE_HEX, VALS(ipacc_testres_ie_vals), 0,
++			  "IPA Test Result Embedded IE", HFILL },
++		},
++		{ &hf_oml_ipa_tres_attr_len,
++			{ "IPA Test Result Embedded IE Length",
++						"oml.fom.testrep.ipa_len",
++			  FT_UINT16, BASE_DEC, NULL, 0,
++			  "IPA Test Result Embedded IE Length", HFILL }
++		},
++		{ &hf_attr_ipa_test_res,
++			{ "IPA Test Result", "oml.fom.testrep.result",
++			  FT_UINT8, BASE_DEC, VALS(ipacc_test_res_vals), 0,
++			  "IPA Test Result", HFILL }
++		},
++		{ &hf_attr_ipa_tr_rxlev,
++			{ "Rx Level", "oml.fom.testrep.ipa_rxlev",
++			  FT_UINT16, BASE_DEC, NULL, 0xfc00,
++			  "Rx Level", HFILL }
++		},
++		{ &hf_attr_ipa_tr_arfcn,
++			{ "ARFCN", "oml.fom.testrep.ipa_arfcn",
++			  FT_UINT16, BASE_DEC, NULL, 0x03ff,
++			  "ARFCN", HFILL }
++		},
++		{ &hf_attr_ipa_tr_f_qual,
++			{ "Frequency Quality", "oml.fom.testrep.ipa.freq_qual",
++			  FT_UINT8, BASE_DEC, NULL, 0xfc,
++			  "Frequency Quality", HFILL }
++		},
++		{ &hf_attr_ipa_tr_f_err,
++			{ "Frequency Error", "oml.fom.testrep.ipa.freq_err",
++			  FT_UINT16, BASE_DEC, NULL, 0,
++			  "Frequency Error", HFILL }
++		},
++		{ &hf_attr_ipa_tr_rxqual,
++			{ "Rx Quality", "oml.fom.testrep.ipa.rx_qual",
++			  FT_UINT8, BASE_DEC, NULL, 0x7,
++			  "Rx Quality", HFILL }
++		},
++		{ &hf_attr_ipa_tr_frame_offs,
++			{ "Frame Offset", "oml.fom.testrep.ipa.frame_offset",
++			  FT_UINT16, BASE_DEC, NULL, 0,
++			  "Frame Offset", HFILL }
++		},
++		{ &hf_attr_ipa_tr_framenr_offs,
++			{ "Frame Number Offset", "oml.fom.testrep.ipa.framenr_offset",
++			  FT_UINT32, BASE_DEC, NULL, 0,
++			  "Frame Number Offset", HFILL }
++		},
++		{ &hf_attr_ipa_tr_bsic,
++			{ "BSIC", "oml.fom.testrep.ipa.bsic",
++			  FT_UINT8, BASE_DEC, NULL, 0x3f,
++			  "Base Station Identity Code", HFILL }
++		},
++		{ &hf_attr_ipa_tr_cell_id,
++			{ "Cell ID", "oml.fom.testrep.ipa.cell_id",
++			  FT_UINT16, BASE_HEX, NULL, 0,
++			  "Cell ID", HFILL }
++		},
++		{ &hf_attr_ipa_rsl_ip,
++			{ "BSC RSL IP Address", "oml.fom.attr.ipa.rsl_ip",
++			  FT_IPv4, BASE_NONE, NULL, 0,
++			  "BSC RSL IP Address", HFILL }
++		},
++		{ &hf_attr_ipa_rsl_port,
++			{ "BSC RSL TCP Port", "oml.fom.attr.ipa.rsl_port",
++			  FT_UINT16, BASE_DEC, NULL, 0,
++			  "BSC RSL TCP Port", HFILL }
++		},
 +	};
 +	static gint *ett[] = {
 +		&ett_oml,
@@ -794,8 +1133,8 @@
 Index: wireshark/epan/dissectors/packet-abis_oml.h
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ wireshark/epan/dissectors/packet-abis_oml.h	2009-06-24 13:35:54.000000000 +0200
-@@ -0,0 +1,665 @@
++++ wireshark/epan/dissectors/packet-abis_oml.h	2009-07-01 11:27:15.000000000 +0200
+@@ -0,0 +1,714 @@
 +/* 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 */
 +
@@ -1011,6 +1350,15 @@
 +	NM_MT_IPACC_RSL_CONNECT		= 0xe0,
 +	NM_MT_IPACC_RSL_CONNECT_ACK,
 +	NM_MT_IPACC_RSL_CONNECT_NACK,
++	NM_MT_IPACC_RSL_DISCONNECT	= 0xe3,
++	NM_MT_IPACC_RSL_DISCONNECT_ACK,
++	NM_MT_IPACC_RSL_DISCONNECT_NACK,
++	NM_MT_IPACC_CONN_TRAF		= 0xe6,
++	NM_MT_IPACC_CONN_TRAF_ACK,
++	NM_MT_IPACC_CONN_TRAF_NACK,
++	NM_MT_IPACC_DEF_BOOT_SW		= 0xec,
++	NM_MT_IPACC_DEF_BOOT_SW_ACK,
++	NM_MT_IPACC_DEF_BOOT_SW_NACK,
 +	NM_MT_IPACC_SET_NVATTR		= 0xef,
 +	NM_MT_IPACC_SET_NVATTR_ACK,
 +	NM_MT_IPACC_SET_NVATTR_NACK,
@@ -1147,11 +1495,25 @@
 +
 +	NM_ATT_IPACC_RSL_BSC_IP		= 0x80,
 +	NM_ATT_IPACC_RSL_BSC_PORT	= 0x81,
++	NM_ATT_IPACC_NV_FLAGS		= 0x86,
++	NM_ATT_IPACC_FREQ_CTRL		= 0x87,
++	NM_ATT_IPACC_IP_IF_CFG		= 0x8a,		/* IP interface */
++	NM_ATT_IPACC_IP_GW_CFG		= 0x8b,		/* IP gateway */
++	NM_ATT_IPACC_IN_SERV_TIME	= 0x8c,
 +	NM_ATT_IPACC_LOCATION		= 0x8e,		/* string describing location */
 +	NM_ATT_IPACC_UNIT_ID		= 0x91,		/* Site/BTS/TRX */
 +	NM_ATT_IPACC_UNIT_NAME		= 0x93,		/* default: nbts-<mac-as-string> */
++	NM_ATT_IPACC_SNMP_CFG		= 0x94,
 +	NM_ATT_IPACC_PRIM_OML_IP	= 0x95,
 +	NM_ATT_IPACC_SEC_OML_IP		= 0x96,
++	NM_ATT_IPACC_CUR_SW_CFG		= 0x97,
++
++	NM_ATT_IPACC_ALM_THRESH_LIST	= 0xa4,
++	NM_ATT_IPACC_UPTIME		= 0xab,
++	NM_ATT_IPACC_SSL_CFG		= 0xad,
++	NM_ATT_IPACC_SEC_POSSIBLE	= 0xae,
++	NM_ATT_IPACC_REVOC_DATE		= 0xb0,
++
 +
 +	NM_ATT_BS11_RF_RES_IND_PER	= 0x8f,
 +
@@ -1357,6 +1719,31 @@
 +	struct tlv_def def[0xff];
 +};
 +
++enum abis_nm_ipacc_test_no {
++	NM_IPACC_TESTNO_CHAN_USAGE	= 0x40,
++	NM_IPACC_TESTNO_BCCH_CHAN_USAGE	= 0x41,
++	NM_IPACC_TESTNO_FREQ_SYNC	= 0x42,
++	NM_IPACC_TESTNO_BCCH_INFO	= 0x43,
++	NM_IPACC_TESTNO_TX_BEACON	= 0x44,
++};
++
++/* first byte after length inside NM_ATT_TEST_REPORT */
++enum abis_nm_ipacc_test_res {
++	NM_IPACC_TESTRES_SUCCESS	= 0,
++	NM_IPACC_TESTRES_TIMEOUT	= 1,
++	NM_IPACC_TESTRES_NO_CHANS	= 2,
++	NM_IPACC_TESTRES_PARTIAL	= 3,
++	NM_IPACC_TESTRES_STOPPED	= 4,
++};
++
++/* internal IE inside NM_ATT_TEST_REPORT */
++enum abis_nm_ipacc_testres_ie {
++	NM_IPACC_TR_IE_FREQ_ERR_LIST	= 3,
++	NM_IPACC_TR_IE_CHAN_USAGE	= 4,
++	NM_IPACC_TR_IE_BCCH_INFO	= 6,
++	NM_IPACC_TR_IE_RESULT_DETAILS	= 8,
++	NM_IPACC_TR_IE_FREQ_ERR		= 18,
++};
 +
 +/* From openbsc/src/abis_nm.c */
 +static const struct tlv_definition nm_att_tlvdef = {
@@ -1455,6 +1842,7 @@
 +		[NM_ATT_IPACC_RSL_BSC_PORT] =	{ TLV_TYPE_FIXED, 2 },
 +		[NM_ATT_IPACC_PRIM_OML_IP] =	{ TLV_TYPE_FIXED, 6 },
 +		[0x95] =			{ TLV_TYPE_FIXED, 2 },
++		[0x9b] =			{ TLV_TYPE_TL16V },
 +		[0x85] =			{ TLV_TYPE_TV },
 +
 +	},
