From 1cc3fa81020bd4914eeb59905ba47c2aa2788e19 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 1 Jul 2009 17:40:50 +0200 Subject: wireshark: more work on completing abis_oml plugin --- wireshark/abis_oml.patch | 432 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 410 insertions(+), 22 deletions(-) (limited to 'wireshark') diff --git a/wireshark/abis_oml.patch b/wireshark/abis_oml.patch index 4b8991623..e54868c43 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/Makefile.common 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 @@ -51,6 +51,7 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c +#include + +#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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c +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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + { 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + { 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + { 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + { 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + } + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.c + 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.c 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.h + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.h + + 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- */ ++ 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.h + 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 @@ Index: wireshark/epan/dissectors/packet-abis_oml.h + [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 }, + + }, -- cgit v1.2.3