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