root/wireshark/abis_oml.patch
| Revision b88b6d3ea612985cb09d6b2785c0d0c4c94895ee, 82.9 kB (checked in by Harald Welte <laforge@gnumonks.org>, 3 months ago) | |
|---|---|
|
|
-
epan/dissectors/Makefile.common
From b659280ff645354bb55529b05114419b9f0efd6f 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. --- 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(-) create mode 100644 epan/dissectors/packet-gsm_abis_oml.c create mode 100644 epan/dissectors/packet-gsm_abis_oml.h
old new 483 483 packet-gsm_a_gm.c \ 484 484 packet-gsm_a_rp.c \ 485 485 packet-gsm_a_rr.c \ 486 packet-gsm_abis_oml.c \ 486 487 packet-gsm_ipa.c \ 487 488 packet-gsm_bsslap.c \ 488 489 packet-gsm_bssmap_le.c \ -
(a) /dev/null vs. (b) wireshark/epan/dissectors/packet-gsm_abis_oml.c
a b 1 /* packet-abis_oml.c 2 * Routines for packet dissection of GSM A-bis over IP (3GPP TS 12.21) 3 * Copyright 2009-2010 by Harald Welte <laforge@gnumonks.org> 4 * Copyright 2009 by Holger Hans Peter Freyther <zecke@selfish.org> 5 * based on A-bis OML code in OpenBSC 6 * 7 * $Id$ 8 * 9 * Wireshark - Network traffic analyzer 10 * By Gerald Combs <gerald@wireshark.org> 11 * Copyright 1998 Gerald Combs 12 * 13 * This program is free software; you can redistribute it and/or 14 * modify it under the terms of the GNU General Public License 15 * as published by the Free Software Foundation; either version 2 16 * of the License, or (at your option) any later version. 17 * 18 * This program is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 * GNU General Public License for more details. 22 * 23 * You should have received a copy of the GNU General Public License 24 * along with this program; if not, write to the Free Software 25 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 26 */ 27 28 #ifdef HAVE_CONFIG_H 29 # include "config.h" 30 #endif 31 32 #include <glib.h> 33 34 #include <epan/packet.h> 35 #include <epan/emem.h> 36 #include <epan/lapd_sapi.h> 37 #include <epan/prefs.h> 38 39 #include "packet-gsm_abis_oml.h" 40 #include "packet-gsm_a_common.h" 41 42 #include <stdio.h> 43 44 /* initialize the protocol and registered fields */ 45 static int proto_abis_oml = -1; 46 47 /* OML header */ 48 static int hf_oml_msg_disc = -1; 49 static int hf_oml_placement = -1; 50 static int hf_oml_sequence = -1; 51 static int hf_oml_length = -1; 52 /* FOM header */ 53 static int hf_oml_fom_msgtype = -1; 54 static int hf_oml_fom_objclass = -1; 55 static int hf_oml_fom_inst_bts = -1; 56 static int hf_oml_fom_inst_trx = -1; 57 static int hf_oml_fom_inst_ts = -1; 58 static int hf_oml_fom_attr_tag = -1; 59 static int hf_oml_fom_attr_len = -1; 60 static int hf_oml_fom_attr_val = -1; 61 /* FOM attributes */ 62 static int hf_attr_adm_state = -1; 63 static int hf_attr_arfcn = -1; 64 static int hf_attr_oper_state = -1; 65 static int hf_attr_avail_state = -1; 66 static int hf_attr_event_type = -1; 67 static int hf_attr_severity = -1; 68 static int hf_attr_bcch_arfcn = -1; 69 static int hf_attr_bsic = -1; 70 static int hf_attr_test_no = -1; 71 static int hf_attr_tsc = -1; 72 static int hf_attr_tei = -1; 73 static int hf_attr_ach_btsp = -1; 74 static int hf_attr_ach_tslot = -1; 75 static int hf_attr_ach_sslot = -1; 76 static int hf_attr_gsm_time = -1; 77 static int hf_attr_chan_comb = -1; 78 static int hf_attr_hsn = -1; 79 static int hf_attr_maio = -1; 80 /* Ipaccess */ 81 static int hf_oml_ipa_tres_attr_tag = -1; 82 static int hf_oml_ipa_tres_attr_len = -1; 83 static int hf_attr_ipa_test_res = -1; 84 static int hf_attr_ipa_tr_rxlev = -1; 85 static int hf_attr_ipa_tr_b_rxlev = -1; 86 static int hf_attr_ipa_tr_arfcn = -1; 87 static int hf_attr_ipa_tr_f_qual = -1; 88 static int hf_attr_ipa_tr_f_err = -1; 89 static int hf_attr_ipa_tr_rxqual = -1; 90 static int hf_attr_ipa_tr_frame_offs = -1; 91 static int hf_attr_ipa_tr_framenr_offs = -1; 92 static int hf_attr_ipa_tr_bsic = -1; 93 static int hf_attr_ipa_tr_cell_id = -1; 94 static int hf_attr_ipa_tr_si2 = -1; 95 static int hf_attr_ipa_tr_si2bis = -1; 96 static int hf_attr_ipa_tr_si2ter = -1; 97 static int hf_attr_ipa_tr_chan_desc = -1; 98 static int hf_attr_ipa_rsl_ip = -1; 99 static int hf_attr_ipa_rsl_port = -1; 100 static int hf_attr_ipa_prim_oml_ip = -1; 101 static int hf_attr_ipa_prim_oml_port = -1; 102 static int hf_attr_ipa_location_name = -1; 103 static int hf_attr_ipa_unit_id = -1; 104 static int hf_attr_ipa_unit_name = -1; 105 static int hf_attr_ipa_nv_flags = -1; 106 static int hf_attr_ipa_nv_mask = -1; 107 static int hf_attr_ipa_nsl_sport = -1; 108 static int hf_attr_ipa_nsl_daddr = -1; 109 static int hf_attr_ipa_nsl_dport = -1; 110 static int hf_attr_ipa_nsei = -1; 111 static int hf_attr_ipa_nsvci = -1; 112 static int hf_attr_ipa_bvci = -1; 113 static int hf_attr_ipa_rac = -1; 114 115 /* initialize the subtree pointers */ 116 static int ett_oml = -1; 117 static int ett_oml_fom = -1; 118 static int ett_oml_fom_att = -1; 119 120 /* Decode things as nanoBTS traces */ 121 static gboolean global_oml_use_nano_bts = TRUE; 122 123 static proto_tree *top_tree; 124 125 /* TS 12.21 Chapter 8.1 / TS 08.59 */ 126 static const value_string oml_msg_disc_vals[] = { 127 { ABIS_OM_MDISC_FOM, "Formatted O&M" }, 128 { ABIS_OM_MDISC_MMI, "MMI Transfer" }, 129 { ABIS_OM_MDISC_TRAU, "TRAU O&M" }, 130 { ABIS_OM_MDISC_MANUF, "Manufacturer specific" }, 131 }; 132 133 /* TS 12.21 Chapter 8.1.1 */ 134 static const value_string oml_placement_vals[] = { 135 { ABIS_OM_PLACEMENT_ONLY, "Only" }, 136 { ABIS_OM_PLACEMENT_FIRST, "First" }, 137 { ABIS_OM_PLACEMENT_MIDDLE, "Middle" }, 138 { ABIS_OM_PLACEMENT_LAST, "Last" }, 139 }; 140 141 /* Standard Message Types as per TS 12.21 Chapter 9.2 */ 142 static const value_string _oml_fom_msgtype_vals[] = { 143 { NM_MT_LOAD_INIT, "Software Load Init" }, 144 { NM_MT_LOAD_INIT_ACK, "Software Load Init ACK" }, 145 { NM_MT_LOAD_INIT_NACK, "Software Load Init NACK" }, 146 { NM_MT_LOAD_SEG, "Software Load Segment" }, 147 { NM_MT_LOAD_SEG_ACK, "Software Load Segment ACK" }, 148 { NM_MT_LOAD_END, "Software Load End" }, 149 { NM_MT_LOAD_END_ACK, "Software Load End ACK" }, 150 { NM_MT_LOAD_END_NACK, "Software Load End NACK" }, 151 { NM_MT_SW_ACT_REQ, "Software Activate Request" }, 152 { NM_MT_SW_ACT_REQ_ACK, "Software Activate Request ACK" }, 153 { NM_MT_SW_ACT_REQ_NACK, "Software Activate Request NACK" }, 154 { NM_MT_ACTIVATE_SW, "Activate Software" }, 155 { NM_MT_ACTIVATE_SW_ACK, "Activate Software ACK" }, 156 { NM_MT_ACTIVATE_SW_NACK, "Activate Software NACK" }, 157 { NM_MT_SW_ACTIVATED_REP, "Software Activated Report" }, 158 { NM_MT_ESTABLISH_TEI, "Establish TEI" }, 159 { NM_MT_ESTABLISH_TEI_ACK, "Establish TEI ACK" }, 160 { NM_MT_ESTABLISH_TEI_NACK, "Establish TEI NACK" }, 161 { NM_MT_CONN_TERR_SIGN, "Connect Terrestrial Signalling" }, 162 { NM_MT_CONN_TERR_SIGN_ACK, "Connect Terrestrial Signalling ACK" }, 163 { NM_MT_CONN_TERR_SIGN_NACK, "Connect Terrestrial Signalling NACK" }, 164 { NM_MT_DISC_TERR_SIGN, "Disconnect Terrestrial Signalling" }, 165 { NM_MT_DISC_TERR_SIGN_ACK, "Disconnect Terrestrial Signalling ACK" }, 166 { NM_MT_DISC_TERR_SIGN_NACK, "Disconnect Terrestrial Signalling NACK" }, 167 { NM_MT_CONN_TERR_TRAF, "Connect Terrestrial Traffic" }, 168 { NM_MT_CONN_TERR_TRAF_ACK, "Connect Terrestrial Traffic ACK" }, 169 { NM_MT_CONN_TERR_TRAF_NACK, "Connect Terrestrial Traffic NACK" }, 170 { NM_MT_DISC_TERR_TRAF, "Disconnect Terrestrial Traffic" }, 171 { NM_MT_DISC_TERR_TRAF_ACK, "Disconnect Terrestrial Traffic ACK" }, 172 { NM_MT_DISC_TERR_TRAF_NACK, "Disconnect Terrestrial Traffic NACK" }, 173 { NM_MT_CONN_MDROP_LINK, "Connect Multi-Drop Link" }, 174 { NM_MT_CONN_MDROP_LINK_ACK, "Connect Multi-Drop Link ACK" }, 175 { NM_MT_CONN_MDROP_LINK_NACK, "Connect Multi-Drop Link NACK" }, 176 { NM_MT_DISC_MDROP_LINK, "Disconnect Multi-Drop Link" }, 177 { NM_MT_DISC_MDROP_LINK_ACK, "Disconnect Multi-Drop Link ACK" }, 178 { NM_MT_DISC_MDROP_LINK_NACK, "Disconnect Multi-Drop Link NACK" }, 179 { NM_MT_SET_BTS_ATTR, "Set BTS Attributes" }, 180 { NM_MT_SET_BTS_ATTR_ACK, "Set BTS Attributes ACK" }, 181 { NM_MT_SET_BTS_ATTR_NACK, "Set BTS Attributes NACK" }, 182 { NM_MT_SET_RADIO_ATTR, "Set Radio Carrier Attributes" }, 183 { NM_MT_SET_RADIO_ATTR_ACK, "Set Radio Carrier Attributes ACK" }, 184 { NM_MT_SET_RADIO_ATTR_NACK, "Set Radio Carrier Attributes NACK" }, 185 { NM_MT_SET_CHAN_ATTR, "Set Channel Attributes" }, 186 { NM_MT_SET_CHAN_ATTR_ACK, "Set Channel Attributes ACK" }, 187 { NM_MT_SET_CHAN_ATTR_NACK, "Set Channel Attributes NACK" }, 188 { NM_MT_PERF_TEST, "Perform Test" }, 189 { NM_MT_PERF_TEST_ACK, "Perform Test ACK" }, 190 { NM_MT_PERF_TEST_NACK, "Perform Test NACK" }, 191 { NM_MT_TEST_REP, "Test Report" }, 192 { NM_MT_SEND_TEST_REP, "Send Test Report" }, 193 { NM_MT_SEND_TEST_REP_ACK, "Send Test Report ACK" }, 194 { NM_MT_SEND_TEST_REP_NACK, "Send Test Report NACK" }, 195 { NM_MT_STOP_TEST, "Stop Test" }, 196 { NM_MT_STOP_TEST_ACK, "Stop Test ACK" }, 197 { NM_MT_STOP_TEST_NACK, "Stop Test NACK" }, 198 { NM_MT_STATECHG_EVENT_REP, "State Changed Event Report" }, 199 { NM_MT_FAILURE_EVENT_REP, "Failure Event Report" }, 200 { NM_MT_STOP_EVENT_REP, "Stop Sending Event Reports" }, 201 { NM_MT_STOP_EVENT_REP_ACK, "Stop Sending Event Reports ACK" }, 202 { NM_MT_STOP_EVENT_REP_NACK, "Stop Sending Event Reports NACK" }, 203 { NM_MT_REST_EVENT_REP, "Restart Sending Event Reports" }, 204 { NM_MT_REST_EVENT_REP_ACK, "Restart Sending Event Reports ACK" }, 205 { NM_MT_REST_EVENT_REP_NACK, "Restart Sending Event Reports NACK" }, 206 { NM_MT_CHG_ADM_STATE, "Change Administrative State" }, 207 { NM_MT_CHG_ADM_STATE_ACK, "Change Administrative State ACK" }, 208 { NM_MT_CHG_ADM_STATE_NACK, "Change Administrative State NACK" }, 209 { NM_MT_CHG_ADM_STATE_REQ, "Change Administrative State Request" }, 210 { NM_MT_CHG_ADM_STATE_REQ_ACK, "Change Administrative State Request ACK" }, 211 { NM_MT_CHG_ADM_STATE_REQ_NACK, "Change Administrative State Request NACK" }, 212 { NM_MT_REP_OUTST_ALARMS, "Report Outstanding Alarms" }, 213 { NM_MT_REP_OUTST_ALARMS_ACK, "Report Outstanding Alarms ACK" }, 214 { NM_MT_REP_OUTST_ALARMS_NACK, "Report Outstanding Alarms NACK" }, 215 { NM_MT_CHANGEOVER, "Changeover" }, 216 { NM_MT_CHANGEOVER_ACK, "Changeover ACK" }, 217 { NM_MT_CHANGEOVER_NACK, "Changeover NACK" }, 218 { NM_MT_OPSTART, "Opstart" }, 219 { NM_MT_OPSTART_ACK, "Opstart ACK" }, 220 { NM_MT_OPSTART_NACK, "Opstart NACK" }, 221 { NM_MT_REINIT, "Reinitialize" }, 222 { NM_MT_REINIT_ACK, "Reinitialize ACK" }, 223 { NM_MT_REINIT_NACK, "Reinitialize NACK" }, 224 { NM_MT_SET_SITE_OUT, "Set Site Outputs" }, 225 { NM_MT_SET_SITE_OUT_ACK, "Set Site Outputs ACK" }, 226 { NM_MT_SET_SITE_OUT_NACK, "Set Site Outputs NACK" }, 227 { NM_MT_CHG_HW_CONF, "Change HW Configuration" }, 228 { NM_MT_CHG_HW_CONF_ACK, "Change HW Configuration ACK" }, 229 { NM_MT_CHG_HW_CONF_NACK, "Change HW Configuration NACK" }, 230 { NM_MT_MEAS_RES_REQ, "Measurement Result Request" }, 231 { NM_MT_MEAS_RES_RESP, "Measurement Result Response" }, 232 { NM_MT_STOP_MEAS, "Stop Measurement" }, 233 { NM_MT_START_MEAS, "Start Measurement" }, 234 { NM_MT_GET_ATTR, "Get Attributes" }, 235 { NM_MT_GET_ATTR_RESP, "Get Attributes Response" }, 236 { NM_MT_GET_ATTR_NACK, "Get Attributes NACK" }, 237 { NM_MT_SET_ALARM_THRES, "Set Alarm Threshold" }, 238 { NM_MT_SET_ALARM_THRES_ACK, "Set Alarm Threshold ACK" }, 239 { NM_MT_SET_ALARM_THRES_NACK, "Set Alarm Threshold NACK" }, 240 { 0, NULL } 241 }; 242 243 /* proprietary ip.access message types, not in the standard */ 244 static const value_string _oml_fom_msgtype_vals_ipa[] = { 245 { NM_MT_IPACC_RESTART, "IPA Restart" }, 246 { NM_MT_IPACC_RESTART_ACK, "IPA Restart ACK" }, 247 { NM_MT_IPACC_RSL_CONNECT, "IPA RSL Connect" }, 248 { NM_MT_IPACC_RSL_CONNECT_ACK, "IPA RSL Connect ACK" }, 249 { NM_MT_IPACC_RSL_CONNECT_NACK, "IPA RSL Connect NACK" }, 250 { NM_MT_IPACC_RSL_DISCONNECT, "IPA RSL Disconnect" }, 251 { NM_MT_IPACC_RSL_DISCONNECT_ACK, "IPA RSL Disconnect ACK" }, 252 { NM_MT_IPACC_RSL_DISCONNECT_NACK, "IPA RSL Disconnect NACK" }, 253 { NM_MT_IPACC_CONN_TRAF, "IPA Connect Traffic" }, 254 { NM_MT_IPACC_CONN_TRAF_ACK, "IPA Connect Traffic ACK" }, 255 { NM_MT_IPACC_CONN_TRAF_NACK, "IPA Connect Traffic NACK" }, 256 { NM_MT_IPACC_DISC_TRAF, "IPA Disconnect Traffic" }, 257 { NM_MT_IPACC_DISC_TRAF_ACK, "IPA Disconnect Traffic ACK" }, 258 { NM_MT_IPACC_DISC_TRAF_NACK, "IPA Disconnect Traffic NACK" }, 259 { NM_MT_IPACC_DEF_BOOT_SW, "IPA Default Boot Software" }, 260 { NM_MT_IPACC_DEF_BOOT_SW_ACK, "IPA Default Boot Software ACK" }, 261 { NM_MT_IPACC_DEF_BOOT_SW_NACK, "IPA Default Boot Software NACK" }, 262 { NM_MT_IPACC_SET_NVATTR, "IPA Set NVRAM Attributes" }, 263 { NM_MT_IPACC_SET_NVATTR_ACK, "IPA Set NVRAM Attributes ACK" }, 264 { NM_MT_IPACC_SET_NVATTR_NACK, "IPA Set NVRAM Attributes NACK" }, 265 { NM_MT_IPACC_GET_NVATTR, "IPA Get NVRAM Attributes" }, 266 { NM_MT_IPACC_GET_NVATTR_ACK, "IPA Get NVRAM Attributes ACK" }, 267 { NM_MT_IPACC_GET_NVATTR_NACK, "IPA Get NVRAM Attributes NACK" }, 268 { NM_MT_IPACC_SET_ATTR, "IPA Set Attributes" }, 269 { NM_MT_IPACC_SET_ATTR_ACK, "IPA Set Attributes ACK" }, 270 { NM_MT_IPACC_SET_ATTR_NACK, "IPA Set Attributes NACK" }, 271 { NM_MT_IPACC_ATTR_CHG_EVT, "IPA Attribute Change Event" }, 272 { NM_MT_IPACC_SW_DEACT, "IPA Software Deactivate" }, 273 { NM_MT_IPACC_SW_DEACT_ACK, "IPA Software Deactivate ACK" }, 274 { NM_MT_IPACC_SW_DEACT_NACK, "IPA Software Deactivate NACK" }, 275 { NM_MT_IPACC_MEAS_RES_REQ_NACK,"IPA Measurement Result Request NACK" }, 276 { NM_MT_IPACC_START_MEAS_NACK, "IPA Start Measurement NACK" }, 277 { NM_MT_IPACC_STOP_MEAS_NACK, "IPA Stop Measurement NACK" }, 278 { 0, NULL } 279 }; 280 281 /* proprietary Siemens message types, not in the standard */ 282 static const value_string _oml_fom_msgtype_vals_bs11[] = { 283 { NM_MT_BS11_RESET_RESOURCE, "SIE Reset Resource" }, 284 { NM_MT_BS11_BEGIN_DB_TX, "SIE Begin Database Transmission" }, 285 { NM_MT_BS11_BEGIN_DB_TX_ACK, "SIE Begin Database Transmission ACK" }, 286 { NM_MT_BS11_BEGIN_DB_TX_NACK, "SIE Begin Database Transmission NACK" }, 287 { NM_MT_BS11_END_DB_TX, "SIE End Database Transmission" }, 288 { NM_MT_BS11_END_DB_TX_ACK, "SIE End Database Transmission ACK" }, 289 { NM_MT_BS11_END_DB_TX_NACK, "SIE End Database Transmission NACK" }, 290 { NM_MT_BS11_CREATE_OBJ, "SIE Create Object" }, 291 { NM_MT_BS11_CREATE_OBJ_ACK, "SIE Create Object ACK" }, 292 { NM_MT_BS11_CREATE_OBJ_NACK, "SIE Create Object NACK" }, 293 { NM_MT_BS11_DELETE_OBJ, "SIE Delete Object" }, 294 { NM_MT_BS11_DELETE_OBJ_ACK, "SIE Delete Object ACK" }, 295 { NM_MT_BS11_DELETE_OBJ_NACK, "SIE Delete Object NACK" }, 296 { NM_MT_BS11_SET_ATTR, "SIE Set Attribute" }, 297 { NM_MT_BS11_SET_ATTR_ACK, "SIE Set Attribute ACK" }, 298 { NM_MT_BS11_SET_ATTR_NACK, "SIE Set Attribute NACK" }, 299 { NM_MT_BS11_GET_STATE, "SIE Get State" }, 300 { NM_MT_BS11_GET_STATE_ACK, "SIE Get State ACK" }, 301 { NM_MT_BS11_LMT_LOGON, "SIE LMT Logon" }, 302 { NM_MT_BS11_LMT_LOGON_ACK, "SIE LMT Logon ACK" }, 303 { NM_MT_BS11_RESTART, "SIE Restart" }, 304 { NM_MT_BS11_RESTART_ACK, "SIE Restart ACK" }, 305 { NM_MT_BS11_DISCONNECT, "SIE Disconnect BTS" }, 306 { NM_MT_BS11_DISCONNECT_ACK, "SIE Disconnect BTS ACK" }, 307 { NM_MT_BS11_LMT_LOGOFF, "SIE LMT Logoff" }, 308 { NM_MT_BS11_LMT_LOGOFF_ACK, "SIE LMT Logoff ACK" }, 309 { NM_MT_BS11_RECONNECT, "SIE Reconnect BTS" }, 310 { NM_MT_BS11_RECONNECT_ACK, "SIE Reconnect BTS ACK" }, 311 { 0, NULL } 312 }; 313 314 /* initialize with the standard message types only */ 315 static value_string_ext oml_fom_msgtype_vse = VALUE_STRING_EXT_INIT(_oml_fom_msgtype_vals); 316 317 /* TS 12.21 Section 9.2: Object Class */ 318 static const value_string oml_fom_objclass_vals[] = { 319 { NM_OC_SITE_MANAGER, "BTS Site Manager" }, 320 { NM_OC_BTS, "BTS" }, 321 { NM_OC_RADIO_CARRIER, "Radio Carrier" }, 322 { NM_OC_CHANNEL, "Radio Channel" }, 323 { NM_OC_BASEB_TRANSC, "Baseband Transceiver" }, 324 325 /* proprietary, vendor specific */ 326 { NM_OC_BS11_ADJC, "SIE Adjacend Channel" }, 327 { NM_OC_BS11_HANDOVER, "SIE Handover" }, 328 { NM_OC_BS11_PWR_CTRL, "SIE Power Control" }, 329 { NM_OC_BS11_BTSE, "SIE BTSE" }, 330 { NM_OC_BS11_RACK, "SIE Rack" }, 331 { NM_OC_BS11, "SIE SiemensHW" }, 332 { NM_OC_BS11_TEST, "SIE Test" }, 333 { NM_OC_BS11_ENVABTSE, "SIE EnvaBTSE" }, 334 { NM_OC_BS11_BPORT, "SIE BPort" }, 335 336 { NM_OC_GPRS_NSE, "GPRS NSE" }, 337 { NM_OC_GPRS_CELL, "GPRS Cell" }, 338 { NM_OC_GPRS_NSVC0, "GPRS NSVC0" }, 339 { NM_OC_GPRS_NSVC1, "GPRS NSVC1" }, 340 341 { NM_OC_NULL, "NULL" }, 342 { 0, NULL } 343 }; 344 345 /* TS 12.21 Section 9.4: Attributes */ 346 static const value_string _oml_fom_attr_vals[] = { 347 { NM_ATT_ABIS_CHANNEL, "A-bis Channel" }, 348 { NM_ATT_ADD_INFO, "Additional Information" }, 349 { NM_ATT_ADD_TEXT, "Additional Text" }, 350 { NM_ATT_ADM_STATE, "Administrative State" }, 351 { NM_ATT_ARFCN_LIST, "ARFCN List" }, 352 { NM_ATT_AUTON_REPORT, "Autonomously Report" }, 353 { NM_ATT_AVAIL_STATUS, "Availability Status" }, 354 { NM_ATT_BCCH_ARFCN, "BCCH ARFCN" }, 355 { NM_ATT_BSIC, "BSIC" }, 356 { NM_ATT_BTS_AIR_TIMER, "BTS Air Timer" }, 357 { NM_ATT_CCCH_L_I_P, "CCCH Load Indication Period" }, 358 { NM_ATT_CCCH_L_T, "CCCH Load Threshold" }, 359 { NM_ATT_CHAN_COMB, "Channel Combination" }, 360 { NM_ATT_CONN_FAIL_CRIT, "Connection Fail Criterion" }, 361 { NM_ATT_DEST, "Destination" }, 362 { NM_ATT_EVENT_TYPE, "Event Type" }, 363 { NM_ATT_FILE_ID, "File ID" }, 364 { NM_ATT_FILE_VERSION, "File Version" }, 365 { NM_ATT_GSM_TIME, "GSM Time" }, 366 { NM_ATT_HSN, "HSN" }, 367 { NM_ATT_HW_CONFIG, "HW Configuration" }, 368 { NM_ATT_HW_DESC, "HW Description" }, 369 { NM_ATT_INTAVE_PARAM, "Intave Parameter" }, 370 { NM_ATT_INTERF_BOUND, "Interference Boundaries" }, 371 { NM_ATT_LIST_REQ_ATTR, "List of required Attributes" }, 372 { NM_ATT_MAIO, "MAIO" }, 373 { NM_ATT_MANUF_STATE, "Manufacturer Dependent State" }, 374 { NM_ATT_MANUF_THRESH, "Manufacturer Dependent Thresholds" }, 375 { NM_ATT_MANUF_ID, "Manufacturer Id" }, 376 { NM_ATT_MAX_TA, "Maximum Timing Advance" }, 377 { NM_ATT_MDROP_LINK, "Multi-drop BSC Link" }, 378 { NM_ATT_MDROP_NEXT, "Multi-drop next BTS Link" }, 379 { NM_ATT_NACK_CAUSES, "NACK Causes" }, 380 { NM_ATT_NY1, "Ny1" }, 381 { NM_ATT_OPER_STATE, "Operational State" }, 382 { NM_ATT_OVERL_PERIOD, "Overload Period" }, 383 { NM_ATT_PHYS_CONF, "Physical Config" }, 384 { NM_ATT_POWER_CLASS, "Power Class" }, 385 { NM_ATT_POWER_THRESH, "Power Output Thresholds" }, 386 { NM_ATT_PROB_CAUSE, "Probable Cause" }, 387 { NM_ATT_RACH_B_THRESH, "RACH Busy Threshold" }, 388 { NM_ATT_LDAVG_SLOTS, "RACH Load Averaging Slots" }, 389 { NM_ATT_RAD_SUBC, "Radio Sub Channel" }, 390 { NM_ATT_RF_MAXPOWR_R, "RF Max Power Reduction" }, 391 { NM_ATT_SITE_INPUTS, "Site Inputs" }, 392 { NM_ATT_SITE_OUTPUTS, "Site Outputs" }, 393 { NM_ATT_SOURCE, "Source" }, 394 { NM_ATT_SPEC_PROB, "Specific Problems" }, 395 { NM_ATT_START_TIME, "Starting Time" }, 396 { NM_ATT_T200, "T200" }, 397 { NM_ATT_TEI, "TEI" }, 398 { NM_ATT_TEST_DUR, "Test Duration" }, 399 { NM_ATT_TEST_NO, "Test No" }, 400 { NM_ATT_TEST_REPORT, "Test Report Info" }, 401 { NM_ATT_VSWR_THRESH, "VSWR Thresholds " }, 402 { NM_ATT_WINDOW_SIZE, "Window Size" }, 403 { NM_ATT_BS11_RSSI_OFFS, "SIE RSSI Offset" }, 404 { NM_ATT_BS11_TXPWR, "SIE TX Power" }, 405 { NM_ATT_BS11_DIVERSITY, "SIE Diversity" }, 406 { NM_ATT_TSC, "Training Sequence Code" }, 407 { NM_ATT_SW_CONFIG, "SW Configuration" }, 408 { NM_ATT_SW_DESCR, "SW Description" }, 409 { NM_ATT_SEVERITY, "Perceived Severity" }, 410 { NM_ATT_GET_ARI, "Get ARI" }, 411 { NM_ATT_HW_CONF_CHG, "HW Configuration Change" }, 412 { NM_ATT_OUTST_ALARM, "Outstanding Alarm" }, 413 { NM_ATT_FILE_DATA, "File Data" }, 414 { NM_ATT_MEAS_RES, "Measurement Result" }, 415 { NM_ATT_MEAS_TYPE, "Measurement Type" }, 416 { 0, NULL } 417 }; 418 419 static value_string_ext oml_fom_attr_vse = VALUE_STRING_EXT_INIT(_oml_fom_attr_vals); 420 421 /* proprietary Siemens attributes, not in the standard */ 422 static const value_string oml_fom_attr_vals_bs11[] = { 423 { NM_ATT_BS11_OM_LAPD_REL_TIMER,"SIE OML LAPD Release Timer" }, 424 { NM_ATT_BS11_RF_RES_IND_PER, "SIE RF Resource Indication Period" }, 425 { NM_ATT_BS11_RX_LEV_MIN_CELL, "SIE RxLevel Min Cell" }, 426 { NM_ATT_BS11_ABIS_EXT_TIME, "SIE A-bis external time" }, 427 { NM_ATT_BS11_TIMER_HO_REQUEST, "SIE Timer Handover Request" }, 428 { NM_ATT_BS11_TIMER_NCELL, "SIE Timer nCell" }, 429 { NM_ATT_BS11_TSYNC, "SIE Timer Tsync" }, 430 { NM_ATT_BS11_TTRAU, "SIE Timer Ttrau" }, 431 { NM_ATT_BS11_EMRG_CFG_MEMBER, "SIE Emergency Config Member" }, 432 { NM_ATT_BS11_TRX_AREA, "SIE TRX Area" }, 433 { NM_ATT_BS11_BCCH_RECONF, "SIE BCCH Reconfiguration" }, 434 { NM_ATT_BS11_BIT_ERR_THESH, "SIE Bit Error Threshold" }, 435 { NM_ATT_BS11_BOOT_SW_VERS, "SIE Boot Software Version" }, 436 { NM_ATT_BS11_CCLK_ACCURACY, "SIE CCLK Accuracy" }, 437 { NM_ATT_BS11_CCLK_TYPE, "SIE CCLK Type" }, 438 { NM_ATT_BS11_INP_IMPEDANCE, "SIE Input Impedance" }, 439 { NM_ATT_BS11_L1_PROT_TYPE, "SIE L1 Protocol Type" }, 440 { NM_ATT_BS11_LINE_CFG, "SIE Line Configuration" }, 441 { NM_ATT_BS11_LI_PORT_1, "SIE Line Interface Port 1" }, 442 { NM_ATT_BS11_LI_PORT_2, "SIE Line Interface Port 2" }, 443 { NM_ATT_BS11_L1_REM_ALM_TYPE, "SIE L1 Remote Alarm Type" }, 444 { NM_ATT_BS11_SW_LOAD_INTENDED, "SIE Software Load Intended" }, 445 { NM_ATT_BS11_SW_LOAD_SAFETY, "SIE Software Load Safety" }, 446 { NM_ATT_BS11_SW_LOAD_STORED, "SIE Software Load Stored" }, 447 { NM_ATT_BS11_VENDOR_NAME, "SIE Vendor Name" }, 448 { NM_ATT_BS11_HOPPING_MODE, "SIE Hopping Mode" }, 449 { NM_ATT_BS11_LMT_LOGON_SESSION,"SIE LMT Logon Session" }, 450 { NM_ATT_BS11_LMT_LOGIN_TIME, "SIE LMT Login Time" }, 451 { NM_ATT_BS11_LMT_USER_ACC_LEV, "SIE LMT User Account Level" }, 452 { NM_ATT_BS11_LMT_USER_NAME, "SIE LMT User Account Name" }, 453 { NM_ATT_BS11_L1_CONTROL_TS, "SIE L1 Control TS" }, 454 { NM_ATT_BS11_RADIO_MEAS_GRAN, "SIE Radio Measurement Granularity" }, 455 { NM_ATT_BS11_RADIO_MEAS_REP, "SIE Rdadio Measurement Report" }, 456 { NM_ATT_BS11_SH_LAPD_INT_TIMER,"SIE LAPD Internal Timer" }, 457 { NM_ATT_BS11_BTS_STATE, "SIE BTS State" }, 458 { NM_ATT_BS11_E1_STATE, "SIE E1 State" }, 459 { NM_ATT_BS11_PLL, "SIE PLL" }, 460 { NM_ATT_BS11_RX_OFFSET, "SIE Rx Offset" }, 461 { NM_ATT_BS11_ANT_TYPE, "SIE Antenna Type" }, 462 { NM_ATT_BS11_PLL_MODE, "SIE PLL Mode" }, 463 { NM_ATT_BS11_PASSWORD, "SIE Password" }, 464 { NM_ATT_BS11_ESN_FW_CODE_NO, "SIE ESN FW Code Number" }, 465 { NM_ATT_BS11_ESN_HW_CODE_NO, "SIE ESN HW Code Number" }, 466 { NM_ATT_BS11_ESN_PCB_SERIAL, "SIE ESN PCB Serial Number" }, 467 { NM_ATT_BS11_EXCESSIVE_DISTANCE, "SIE Excessive Distance" }, 468 { NM_ATT_BS11_ALL_TEST_CATG, "SIE All Test Categories" }, 469 { NM_ATT_BS11_BTSLS_HOPPING, "SIE BTS LS Hopping" }, 470 { NM_ATT_BS11_CELL_ALLOC_NR, "SIE Cell Allocation Number" }, 471 { NM_ATT_BS11_CELL_GLOBAL_ID, "SIE Cell Global ID" }, 472 { NM_ATT_BS11_ENA_INTERF_CLASS, "SIE Enable Interference Class" }, 473 { NM_ATT_BS11_ENA_INT_INTEC_HANDO, "SIE Enable Int Intec Handover" }, 474 { NM_ATT_BS11_ENA_INT_INTRC_HANDO, "SIE Enable Int Intrc Handover" }, 475 { NM_ATT_BS11_ENA_MS_PWR_CTRL, "SIE Enable MS Power Control" }, 476 { NM_ATT_BS11_ENA_PWR_BDGT_HO, "SIE Enable Power Budget HO" }, 477 { NM_ATT_BS11_ENA_RXLEV_HO, "SIE Enable RxLevel HO" }, 478 { NM_ATT_BS11_ENA_RXQUAL_HO, "SIE Enable RxQual HO" }, 479 { NM_ATT_BS11_FACCH_QUAL, "SIE FACCH Quality" }, 480 { 0, NULL } 481 }; 482 483 /* proprietary ip.access attributes, not in the standard */ 484 static const value_string oml_fom_attr_vals_ipa[] = { 485 { NM_ATT_IPACC_DST_IP, "IPA Destination IP Address" }, 486 { NM_ATT_IPACC_DST_IP_PORT, "IPA Destionation IP Port" }, 487 { NM_ATT_IPACC_SSRC, "IPA RTP SSRC" }, 488 { NM_ATT_IPACC_RTP_PAYLD_TYPE, "IPA RTP Payload Type" }, 489 { NM_ATT_IPACC_BASEB_ID, "IPA Baseband Identifier" }, 490 { NM_ATT_IPACC_STREAM_ID, "IPA Stream Identifier" }, 491 { NM_ATT_IPACC_NV_FLAGS, "IPA NVRAM Flags" }, 492 { NM_ATT_IPACC_FREQ_CTRL, "IPA Frequency Control" }, 493 { NM_ATT_IPACC_PRIM_OML_CFG, "IPA Primary OML Config" }, 494 { NM_ATT_IPACC_SEC_OML_CFG, "IPA Secondary OML Config" }, 495 { NM_ATT_IPACC_IP_IF_CFG, "IPA IP Interface Config" }, 496 { NM_ATT_IPACC_IP_GW_CFG, "IPA IP Gateway Config" }, 497 { NM_ATT_IPACC_IN_SERV_TIME, "IPA In Service Time" }, 498 { NM_ATT_IPACC_TRX_BTS_ASS, "IPA TRX BTS Assignment" }, 499 { NM_ATT_IPACC_LOCATION, "IPA BTS Location Name" }, 500 { NM_ATT_IPACC_PAGING_CFG, "IPA Paging Configuration" }, 501 { NM_ATT_IPACC_FILE_DATA, "IPA File Data" }, 502 { NM_ATT_IPACC_UNIT_ID, "IPA Unit ID" }, 503 { NM_ATT_IPACC_PARENT_UNIT_ID, "IPA Parent Unit ID" }, 504 { NM_ATT_IPACC_UNIT_NAME, "IPA Unit Name" }, 505 { NM_ATT_IPACC_SNMP_CFG, "IPA SNMP Config" }, 506 { NM_ATT_IPACC_PRIM_OML_CFG_LIST, "IPA Primary OML Config List" }, 507 { NM_ATT_IPACC_PRIM_OML_FB_TOUT,"IPA Primary OML Fallback Timeout" }, 508 { NM_ATT_IPACC_CUR_SW_CFG, "IPA Current Software Config" }, 509 { NM_ATT_IPACC_TIMING_BUS, "IPA Timing Bus" }, 510 { NM_ATT_IPACC_CGI, "IPA CGI" }, 511 { NM_ATT_IPACC_RAC, "IPA RAC" }, 512 { NM_ATT_IPACC_OBJ_VERSION, "IPA Object Version" }, 513 { NM_ATT_IPACC_GPRS_PAGING_CFG, "IPA GPRS Paging Configuration" }, 514 { NM_ATT_IPACC_NSEI, "IPA NSEI" }, 515 { NM_ATT_IPACC_BVCI, "IPA BVCI" }, 516 { NM_ATT_IPACC_NSVCI, "IPA NSVCI" }, 517 { NM_ATT_IPACC_NS_CFG, "IPA NS Configuration" }, 518 { NM_ATT_IPACC_BSSGP_CFG, "IPA BSSGP Configuration" }, 519 { NM_ATT_IPACC_NS_LINK_CFG, "IPA NS Link Configuration" }, 520 { NM_ATT_IPACC_RLC_CFG, "IPA RLC Configuration" }, 521 { NM_ATT_IPACC_ALM_THRESH_LIST, "IPA Alarm Threshold List" }, 522 { NM_ATT_IPACC_MONIT_VAL_LIST, "IPA Monitored Value List" }, 523 { NM_ATT_IPACC_TIB_CONTROL, "IPA Timing Interface Bus Control" }, 524 { NM_ATT_IPACC_SUPP_FEATURES, "IPA Supported Features" }, 525 { NM_ATT_IPACC_CODING_SCHEMES, "IPA Coding Schemes" }, 526 { NM_ATT_IPACC_RLC_CFG_2, "IPA RLC Configuration 2" }, 527 { NM_ATT_IPACC_HEARTB_TOUT, "IPA Heartbeat Timeout" }, 528 { NM_ATT_IPACC_UPTIME, "IPA Uptime" }, 529 { NM_ATT_IPACC_RLC_CFG_3, "IPA RLC Configuration 3" }, 530 { NM_ATT_IPACC_SSL_CFG, "IPA SSL Configuration" }, 531 { NM_ATT_IPACC_SEC_POSSIBLE, "IPA Security Possible" }, 532 { NM_ATT_IPACC_IML_SSL_STATE, "IPA IML SSL State" }, 533 { NM_ATT_IPACC_REVOC_DATE, "IPA Revocation Date" }, 534 { 0, NULL } 535 }; 536 537 #if 0 538 static gint merge_value_strings(value_string **dst, const value_string *base, const value_string delta) 539 { 540 const value_string *cur; 541 guint num_base, num_delta, num_max, num_out; 542 543 for (cur = base; cur->value || cur->strptr; cur++) 544 num_base++; 545 for (cur = delta; cur->value || cur->strptr; cur++) 546 num_delta++; 547 num_max = num_base + num_delta + 1; /* terminating entry */ 548 549 *dst = g_malloc(sizeof(value_string) * num_max); 550 if (!*dst) 551 return -ENOMEM; 552 /* zero-initialize the entire array so we always are zero- 553 * terminated */ 554 memset(*dst, 0, sizeof(value_string * num_max)); 555 556 /* initialize with the 'base' */ 557 memcpy(*dst, base, sizeof(value_string)*num_base); 558 num_out = num_base; 559 560 /* patch/append the delta */ 561 for (cur = delta; cur->value || cur->strptr; cur++) { 562 guint idx; 563 if (match_strval_idx(cur->value, base, &idx)) { 564 /* the base set already contains a definition, 565 * we need to override it */ 566 memcpy((*dst)[idx], cur, sizeof(value_string)); 567 } else { 568 /* append the entry to the end */ 569 memcpy((*dst)[num_out], cur, sizeof(value_string)); 570 num_out++; 571 } 572 } 573 574 return 0; 575 } 576 #endif 577 578 static const gchar * 579 _match_oml_fom_msgtype(const guint32 val, const value_string_ext *vs) 580 { 581 const char *ret; 582 ret = match_strval(val, vs->vals); 583 if (!ret) 584 ret = match_strval(val, _oml_fom_msgtype_vals); 585 return ret; 586 } 587 588 static const gchar * 589 _match_oml_fom_attr(const guint32 val, const value_string_ext *vs) 590 { 591 const char *ret; 592 ret = match_strval(val, vs->vals); 593 if (!ret) 594 ret = match_strval(val, _oml_fom_attr_vals); 595 return ret; 596 } 597 598 /* Section 9.4.4: Administrative State */ 599 static const value_string oml_adm_state_vals[] = { 600 { NM_STATE_LOCKED, "Locked" }, 601 { NM_STATE_UNLOCKED, "Unlocked" }, 602 { NM_STATE_SHUTDOWN, "Shutdown" }, 603 { NM_STATE_NULL, "Null" }, 604 { 0, NULL } 605 }; 606 607 static const value_string oml_oper_state_vals[] = { 608 { 1, "Disabled" }, 609 { 2, "Enabled" }, 610 { 0xff, "NULL" }, 611 { 0, NULL } 612 }; 613 614 /* Section 9.4.7 Availability Status */ 615 static const value_string oml_avail_state_vals[] = { 616 { 0, "In test" }, 617 { 1, "Failed" }, 618 { 2, "Power off" }, 619 { 3, "Off line" }, 620 { 5, "Dependency" }, 621 { 6, "Degraded" }, 622 { 7, "Not installed" }, 623 { 0xff, "OK" }, 624 { 0, NULL } 625 }; 626 627 /* Section 9.4.13: Channel Combination */ 628 static const value_string oml_chan_comb_vals[] = { 629 { NM_CHANC_TCHFull, "TCH/F" }, 630 { NM_CHANC_TCHHalf, "TCH/H" }, 631 { NM_CHANC_TCHHalf2, "TCH/H 2" }, 632 { NM_CHANC_SDCCH, "SDCCH" }, 633 { NM_CHANC_mainBCCH, "Main BCCH" }, 634 { NM_CHANC_BCCHComb, "Combined BCCH" }, 635 { NM_CHANC_BCCH, "BCCH" }, 636 { NM_CHANC_BCCH_CBCH, "BCCH+CBCH" }, 637 { NM_CHANC_SDCCH_CBCH, "SDCCH+CBCH" }, 638 { 0, NULL } 639 }; 640 641 /* Section 9.4.16: Event Type */ 642 static const value_string oml_event_type_vals[] = { 643 { NM_EVT_COMM_FAIL, "Communication Failure" }, 644 { NM_EVT_QOS_FAIL, "QoS Failure" }, 645 { NM_EVT_PROC_FAIL, "Processor Failure" }, 646 { NM_EVT_EQUIP_FAIL, "Equipment Failure" }, 647 { NM_EVT_ENV_FAIL, "Environment Failure" }, 648 { 0, NULL } 649 }; 650 651 /* Section 9.4.63: Perceived Severity */ 652 static const value_string oml_severity_vals[] = { 653 { NM_SEVER_CEASED, "Ceased" }, 654 { NM_SEVER_CRITICAL, "Critical" }, 655 { NM_SEVER_MAJOR, "Major" }, 656 { NM_SEVER_MINOR, "Minor" }, 657 { NM_SEVER_WARNING, "Warning" }, 658 { NM_SEVER_INDETERMINATE, "Indeterminate" }, 659 { 0, NULL } 660 }; 661 662 /* Section 9.4.36: NACK Causes */ 663 static const value_string oml_nack_cause[] = { 664 { NM_NACK_INCORR_STRUCT, "Incorrect message structure" }, 665 { NM_NACK_MSGTYPE_INVAL, "Invalid message type value" }, 666 { NM_NACK_OBJCLASS_INVAL, "Invalid Object class value" }, 667 { NM_NACK_OBJCLASS_NOTSUPP, "Object Class not supported" }, 668 { NM_NACK_BTSNR_UNKN, "BTS Number unknown" }, 669 { NM_NACK_TRXNR_UNKN, "TRX Number unknown" }, 670 { NM_NACK_OBJINST_UNKN, "Object Instance unknown" }, 671 { NM_NACK_ATTRID_INVAL, "Invalid Attribute ID value" }, 672 { NM_NACK_ATTRID_NOTSUPP, "Attribute ID not supported" }, 673 { NM_NACK_PARAM_RANGE, "Parameter value out of range" }, 674 { NM_NACK_ATTRLIST_INCONSISTENT, "Inconsistency in Attribute list" }, 675 { NM_NACK_SPEC_IMPL_NOTSUPP, "Specified Implementation not supported" }, 676 { NM_NACK_CANT_PERFORM, "Message cannot be performed" }, 677 { NM_NACK_RES_NOTIMPL, "Resource not implemented" }, 678 { NM_NACK_RES_NOTAVAIL, "Resource not available" }, 679 { NM_NACK_FREQ_NOTAVAIL, "Frequency not available" }, 680 { NM_NACK_TEST_NOTSUPP, "Test not supported" }, 681 { NM_NACK_CAPACITY_RESTR, "Capacity restrictions" }, 682 { NM_NACK_PHYSCFG_NOTPERFORM, "Phys config cannot be performed" }, 683 { NM_NACK_TEST_NOTINIT, "Test not initiated" }, 684 { NM_NACK_PHYSCFG_NOTRESTORE, "Phys config cannot be restored" }, 685 { NM_NACK_TEST_NOSUCH, "No such Test" }, 686 { NM_NACK_TEST_NOSTOP, "Test cannot be stopped" }, 687 { NM_NACK_MSGINCONSIST_PHYSCFG, "Message inconsisten with physical config" }, 688 { NM_NACK_FILE_INCOMPLETE, "Complete file not received" }, 689 { NM_NACK_FILE_NOTAVAIL, "File not available at destination" }, 690 { NM_NACK_FILE_NOTACTIVATE, "File cannot be activated" }, 691 { NM_NACK_REQ_NOT_GRANT, "Request not granted" }, 692 { NM_NACK_WAIT, "Wait" }, 693 { NM_NACK_NOTH_REPORT_EXIST, "Nothing reportable existing" }, 694 { NM_NACK_MEAS_NOTSUPP, "Measurement not supported" }, 695 { NM_NACK_MEAS_NOTSTART, "Measurement not started" }, 696 { 0xff, "NULL" }, 697 { 0, NULL } 698 }; 699 700 static const value_string oml_test_no_vals[] = { 701 { NM_IPACC_TESTNO_RLOOP_ANT, "Radio Loop test via antenna" }, 702 { NM_IPACC_TESTNO_RLOOP_XCVR, "Radio Loop test via transceiver" }, 703 { NM_IPACC_TESTNO_FUNC_OBJ, "BTS Functional object self test" }, 704 { NM_IPACC_TESTNO_CHAN_USAGE, "Channel Usage" }, 705 { NM_IPACC_TESTNO_BCCH_CHAN_USAGE, "BCCH Channel Usage" }, 706 { NM_IPACC_TESTNO_FREQ_SYNC, "Frequency Synchronization" }, 707 { NM_IPACC_TESTNO_BCCH_INFO, "BCCH Information" }, 708 { NM_IPACC_TESTNO_TX_BEACON, "Transmit Beacon" }, 709 { NM_IPACC_TESTNO_SYSINFO_MONITOR, "SysInfo Monitor" }, 710 { NM_IPACC_TESTNO_BCCCH_MONITOR, "BCCH & CCCH Monitor" }, 711 { 0, NULL } 712 }; 713 714 static const value_string ipacc_test_res_vals[] = { 715 { NM_IPACC_TESTRES_SUCCESS, "Success" }, 716 { NM_IPACC_TESTRES_TIMEOUT, "Timeout" }, 717 { NM_IPACC_TESTRES_NO_CHANS, "No suitable channels available" }, 718 { NM_IPACC_TESTRES_PARTIAL, "Partial" }, 719 { NM_IPACC_TESTRES_STOPPED, "Stopped" }, 720 { 0, NULL } 721 }; 722 723 static const value_string ipacc_testres_ie_vals[] = { 724 { NM_IPACC_TR_IE_FREQ_ERR_LIST, "Frequency Error List" }, 725 { NM_IPACC_TR_IE_CHAN_USAGE, "Channel Usage" }, 726 { NM_IPACC_TR_IE_BCCH_INFO, "BCCH Information" }, 727 { NM_IPACC_TR_IE_RESULT_DETAILS,"Result Details" }, 728 { NM_IPACC_TR_IE_FREQ_ERR, "Frequency Error" }, 729 { 0, NULL } 730 }; 731 732 static const struct tlv_def * 733 find_tlv_tag(guint8 tag) 734 { 735 const struct tlv_def *specific; 736 737 if (global_oml_use_nano_bts) 738 specific = &nm_att_tlvdef_ipa.def[tag]; 739 else 740 specific = &nm_att_tlvdev_bs11.def[tag]; 741 742 if (specific->type != TLV_TYPE_UNKNOWN) 743 return specific; 744 745 return &nm_att_tlvdef_base.def[tag]; 746 } 747 748 /* Parse the ip.access specific BCCH Information IE embedded into the Test 749 * Report IE */ 750 static gint 751 ipacc_tr_ie_bcch(tvbuff_t *tvb, proto_tree *att_tree, int offset) 752 { 753 guint16 binfo_type, tmp; 754 755 binfo_type = tvb_get_ntohs(tvb, offset); 756 offset += 2; 757 758 tmp = tvb_get_ntohs(tvb, offset); 759 760 /* FIXME: there are still some bugs remaining here */ 761 proto_tree_add_item(att_tree, hf_attr_ipa_tr_arfcn, 762 tvb, offset, 2, TRUE); 763 764 proto_tree_add_item(att_tree, hf_attr_ipa_tr_f_qual, 765 tvb, offset, 2, TRUE); 766 offset += 2; 767 768 proto_tree_add_item(att_tree, hf_attr_ipa_tr_b_rxlev, 769 tvb, offset++, 1, TRUE); 770 771 proto_tree_add_item(att_tree, hf_attr_ipa_tr_rxqual, 772 tvb, offset++, 1, TRUE); 773 774 proto_tree_add_item(att_tree, hf_attr_ipa_tr_f_err, 775 tvb, offset, 2, TRUE); 776 offset += 2; 777 778 proto_tree_add_item(att_tree, hf_attr_ipa_tr_frame_offs, 779 tvb, offset, 2, TRUE); 780 offset += 2; 781 proto_tree_add_item(att_tree, hf_attr_ipa_tr_framenr_offs, 782 tvb, offset, 4, TRUE); 783 offset += 4; 784 785 proto_tree_add_item(att_tree, hf_attr_ipa_tr_bsic, 786 tvb, offset++, 1, TRUE); 787 788 de_lai(tvb, att_tree, offset, 5, NULL, 0); 789 offset += 5; 790 791 proto_tree_add_item(att_tree, hf_attr_ipa_tr_cell_id, 792 tvb, offset, 2, TRUE); 793 offset += 2; 794 795 if (binfo_type & 0x8000) { 796 /* System Information 2 */ 797 /* FIXME: Parse 04.18 Neighbour Cell Description */ 798 proto_tree_add_item(att_tree, hf_attr_ipa_tr_si2, 799 tvb, offset, 16, TRUE); 800 offset += 16; 801 } 802 if (binfo_type & 0x0001) { 803 /* System Information 2bis */ 804 /* FIXME: Parse 04.18 Neighbour Cell Description */ 805 proto_tree_add_item(att_tree, hf_attr_ipa_tr_si2bis, 806 tvb, offset, 16, TRUE); 807 offset += 16; 808 } 809 if (binfo_type & 0x0002) { 810 /* System Information 2ter */ 811 /* FIXME: Parse 04.18 Neighbour Cell Description */ 812 proto_tree_add_item(att_tree, hf_attr_ipa_tr_si2ter, 813 tvb, offset, 16, TRUE); 814 offset += 16; 815 } 816 if (binfo_type & 0x0004) { 817 /* FIXME: Parse 04.18 Cell Channel Description */ 818 proto_tree_add_item(att_tree, hf_attr_ipa_tr_chan_desc, 819 tvb, offset, 16, TRUE); 820 offset += 16; 821 } 822 823 return offset; 824 } 825 826 /* Parse the ip.access specific Channel Usage IE embedded into the Test 827 * Report IE */ 828 static gint 829 ipacc_tr_ie_chan_usage(tvbuff_t *tvb, proto_tree *att_tree, int offset) 830 { 831 while (tvb_reported_length_remaining(tvb, offset) != 0) { 832 guint16 result; 833 834 result = tvb_get_ntohs(tvb, offset); 835 proto_tree_add_uint(att_tree, hf_attr_ipa_tr_arfcn, 836 tvb, offset, 2, result); 837 proto_tree_add_uint(att_tree, hf_attr_ipa_tr_rxlev, 838 tvb, offset, 2, result); 839 offset += 2; 840 } 841 return offset; 842 } 843 844 /* Parse the ip.access specific format of the standard test report IE */ 845 static gint 846 dissect_ipacc_test_rep(proto_tree *tree, tvbuff_t *tvb) 847 { 848 gint offset = 0; 849 850 proto_tree_add_item(tree, hf_attr_ipa_test_res, tvb, offset++, 851 1, FALSE); 852 853 while (tvb_reported_length_remaining(tvb, offset) != 0) { 854 guint8 ie; 855 guint16 len; 856 proto_item *ti; 857 proto_tree *att_tree; 858 859 ie = tvb_get_guint8(tvb, offset); 860 len = tvb_get_ntohs(tvb, offset+1); 861 ti = proto_tree_add_item(tree, hf_oml_ipa_tres_attr_tag, tvb, 862 offset++, 1, FALSE); 863 att_tree = proto_item_add_subtree(ti, ett_oml_fom_att); 864 proto_tree_add_uint(att_tree, hf_oml_ipa_tres_attr_len, tvb, 865 offset, 2, len); 866 offset += 2; 867 868 switch (ie) { 869 case NM_IPACC_TR_IE_CHAN_USAGE: 870 offset = ipacc_tr_ie_chan_usage(tvb, 871 att_tree, offset); 872 break; 873 case NM_IPACC_TR_IE_BCCH_INFO: 874 offset = ipacc_tr_ie_bcch(tvb, 875 att_tree, offset); 876 break; 877 default: 878 break; 879 } 880 } 881 return offset; 882 } 883 884 /* Dissect OML FOM Attributes after OML + FOM header */ 885 static gint 886 dissect_oml_attrs(tvbuff_t *tvb, int base_offs, packet_info *pinfo, 887 proto_tree *tree) 888 { 889 int offset = base_offs; 890 891 while (tvb_reported_length_remaining(tvb, offset) != 0) { 892 guint i; 893 guint8 tag, val8; 894 guint16 val16; 895 guint32 val32; 896 unsigned int len, len_len, hlen; 897 const struct tlv_def *tdef; 898 proto_item *ti; 899 proto_tree *att_tree; 900 tvbuff_t *sub_tvb; 901 902 tag = tvb_get_guint8(tvb, offset); 903 tdef = find_tlv_tag(tag); 904 905 switch (tdef->type) { 906 case TLV_TYPE_FIXED: 907 hlen = 1; 908 len_len = 0; 909 len = tdef->fixed_len; 910 break; 911 case TLV_TYPE_T: 912 hlen = 1; 913 len_len = 0; 914 len = 0; 915 break; 916 case TLV_TYPE_TV: 917 hlen = 1; 918 len_len = 0; 919 len = 1; 920 break; 921 case TLV_TYPE_TLV: 922 hlen = 2; 923 len_len = 1; 924 len = tvb_get_guint8(tvb, offset+1); 925 break; 926 case TLV_TYPE_TL16V: 927 hlen = 3; 928 len_len = 2; 929 len = tvb_get_guint8(tvb, offset+1) << 8 | 930 tvb_get_guint8(tvb, offset+2); 931 break; 932 case TLV_TYPE_TLV16: 933 hlen = 2; 934 len_len = 1; 935 len = tvb_get_guint8(tvb, offset+1) * 2; 936 break; 937 case TLV_TYPE_UNKNOWN: /* fall through */ 938 default: 939 hlen = len_len = len = 0; 940 DISSECTOR_ASSERT_NOT_REACHED(); 941 break; 942 } 943 944 ti = proto_tree_add_item(tree, hf_oml_fom_attr_tag, tvb, 945 offset, 1, FALSE); 946 att_tree = proto_item_add_subtree(ti, ett_oml_fom_att); 947 proto_tree_add_uint(att_tree, hf_oml_fom_attr_len, tvb, 948 offset+1, len_len, len); 949 offset += hlen; 950 951 sub_tvb = tvb_new_subset(tvb, offset, len, len); 952 953 switch (tag) { 954 /* parse only the most common IE for now */ 955 case NM_ATT_ABIS_CHANNEL: 956 proto_tree_add_item(att_tree, hf_attr_ach_btsp, tvb, 957 offset, 1, TRUE); 958 proto_tree_add_item(att_tree, hf_attr_ach_tslot, tvb, 959 offset+1, 1, TRUE); 960 proto_tree_add_item(att_tree, hf_attr_ach_sslot, tvb, 961 offset+2, 1, TRUE); 962 break; 963 case NM_ATT_ADM_STATE: 964 proto_tree_add_item(att_tree, hf_attr_adm_state, tvb, 965 offset, len, FALSE); 966 val8 = tvb_get_guint8(tvb, offset); 967 col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", 968 val_to_str(val8, oml_adm_state_vals, 969 "%02x")); 970 break; 971 case NM_ATT_ARFCN_LIST: 972 for (i = 0; i < len; i += 2) { 973 val16 = tvb_get_ntohs(tvb, offset + i); 974 proto_tree_add_uint(att_tree, hf_attr_arfcn, 975 tvb, offset + i, 2, val16); 976 } 977 break; 978 case NM_ATT_AVAIL_STATUS: 979 /* Availability status can have length 0 */ 980 if (len) { 981 val8 = tvb_get_guint8(tvb, offset); 982 proto_tree_add_item(att_tree, 983 hf_attr_avail_state, tvb, 984 offset, len, FALSE); 985 } else 986 val8 = 0xff; 987 col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", 988 val_to_str(val8, oml_avail_state_vals, 989 "%02x")); 990 break; 991 case NM_ATT_BCCH_ARFCN: 992 proto_tree_add_item(att_tree, hf_attr_bcch_arfcn, tvb, 993 offset, len, FALSE); 994 break; 995 case NM_ATT_BSIC: 996 proto_tree_add_item(att_tree, hf_attr_bsic, tvb, 997 offset, len, TRUE); 998 break; 999 case NM_ATT_CHAN_COMB: 1000 proto_tree_add_item(att_tree, hf_attr_chan_comb, tvb, 1001 offset, len, TRUE); 1002 break; 1003 case NM_ATT_EVENT_TYPE: 1004 proto_tree_add_item(att_tree, hf_attr_event_type, tvb, 1005 offset, len, TRUE); 1006 break; 1007 case NM_ATT_GSM_TIME: 1008 proto_tree_add_item(att_tree, hf_attr_gsm_time, tvb, 1009 offset, len, TRUE); 1010 break; 1011 case NM_ATT_OPER_STATE: 1012 proto_tree_add_item(att_tree, hf_attr_oper_state, tvb, 1013 offset, len, FALSE); 1014 val8 = tvb_get_guint8(tvb, offset); 1015 col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", 1016 val_to_str(val8, oml_oper_state_vals, 1017 "%02x")); 1018 break; 1019 case NM_ATT_TEI: 1020 proto_tree_add_item(att_tree, hf_attr_tei, tvb, 1021 offset, len, TRUE); 1022 break; 1023 case NM_ATT_TSC: 1024 proto_tree_add_item(att_tree, hf_attr_tsc, tvb, 1025 offset, len, TRUE); 1026 break; 1027 case NM_ATT_SEVERITY: 1028 proto_tree_add_item(att_tree, hf_attr_severity, tvb, 1029 offset, len, TRUE); 1030 break; 1031 case NM_ATT_TEST_REPORT: 1032 dissect_ipacc_test_rep(att_tree, sub_tvb); 1033 break; 1034 case NM_ATT_TEST_NO: 1035 proto_tree_add_item(att_tree, hf_attr_test_no, tvb, 1036 offset, len, TRUE); 1037 val8 = tvb_get_guint8(tvb, offset); 1038 col_append_fstr(pinfo->cinfo, COL_INFO, "%s ", 1039 val_to_str(val8, oml_test_no_vals, 1040 "%02x")); 1041 break; 1042 case NM_ATT_HSN: 1043 proto_tree_add_item(att_tree, hf_attr_hsn, tvb, 1044 offset, len, TRUE); 1045 break; 1046 case NM_ATT_MAIO: 1047 proto_tree_add_item(att_tree, hf_attr_maio, tvb, 1048 offset, len, TRUE); 1049 break; 1050 default: 1051 proto_tree_add_item(att_tree, hf_oml_fom_attr_val, tvb, 1052 offset, len, FALSE); 1053 } 1054 1055 if (global_oml_use_nano_bts) switch (tag) { 1056 /* proprietary ip.access extensions */ 1057 case NM_ATT_IPACC_DST_IP: 1058 val32 = tvb_get_ntohl(tvb, offset); 1059 proto_tree_add_ipv4(att_tree, hf_attr_ipa_rsl_ip, tvb, 1060 offset, len, val32); 1061 break; 1062 case NM_ATT_IPACC_DST_IP_PORT: 1063 val16 = tvb_get_ntohs(tvb, offset); 1064 proto_tree_add_uint(att_tree, hf_attr_ipa_rsl_port, tvb, 1065 offset, len, val16); 1066 break; 1067 case NM_ATT_IPACC_LOCATION: 1068 proto_tree_add_item(att_tree, hf_attr_ipa_location_name, 1069 tvb, offset, len, TRUE); 1070 break; 1071 case NM_ATT_IPACC_UNIT_ID: 1072 proto_tree_add_item(att_tree, hf_attr_ipa_unit_id, 1073 tvb, offset, len, TRUE); 1074 break; 1075 case NM_ATT_IPACC_UNIT_NAME: 1076 proto_tree_add_item(att_tree, hf_attr_ipa_unit_name, 1077 tvb, offset, len, TRUE); 1078 break; 1079 case NM_ATT_IPACC_PRIM_OML_CFG_LIST: 1080 proto_tree_add_item(att_tree, hf_attr_ipa_prim_oml_ip, 1081 tvb, offset+1, 4, TRUE); 1082 proto_tree_add_item(att_tree, hf_attr_ipa_prim_oml_port, 1083 tvb, offset+1+4, 2, TRUE); 1084 break; 1085 case NM_ATT_IPACC_NV_FLAGS: 1086 { 1087 guint flags, mask; 1088 flags = tvb_get_guint8(tvb, offset); 1089 mask = tvb_get_guint8(tvb, offset+1); 1090 flags |= tvb_get_guint8(tvb, offset+2) << 8; 1091 mask |= tvb_get_guint8(tvb, offset+3) << 8; 1092 proto_tree_add_uint(att_tree, hf_attr_ipa_nv_flags, 1093 tvb, offset, 3, flags); 1094 proto_tree_add_uint(att_tree, hf_attr_ipa_nv_mask, 1095 tvb, offset+1, 3, mask); 1096 } 1097 break; 1098 case NM_ATT_IPACC_RAC: 1099 proto_tree_add_item(att_tree, hf_attr_ipa_rac, 1100 tvb, offset, 1, TRUE); 1101 break; 1102 case NM_ATT_IPACC_NSEI: 1103 val16 = tvb_get_ntohs(tvb, offset); 1104 proto_tree_add_uint(att_tree, hf_attr_ipa_nsei, 1105 tvb, offset, 2, val16); 1106 break; 1107 case NM_ATT_IPACC_NSVCI: 1108 val16 = tvb_get_ntohs(tvb, offset); 1109 proto_tree_add_uint(att_tree, hf_attr_ipa_nsvci, 1110 tvb, offset, 2, val16); 1111 break; 1112 case NM_ATT_IPACC_BVCI: 1113 val16 = tvb_get_ntohs(tvb, offset); 1114 proto_tree_add_uint(att_tree, hf_attr_ipa_bvci, 1115 tvb, offset, 2, val16); 1116 break; 1117 case NM_ATT_IPACC_NS_LINK_CFG: 1118 val16 = tvb_get_ntohs(tvb, offset); 1119 proto_tree_add_uint(att_tree, hf_attr_ipa_nsl_sport, 1120 tvb, offset, 2, val16); 1121 val32 = tvb_get_ipv4(tvb, offset+2); 1122 proto_tree_add_ipv4(att_tree, hf_attr_ipa_nsl_daddr, 1123 tvb, offset+2, 4, val32); 1124 val16 = tvb_get_ntohs(tvb, offset+6); 1125 proto_tree_add_uint(att_tree, hf_attr_ipa_nsl_dport, 1126 tvb, offset+6, 2, val16); 1127 break; 1128 } 1129 offset += len; 1130 } 1131 return offset; 1132 } 1133 1134 static int 1135 dissect_oml_fom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, 1136 int offset, proto_item *top_ti) 1137 { 1138 guint8 msg_type, obj_class, bts_nr, trx_nr, ts_nr; 1139 proto_item *ti; 1140 proto_tree *fom_tree; 1141 1142 msg_type = tvb_get_guint8(tvb, offset); 1143 obj_class = tvb_get_guint8(tvb, offset+1); 1144 bts_nr = tvb_get_guint8(tvb, offset+2); 1145 trx_nr = tvb_get_guint8(tvb, offset+3); 1146 ts_nr = tvb_get_guint8(tvb, offset+4); 1147 proto_item_append_text(top_ti, ", %s(%02x,%02x,%02x) %s ", 1148 val_to_str(obj_class, oml_fom_objclass_vals, "%02x"), 1149 bts_nr, trx_nr, ts_nr, 1150 val_to_str_ext(msg_type, &oml_fom_msgtype_vse, 1151 "unknown 0x%x")); 1152 col_append_fstr(pinfo->cinfo, COL_INFO, "%s(%02x,%02x,%02x) %s ", 1153 val_to_str(obj_class, oml_fom_objclass_vals, "%02x"), 1154 bts_nr, trx_nr, ts_nr, 1155 val_to_str_ext(msg_type, &oml_fom_msgtype_vse, 1156 "unknown 0x%x")); 1157 ti = proto_tree_add_item(tree, hf_oml_fom_msgtype, tvb, offset++, 1, FALSE); 1158 fom_tree = proto_item_add_subtree(ti, ett_oml_fom); 1159 proto_tree_add_item(fom_tree, hf_oml_fom_objclass, tvb, offset++, 1, FALSE); 1160 proto_tree_add_item(fom_tree, hf_oml_fom_inst_bts, tvb, offset++, 1, FALSE); 1161 proto_tree_add_item(fom_tree, hf_oml_fom_inst_trx, tvb, offset++, 1, FALSE); 1162 proto_tree_add_item(fom_tree, hf_oml_fom_inst_ts, tvb, offset++, 1, FALSE); 1163 1164 1165 /* dissect the TLV objects in the message body */ 1166 offset = dissect_oml_attrs(tvb, offset, pinfo, fom_tree); 1167 1168 return offset; 1169 } 1170 1171 static const guint8 ipaccess_magic[] = "com.ipaccess"; 1172 1173 static int 1174 dissect_oml_manuf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, 1175 int offset, proto_item *top_ti) 1176 { 1177 if (tvb_get_guint8(tvb, offset) != 0x0d || 1178 tvb_memeql(tvb, offset+1, ipaccess_magic, sizeof(ipaccess_magic))) 1179 return offset; 1180 1181 offset += sizeof(ipaccess_magic) + 1; 1182 1183 return dissect_oml_fom(tvb, pinfo, tree, offset, top_ti); 1184 } 1185 1186 static void 1187 dissect_abis_oml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 1188 { 1189 proto_item *ti; 1190 proto_tree *oml_tree; 1191 1192 int offset = 0; 1193 1194 col_set_str(pinfo->cinfo, COL_PROTOCOL, "OML"); 1195 1196 top_tree = tree; 1197 if (tree) { 1198 u_int8_t msg_disc = tvb_get_guint8(tvb, offset); 1199 1200 ti = proto_tree_add_item(tree, proto_abis_oml, tvb, 0, -1, FALSE); 1201 oml_tree = proto_item_add_subtree(ti, ett_oml); 1202 1203 proto_tree_add_item(oml_tree, hf_oml_msg_disc, tvb, offset++, 1204 1, TRUE); 1205 proto_tree_add_item(oml_tree, hf_oml_placement, tvb, offset++, 1206 1, TRUE); 1207 proto_tree_add_item(oml_tree, hf_oml_sequence, tvb, offset++, 1208 1, TRUE); 1209 proto_tree_add_item(oml_tree, hf_oml_length, tvb, offset++, 1210 1, TRUE); 1211 1212 switch (msg_disc) { 1213 case ABIS_OM_MDISC_FOM: 1214 offset = dissect_oml_fom(tvb, pinfo, oml_tree, 1215 offset, ti); 1216 break; 1217 case ABIS_OM_MDISC_MANUF: 1218 offset = dissect_oml_manuf(tvb, pinfo, oml_tree, offset, ti); 1219 break; 1220 case ABIS_OM_MDISC_MMI: 1221 case ABIS_OM_MDISC_TRAU: 1222 default: 1223 break; 1224 } 1225 } 1226 } 1227 1228 void 1229 proto_reg_handoff_abis_oml(void); 1230 1231 void 1232 proto_register_abis_oml(void) 1233 { 1234 static hf_register_info hf[] = { 1235 { &hf_oml_msg_disc, 1236 { "Message Discriminator", "oml.msg_dsc", 1237 FT_UINT8, BASE_HEX, VALS(oml_msg_disc_vals), 0, 1238 "GSM 12.21 Message Discriminator", HFILL } 1239 }, 1240 { &hf_oml_placement, 1241 { "Placement Indicator", "oml.placement", 1242 FT_UINT8, BASE_HEX, VALS(oml_placement_vals), 0, 1243 "GSM 12.21 Placement Indicator", HFILL } 1244 }, 1245 { &hf_oml_sequence, 1246 { "Sequence Number", "oml.sequence", 1247 FT_UINT8, BASE_HEX, NULL, 0, 1248 "Sequence Number (if multi-part msg)", HFILL } 1249 }, 1250 { &hf_oml_length, 1251 { "Length Indicator", "oml.length", 1252 FT_UINT8, BASE_DEC, NULL, 0, 1253 "Total length of payload", HFILL } 1254 }, 1255 { &hf_oml_fom_msgtype, 1256 { "FOM Message Type", "oml.fom.msg_type", 1257 FT_UINT8, BASE_HEX|BASE_EXT_STRING, (&oml_fom_msgtype_vse), 0, 1258 NULL, HFILL } 1259 }, 1260 { &hf_oml_fom_objclass, 1261 { "FOM Object Class", "oml.fom.obj_class", 1262 FT_UINT8, BASE_HEX, VALS(oml_fom_objclass_vals), 0, 1263 NULL, HFILL } 1264 }, 1265 { &hf_oml_fom_inst_bts, 1266 { "FOM Object Instance BTS", "oml.fom.obj_inst.bts", 1267 FT_UINT8, BASE_DEC, NULL, 0, 1268 NULL, HFILL } 1269 }, 1270 { &hf_oml_fom_inst_trx, 1271 { "FOM Object Instance TRX", "oml.fom.obj_inst.trx", 1272 FT_UINT8, BASE_DEC, NULL, 0, 1273 NULL, HFILL } 1274 }, 1275 { &hf_oml_fom_inst_ts, 1276 { "FOM Object Instance TS", "oml.fom.obj_inst.ts", 1277 FT_UINT8, BASE_DEC, NULL, 0, 1278 NULL, HFILL } 1279 }, 1280 { &hf_oml_fom_attr_tag, 1281 { "FOM Attribute ID", "oml.fom.attr_id", 1282 FT_UINT8, BASE_HEX|BASE_EXT_STRING, (&oml_fom_attr_vse), 0, 1283 NULL, HFILL } 1284 }, 1285 { &hf_oml_fom_attr_len, 1286 { "FOM Attribute Length", "oml.fom.attr_len", 1287 FT_UINT16, BASE_DEC, NULL, 0, 1288 NULL, HFILL } 1289 }, 1290 { &hf_oml_fom_attr_val, 1291 { "FOM Attribute Value", "oml.fom.attr_val", 1292 FT_BYTES, BASE_NONE, NULL, 0, 1293 NULL, HFILL } 1294 }, 1295 1296 1297 1298 /* OML Attributes */ 1299 { &hf_attr_adm_state, 1300 { "Administrative State", "oml.fom.attr.adm_state", 1301 FT_UINT8, BASE_HEX, VALS(oml_adm_state_vals), 0, 1302 NULL, HFILL } 1303 }, 1304 { &hf_attr_arfcn, 1305 { "ARFCN", "oml.fom.attr.arfcn", 1306 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1307 }, 1308 { &hf_attr_oper_state, 1309 { "Operational State", "oml.fom.attr.oper_state", 1310 FT_UINT8, BASE_HEX, VALS(oml_oper_state_vals), 0, 1311 NULL, HFILL } 1312 }, 1313 { &hf_attr_avail_state, 1314 { "Availability Status", "oml.fom.attr.avail_state", 1315 FT_UINT8, BASE_HEX, VALS(oml_avail_state_vals), 0, 1316 NULL, HFILL } 1317 }, 1318 { &hf_attr_event_type, 1319 { "Event Type", "oml.fom.attr.event_type", 1320 FT_UINT8, BASE_HEX, VALS(oml_event_type_vals), 0, 1321 NULL, HFILL } 1322 }, 1323 { &hf_attr_severity, 1324 { "Severity", "oml.fom.attr.severity", 1325 FT_UINT8, BASE_HEX, VALS(oml_severity_vals), 0, 1326 NULL, HFILL } 1327 }, 1328 { &hf_attr_bcch_arfcn, 1329 { "BCCH ARFCN", "oml.fom.attr.bcch_arfcn", 1330 FT_UINT16, BASE_DEC, NULL, 0, 1331 "ARFCN of the BCCH", HFILL } 1332 }, 1333 { &hf_attr_bsic, 1334 { "BSIC", "oml.fom.attr.bsic", 1335 FT_UINT16, BASE_HEX, NULL, 0, 1336 "Base Station Identity Cdoe", HFILL } 1337 }, 1338 { &hf_attr_test_no, 1339 { "Test Number", "oml.fom.attr.test_no", 1340 FT_UINT8, BASE_HEX, VALS(oml_test_no_vals), 0, 1341 NULL, HFILL } 1342 }, 1343 { &hf_attr_tsc, 1344 { "TSC", "oml.fom.attr.tsc", 1345 FT_UINT8, BASE_HEX, NULL, 0, 1346 "Training Sequence Code", HFILL } 1347 }, 1348 { &hf_attr_tei, 1349 { "TEI", "oml.fom.attr.tei", 1350 FT_UINT8, BASE_DEC, NULL, 0, 1351 NULL, HFILL } 1352 }, 1353 { &hf_attr_ach_btsp, 1354 { "BTS E1 Port", "oml.fom.attr.abis_ch.bts_port", 1355 FT_UINT8, BASE_DEC, NULL, 0, 1356 NULL, HFILL } 1357 }, 1358 { &hf_attr_ach_tslot, 1359 { "E1 Timeslot", "oml.fom.attr.abis_ch.timeslot", 1360 FT_UINT8, BASE_DEC, NULL, 0, 1361 NULL, HFILL } 1362 }, 1363 { &hf_attr_ach_sslot, 1364 { "E1 Subslot", "oml.fom.attr.abis_ch.subslot", 1365 FT_UINT8, BASE_DEC, NULL, 0, 1366 NULL, HFILL } 1367 }, 1368 { &hf_attr_gsm_time, 1369 { "GSM Time", "oml.fom.attr.gsm_time", 1370 FT_UINT16, BASE_DEC, NULL, 0, 1371 "GSM Time", HFILL } 1372 }, 1373 { &hf_attr_chan_comb, 1374 { "Channel Combination", "oml.fom.attr.chan_comb", 1375 FT_UINT8, BASE_HEX, VALS(oml_chan_comb_vals), 0, 1376 NULL, HFILL } 1377 }, 1378 { &hf_attr_hsn, 1379 { "HSN", "oml.fom.attr.hsn", 1380 FT_UINT8, BASE_DEC, NULL, 0, 1381 "Hopping Sequence Number", HFILL } 1382 }, 1383 { &hf_attr_maio, 1384 { "MAIO", "oml.fom.attr.maio", 1385 FT_UINT8, BASE_DEC, NULL, 0, 1386 "Mobile Allocation Index Offset", HFILL } 1387 }, 1388 1389 /* IP Access */ 1390 { &hf_oml_ipa_tres_attr_tag, 1391 { "IPA Test Result Embedded IE", 1392 "oml.fom.testrep.ipa_tag", 1393 FT_UINT8, BASE_HEX, VALS(ipacc_testres_ie_vals), 0, 1394 "Information Element embedded into the Test Result " 1395 "of ip.access BTS", HFILL }, 1396 }, 1397 { &hf_oml_ipa_tres_attr_len, 1398 { "IPA Test Result Embedded IE Length", 1399 "oml.fom.testrep.ipa_len", 1400 FT_UINT16, BASE_DEC, NULL, 0, 1401 "Length of ip.access Test Result Embedded IE", HFILL } 1402 }, 1403 { &hf_attr_ipa_test_res, 1404 { "IPA Test Result", "oml.fom.testrep.result", 1405 FT_UINT8, BASE_DEC, VALS(ipacc_test_res_vals), 0, 1406 NULL, HFILL } 1407 }, 1408 { &hf_attr_ipa_tr_rxlev, 1409 { "Rx Level", "oml.fom.testrep.ipa_rxlev", 1410 FT_UINT16, BASE_DEC, NULL, 0xfc00, NULL, HFILL } 1411 }, 1412 { &hf_attr_ipa_tr_b_rxlev, 1413 { "Rx Level", "oml.fom.testrep.ipa_rxlev_b", 1414 FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } 1415 }, 1416 { &hf_attr_ipa_tr_arfcn, 1417 { "ARFCN", "oml.fom.testrep.ipa_arfcn", 1418 FT_UINT16, BASE_DEC, NULL, 0x03ff, "ARFCN", HFILL } 1419 }, 1420 { &hf_attr_ipa_tr_f_qual, 1421 { "Frequency Quality", "oml.fom.testrep.ipa.freq_qual", 1422 FT_UINT8, BASE_DEC, NULL, 0xfc, NULL, HFILL } 1423 }, 1424 { &hf_attr_ipa_tr_f_err, 1425 { "Frequency Error", "oml.fom.testrep.ipa.freq_err", 1426 FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL } 1427 }, 1428 { &hf_attr_ipa_tr_rxqual, 1429 { "Rx Quality", "oml.fom.testrep.ipa.rx_qual", 1430 FT_UINT8, BASE_DEC, NULL, 0x7, NULL, HFILL } 1431 }, 1432 { &hf_attr_ipa_tr_frame_offs, 1433 { "Frame Offset", "oml.fom.testrep.ipa.frame_offset", 1434 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1435 }, 1436 { &hf_attr_ipa_tr_framenr_offs, 1437 { "Frame Number Offset", 1438 "oml.fom.testrep.ipa.framenr_offset", 1439 FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } 1440 }, 1441 { &hf_attr_ipa_tr_bsic, 1442 { "BSIC", "oml.fom.testrep.ipa.bsic", 1443 FT_UINT8, BASE_DEC, NULL, 0x3f, 1444 "Base Station Identity Code", HFILL } 1445 }, 1446 { &hf_attr_ipa_tr_cell_id, 1447 { "Cell ID", "oml.fom.testrep.ipa.cell_id", 1448 FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } 1449 }, 1450 { &hf_attr_ipa_rsl_ip, 1451 { "BSC RSL IP Address", "oml.fom.attr.ipa.rsl_ip", 1452 FT_IPv4, BASE_NONE, NULL, 0, 1453 "IP Address to which the BTS establishes " 1454 "the RSL link", HFILL } 1455 }, 1456 { &hf_attr_ipa_rsl_port, 1457 { "BSC RSL TCP Port", "oml.fom.attr.ipa.rsl_port", 1458 FT_UINT16, BASE_DEC, NULL, 0, 1459 "Port number to which the BST establishes " 1460 "the RSL link", HFILL } 1461 }, 1462 { &hf_attr_ipa_prim_oml_ip, 1463 { "Primary OML IP Address", 1464 "oml.fom.attr.ipa.prim_oml_ip", 1465 FT_IPv4, BASE_NONE, NULL, 0, 1466 "IP Address of the BSC for the primary OML link", 1467 HFILL } 1468 }, 1469 { &hf_attr_ipa_prim_oml_port, 1470 { "Primary OML TCP Port", 1471 "oml.fom.attr.ipa.prim_oml_port", 1472 FT_UINT16, BASE_DEC, NULL, 0, 1473 "TCP Port of the BSC for the primarly OML link", 1474 HFILL } 1475 }, 1476 { &hf_attr_ipa_location_name, 1477 { "Location Name", "oml.fom.attr.ipa.loc_name", 1478 FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } 1479 }, 1480 { &hf_attr_ipa_unit_name, 1481 { "Unit Name", "oml.fom.attr.ipa.unit_name", 1482 FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } 1483 }, 1484 { &hf_attr_ipa_unit_id, 1485 { "Unit ID", "oml.fom.attr.ipa.unit_id", 1486 FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } 1487 }, 1488 { &hf_attr_ipa_nv_flags, 1489 { "NVRAM Config Flags", "oml.fom.attr.ipa.nv_flags", 1490 FT_UINT16, BASE_HEX, NULL, 0xffff, NULL, HFILL } 1491 }, 1492 { &hf_attr_ipa_nv_mask, 1493 { "NVRAM Config Mask", "oml.fom.attr.ipa.nv_mask", 1494 FT_UINT16, BASE_HEX, NULL, 0xffff, NULL, HFILL } 1495 }, 1496 { &hf_attr_ipa_tr_si2, 1497 { "System Information 2", "oml.fom.attr.ipa.si2", 1498 FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } 1499 }, 1500 { &hf_attr_ipa_tr_si2bis, 1501 { "System Information 2bis", "oml.fom.attr.ipa.si2bis", 1502 FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } 1503 }, 1504 { &hf_attr_ipa_tr_si2ter, 1505 { "System Information 2ter", "oml.fom.attr.ipa.si2ter", 1506 FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } 1507 }, 1508 { &hf_attr_ipa_tr_chan_desc, 1509 { "Cell Channel Description", 1510 "oml.fom.attr.ipa.chan_desc", 1511 FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } 1512 }, 1513 { &hf_attr_ipa_nsl_sport, 1514 { "NS Link IP Source Port", 1515 "oml.fom.attr.ipa.nsl_sport", 1516 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1517 }, 1518 { &hf_attr_ipa_nsl_daddr, 1519 { "NS Link IP Destination Addr", 1520 "oml.fom.attr.ipa.nsl_daddr", 1521 FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL } 1522 }, 1523 { &hf_attr_ipa_nsl_dport, 1524 { "NS Link IP Destination Port", 1525 "oml.fom.attr.ipa.nsl_dport", 1526 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1527 }, 1528 { &hf_attr_ipa_nsei, 1529 { "NSEI", "oml.fom.attr.ipa.nsei", 1530 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1531 }, 1532 { &hf_attr_ipa_nsvci, 1533 { "NSVCI", "oml.fom.attr.ipa.nsvci", 1534 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1535 }, 1536 { &hf_attr_ipa_bvci, 1537 { "BVCI", "oml.fom.attr.ipa.bvci", 1538 FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } 1539 }, 1540 { &hf_attr_ipa_rac, 1541 { "RAC", "oml.fom.attr.ipa.rac", 1542 FT_UINT8, BASE_HEX, NULL, 0, 1543 "Routing Area Code", HFILL } 1544 }, 1545 }; 1546 static gint *ett[] = { 1547 &ett_oml, 1548 &ett_oml_fom, 1549 &ett_oml_fom_att, 1550 }; 1551 1552 module_t *oml_module; 1553 1554 /* assign our custom match functions */ 1555 oml_fom_msgtype_vse.match = _match_oml_fom_msgtype; 1556 oml_fom_attr_vse.match = _match_oml_fom_attr; 1557 1558 proto_abis_oml = proto_register_protocol("GSM A-bis OML", "A-bis OML", 1559 "gsm_abis_oml"); 1560 1561 proto_register_field_array(proto_abis_oml, hf, array_length(hf)); 1562 1563 proto_register_subtree_array(ett, array_length(ett)); 1564 1565 register_dissector("gsm_abis_oml", dissect_abis_oml, proto_abis_oml); 1566 1567 oml_module = prefs_register_protocol(proto_abis_oml, proto_reg_handoff_abis_oml); 1568 prefs_register_bool_preference(oml_module, "use_ipaccess_oml", 1569 "Use nanoBTS definitions", 1570 "Use ipaccess nanoBTS specific definitions for OML", 1571 &global_oml_use_nano_bts); 1572 } 1573 1574 /* This function is called once at startup and every time the user hits 1575 * 'apply' in the preferences dialogue */ 1576 void 1577 proto_reg_handoff_abis_oml(void) 1578 { 1579 static gboolean initialized = FALSE; 1580 1581 if (!initialized) { 1582 dissector_handle_t abis_oml_handle; 1583 1584 abis_oml_handle = create_dissector_handle(dissect_abis_oml, proto_abis_oml); 1585 dissector_add("lapd.gsm.sapi", LAPD_GSM_SAPI_OM_PROC, abis_oml_handle); 1586 1587 } else { 1588 /* preferences have been changed */ 1589 } 1590 1591 if (global_oml_use_nano_bts == TRUE) { 1592 /* initialize with nanobts definitions */ 1593 oml_fom_msgtype_vse.vals = _oml_fom_msgtype_vals_ipa; 1594 oml_fom_msgtype_vse.length = array_length(_oml_fom_msgtype_vals_ipa)-1; 1595 oml_fom_attr_vse.vals = oml_fom_attr_vals_ipa; 1596 oml_fom_attr_vse.length = array_length(oml_fom_attr_vals_ipa)-1; 1597 } else { 1598 /* initialize with BS11 defaults */ 1599 oml_fom_msgtype_vse.vals = _oml_fom_msgtype_vals_bs11; 1600 oml_fom_msgtype_vse.length = array_length(_oml_fom_msgtype_vals_bs11)-1; 1601 oml_fom_attr_vse.vals = oml_fom_attr_vals_bs11; 1602 oml_fom_attr_vse.length = array_length(oml_fom_attr_vals_bs11)-1; 1603 } 1604 } -
(a) /dev/null vs. (b) wireshark/epan/dissectors/packet-gsm_abis_oml.h
a b 1 /* GSM Network Management messages on the A-bis interface 2 * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */ 3 4 /* (C) 2008-2009 by Harald Welte <laforge@gnumonks.org> 5 * All Rights Reserved 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 */ 22 23 #ifndef __PACKET_ABIS_OML_H__ 24 #define __PACKET_ABIS_OML_H__ 25 26 #include <sys/types.h> 27 28 /* From openbsc/include/openbsc/abis_nm.h */ 29 30 /* generic header in front of every OML message according to TS 08.59 */ 31 struct abis_om_hdr { 32 guint8 mdisc; 33 guint8 placement; 34 guint8 sequence; 35 guint8 length; 36 guint8 data[0]; 37 } __attribute__ ((packed)); 38 39 #define ABIS_OM_MDISC_FOM 0x80 40 #define ABIS_OM_MDISC_MMI 0x40 41 #define ABIS_OM_MDISC_TRAU 0x20 42 #define ABIS_OM_MDISC_MANUF 0x10 43 #define ABIS_OM_PLACEMENT_ONLY 0x80 44 #define ABIS_OM_PLACEMENT_FIRST 0x40 45 #define ABIS_OM_PLACEMENT_MIDDLE 0x20 46 #define ABIS_OM_PLACEMENT_LAST 0x10 47 48 struct abis_om_obj_inst { 49 guint8 bts_nr; 50 guint8 trx_nr; 51 guint8 ts_nr; 52 } __attribute__ ((packed)); 53 54 struct abis_om_fom_hdr { 55 guint8 msg_type; 56 guint8 obj_class; 57 struct abis_om_obj_inst obj_inst; 58 guint8 data[0]; 59 } __attribute__ ((packed)); 60 61 #define ABIS_OM_FOM_HDR_SIZE (sizeof(struct abis_om_hdr) + sizeof(struct abis_om_fom_hdr)) 62 63 /* Section 9.1: Message Types */ 64 enum abis_nm_msgtype { 65 /* SW Download Management Messages */ 66 NM_MT_LOAD_INIT = 0x01, 67 NM_MT_LOAD_INIT_ACK, 68 NM_MT_LOAD_INIT_NACK, 69 NM_MT_LOAD_SEG, 70 NM_MT_LOAD_SEG_ACK, 71 NM_MT_LOAD_ABORT, 72 NM_MT_LOAD_END, 73 NM_MT_LOAD_END_ACK, 74 NM_MT_LOAD_END_NACK, 75 NM_MT_SW_ACT_REQ, /* BTS->BSC */ 76 NM_MT_SW_ACT_REQ_ACK, 77 NM_MT_SW_ACT_REQ_NACK, 78 NM_MT_ACTIVATE_SW, /* BSC->BTS */ 79 NM_MT_ACTIVATE_SW_ACK, 80 NM_MT_ACTIVATE_SW_NACK, 81 NM_MT_SW_ACTIVATED_REP, /* 0x10 */ 82 /* A-bis Interface Management Messages */ 83 NM_MT_ESTABLISH_TEI = 0x21, 84 NM_MT_ESTABLISH_TEI_ACK, 85 NM_MT_ESTABLISH_TEI_NACK, 86 NM_MT_CONN_TERR_SIGN, 87 NM_MT_CONN_TERR_SIGN_ACK, 88 NM_MT_CONN_TERR_SIGN_NACK, 89 NM_MT_DISC_TERR_SIGN, 90 NM_MT_DISC_TERR_SIGN_ACK, 91 NM_MT_DISC_TERR_SIGN_NACK, 92 NM_MT_CONN_TERR_TRAF, 93 NM_MT_CONN_TERR_TRAF_ACK, 94 NM_MT_CONN_TERR_TRAF_NACK, 95 NM_MT_DISC_TERR_TRAF, 96 NM_MT_DISC_TERR_TRAF_ACK, 97 NM_MT_DISC_TERR_TRAF_NACK, 98 /* Transmission Management Messages */ 99 NM_MT_CONN_MDROP_LINK = 0x31, 100 NM_MT_CONN_MDROP_LINK_ACK, 101 NM_MT_CONN_MDROP_LINK_NACK, 102 NM_MT_DISC_MDROP_LINK, 103 NM_MT_DISC_MDROP_LINK_ACK, 104 NM_MT_DISC_MDROP_LINK_NACK, 105 /* Air Interface Management Messages */ 106 NM_MT_SET_BTS_ATTR = 0x41, 107 NM_MT_SET_BTS_ATTR_ACK, 108 NM_MT_SET_BTS_ATTR_NACK, 109 NM_MT_SET_RADIO_ATTR, 110 NM_MT_SET_RADIO_ATTR_ACK, 111 NM_MT_SET_RADIO_ATTR_NACK, 112 NM_MT_SET_CHAN_ATTR, 113 NM_MT_SET_CHAN_ATTR_ACK, 114 NM_MT_SET_CHAN_ATTR_NACK, 115 /* Test Management Messages */ 116 NM_MT_PERF_TEST = 0x51, 117 NM_MT_PERF_TEST_ACK, 118 NM_MT_PERF_TEST_NACK, 119 NM_MT_TEST_REP, 120 NM_MT_SEND_TEST_REP, 121 NM_MT_SEND_TEST_REP_ACK, 122 NM_MT_SEND_TEST_REP_NACK, 123 NM_MT_STOP_TEST, 124 NM_MT_STOP_TEST_ACK, 125 NM_MT_STOP_TEST_NACK, 126 /* State Management and Event Report Messages */ 127 NM_MT_STATECHG_EVENT_REP = 0x61, 128 NM_MT_FAILURE_EVENT_REP, 129 NM_MT_STOP_EVENT_REP, 130 NM_MT_STOP_EVENT_REP_ACK, 131 NM_MT_STOP_EVENT_REP_NACK, 132 NM_MT_REST_EVENT_REP, 133 NM_MT_REST_EVENT_REP_ACK, 134 NM_MT_REST_EVENT_REP_NACK, 135 NM_MT_CHG_ADM_STATE, 136 NM_MT_CHG_ADM_STATE_ACK, 137 NM_MT_CHG_ADM_STATE_NACK, 138 NM_MT_CHG_ADM_STATE_REQ, 139 NM_MT_CHG_ADM_STATE_REQ_ACK, 140 NM_MT_CHG_ADM_STATE_REQ_NACK, 141 NM_MT_REP_OUTST_ALARMS = 0x93, 142 NM_MT_REP_OUTST_ALARMS_ACK, 143 NM_MT_REP_OUTST_ALARMS_NACK, 144 /* Equipment Management Messages */ 145 NM_MT_CHANGEOVER = 0x71, 146 NM_MT_CHANGEOVER_ACK, 147 NM_MT_CHANGEOVER_NACK, 148 NM_MT_OPSTART, 149 NM_MT_OPSTART_ACK, 150 NM_MT_OPSTART_NACK, 151 NM_MT_REINIT, 152 NM_MT_REINIT_ACK, 153 NM_MT_REINIT_NACK, 154 NM_MT_SET_SITE_OUT, /* BS11: get alarm ?!? */ 155 NM_MT_SET_SITE_OUT_ACK, 156 NM_MT_SET_SITE_OUT_NACK, 157 NM_MT_CHG_HW_CONF = 0x90, 158 NM_MT_CHG_HW_CONF_ACK, 159 NM_MT_CHG_HW_CONF_NACK, 160 /* Measurement Management Messages */ 161 NM_MT_MEAS_RES_REQ = 0x8a, 162 NM_MT_MEAS_RES_RESP, 163 NM_MT_STOP_MEAS, 164 NM_MT_START_MEAS, 165 /* Other Messages */ 166 NM_MT_GET_ATTR = 0x81, 167 NM_MT_GET_ATTR_RESP, 168 NM_MT_GET_ATTR_NACK, 169 NM_MT_SET_ALARM_THRES, 170 NM_MT_SET_ALARM_THRES_ACK, 171 NM_MT_SET_ALARM_THRES_NACK, 172 173 NM_MT_IPACC_RESTART = 0x87, 174 NM_MT_IPACC_RESTART_ACK, 175 }; 176 177 enum abis_nm_msgtype_bs11 { 178 NM_MT_BS11_RESET_RESOURCE = 0x74, 179 180 NM_MT_BS11_BEGIN_DB_TX = 0xa3, 181 NM_MT_BS11_BEGIN_DB_TX_ACK, 182 NM_MT_BS11_BEGIN_DB_TX_NACK, 183 NM_MT_BS11_END_DB_TX = 0xa6, 184 NM_MT_BS11_END_DB_TX_ACK, 185 NM_MT_BS11_END_DB_TX_NACK, 186 NM_MT_BS11_CREATE_OBJ = 0xa9, 187 NM_MT_BS11_CREATE_OBJ_ACK, 188 NM_MT_BS11_CREATE_OBJ_NACK, 189 NM_MT_BS11_DELETE_OBJ = 0xac, 190 NM_MT_BS11_DELETE_OBJ_ACK, 191 NM_MT_BS11_DELETE_OBJ_NACK, 192 193 NM_MT_BS11_SET_ATTR = 0xd0, 194 NM_MT_BS11_SET_ATTR_ACK, 195 NM_MT_BS11_SET_ATTR_NACK, 196 NM_MT_BS11_LMT_SESSION = 0xdc, 197 198 NM_MT_BS11_GET_STATE = 0xe3, 199 NM_MT_BS11_GET_STATE_ACK, 200 NM_MT_BS11_LMT_LOGON = 0xe5, 201 NM_MT_BS11_LMT_LOGON_ACK, 202 NM_MT_BS11_RESTART = 0xe7, 203 NM_MT_BS11_RESTART_ACK, 204 NM_MT_BS11_DISCONNECT = 0xe9, 205 NM_MT_BS11_DISCONNECT_ACK, 206 NM_MT_BS11_LMT_LOGOFF = 0xec, 207 NM_MT_BS11_LMT_LOGOFF_ACK, 208 NM_MT_BS11_RECONNECT = 0xf1, 209 NM_MT_BS11_RECONNECT_ACK, 210 }; 211 212 enum abis_nm_msgtype_ipacc { 213 NM_MT_IPACC_RSL_CONNECT = 0xe0, 214 NM_MT_IPACC_RSL_CONNECT_ACK, 215 NM_MT_IPACC_RSL_CONNECT_NACK, 216 NM_MT_IPACC_RSL_DISCONNECT = 0xe3, 217 NM_MT_IPACC_RSL_DISCONNECT_ACK, 218 NM_MT_IPACC_RSL_DISCONNECT_NACK, 219 NM_MT_IPACC_CONN_TRAF = 0xe6, 220 NM_MT_IPACC_CONN_TRAF_ACK, 221 NM_MT_IPACC_CONN_TRAF_NACK, 222 NM_MT_IPACC_DISC_TRAF = 0xe9, 223 NM_MT_IPACC_DISC_TRAF_ACK, 224 NM_MT_IPACC_DISC_TRAF_NACK, 225 NM_MT_IPACC_DEF_BOOT_SW = 0xec, 226 NM_MT_IPACC_DEF_BOOT_SW_ACK, 227 NM_MT_IPACC_DEF_BOOT_SW_NACK, 228 NM_MT_IPACC_SET_NVATTR = 0xef, 229 NM_MT_IPACC_SET_NVATTR_ACK, 230 NM_MT_IPACC_SET_NVATTR_NACK, 231 NM_MT_IPACC_GET_NVATTR = 0xf2, 232 NM_MT_IPACC_GET_NVATTR_ACK, 233 NM_MT_IPACC_GET_NVATTR_NACK, 234 NM_MT_IPACC_SET_ATTR = 0xf5, 235 NM_MT_IPACC_SET_ATTR_ACK, 236 NM_MT_IPACC_SET_ATTR_NACK, 237 NM_MT_IPACC_ATTR_CHG_EVT = 0xf8, 238 NM_MT_IPACC_SW_DEACT = 0xf9, 239 NM_MT_IPACC_SW_DEACT_ACK, 240 NM_MT_IPACC_SW_DEACT_NACK, 241 NM_MT_IPACC_MEAS_RES_REQ_NACK = 0xfc, 242 NM_MT_IPACC_START_MEAS_NACK, 243 NM_MT_IPACC_STOP_MEAS_NACK, 244 }; 245 246 enum abis_nm_bs11_cell_alloc { 247 NM_BS11_CANR_GSM = 0x00, 248 NM_BS11_CANR_DCS1800 = 0x01, 249 }; 250 251 /* Section 9.2: Object Class */ 252 enum abis_nm_obj_class { 253 NM_OC_SITE_MANAGER = 0x00, 254 NM_OC_BTS, 255 NM_OC_RADIO_CARRIER, 256 NM_OC_CHANNEL, 257 NM_OC_BASEB_TRANSC, 258 /* RFU: 05-FE */ 259 NM_OC_BS11_ADJC = 0xa0, 260 NM_OC_BS11_HANDOVER = 0xa1, 261 NM_OC_BS11_PWR_CTRL = 0xa2, 262 NM_OC_BS11_BTSE = 0xa3, /* LMT? */ 263 NM_OC_BS11_RACK = 0xa4, 264 NM_OC_BS11 = 0xa5, /* 01: ALCO */ 265 NM_OC_BS11_TEST = 0xa6, 266 NM_OC_BS11_ENVABTSE = 0xa8, 267 NM_OC_BS11_BPORT = 0xa9, 268 269 NM_OC_GPRS_NSE = 0xf0, 270 NM_OC_GPRS_CELL = 0xf1, 271 NM_OC_GPRS_NSVC0 = 0xf2, 272 NM_OC_GPRS_NSVC1 = 0xf3, 273 274 NM_OC_NULL = 0xff, 275 }; 276 277 /* Section 9.4: Attributes */ 278 enum abis_nm_attr { 279 NM_ATT_ABIS_CHANNEL = 0x01, 280 NM_ATT_ADD_INFO, 281 NM_ATT_ADD_TEXT, 282 NM_ATT_ADM_STATE, 283 NM_ATT_ARFCN_LIST, 284 NM_ATT_AUTON_REPORT, 285 NM_ATT_AVAIL_STATUS, 286 NM_ATT_BCCH_ARFCN, 287 NM_ATT_BSIC, 288 NM_ATT_BTS_AIR_TIMER, 289 NM_ATT_CCCH_L_I_P, 290 NM_ATT_CCCH_L_T, 291 NM_ATT_CHAN_COMB, 292 NM_ATT_CONN_FAIL_CRIT, 293 NM_ATT_DEST, 294 /* res */ 295 NM_ATT_EVENT_TYPE = 0x11, /* BS11: file data ?!? */ 296 NM_ATT_FILE_ID, 297 NM_ATT_FILE_VERSION, 298 NM_ATT_GSM_TIME, 299 NM_ATT_HSN, 300 NM_ATT_HW_CONFIG, 301 NM_ATT_HW_DESC, 302 NM_ATT_INTAVE_PARAM, 303 NM_ATT_INTERF_BOUND, 304 NM_ATT_LIST_REQ_ATTR, 305 NM_ATT_MAIO, 306 NM_ATT_MANUF_STATE, 307 NM_ATT_MANUF_THRESH, 308 NM_ATT_MANUF_ID, 309 NM_ATT_MAX_TA, 310 NM_ATT_MDROP_LINK, /* 0x20 */ 311 NM_ATT_MDROP_NEXT, 312 NM_ATT_NACK_CAUSES, 313 NM_ATT_NY1, 314 NM_ATT_OPER_STATE, 315 NM_ATT_OVERL_PERIOD, 316 NM_ATT_PHYS_CONF, 317 NM_ATT_POWER_CLASS, 318 NM_ATT_POWER_THRESH, 319 NM_ATT_PROB_CAUSE, 320 NM_ATT_RACH_B_THRESH, 321 NM_ATT_LDAVG_SLOTS, 322 NM_ATT_RAD_SUBC, 323 NM_ATT_RF_MAXPOWR_R, 324 NM_ATT_SITE_INPUTS, 325 NM_ATT_SITE_OUTPUTS, 326 NM_ATT_SOURCE, /* 0x30 */ 327 NM_ATT_SPEC_PROB, 328 NM_ATT_START_TIME, 329 NM_ATT_T200, 330 NM_ATT_TEI, 331 NM_ATT_TEST_DUR, 332 NM_ATT_TEST_NO, 333 NM_ATT_TEST_REPORT, 334 NM_ATT_VSWR_THRESH, 335 NM_ATT_WINDOW_SIZE, 336 /* Res */ 337 NM_ATT_BS11_RSSI_OFFS = 0x3d, 338 NM_ATT_BS11_TXPWR = 0x3e, 339 NM_ATT_BS11_DIVERSITY = 0x3f, 340 /* Res */ 341 NM_ATT_TSC = 0x40, 342 NM_ATT_SW_CONFIG, 343 NM_ATT_SW_DESCR, 344 NM_ATT_SEVERITY, 345 NM_ATT_GET_ARI, 346 NM_ATT_HW_CONF_CHG, 347 NM_ATT_OUTST_ALARM, 348 NM_ATT_FILE_DATA, 349 NM_ATT_MEAS_RES, 350 NM_ATT_MEAS_TYPE, 351 }; 352 353 enum abis_nm_attr_bs11 { 354 NM_ATT_BS11_OM_LAPD_REL_TIMER = 0x02, 355 NM_ATT_BS11_EMERG_TIMER1 = 0x42, 356 NM_ATT_BS11_EMERG_TIMER2 = 0x44, 357 NM_ATT_BS11_ESN_FW_CODE_NO = 0x4c, 358 NM_ATT_BS11_ESN_HW_CODE_NO = 0x4f, 359 360 NM_ATT_BS11_FILE_DATA = NM_ATT_EVENT_TYPE, 361 362 NM_ATT_BS11_ESN_PCB_SERIAL = 0x55, 363 NM_ATT_BS11_EXCESSIVE_DISTANCE = 0x58, 364 365 NM_ATT_BS11_ALL_TEST_CATG = 0x60, 366 NM_ATT_BS11_BTSLS_HOPPING, 367 NM_ATT_BS11_CELL_ALLOC_NR, 368 NM_ATT_BS11_CELL_GLOBAL_ID, 369 NM_ATT_BS11_ENA_INTERF_CLASS = 0x66, 370 NM_ATT_BS11_ENA_INT_INTEC_HANDO = 0x67, 371 NM_ATT_BS11_ENA_INT_INTRC_HANDO = 0x68, 372 NM_ATT_BS11_ENA_MS_PWR_CTRL = 0x69, 373 NM_ATT_BS11_ENA_PWR_BDGT_HO = 0x6a, 374 NM_ATT_BS11_ENA_PWR_CTRL_RLFW = 0x6b, 375 NM_ATT_BS11_ENA_RXLEV_HO = 0x6c, 376 NM_ATT_BS11_ENA_RXQUAL_HO = 0x6d, 377 NM_ATT_BS11_FACCH_QUAL = 0x6e, 378 379 NM_ATT_BS11_RF_RES_IND_PER = 0x8f, 380 381 NM_ATT_BS11_RX_LEV_MIN_CELL = 0x90, 382 NM_ATT_BS11_ABIS_EXT_TIME = 0x91, 383 NM_ATT_BS11_TIMER_HO_REQUEST = 0x92, 384 NM_ATT_BS11_TIMER_NCELL = 0x93, 385 NM_ATT_BS11_TSYNC = 0x94, 386 NM_ATT_BS11_TTRAU = 0x95, 387 NM_ATT_BS11_EMRG_CFG_MEMBER = 0x9b, 388 NM_ATT_BS11_TRX_AREA = 0x9f, 389 390 NM_ATT_BS11_BCCH_RECONF = 0xd7, 391 NM_ATT_BS11_BIT_ERR_THESH = 0xa0, 392 NM_ATT_BS11_BOOT_SW_VERS = 0xa1, 393 NM_ATT_BS11_CCLK_ACCURACY = 0xa3, 394 NM_ATT_BS11_CCLK_TYPE = 0xa4, 395 NM_ATT_BS11_INP_IMPEDANCE = 0xaa, 396 NM_ATT_BS11_L1_PROT_TYPE = 0xab, 397 NM_ATT_BS11_LINE_CFG = 0xac, 398 NM_ATT_BS11_LI_PORT_1 = 0xad, 399 NM_ATT_BS11_LI_PORT_2 = 0xae, 400 401 NM_ATT_BS11_L1_REM_ALM_TYPE = 0xb0, 402 NM_ATT_BS11_SW_LOAD_INTENDED = 0xbb, 403 NM_ATT_BS11_SW_LOAD_SAFETY = 0xbc, 404 NM_ATT_BS11_SW_LOAD_STORED = 0xbd, 405 406 NM_ATT_BS11_VENDOR_NAME = 0xc1, 407 NM_ATT_BS11_HOPPING_MODE = 0xc5, 408 NM_ATT_BS11_LMT_LOGON_SESSION = 0xc6, 409 NM_ATT_BS11_LMT_LOGIN_TIME = 0xc7, 410 NM_ATT_BS11_LMT_USER_ACC_LEV = 0xc8, 411 NM_ATT_BS11_LMT_USER_NAME = 0xc9, 412 413 NM_ATT_BS11_L1_CONTROL_TS = 0xd8, 414 NM_ATT_BS11_RADIO_MEAS_GRAN = 0xdc, /* in SACCH multiframes */ 415 NM_ATT_BS11_RADIO_MEAS_REP = 0xdd, 416 417 NM_ATT_BS11_SH_LAPD_INT_TIMER = 0xe8, 418 419 NM_ATT_BS11_BTS_STATE = 0xf0, 420 NM_ATT_BS11_E1_STATE = 0xf1, 421 NM_ATT_BS11_PLL = 0xf2, 422 NM_ATT_BS11_RX_OFFSET = 0xf3, 423 NM_ATT_BS11_ANT_TYPE = 0xf4, 424 NM_ATT_BS11_PLL_MODE = 0xfc, 425 NM_ATT_BS11_PASSWORD = 0xfd, 426 }; 427 428 enum abis_nm_attr_ipa { 429 NM_ATT_IPACC_DST_IP = 0x80, 430 NM_ATT_IPACC_DST_IP_PORT = 0x81, 431 NM_ATT_IPACC_SSRC = 0x82, /* RTP Sync Source */ 432 NM_ATT_IPACC_RTP_PAYLD_TYPE = 0x83, 433 NM_ATT_IPACC_BASEB_ID = 0x84, 434 NM_ATT_IPACC_STREAM_ID = 0x85, 435 NM_ATT_IPACC_NV_FLAGS = 0x86, 436 NM_ATT_IPACC_FREQ_CTRL = 0x87, 437 NM_ATT_IPACC_PRIM_OML_CFG = 0x88, 438 NM_ATT_IPACC_SEC_OML_CFG = 0x89, 439 NM_ATT_IPACC_IP_IF_CFG = 0x8a, /* IP interface */ 440 NM_ATT_IPACC_IP_GW_CFG = 0x8b, /* IP gateway */ 441 NM_ATT_IPACC_IN_SERV_TIME = 0x8c, 442 NM_ATT_IPACC_TRX_BTS_ASS = 0x8d, 443 NM_ATT_IPACC_LOCATION = 0x8e, /* string describing location */ 444 NM_ATT_IPACC_PAGING_CFG = 0x8f, 445 NM_ATT_IPACC_FILE_DATA = 0x90, 446 NM_ATT_IPACC_UNIT_ID = 0x91, /* Site/BTS/TRX */ 447 NM_ATT_IPACC_PARENT_UNIT_ID = 0x92, 448 NM_ATT_IPACC_UNIT_NAME = 0x93, /* default: nbts-<mac-as-string> */ 449 NM_ATT_IPACC_SNMP_CFG = 0x94, 450 NM_ATT_IPACC_PRIM_OML_CFG_LIST = 0x95, 451 NM_ATT_IPACC_PRIM_OML_FB_TOUT = 0x96, /* fallback timeout */ 452 NM_ATT_IPACC_CUR_SW_CFG = 0x97, 453 NM_ATT_IPACC_TIMING_BUS = 0x98, 454 NM_ATT_IPACC_CGI = 0x99, /* Cell Global ID */ 455 NM_ATT_IPACC_RAC = 0x9a, 456 NM_ATT_IPACC_OBJ_VERSION = 0x9b, 457 NM_ATT_IPACC_GPRS_PAGING_CFG = 0x9c, 458 NM_ATT_IPACC_NSEI = 0x9d, 459 NM_ATT_IPACC_BVCI = 0x9e, 460 NM_ATT_IPACC_NSVCI = 0x9f, 461 NM_ATT_IPACC_NS_CFG = 0xa0, 462 NM_ATT_IPACC_BSSGP_CFG = 0xa1, 463 NM_ATT_IPACC_NS_LINK_CFG = 0xa2, 464 NM_ATT_IPACC_RLC_CFG = 0xa3, 465 NM_ATT_IPACC_ALM_THRESH_LIST = 0xa4, 466 NM_ATT_IPACC_MONIT_VAL_LIST = 0xa5, 467 NM_ATT_IPACC_TIB_CONTROL = 0xa6, 468 NM_ATT_IPACC_SUPP_FEATURES = 0xa7, 469 NM_ATT_IPACC_CODING_SCHEMES = 0xa8, 470 NM_ATT_IPACC_RLC_CFG_2 = 0xa9, 471 NM_ATT_IPACC_HEARTB_TOUT = 0xaa, 472 NM_ATT_IPACC_UPTIME = 0xab, 473 NM_ATT_IPACC_RLC_CFG_3 = 0xac, 474 NM_ATT_IPACC_SSL_CFG = 0xad, 475 NM_ATT_IPACC_SEC_POSSIBLE = 0xae, 476 NM_ATT_IPACC_IML_SSL_STATE = 0xaf, 477 NM_ATT_IPACC_REVOC_DATE = 0xb0, 478 }; 479 480 /* Section 9.4.4: Administrative State */ 481 enum abis_nm_adm_state { 482 NM_STATE_LOCKED = 0x01, 483 NM_STATE_UNLOCKED = 0x02, 484 NM_STATE_SHUTDOWN = 0x03, 485 NM_STATE_NULL = 0xff, 486 }; 487 488 /* Section 9.4.13: Channel Combination */ 489 enum abis_nm_chan_comb { 490 NM_CHANC_TCHFull = 0x00, 491 NM_CHANC_TCHHalf = 0x01, 492 NM_CHANC_TCHHalf2 = 0x02, 493 NM_CHANC_SDCCH = 0x03, 494 NM_CHANC_mainBCCH = 0x04, 495 NM_CHANC_BCCHComb = 0x05, 496 NM_CHANC_BCCH = 0x06, 497 NM_CHANC_BCCH_CBCH = 0x07, 498 NM_CHANC_SDCCH_CBCH = 0x08, 499 }; 500 501 /* Section 9.4.16: Event Type */ 502 enum abis_nm_event_type { 503 NM_EVT_COMM_FAIL = 0x00, 504 NM_EVT_QOS_FAIL = 0x01, 505 NM_EVT_PROC_FAIL = 0x02, 506 NM_EVT_EQUIP_FAIL = 0x03, 507 NM_EVT_ENV_FAIL = 0x04, 508 }; 509 510 /* Section: 9.4.63: Perceived Severity */ 511 enum abis_nm_severity { 512 NM_SEVER_CEASED = 0x00, 513 NM_SEVER_CRITICAL = 0x01, 514 NM_SEVER_MAJOR = 0x02, 515 NM_SEVER_MINOR = 0x03, 516 NM_SEVER_WARNING = 0x04, 517 NM_SEVER_INDETERMINATE = 0x05, 518 }; 519 520 /* Section 9.4.43: Probable Cause Type */ 521 enum abis_nm_pcause_type { 522 NM_PCAUSE_T_X721 = 0x01, 523 NM_PCAUSE_T_GSM = 0x02, 524 NM_PCAUSE_T_MANUF = 0x03, 525 }; 526 527 /* Section 9.4.36: NACK Causes */ 528 enum abis_nm_nack_cause { 529 /* General Nack Causes */ 530 NM_NACK_INCORR_STRUCT = 0x01, 531 NM_NACK_MSGTYPE_INVAL = 0x02, 532 NM_NACK_OBJCLASS_INVAL = 0x05, 533 NM_NACK_OBJCLASS_NOTSUPP = 0x06, 534 NM_NACK_BTSNR_UNKN = 0x07, 535 NM_NACK_TRXNR_UNKN = 0x08, 536 NM_NACK_OBJINST_UNKN = 0x09, 537 NM_NACK_ATTRID_INVAL = 0x0c, 538 NM_NACK_ATTRID_NOTSUPP = 0x0d, 539 NM_NACK_PARAM_RANGE = 0x0e, 540 NM_NACK_ATTRLIST_INCONSISTENT = 0x0f, 541 NM_NACK_SPEC_IMPL_NOTSUPP = 0x10, 542 NM_NACK_CANT_PERFORM = 0x11, 543 /* Specific Nack Causes */ 544 NM_NACK_RES_NOTIMPL = 0x19, 545 NM_NACK_RES_NOTAVAIL = 0x1a, 546 NM_NACK_FREQ_NOTAVAIL = 0x1b, 547 NM_NACK_TEST_NOTSUPP = 0x1c, 548 NM_NACK_CAPACITY_RESTR = 0x1d, 549 NM_NACK_PHYSCFG_NOTPERFORM = 0x1e, 550 NM_NACK_TEST_NOTINIT = 0x1f, 551 NM_NACK_PHYSCFG_NOTRESTORE = 0x20, 552 NM_NACK_TEST_NOSUCH = 0x21, 553 NM_NACK_TEST_NOSTOP = 0x22, 554 NM_NACK_MSGINCONSIST_PHYSCFG = 0x23, 555 NM_NACK_FILE_INCOMPLETE = 0x25, 556 NM_NACK_FILE_NOTAVAIL = 0x26, 557 NM_NACK_FILE_NOTACTIVATE = 0x27, 558 NM_NACK_REQ_NOT_GRANT = 0x28, 559 NM_NACK_WAIT = 0x29, 560 NM_NACK_NOTH_REPORT_EXIST = 0x2a, 561 NM_NACK_MEAS_NOTSUPP = 0x2b, 562 NM_NACK_MEAS_NOTSTART = 0x2c, 563 }; 564 565 /* Section 9.4.1 */ 566 struct abis_nm_channel { 567 guint8 attrib; 568 guint8 bts_port; 569 guint8 timeslot; 570 guint8 subslot; 571 } __attribute__ ((packed)); 572 573 /* Siemens BS-11 specific objects in the SienemsHW (0xA5) object class */ 574 enum abis_bs11_objtype { 575 BS11_OBJ_ALCO = 0x01, 576 BS11_OBJ_BBSIG = 0x02, /* obj_class: 0,1 */ 577 BS11_OBJ_TRX1 = 0x03, /* only DEACTIVATE TRX1 */ 578 BS11_OBJ_CCLK = 0x04, 579 BS11_OBJ_GPSU = 0x06, 580 BS11_OBJ_LI = 0x07, 581 BS11_OBJ_PA = 0x09, /* obj_class: 0, 1*/ 582 }; 583 584 enum abis_bs11_trx_power { 585 BS11_TRX_POWER_GSM_2W = 0x06, 586 BS11_TRX_POWER_GSM_250mW= 0x07, 587 BS11_TRX_POWER_GSM_80mW = 0x08, 588 BS11_TRX_POWER_GSM_30mW = 0x09, 589 BS11_TRX_POWER_DCS_3W = 0x0a, 590 BS11_TRX_POWER_DCS_1W6 = 0x0b, 591 BS11_TRX_POWER_DCS_500mW= 0x0c, 592 BS11_TRX_POWER_DCS_160mW= 0x0d, 593 }; 594 595 enum abis_bs11_li_pll_mode { 596 BS11_LI_PLL_LOCKED = 2, 597 BS11_LI_PLL_STANDALONE = 3, 598 }; 599 600 enum abis_bs11_phase { 601 BS11_STATE_SOFTWARE_RQD = 0x01, 602 BS11_STATE_LOAD_SMU_INTENDED = 0x11, 603 BS11_STATE_LOAD_SMU_SAFETY = 0x21, 604 BS11_STATE_LOAD_FAILED = 0x31, 605 BS11_STATE_LOAD_DIAGNOSTIC = 0x41, 606 BS11_STATE_WARM_UP = 0x51, 607 BS11_STATE_WARM_UP_2 = 0x52, 608 BS11_STATE_WAIT_MIN_CFG = 0x62, 609 BS11_STATE_MAINTENANCE = 0x72, 610 BS11_STATE_LOAD_MBCCU = 0x92, 611 BS11_STATE_WAIT_MIN_CFG_2 = 0xA2, 612 BS11_STATE_NORMAL = 0x03, 613 BS11_STATE_ABIS_LOAD = 0x13, 614 }; 615 616 /* From openbsc/include/openbsc/tlv.h */ 617 enum tlv_type { 618 TLV_TYPE_UNKNOWN, 619 TLV_TYPE_FIXED, 620 TLV_TYPE_T, 621 TLV_TYPE_TV, 622 TLV_TYPE_TLV, 623 TLV_TYPE_TL16V, 624 TLV_TYPE_TLV16, 625 }; 626 627 struct tlv_def { 628 enum tlv_type type; 629 u_int8_t fixed_len; 630 }; 631 632 struct tlv_definition { 633 struct tlv_def def[0xff]; 634 }; 635 636 enum abis_nm_ipacc_test_no { 637 NM_IPACC_TESTNO_RLOOP_ANT = 0x01, 638 NM_IPACC_TESTNO_RLOOP_XCVR = 0x02, 639 NM_IPACC_TESTNO_FUNC_OBJ = 0x03, 640 NM_IPACC_TESTNO_CHAN_USAGE = 0x40, 641 NM_IPACC_TESTNO_BCCH_CHAN_USAGE = 0x41, 642 NM_IPACC_TESTNO_FREQ_SYNC = 0x42, 643 NM_IPACC_TESTNO_BCCH_INFO = 0x43, 644 NM_IPACC_TESTNO_TX_BEACON = 0x44, 645 NM_IPACC_TESTNO_SYSINFO_MONITOR = 0x45, 646 NM_IPACC_TESTNO_BCCCH_MONITOR = 0x46, 647 }; 648 649 /* first byte after length inside NM_ATT_TEST_REPORT */ 650 enum abis_nm_ipacc_test_res { 651 NM_IPACC_TESTRES_SUCCESS = 0, 652 NM_IPACC_TESTRES_TIMEOUT = 1, 653 NM_IPACC_TESTRES_NO_CHANS = 2, 654 NM_IPACC_TESTRES_PARTIAL = 3, 655 NM_IPACC_TESTRES_STOPPED = 4, 656 }; 657 658 /* internal IE inside NM_ATT_TEST_REPORT */ 659 enum abis_nm_ipacc_testres_ie { 660 NM_IPACC_TR_IE_FREQ_ERR_LIST = 3, 661 NM_IPACC_TR_IE_CHAN_USAGE = 4, 662 NM_IPACC_TR_IE_BCCH_INFO = 6, 663 NM_IPACC_TR_IE_RESULT_DETAILS = 8, 664 NM_IPACC_TR_IE_FREQ_ERR = 18, 665 }; 666 667 /* From openbsc/src/abis_nm.c */ 668 static const struct tlv_definition nm_att_tlvdef_base = { 669 .def = { 670 [NM_ATT_ABIS_CHANNEL] = { TLV_TYPE_FIXED, 3 }, 671 [NM_ATT_ADD_INFO] = { TLV_TYPE_TL16V, 0 }, 672 [NM_ATT_ADD_TEXT] = { TLV_TYPE_TL16V, 0 }, 673 [NM_ATT_ADM_STATE] = { TLV_TYPE_TV, 0 }, 674 [NM_ATT_ARFCN_LIST]= { TLV_TYPE_TL16V, 0 }, 675 [NM_ATT_AUTON_REPORT] = { TLV_TYPE_TV, 0 }, 676 [NM_ATT_AVAIL_STATUS] = { TLV_TYPE_TL16V, 0 }, 677 [NM_ATT_BCCH_ARFCN] = { TLV_TYPE_FIXED, 2 }, 678 [NM_ATT_BSIC] = { TLV_TYPE_TV, 0 }, 679 [NM_ATT_BTS_AIR_TIMER] = { TLV_TYPE_TV, 0 }, 680 [NM_ATT_CCCH_L_I_P] = { TLV_TYPE_TV, 0 }, 681 [NM_ATT_CCCH_L_T] = { TLV_TYPE_TV, 0 }, 682 [NM_ATT_CHAN_COMB] = { TLV_TYPE_TV, 0 }, 683 [NM_ATT_CONN_FAIL_CRIT] = { TLV_TYPE_TL16V, 0 }, 684 [NM_ATT_DEST] = { TLV_TYPE_TL16V, 0 }, 685 [NM_ATT_EVENT_TYPE] = { TLV_TYPE_TV, 0 }, 686 [NM_ATT_FILE_ID] = { TLV_TYPE_TL16V, 0 }, 687 [NM_ATT_FILE_VERSION] = { TLV_TYPE_TL16V, 0 }, 688 [NM_ATT_GSM_TIME] = { TLV_TYPE_FIXED, 2 }, 689 [NM_ATT_HSN] = { TLV_TYPE_TV, 0 }, 690 [NM_ATT_HW_CONFIG] = { TLV_TYPE_TL16V, 0 }, 691 [NM_ATT_HW_DESC] = { TLV_TYPE_TLV, 0 }, 692 [NM_ATT_INTAVE_PARAM] = { TLV_TYPE_TV, 0 }, 693 [NM_ATT_INTERF_BOUND] = { TLV_TYPE_FIXED, 6 }, 694 [NM_ATT_LIST_REQ_ATTR] = { TLV_TYPE_TL16V, 0 }, 695 [NM_ATT_MAIO] = { TLV_TYPE_TV, 0 }, 696 [NM_ATT_MANUF_STATE] = { TLV_TYPE_TV, 0 }, 697 [NM_ATT_MANUF_THRESH] = { TLV_TYPE_TL16V, 0 }, 698 [NM_ATT_MANUF_ID] = { TLV_TYPE_TL16V, 0 }, 699 [NM_ATT_MAX_TA] = { TLV_TYPE_TV, 0 }, 700 [NM_ATT_MDROP_LINK] = { TLV_TYPE_FIXED, 2 }, 701 [NM_ATT_MDROP_NEXT] = { TLV_TYPE_FIXED, 2 }, 702 [NM_ATT_NACK_CAUSES] = { TLV_TYPE_TV, 0 }, 703 [NM_ATT_NY1] = { TLV_TYPE_TV, 0 }, 704 [NM_ATT_OPER_STATE] = { TLV_TYPE_TV, 0 }, 705 [NM_ATT_OVERL_PERIOD] = { TLV_TYPE_TL16V, 0 }, 706 [NM_ATT_PHYS_CONF] = { TLV_TYPE_TL16V, 0 }, 707 [NM_ATT_POWER_CLASS] = { TLV_TYPE_TV, 0 }, 708 [NM_ATT_POWER_THRESH] = { TLV_TYPE_FIXED, 3 }, 709 [NM_ATT_PROB_CAUSE] = { TLV_TYPE_FIXED, 3 }, 710 [NM_ATT_RACH_B_THRESH] = { TLV_TYPE_TV, 0 }, 711 [NM_ATT_LDAVG_SLOTS] = { TLV_TYPE_FIXED, 2 }, 712 [NM_ATT_RAD_SUBC] = { TLV_TYPE_TV, 0 }, 713 [NM_ATT_RF_MAXPOWR_R] = { TLV_TYPE_TV, 0 }, 714 [NM_ATT_SITE_INPUTS] = { TLV_TYPE_TL16V, 0 }, 715 [NM_ATT_SITE_OUTPUTS] = { TLV_TYPE_TL16V, 0 }, 716 [NM_ATT_SOURCE] = { TLV_TYPE_TL16V, 0 }, 717 [NM_ATT_SPEC_PROB] = { TLV_TYPE_TV, 0 }, 718 [NM_ATT_START_TIME] = { TLV_TYPE_FIXED, 2 }, 719 [NM_ATT_T200] = { TLV_TYPE_FIXED, 7 }, 720 [NM_ATT_TEI] = { TLV_TYPE_TV, 0 }, 721 [NM_ATT_TEST_DUR] = { TLV_TYPE_FIXED, 2 }, 722 [NM_ATT_TEST_NO] = { TLV_TYPE_TV, 0 }, 723 [NM_ATT_TEST_REPORT] = { TLV_TYPE_TL16V, 0 }, 724 [NM_ATT_VSWR_THRESH] = { TLV_TYPE_FIXED, 2 }, 725 [NM_ATT_WINDOW_SIZE] = { TLV_TYPE_TV, 0 }, 726 [NM_ATT_TSC] = { TLV_TYPE_TV, 0 }, 727 [NM_ATT_SW_CONFIG] = { TLV_TYPE_TL16V, 0 }, 728 [NM_ATT_SEVERITY] = { TLV_TYPE_TV, 0 }, 729 [NM_ATT_GET_ARI] = { TLV_TYPE_TL16V, 0 }, 730 [NM_ATT_HW_CONF_CHG] = { TLV_TYPE_TL16V, 0 }, 731 [NM_ATT_OUTST_ALARM] = { TLV_TYPE_TV, 0 }, 732 [NM_ATT_FILE_DATA] = { TLV_TYPE_TL16V, 0 }, 733 [NM_ATT_MEAS_RES] = { TLV_TYPE_TL16V, 0 }, 734 735 }, 736 }; 737 738 /* BS11 specifics */ 739 static const struct tlv_definition nm_att_tlvdev_bs11 = { 740 .def = { 741 /* different stndard IEs */ 742 [NM_ATT_OUTST_ALARM] = { TLV_TYPE_TLV, 0 }, 743 [NM_ATT_HW_DESC] = { TLV_TYPE_TL16V, 0 }, 744 [NM_ATT_ARFCN_LIST]= { TLV_TYPE_TLV16, 0 }, 745 746 /* proprietary IEs */ 747 [NM_ATT_BS11_ABIS_EXT_TIME] = { TLV_TYPE_TLV, 0 }, 748 [NM_ATT_BS11_OM_LAPD_REL_TIMER]={ TLV_TYPE_FIXED, 2 }, 749 [NM_ATT_BS11_SH_LAPD_INT_TIMER]={ TLV_TYPE_TLV, 0 }, 750 [NM_ATT_BS11_EMERG_TIMER1] = { TLV_TYPE_TLV, 0 }, 751 [NM_ATT_BS11_EMERG_TIMER2] = { TLV_TYPE_TLV, 0 }, 752 [NM_ATT_BS11_BTSLS_HOPPING] = { TLV_TYPE_FIXED, 1 }, 753 [NM_ATT_BS11_CELL_ALLOC_NR] = { TLV_TYPE_FIXED, 1 }, 754 [NM_ATT_BS11_ENA_INTERF_CLASS]= { TLV_TYPE_FIXED, 1 }, 755 [NM_ATT_BS11_FACCH_QUAL] = { TLV_TYPE_FIXED, 1 }, 756 [NM_ATT_BS11_TSYNC] = { TLV_TYPE_FIXED, 2 }, 757 [NM_ATT_BS11_TTRAU] = { TLV_TYPE_FIXED, 2 }, 758 [NM_ATT_BS11_EXCESSIVE_DISTANCE] = { TLV_TYPE_TLV, 1 }, 759 [NM_ATT_BS11_HOPPING_MODE] = { TLV_TYPE_TLV, 1 }, 760 [NM_ATT_BS11_RF_RES_IND_PER] = { TLV_TYPE_FIXED, 1 }, 761 [NM_ATT_BS11_RADIO_MEAS_GRAN] = { TLV_TYPE_TLV, 0 }, 762 [NM_ATT_BS11_RADIO_MEAS_REP] = { TLV_TYPE_TLV, 0 }, 763 [NM_ATT_BS11_EMRG_CFG_MEMBER] = { TLV_TYPE_TLV, 0 }, 764 [NM_ATT_BS11_TRX_AREA] = { TLV_TYPE_TLV, 0 }, 765 [NM_ATT_BS11_ESN_FW_CODE_NO] = { TLV_TYPE_TLV, 0 }, 766 [NM_ATT_BS11_ESN_HW_CODE_NO] = { TLV_TYPE_TLV, 0 }, 767 [NM_ATT_BS11_ESN_PCB_SERIAL] = { TLV_TYPE_TLV, 0 }, 768 [NM_ATT_BS11_BOOT_SW_VERS] = { TLV_TYPE_TLV, 0 }, 769 [0x59] = { TLV_TYPE_TLV, 0 }, 770 [0xd5] = { TLV_TYPE_TLV, 0 }, 771 [0xa8] = { TLV_TYPE_TLV, 0 }, 772 [NM_ATT_BS11_PASSWORD] = { TLV_TYPE_TLV, 0 }, 773 [NM_ATT_BS11_TXPWR] = { TLV_TYPE_TLV, 0 }, 774 [NM_ATT_BS11_RSSI_OFFS] = { TLV_TYPE_TLV, 0 }, 775 [NM_ATT_BS11_LINE_CFG] = { TLV_TYPE_TV, 0 }, 776 [NM_ATT_BS11_L1_PROT_TYPE] = { TLV_TYPE_TV, 0 }, 777 [NM_ATT_BS11_BIT_ERR_THESH] = { TLV_TYPE_FIXED, 2 }, 778 [NM_ATT_BS11_DIVERSITY] = { TLV_TYPE_TLV, 0 }, 779 [NM_ATT_BS11_LMT_LOGON_SESSION]={ TLV_TYPE_TLV, 0 }, 780 [NM_ATT_BS11_LMT_LOGIN_TIME] = { TLV_TYPE_TLV, 0 }, 781 [NM_ATT_BS11_LMT_USER_ACC_LEV] ={ TLV_TYPE_TLV, 0 }, 782 [NM_ATT_BS11_LMT_USER_NAME] = { TLV_TYPE_TLV, 0 }, 783 [NM_ATT_BS11_BTS_STATE] = { TLV_TYPE_TLV, 0 }, 784 [NM_ATT_BS11_E1_STATE] = { TLV_TYPE_TLV, 0 }, 785 [NM_ATT_BS11_PLL_MODE] = { TLV_TYPE_TLV, 0 }, 786 [NM_ATT_BS11_PLL] = { TLV_TYPE_TLV, 0 }, 787 [NM_ATT_BS11_CCLK_ACCURACY] = { TLV_TYPE_TV, 0 }, 788 [NM_ATT_BS11_CCLK_TYPE] = { TLV_TYPE_TV, 0 }, 789 }, 790 }; 791 792 /* ip.access specifics */ 793 static const struct tlv_definition nm_att_tlvdef_ipa = { 794 .def = { 795 [NM_ATT_IPACC_DST_IP] = { TLV_TYPE_FIXED, 4 }, 796 [NM_ATT_IPACC_DST_IP_PORT] = { TLV_TYPE_FIXED, 2 }, 797 [NM_ATT_IPACC_PRIM_OML_CFG] = { TLV_TYPE_TL16V, 0 }, 798 [NM_ATT_IPACC_NV_FLAGS] = { TLV_TYPE_TL16V, 0 }, 799 [NM_ATT_IPACC_FREQ_CTRL] = { TLV_TYPE_FIXED, 2 }, 800 [NM_ATT_IPACC_SEC_OML_CFG] = { TLV_TYPE_FIXED, 6 }, 801 [NM_ATT_IPACC_IP_IF_CFG] = { TLV_TYPE_FIXED, 8 }, 802 [NM_ATT_IPACC_IP_GW_CFG] = { TLV_TYPE_FIXED, 12 }, 803 [NM_ATT_IPACC_LOCATION] = { TLV_TYPE_TL16V, 0 }, 804 [NM_ATT_IPACC_UNIT_ID] = { TLV_TYPE_TL16V, 0 }, 805 [NM_ATT_IPACC_UNIT_NAME] = { TLV_TYPE_TL16V, 0 }, 806 [NM_ATT_IPACC_SNMP_CFG] = { TLV_TYPE_TL16V, 0 }, 807 [NM_ATT_IPACC_ALM_THRESH_LIST]= { TLV_TYPE_TL16V, 0 }, 808 [NM_ATT_IPACC_CUR_SW_CFG] = { TLV_TYPE_TL16V, 0 }, 809 [NM_ATT_IPACC_STREAM_ID] = { TLV_TYPE_TV, 0 }, 810 [NM_ATT_IPACC_RAC] = { TLV_TYPE_TL16V, 0 }, 811 [NM_ATT_IPACC_OBJ_VERSION] = { TLV_TYPE_TL16V, 0 }, 812 [NM_ATT_IPACC_GPRS_PAGING_CFG] ={ TLV_TYPE_TL16V, 0 }, 813 [NM_ATT_IPACC_NSEI] = { TLV_TYPE_TL16V, 0 }, 814 [NM_ATT_IPACC_BVCI] = { TLV_TYPE_TL16V, 0 }, 815 [NM_ATT_IPACC_NSVCI] = { TLV_TYPE_TL16V, 0 }, 816 [NM_ATT_IPACC_NS_CFG] = { TLV_TYPE_TL16V, 0 }, 817 [NM_ATT_IPACC_BSSGP_CFG] = { TLV_TYPE_TL16V, 0 }, 818 [NM_ATT_IPACC_NS_LINK_CFG] = { TLV_TYPE_TL16V, 0 }, 819 [NM_ATT_IPACC_RLC_CFG] = { TLV_TYPE_TL16V, 0 }, 820 [NM_ATT_IPACC_SUPP_FEATURES] = { TLV_TYPE_TL16V, 0 }, 821 [NM_ATT_IPACC_CODING_SCHEMES] = { TLV_TYPE_TL16V, 0 }, 822 [NM_ATT_IPACC_RLC_CFG_2] = { TLV_TYPE_TL16V, 0 }, 823 [NM_ATT_IPACC_RLC_CFG_3] = { TLV_TYPE_TL16V, 0 }, 824 [NM_ATT_IPACC_PAGING_CFG] = { TLV_TYPE_FIXED, 2 }, 825 [NM_ATT_IPACC_FILE_DATA] = { TLV_TYPE_TL16V, 0 }, 826 [NM_ATT_IPACC_CGI] = { TLV_TYPE_TL16V, 0 }, 827 }, 828 }; 829 830 #endif /* _NM_H */
Note: See TracBrowser
for help on using the browser.
