5af8ca3d04053ca723833b0edf3e95d98849a4fc
[obnox/wireshark/wip.git] / epan / dissectors / packet-ansi_map.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-ansi_map.c                                                          */
4 /* ../../tools/asn2wrs.py -b -p ansi_map -c ./ansi_map.cnf -s ./packet-ansi_map-template -D . -O ../../epan/dissectors ansi_map.asn */
5
6 /* Input file: packet-ansi_map-template.c */
7
8 #line 1 "../../asn1/ansi_map/packet-ansi_map-template.c"
9 /* packet-ansi_map.c
10  * Routines for ANSI 41 Mobile Application Part (IS41 MAP) dissection
11  * Specications from 3GPP2 (www.3gpp2.org)
12  * Based on the dissector by :
13  * Michael Lum <mlum [AT] telostech.com>
14  * In association with Telos Technology Inc.
15  *
16  * Copyright 2005 - 2009, Anders Broman <anders.broman@ericsson.com>
17  *
18  * $Id$
19  *
20  * Wireshark - Network traffic analyzer
21  * By Gerald Combs <gerald@wireshark.org>
22  * Copyright 1998 Gerald Combs
23  *
24  * This program is free software; you can redistribute it and/or
25  * modify it under the terms of the GNU General Public License
26  * as published by the Free Software Foundation; either version 2
27  * of the License, or (at your option) any later version.
28  *
29  * This program is distributed in the hope that it will be useful,
30  * but WITHOUT ANY WARRANTY; without even the implied warranty of
31  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32  * GNU General Public License for more details.
33  *
34  * You should have received a copy of the GNU General Public License
35  * along with this program; if not, write to the Free Software
36  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
37  *
38  * Credit to Tomas Kukosa for developing the asn2wrs compiler.
39  *
40  * Title                3GPP2                   Other
41  *
42  *   Cellular Radiotelecommunications Intersystem Operations
43  *                      3GPP2 N.S0005-0 v 1.0           ANSI/TIA/EIA-41-D
44  *
45  *   Network Support for MDN-Based Message Centers
46  *                      3GPP2 N.S0024-0 v1.0    IS-841
47  *
48  *   Enhanced International Calling
49  *                      3GPP2 N.S0027           IS-875
50  *
51  *   ANSI-41-D Miscellaneous Enhancements Revision 0
52  *                      3GPP2 N.S0015           PN-3590 (ANSI-41-E)
53  *
54  *   Authentication Enhancements
55  *                      3GPP2 N.S0014-0 v1.0    IS-778
56  *
57  *   Features In CDMA
58  *                      3GPP2 N.S0010-0 v1.0    IS-735
59  *
60  *   OTASP and OTAPA
61  *                      3GPP2 N.S0011-0 v1.0    IS-725-A
62  *
63  *   Circuit Mode Services
64  *                      3GPP2 N.S0008-0 v1.0    IS-737
65  *      XXX SecondInterMSCCircuitID not implemented, parameter ID conflicts with ISLP Information!
66  *
67  *   IMSI
68  *                      3GPP2 N.S0009-0 v1.0    IS-751
69  *
70  *   WIN Phase 1
71  *                      3GPP2 N.S0013-0 v1.0    IS-771
72  *
73  *       DCCH (Clarification of Audit Order with Forced
74  *         Re-Registration in pre-TIA/EIA-136-A Implementation
75  *                      3GPP2 A.S0017-B                 IS-730
76  *
77  *   UIM
78  *                      3GPP2 N.S0003
79  *
80  *   WIN Phase 2
81  *                      3GPP2 N.S0004-0 v1.0    IS-848
82  *
83  *   TIA/EIA-41-D Pre-Paid Charging
84  *                      3GPP2 N.S0018-0 v1.0    IS-826
85  *
86  *   User Selective Call Forwarding
87  *                      3GPP2 N.S0021-0 v1.0    IS-838
88  *
89  *
90  *   Answer Hold
91  *                      3GPP2 N.S0022-0 v1.0    IS-837
92  *
93  */
94
95 #ifdef HAVE_CONFIG_H
96 # include "config.h"
97 #endif
98
99 #include <glib.h>
100 #include <epan/packet.h>
101 #include <epan/prefs.h>
102 #include <epan/tap.h>
103 #include <epan/asn1.h>
104
105 #include "packet-ber.h"
106 #include "packet-ansi_map.h"
107 #include "packet-ansi_a.h"
108 #include "packet-gsm_map.h"
109 #include "packet-tcap.h"
110 #include "packet-ansi_tcap.h"
111
112 #define PNAME  "ANSI Mobile Application Part"
113 #define PSNAME "ANSI MAP"
114 #define PFNAME "ansi_map"
115
116 /* Preference settings default */
117 #define MAX_SSN 254
118 static range_t *global_ssn_range;
119 gint ansi_map_response_matching_type = 1;
120
121 #define ANSI_MAP_TID_ONLY 0
122
123 static dissector_handle_t ansi_map_handle=NULL;
124
125 /* Initialize the protocol and registered fields */
126 static int ansi_map_tap = -1;
127 static int proto_ansi_map = -1;
128
129 static int hf_ansi_map_op_code_fam = -1;
130 static int hf_ansi_map_op_code = -1;
131
132 static int hf_ansi_map_reservedBitH = -1;
133 static int hf_ansi_map_reservedBitHG = -1;
134 static int hf_ansi_map_reservedBitHGFE = -1;
135 static int hf_ansi_map_reservedBitFED = -1;
136 static int hf_ansi_map_reservedBitD = -1;
137 static int hf_ansi_map_reservedBitED = -1;
138
139 static int hf_ansi_map_type_of_digits = -1;
140 static int hf_ansi_map_na = -1;
141 static int hf_ansi_map_pi = -1;
142 static int hf_ansi_map_navail = -1;
143 static int hf_ansi_map_si = -1;
144 static int hf_ansi_map_digits_enc = -1;
145 static int hf_ansi_map_np = -1;
146 static int hf_ansi_map_nr_digits = -1;
147 static int hf_ansi_map_bcd_digits = -1;
148 static int hf_ansi_map_ia5_digits = -1;
149 static int hf_ansi_map_subaddr_type = -1;
150 static int hf_ansi_map_subaddr_odd_even = -1;
151 static int hf_ansi_alertcode_cadence = -1;
152 static int hf_ansi_alertcode_pitch = -1;
153 static int hf_ansi_alertcode_alertaction = -1;
154 static int hf_ansi_map_announcementcode_tone = -1;
155 static int hf_ansi_map_announcementcode_class = -1;
156 static int hf_ansi_map_announcementcode_std_ann = -1;
157 static int hf_ansi_map_announcementcode_cust_ann = -1;
158 static int hf_ansi_map_authorizationperiod_period = -1;
159 static int hf_ansi_map_value = -1;
160 static int hf_ansi_map_msc_type = -1;
161 static int hf_ansi_map_handoffstate_pi = -1;
162 static int hf_ansi_map_tgn = -1;
163 static int hf_ansi_map_tmn = -1;
164 static int hf_ansi_map_messagewaitingnotificationcount_tom = -1;
165 static int hf_ansi_map_messagewaitingnotificationcount_no_mw = -1;
166 static int hf_ansi_map_messagewaitingnotificationtype_mwi = -1;
167 static int hf_ansi_map_messagewaitingnotificationtype_apt = -1;
168 static int hf_ansi_map_messagewaitingnotificationtype_pt = -1;
169
170 static int hf_ansi_map_trans_cap_prof = -1;
171 static int hf_ansi_map_trans_cap_busy = -1;
172 static int hf_ansi_map_trans_cap_ann = -1;
173 static int hf_ansi_map_trans_cap_rui = -1;
174 static int hf_ansi_map_trans_cap_spini = -1;
175 static int hf_ansi_map_trans_cap_uzci = -1;
176 static int hf_ansi_map_trans_cap_ndss = -1;
177 static int hf_ansi_map_trans_cap_nami = -1;
178 static int hf_ansi_trans_cap_multerm = -1;
179 static int hf_ansi_map_terminationtriggers_busy = -1;
180 static int hf_ansi_map_terminationtriggers_rf = -1;
181 static int hf_ansi_map_terminationtriggers_npr = -1;
182 static int hf_ansi_map_terminationtriggers_na = -1;
183 static int hf_ansi_map_terminationtriggers_nr = -1;
184 static int hf_ansi_trans_cap_tl = -1;
185 static int hf_ansi_map_cdmaserviceoption = -1;
186 static int hf_ansi_trans_cap_waddr = -1;
187 static int hf_ansi_map_MarketID = -1;
188 static int hf_ansi_map_swno = -1;
189 static int hf_ansi_map_idno = -1;
190 static int hf_ansi_map_segcount = -1;
191 static int hf_ansi_map_sms_originationrestrictions_fmc = -1;
192 static int hf_ansi_map_sms_originationrestrictions_direct = -1;
193 static int hf_ansi_map_sms_originationrestrictions_default = -1;
194 static int hf_ansi_map_systemcapabilities_auth = -1;
195 static int hf_ansi_map_systemcapabilities_se = -1;
196 static int hf_ansi_map_systemcapabilities_vp = -1;
197 static int hf_ansi_map_systemcapabilities_cave = -1;
198 static int hf_ansi_map_systemcapabilities_ssd = -1;
199 static int hf_ansi_map_systemcapabilities_dp = -1;
200
201 static int hf_ansi_map_mslocation_lat = -1;
202 static int hf_ansi_map_mslocation_long = -1;
203 static int hf_ansi_map_mslocation_res = -1;
204 static int hf_ansi_map_nampscallmode_namps = -1;
205 static int hf_ansi_map_nampscallmode_amps = -1;
206 static int hf_ansi_map_nampschanneldata_navca = -1;
207 static int hf_ansi_map_nampschanneldata_CCIndicator = -1;
208
209 static int hf_ansi_map_callingfeaturesindicator_cfufa = -1;
210 static int hf_ansi_map_callingfeaturesindicator_cfbfa = -1;
211 static int hf_ansi_map_callingfeaturesindicator_cfnafa = -1;
212 static int hf_ansi_map_callingfeaturesindicator_cwfa = -1;
213 static int hf_ansi_map_callingfeaturesindicator_3wcfa = -1;
214 static int hf_ansi_map_callingfeaturesindicator_pcwfa =-1;
215 static int hf_ansi_map_callingfeaturesindicator_dpfa = -1;
216 static int hf_ansi_map_callingfeaturesindicator_ahfa = -1;
217 static int hf_ansi_map_callingfeaturesindicator_uscfvmfa = -1;
218 static int hf_ansi_map_callingfeaturesindicator_uscfmsfa = -1;
219 static int hf_ansi_map_callingfeaturesindicator_uscfnrfa = -1;
220 static int hf_ansi_map_callingfeaturesindicator_cpdsfa = -1;
221 static int hf_ansi_map_callingfeaturesindicator_ccsfa = -1;
222 static int hf_ansi_map_callingfeaturesindicator_epefa = -1;
223 static int hf_ansi_map_callingfeaturesindicator_cdfa = -1;
224 static int hf_ansi_map_callingfeaturesindicator_vpfa = -1;
225 static int hf_ansi_map_callingfeaturesindicator_ctfa = -1;
226 static int hf_ansi_map_callingfeaturesindicator_cnip1fa = -1;
227 static int hf_ansi_map_callingfeaturesindicator_cnip2fa = -1;
228 static int hf_ansi_map_callingfeaturesindicator_cnirfa = -1;
229 static int hf_ansi_map_callingfeaturesindicator_cniroverfa = -1;
230 static int hf_ansi_map_cdmacallmode_cdma = -1;
231 static int hf_ansi_map_cdmacallmode_amps = -1;
232 static int hf_ansi_map_cdmacallmode_namps = -1;
233 static int hf_ansi_map_cdmacallmode_cls1 = -1;
234 static int hf_ansi_map_cdmacallmode_cls2 = -1;
235 static int hf_ansi_map_cdmacallmode_cls3 = -1;
236 static int hf_ansi_map_cdmacallmode_cls4 = -1;
237 static int hf_ansi_map_cdmacallmode_cls5 = -1;
238 static int hf_ansi_map_cdmacallmode_cls6 = -1;
239 static int hf_ansi_map_cdmacallmode_cls7 = -1;
240 static int hf_ansi_map_cdmacallmode_cls8 = -1;
241 static int hf_ansi_map_cdmacallmode_cls9 = -1;
242 static int hf_ansi_map_cdmacallmode_cls10 = -1;
243 static int hf_ansi_map_cdmachanneldata_Frame_Offset = -1;
244 static int hf_ansi_map_cdmachanneldata_CDMA_ch_no = -1;
245 static int hf_ansi_map_cdmachanneldata_band_cls = -1;
246 static int hf_ansi_map_cdmachanneldata_lc_mask_b6 = -1;
247 static int hf_ansi_map_cdmachanneldata_lc_mask_b5 = -1;
248 static int hf_ansi_map_cdmachanneldata_lc_mask_b4 = -1;
249 static int hf_ansi_map_cdmachanneldata_lc_mask_b3 = -1;
250 static int hf_ansi_map_cdmachanneldata_lc_mask_b2 = -1;
251 static int hf_ansi_map_cdmachanneldata_lc_mask_b1 = -1;
252 static int hf_ansi_map_cdmachanneldata_np_ext = -1;
253 static int hf_ansi_map_cdmachanneldata_nominal_pwr = -1;
254 static int hf_ansi_map_cdmachanneldata_nr_preamble = -1;
255
256 static int hf_ansi_map_cdmastationclassmark_pc = -1;
257 static int hf_ansi_map_cdmastationclassmark_dtx = -1;
258 static int hf_ansi_map_cdmastationclassmark_smi = -1;
259 static int hf_ansi_map_cdmastationclassmark_dmi = -1;
260 static int hf_ansi_map_channeldata_vmac = -1;
261 static int hf_ansi_map_channeldata_dtx = -1;
262 static int hf_ansi_map_channeldata_scc = -1;
263 static int hf_ansi_map_channeldata_chno = -1;
264 static int hf_ansi_map_ConfidentialityModes_vp = -1;
265 static int hf_ansi_map_controlchanneldata_dcc = -1;
266 static int hf_ansi_map_controlchanneldata_cmac = -1;
267 static int hf_ansi_map_controlchanneldata_chno = -1;
268 static int hf_ansi_map_controlchanneldata_sdcc1 = -1;
269 static int hf_ansi_map_controlchanneldata_sdcc2 = -1;
270 static int hf_ansi_map_ConfidentialityModes_se = -1;
271 static int hf_ansi_map_deniedauthorizationperiod_period = -1;
272 static int hf_ansi_map_ConfidentialityModes_dp = -1;
273
274 static int hf_ansi_map_originationtriggers_all = -1;
275 static int hf_ansi_map_originationtriggers_local = -1;
276 static int hf_ansi_map_originationtriggers_ilata = -1;
277 static int hf_ansi_map_originationtriggers_olata = -1;
278 static int hf_ansi_map_originationtriggers_int = -1;
279 static int hf_ansi_map_originationtriggers_wz = -1;
280 static int hf_ansi_map_originationtriggers_unrec = -1;
281 static int hf_ansi_map_originationtriggers_rvtc = -1;
282 static int hf_ansi_map_originationtriggers_star = -1;
283 static int hf_ansi_map_originationtriggers_ds = -1;
284 static int hf_ansi_map_originationtriggers_pound = -1;
285 static int hf_ansi_map_originationtriggers_dp = -1;
286 static int hf_ansi_map_originationtriggers_pa = -1;
287 static int hf_ansi_map_originationtriggers_nodig = -1;
288 static int hf_ansi_map_originationtriggers_onedig = -1;
289 static int hf_ansi_map_originationtriggers_twodig = -1;
290 static int hf_ansi_map_originationtriggers_threedig = -1;
291 static int hf_ansi_map_originationtriggers_fourdig = -1;
292 static int hf_ansi_map_originationtriggers_fivedig = -1;
293 static int hf_ansi_map_originationtriggers_sixdig = -1;
294 static int hf_ansi_map_originationtriggers_sevendig = -1;
295 static int hf_ansi_map_originationtriggers_eightdig = -1;
296 static int hf_ansi_map_originationtriggers_ninedig = -1;
297 static int hf_ansi_map_originationtriggers_tendig = -1;
298 static int hf_ansi_map_originationtriggers_elevendig = -1;
299 static int hf_ansi_map_originationtriggers_twelvedig = -1;
300 static int hf_ansi_map_originationtriggers_thirteendig = -1;
301 static int hf_ansi_map_originationtriggers_fourteendig = -1;
302 static int hf_ansi_map_originationtriggers_fifteendig = -1;
303 static int hf_ansi_map_triggercapability_init = -1;
304 static int hf_ansi_map_triggercapability_kdigit = -1;
305 static int hf_ansi_map_triggercapability_all = -1;
306 static int hf_ansi_map_triggercapability_rvtc = -1;
307 static int hf_ansi_map_triggercapability_oaa = -1;
308 static int hf_ansi_map_triggercapability_oans = -1;
309 static int hf_ansi_map_triggercapability_odisc = -1;
310 static int hf_ansi_map_triggercapability_ona = -1;
311 static int hf_ansi_map_triggercapability_ct = -1;
312 static int hf_ansi_map_triggercapability_unrec =-1;
313 static int hf_ansi_map_triggercapability_pa = -1;
314 static int hf_ansi_map_triggercapability_at = -1;
315 static int hf_ansi_map_triggercapability_cgraa = -1;
316 static int hf_ansi_map_triggercapability_it = -1;
317 static int hf_ansi_map_triggercapability_cdraa = -1;
318 static int hf_ansi_map_triggercapability_obsy = -1;
319 static int hf_ansi_map_triggercapability_tra = -1;
320 static int hf_ansi_map_triggercapability_tbusy = -1;
321 static int hf_ansi_map_triggercapability_tna = -1;
322 static int hf_ansi_map_triggercapability_tans = -1;
323 static int hf_ansi_map_triggercapability_tdisc = -1;
324 static int hf_ansi_map_winoperationscapability_conn = -1;
325 static int hf_ansi_map_winoperationscapability_ccdir = -1;
326 static int hf_ansi_map_winoperationscapability_pos = -1;
327 static int hf_ansi_map_PACA_Level = -1;
328 static int hf_ansi_map_pacaindicator_pa = -1;
329
330
331 /*--- Included file: packet-ansi_map-hf.c ---*/
332 #line 1 "../../asn1/ansi_map/packet-ansi_map-hf.c"
333 static int hf_ansi_map_electronicSerialNumber = -1;  /* ElectronicSerialNumber */
334 static int hf_ansi_map_msid = -1;                 /* MSID */
335 static int hf_ansi_map_authenticationAlgorithmVersion = -1;  /* AuthenticationAlgorithmVersion */
336 static int hf_ansi_map_authenticationResponseReauthentication = -1;  /* AuthenticationResponseReauthentication */
337 static int hf_ansi_map_authenticationResponseUniqueChallenge = -1;  /* AuthenticationResponseUniqueChallenge */
338 static int hf_ansi_map_callHistoryCount = -1;     /* CallHistoryCount */
339 static int hf_ansi_map_cdmaPrivateLongCodeMask = -1;  /* CDMAPrivateLongCodeMask */
340 static int hf_ansi_map_carrierDigits = -1;        /* CarrierDigits */
341 static int hf_ansi_map_caveKey = -1;              /* CaveKey */
342 static int hf_ansi_map_denyAccess = -1;           /* DenyAccess */
343 static int hf_ansi_map_destinationDigits = -1;    /* DestinationDigits */
344 static int hf_ansi_map_locationAreaID = -1;       /* LocationAreaID */
345 static int hf_ansi_map_randomVariableReauthentication = -1;  /* RandomVariableReauthentication */
346 static int hf_ansi_map_meid = -1;                 /* MEID */
347 static int hf_ansi_map_mobileStationMIN = -1;     /* MobileStationMIN */
348 static int hf_ansi_map_mscid = -1;                /* MSCID */
349 static int hf_ansi_map_randomVariableSSD = -1;    /* RandomVariableSSD */
350 static int hf_ansi_map_randomVariableUniqueChallenge = -1;  /* RandomVariableUniqueChallenge */
351 static int hf_ansi_map_routingDigits = -1;        /* RoutingDigits */
352 static int hf_ansi_map_senderIdentificationNumber = -1;  /* SenderIdentificationNumber */
353 static int hf_ansi_map_sharedSecretData = -1;     /* SharedSecretData */
354 static int hf_ansi_map_signalingMessageEncryptionKey = -1;  /* SignalingMessageEncryptionKey */
355 static int hf_ansi_map_ssdnotShared = -1;         /* SSDNotShared */
356 static int hf_ansi_map_updateCount = -1;          /* UpdateCount */
357 static int hf_ansi_map_interMSCCircuitID = -1;    /* InterMSCCircuitID */
358 static int hf_ansi_map_mobileIdentificationNumber = -1;  /* MobileIdentificationNumber */
359 static int hf_ansi_map_countUpdateReport = -1;    /* CountUpdateReport */
360 static int hf_ansi_map_uniqueChallengeReport = -1;  /* UniqueChallengeReport */
361 static int hf_ansi_map_reportType = -1;           /* ReportType */
362 static int hf_ansi_map_systemAccessType = -1;     /* SystemAccessType */
363 static int hf_ansi_map_systemCapabilities = -1;   /* SystemCapabilities */
364 static int hf_ansi_map_callHistoryCountExpected = -1;  /* CallHistoryCountExpected */
365 static int hf_ansi_map_reportType2 = -1;          /* ReportType */
366 static int hf_ansi_map_terminalType = -1;         /* TerminalType */
367 static int hf_ansi_map_authenticationData = -1;   /* AuthenticationData */
368 static int hf_ansi_map_authenticationResponse = -1;  /* AuthenticationResponse */
369 static int hf_ansi_map_cdmaNetworkIdentification = -1;  /* CDMANetworkIdentification */
370 static int hf_ansi_map_confidentialityModes = -1;  /* ConfidentialityModes */
371 static int hf_ansi_map_controlChannelMode = -1;   /* ControlChannelMode */
372 static int hf_ansi_map_digits = -1;               /* Digits */
373 static int hf_ansi_map_pc_ssn = -1;               /* PC_SSN */
374 static int hf_ansi_map_randomVariable = -1;       /* RandomVariable */
375 static int hf_ansi_map_serviceRedirectionCause = -1;  /* ServiceRedirectionCause */
376 static int hf_ansi_map_suspiciousAccess = -1;     /* SuspiciousAccess */
377 static int hf_ansi_map_transactionCapability = -1;  /* TransactionCapability */
378 static int hf_ansi_map_analogRedirectRecord = -1;  /* AnalogRedirectRecord */
379 static int hf_ansi_map_cdmaRedirectRecord = -1;   /* CDMARedirectRecord */
380 static int hf_ansi_map_dataKey = -1;              /* DataKey */
381 static int hf_ansi_map_roamingIndication = -1;    /* RoamingIndication */
382 static int hf_ansi_map_serviceRedirectionInfo = -1;  /* ServiceRedirectionInfo */
383 static int hf_ansi_map_voicePrivacyMask = -1;     /* VoicePrivacyMask */
384 static int hf_ansi_map_reauthenticationReport = -1;  /* ReauthenticationReport */
385 static int hf_ansi_map_serviceIndicator = -1;     /* ServiceIndicator */
386 static int hf_ansi_map_signalingMessageEncryptionReport = -1;  /* SignalingMessageEncryptionReport */
387 static int hf_ansi_map_ssdUpdateReport = -1;      /* SSDUpdateReport */
388 static int hf_ansi_map_voicePrivacyReport = -1;   /* VoicePrivacyReport */
389 static int hf_ansi_map_randomVariableBaseStation = -1;  /* RandomVariableBaseStation */
390 static int hf_ansi_map_authenticationResponseBaseStation = -1;  /* AuthenticationResponseBaseStation */
391 static int hf_ansi_map_billingID = -1;            /* BillingID */
392 static int hf_ansi_map_channelData = -1;          /* ChannelData */
393 static int hf_ansi_map_interSwitchCount = -1;     /* InterSwitchCount */
394 static int hf_ansi_map_servingCellID = -1;        /* ServingCellID */
395 static int hf_ansi_map_stationClassMark = -1;     /* StationClassMark */
396 static int hf_ansi_map_targetCellID = -1;         /* TargetCellID */
397 static int hf_ansi_map_handoffReason = -1;        /* HandoffReason */
398 static int hf_ansi_map_handoffState = -1;         /* HandoffState */
399 static int hf_ansi_map_tdmaBurstIndicator = -1;   /* TDMABurstIndicator */
400 static int hf_ansi_map_tdmaCallMode = -1;         /* TDMACallMode */
401 static int hf_ansi_map_tdmaChannelData = -1;      /* TDMAChannelData */
402 static int hf_ansi_map_baseStationManufacturerCode = -1;  /* BaseStationManufacturerCode */
403 static int hf_ansi_map_alertCode = -1;            /* AlertCode */
404 static int hf_ansi_map_cdma2000HandoffInvokeIOSData = -1;  /* CDMA2000HandoffInvokeIOSData */
405 static int hf_ansi_map_cdmaBandClassList = -1;    /* CDMABandClassList */
406 static int hf_ansi_map_cdmaCallMode = -1;         /* CDMACallMode */
407 static int hf_ansi_map_cdmaChannelData = -1;      /* CDMAChannelData */
408 static int hf_ansi_map_cdmaConnectionReferenceList = -1;  /* CDMAConnectionReferenceList */
409 static int hf_ansi_map_cdmaMobileProtocolRevision = -1;  /* CDMAMobileProtocolRevision */
410 static int hf_ansi_map_cdmaMSMeasuredChannelIdentity = -1;  /* CDMAMSMeasuredChannelIdentity */
411 static int hf_ansi_map_cdmaServiceConfigurationRecord = -1;  /* CDMAServiceConfigurationRecord */
412 static int hf_ansi_map_cdmaServiceOptionList = -1;  /* CDMAServiceOptionList */
413 static int hf_ansi_map_cdmaServingOneWayDelay = -1;  /* CDMAServingOneWayDelay */
414 static int hf_ansi_map_cdmaStationClassMark = -1;  /* CDMAStationClassMark */
415 static int hf_ansi_map_cdmaStationClassMark2 = -1;  /* CDMAStationClassMark2 */
416 static int hf_ansi_map_cdmaTargetMAHOList = -1;   /* CDMATargetMAHOList */
417 static int hf_ansi_map_cdmaTargetMeasurementList = -1;  /* CDMATargetMeasurementList */
418 static int hf_ansi_map_dataPrivacyParameters = -1;  /* DataPrivacyParameters */
419 static int hf_ansi_map_ilspInformation = -1;      /* ISLPInformation */
420 static int hf_ansi_map_msLocation = -1;           /* MSLocation */
421 static int hf_ansi_map_nampsCallMode = -1;        /* NAMPSCallMode */
422 static int hf_ansi_map_nampsChannelData = -1;     /* NAMPSChannelData */
423 static int hf_ansi_map_nonPublicData = -1;        /* NonPublicData */
424 static int hf_ansi_map_pdsnAddress = -1;          /* PDSNAddress */
425 static int hf_ansi_map_pdsnProtocolType = -1;     /* PDSNProtocolType */
426 static int hf_ansi_map_qosPriority = -1;          /* QoSPriority */
427 static int hf_ansi_map_systemOperatorCode = -1;   /* SystemOperatorCode */
428 static int hf_ansi_map_tdmaBandwidth = -1;        /* TDMABandwidth */
429 static int hf_ansi_map_tdmaServiceCode = -1;      /* TDMAServiceCode */
430 static int hf_ansi_map_tdmaTerminalCapability = -1;  /* TDMATerminalCapability */
431 static int hf_ansi_map_tdmaVoiceCoder = -1;       /* TDMAVoiceCoder */
432 static int hf_ansi_map_userZoneData = -1;         /* UserZoneData */
433 static int hf_ansi_map_bsmcstatus = -1;           /* BSMCStatus */
434 static int hf_ansi_map_cdma2000HandoffResponseIOSData = -1;  /* CDMA2000HandoffResponseIOSData */
435 static int hf_ansi_map_cdmaCodeChannelList = -1;  /* CDMACodeChannelList */
436 static int hf_ansi_map_cdmaSearchParameters = -1;  /* CDMASearchParameters */
437 static int hf_ansi_map_cdmaSearchWindow = -1;     /* CDMASearchWindow */
438 static int hf_ansi_map_sOCStatus = -1;            /* SOCStatus */
439 static int hf_ansi_map_releaseReason = -1;        /* ReleaseReason */
440 static int hf_ansi_map_acgencountered = -1;       /* ACGEncountered */
441 static int hf_ansi_map_callingPartyName = -1;     /* CallingPartyName */
442 static int hf_ansi_map_callingPartyNumberDigits1 = -1;  /* CallingPartyNumberDigits1 */
443 static int hf_ansi_map_callingPartyNumberDigits2 = -1;  /* CallingPartyNumberDigits2 */
444 static int hf_ansi_map_callingPartySubaddress = -1;  /* CallingPartySubaddress */
445 static int hf_ansi_map_conferenceCallingIndicator = -1;  /* ConferenceCallingIndicator */
446 static int hf_ansi_map_mobileDirectoryNumber = -1;  /* MobileDirectoryNumber */
447 static int hf_ansi_map_mSCIdentificationNumber = -1;  /* MSCIdentificationNumber */
448 static int hf_ansi_map_oneTimeFeatureIndicator = -1;  /* OneTimeFeatureIndicator */
449 static int hf_ansi_map_systemMyTypeCode = -1;     /* SystemMyTypeCode */
450 static int hf_ansi_map_featureResult = -1;        /* FeatureResult */
451 static int hf_ansi_map_accessDeniedReason = -1;   /* AccessDeniedReason */
452 static int hf_ansi_map_actionCode = -1;           /* ActionCode */
453 static int hf_ansi_map_announcementList = -1;     /* AnnouncementList */
454 static int hf_ansi_map_callingPartyNumberString1 = -1;  /* CallingPartyNumberString1 */
455 static int hf_ansi_map_callingPartyNumberString2 = -1;  /* CallingPartyNumberString2 */
456 static int hf_ansi_map_digits_Destination = -1;   /* Digits */
457 static int hf_ansi_map_displayText = -1;          /* DisplayText */
458 static int hf_ansi_map_displayText2 = -1;         /* DisplayText2 */
459 static int hf_ansi_map_dmh_AccountCodeDigits = -1;  /* DMH_AccountCodeDigits */
460 static int hf_ansi_map_dmh_AlternateBillingDigits = -1;  /* DMH_AlternateBillingDigits */
461 static int hf_ansi_map_dmh_BillingDigits = -1;    /* DMH_BillingDigits */
462 static int hf_ansi_map_dmh_RedirectionIndicator = -1;  /* DMH_RedirectionIndicator */
463 static int hf_ansi_map_groupInformation = -1;     /* GroupInformation */
464 static int hf_ansi_map_noAnswerTime = -1;         /* NoAnswerTime */
465 static int hf_ansi_map_pACAIndicator = -1;        /* PACAIndicator */
466 static int hf_ansi_map_pilotNumber = -1;          /* PilotNumber */
467 static int hf_ansi_map_preferredLanguageIndicator = -1;  /* PreferredLanguageIndicator */
468 static int hf_ansi_map_redirectingNumberDigits = -1;  /* RedirectingNumberDigits */
469 static int hf_ansi_map_redirectingNumberString = -1;  /* RedirectingNumberString */
470 static int hf_ansi_map_redirectingSubaddress = -1;  /* RedirectingSubaddress */
471 static int hf_ansi_map_resumePIC = -1;            /* ResumePIC */
472 static int hf_ansi_map_terminationList = -1;      /* TerminationList */
473 static int hf_ansi_map_terminationTriggers = -1;  /* TerminationTriggers */
474 static int hf_ansi_map_triggerAddressList = -1;   /* TriggerAddressList */
475 static int hf_ansi_map_emergencyServicesRoutingDigits = -1;  /* EmergencyServicesRoutingDigits */
476 static int hf_ansi_map_targetCellIDList = -1;     /* TargetCellIDList */
477 static int hf_ansi_map_signalQuality = -1;        /* SignalQuality */
478 static int hf_ansi_map_targetMeasurementList = -1;  /* TargetMeasurementList */
479 static int hf_ansi_map_alertResult = -1;          /* AlertResult */
480 static int hf_ansi_map_messageWaitingNotificationCount = -1;  /* MessageWaitingNotificationCount */
481 static int hf_ansi_map_messageWaitingNotificationType = -1;  /* MessageWaitingNotificationType */
482 static int hf_ansi_map_cdmaBandClass = -1;        /* CDMABandClass */
483 static int hf_ansi_map_cdmaServiceOption = -1;    /* CDMAServiceOption */
484 static int hf_ansi_map_cdmaSlotCycleIndex = -1;   /* CDMASlotCycleIndex */
485 static int hf_ansi_map_extendedMSCID = -1;        /* ExtendedMSCID */
486 static int hf_ansi_map_extendedSystemMyTypeCode = -1;  /* ExtendedSystemMyTypeCode */
487 static int hf_ansi_map_imsi = -1;                 /* IMSI */
488 static int hf_ansi_map_legInformation = -1;       /* LegInformation */
489 static int hf_ansi_map_mSIDUsage = -1;            /* MSIDUsage */
490 static int hf_ansi_map_networkTMSI = -1;          /* NetworkTMSI */
491 static int hf_ansi_map_pageCount = -1;            /* PageCount */
492 static int hf_ansi_map_pageIndicator = -1;        /* PageIndicator */
493 static int hf_ansi_map_pageResponseTime = -1;     /* PageResponseTime */
494 static int hf_ansi_map_pilotBillingID = -1;       /* PilotBillingID */
495 static int hf_ansi_map_redirectingPartyName = -1;  /* RedirectingPartyName */
496 static int hf_ansi_map_tdmaDataFeaturesIndicator = -1;  /* TDMADataFeaturesIndicator */
497 static int hf_ansi_map_terminationTreatment = -1;  /* TerminationTreatment */
498 static int hf_ansi_map_conditionallyDeniedReason = -1;  /* ConditionallyDeniedReason */
499 static int hf_ansi_map_pagingFrameClass = -1;     /* PagingFrameClass */
500 static int hf_ansi_map_pSID_RSIDList = -1;        /* PSID_RSIDList */
501 static int hf_ansi_map_randc = -1;                /* RANDC */
502 static int hf_ansi_map_tdmaDataMode = -1;         /* TDMADataMode */
503 static int hf_ansi_map_changeServiceAttributes = -1;  /* ChangeServiceAttributes */
504 static int hf_ansi_map_edirectingSubaddress = -1;  /* RedirectingSubaddress */
505 static int hf_ansi_map_setupResult = -1;          /* SetupResult */
506 static int hf_ansi_map_terminationAccessType = -1;  /* TerminationAccessType */
507 static int hf_ansi_map_triggerType = -1;          /* TriggerType */
508 static int hf_ansi_map_winCapability = -1;        /* WINCapability */
509 static int hf_ansi_map_callingPartyCategory = -1;  /* CallingPartyCategory */
510 static int hf_ansi_map_controlNetworkID = -1;     /* ControlNetworkID */
511 static int hf_ansi_map_digits_carrier = -1;       /* Digits */
512 static int hf_ansi_map_digits_dest = -1;          /* Digits */
513 static int hf_ansi_map_dmh_ServiceID = -1;        /* DMH_ServiceID */
514 static int hf_ansi_map_lectronicSerialNumber = -1;  /* ElectronicSerialNumber */
515 static int hf_ansi_map_deregistrationType = -1;   /* DeregistrationType */
516 static int hf_ansi_map_servicesResult = -1;       /* ServicesResult */
517 static int hf_ansi_map_sms_MessageWaitingIndicator = -1;  /* SMS_MessageWaitingIndicator */
518 static int hf_ansi_map_originationTriggers = -1;  /* OriginationTriggers */
519 static int hf_ansi_map_featureIndicator = -1;     /* FeatureIndicator */
520 static int hf_ansi_map_dmh_ChargeInformation = -1;  /* DMH_ChargeInformation */
521 static int hf_ansi_map_qualificationInformationCode = -1;  /* QualificationInformationCode */
522 static int hf_ansi_map_authorizationDenied = -1;  /* AuthorizationDenied */
523 static int hf_ansi_map_authorizationPeriod = -1;  /* AuthorizationPeriod */
524 static int hf_ansi_map_deniedAuthorizationPeriod = -1;  /* DeniedAuthorizationPeriod */
525 static int hf_ansi_map_authenticationCapability = -1;  /* AuthenticationCapability */
526 static int hf_ansi_map_callingFeaturesIndicator = -1;  /* CallingFeaturesIndicator */
527 static int hf_ansi_map_geographicAuthorization = -1;  /* GeographicAuthorization */
528 static int hf_ansi_map_meidValidated = -1;        /* MEIDValidated */
529 static int hf_ansi_map_mobilePositionCapability = -1;  /* MobilePositionCapability */
530 static int hf_ansi_map_originationIndicator = -1;  /* OriginationIndicator */
531 static int hf_ansi_map_restrictionDigits = -1;    /* RestrictionDigits */
532 static int hf_ansi_map_sms_OriginationRestrictions = -1;  /* SMS_OriginationRestrictions */
533 static int hf_ansi_map_sms_TerminationRestrictions = -1;  /* SMS_TerminationRestrictions */
534 static int hf_ansi_map_spinipin = -1;             /* SPINIPIN */
535 static int hf_ansi_map_spiniTriggers = -1;        /* SPINITriggers */
536 static int hf_ansi_map_terminationRestrictionCode = -1;  /* TerminationRestrictionCode */
537 static int hf_ansi_map_userGroup = -1;            /* UserGroup */
538 static int hf_ansi_map_lirMode = -1;              /* LIRMode */
539 static int hf_ansi_map_randValidTime = -1;        /* RANDValidTime */
540 static int hf_ansi_map_redirectionReason = -1;    /* RedirectionReason */
541 static int hf_ansi_map_cancellationType = -1;     /* CancellationType */
542 static int hf_ansi_map_controlChannelData = -1;   /* ControlChannelData */
543 static int hf_ansi_map_receivedSignalQuality = -1;  /* ReceivedSignalQuality */
544 static int hf_ansi_map_systemAccessData = -1;     /* SystemAccessData */
545 static int hf_ansi_map_cancellationDenied = -1;   /* CancellationDenied */
546 static int hf_ansi_map_availabilityType = -1;     /* AvailabilityType */
547 static int hf_ansi_map_borderCellAccess = -1;     /* BorderCellAccess */
548 static int hf_ansi_map_msc_Address = -1;          /* MSC_Address */
549 static int hf_ansi_map_sms_Address = -1;          /* SMS_Address */
550 static int hf_ansi_map_mpcAddress = -1;           /* MPCAddress */
551 static int hf_ansi_map_mpcAddressList = -1;       /* MPCAddressList */
552 static int hf_ansi_map_digits_Carrier = -1;       /* Digits */
553 static int hf_ansi_map_digitCollectionControl = -1;  /* DigitCollectionControl */
554 static int hf_ansi_map_trunkStatus = -1;          /* TrunkStatus */
555 static int hf_ansi_map_voiceMailboxNumber = -1;   /* VoiceMailboxNumber */
556 static int hf_ansi_map_voiceMailboxPIN = -1;      /* VoiceMailboxPIN */
557 static int hf_ansi_map_sms_BearerData = -1;       /* SMS_BearerData */
558 static int hf_ansi_map_sms_TeleserviceIdentifier = -1;  /* SMS_TeleserviceIdentifier */
559 static int hf_ansi_map_sms_ChargeIndicator = -1;  /* SMS_ChargeIndicator */
560 static int hf_ansi_map_sms_DestinationAddress = -1;  /* SMS_DestinationAddress */
561 static int hf_ansi_map_sms_OriginalDestinationAddress = -1;  /* SMS_OriginalDestinationAddress */
562 static int hf_ansi_map_sms_OriginalDestinationSubaddress = -1;  /* SMS_OriginalDestinationSubaddress */
563 static int hf_ansi_map_sms_OriginalOriginatingAddress = -1;  /* SMS_OriginalOriginatingAddress */
564 static int hf_ansi_map_sms_OriginalOriginatingSubaddress = -1;  /* SMS_OriginalOriginatingSubaddress */
565 static int hf_ansi_map_sms_OriginatingAddress = -1;  /* SMS_OriginatingAddress */
566 static int hf_ansi_map_sms_CauseCode = -1;        /* SMS_CauseCode */
567 static int hf_ansi_map_cdmaServingOneWayDelay2 = -1;  /* CDMAServingOneWayDelay2 */
568 static int hf_ansi_map_interMessageTime = -1;     /* InterMessageTime */
569 static int hf_ansi_map_newlyAssignedIMSI = -1;    /* NewlyAssignedIMSI */
570 static int hf_ansi_map_newlyAssignedMIN = -1;     /* NewlyAssignedMIN */
571 static int hf_ansi_map_newMINExtension = -1;      /* NewMINExtension */
572 static int hf_ansi_map_sms_MessageCount = -1;     /* SMS_MessageCount */
573 static int hf_ansi_map_sms_NotificationIndicator = -1;  /* SMS_NotificationIndicator */
574 static int hf_ansi_map_teleservice_Priority = -1;  /* Teleservice_Priority */
575 static int hf_ansi_map_temporaryReferenceNumber = -1;  /* TemporaryReferenceNumber */
576 static int hf_ansi_map_mobileStationMSID = -1;    /* MobileStationMSID */
577 static int hf_ansi_map_sms_TransactionID = -1;    /* SMS_TransactionID */
578 static int hf_ansi_map_sms_AccessDeniedReason = -1;  /* SMS_AccessDeniedReason */
579 static int hf_ansi_map_seizureType = -1;          /* SeizureType */
580 static int hf_ansi_map_requiredParametersMask = -1;  /* RequiredParametersMask */
581 static int hf_ansi_map_reasonList = -1;           /* ReasonList */
582 static int hf_ansi_map_networkTMSIExpirationTime = -1;  /* NetworkTMSIExpirationTime */
583 static int hf_ansi_map_newNetworkTMSI = -1;       /* NewNetworkTMSI */
584 static int hf_ansi_map_serviceID = -1;            /* ServiceID */
585 static int hf_ansi_map_dataAccessElementList = -1;  /* DataAccessElementList */
586 static int hf_ansi_map_timeDateOffset = -1;       /* TimeDateOffset */
587 static int hf_ansi_map_timeOfDay = -1;            /* TimeOfDay */
588 static int hf_ansi_map_dmd_BillingIndicator = -1;  /* DMH_BillingIndicator */
589 static int hf_ansi_map_failureType = -1;          /* FailureType */
590 static int hf_ansi_map_failureCause = -1;         /* FailureCause */
591 static int hf_ansi_map_outingDigits = -1;         /* RoutingDigits */
592 static int hf_ansi_map_databaseKey = -1;          /* DatabaseKey */
593 static int hf_ansi_map_modificationRequestList = -1;  /* ModificationRequestList */
594 static int hf_ansi_map_modificationResultList = -1;  /* ModificationResultList */
595 static int hf_ansi_map_serviceDataAccessElementList = -1;  /* ServiceDataAccessElementList */
596 static int hf_ansi_map_privateSpecializedResource = -1;  /* PrivateSpecializedResource */
597 static int hf_ansi_map_specializedResource = -1;  /* SpecializedResource */
598 static int hf_ansi_map_executeScript = -1;        /* ExecuteScript */
599 static int hf_ansi_map_scriptResult = -1;         /* ScriptResult */
600 static int hf_ansi_map_tdmaVoiceMode = -1;        /* TDMAVoiceMode */
601 static int hf_ansi_map_callStatus = -1;           /* CallStatus */
602 static int hf_ansi_map_releaseCause = -1;         /* ReleaseCause */
603 static int hf_ansi_map_callRecoveryIDList = -1;   /* CallRecoveryIDList */
604 static int hf_ansi_map_positionInformationCode = -1;  /* PositionInformationCode */
605 static int hf_ansi_map_mSStatus = -1;             /* MSStatus */
606 static int hf_ansi_map_pSID_RSIDInformation = -1;  /* PSID_RSIDInformation */
607 static int hf_ansi_map_positionRequestType = -1;  /* PositionRequestType */
608 static int hf_ansi_map_lcsBillingID = -1;         /* LCSBillingID */
609 static int hf_ansi_map_lcs_Client_ID = -1;        /* LCS_Client_ID */
610 static int hf_ansi_map_dtxIndication = -1;        /* DTXIndication */
611 static int hf_ansi_map_cdmaCodeChannel = -1;      /* CDMACodeChannel */
612 static int hf_ansi_map_cdmaMobileCapabilities = -1;  /* CDMAMobileCapabilities */
613 static int hf_ansi_map_cdmaPSMMList = -1;         /* CDMAPSMMList */
614 static int hf_ansi_map_tdma_MAHO_CELLID = -1;     /* TDMA_MAHO_CELLID */
615 static int hf_ansi_map_tdma_MAHO_CHANNEL = -1;    /* TDMA_MAHO_CHANNEL */
616 static int hf_ansi_map_tdma_TimeAlignment = -1;   /* TDMA_TimeAlignment */
617 static int hf_ansi_map_pqos_HorizontalPosition = -1;  /* PQOS_HorizontalPosition */
618 static int hf_ansi_map_pqos_HorizontalVelocity = -1;  /* PQOS_HorizontalVelocity */
619 static int hf_ansi_map_pqos_MaximumPositionAge = -1;  /* PQOS_MaximumPositionAge */
620 static int hf_ansi_map_pqos_PositionPriority = -1;  /* PQOS_PositionPriority */
621 static int hf_ansi_map_pqos_ResponseTime = -1;    /* PQOS_ResponseTime */
622 static int hf_ansi_map_pqos_VerticalPosition = -1;  /* PQOS_VerticalPosition */
623 static int hf_ansi_map_pqos_VerticalVelocity = -1;  /* PQOS_VerticalVelocity */
624 static int hf_ansi_map_cdmaPSMMCount = -1;        /* CDMAPSMMCount */
625 static int hf_ansi_map_lirAuthorization = -1;     /* LIRAuthorization */
626 static int hf_ansi_map_mpcid = -1;                /* MPCID */
627 static int hf_ansi_map_tdma_MAHORequest = -1;     /* TDMA_MAHORequest */
628 static int hf_ansi_map_positionResult = -1;       /* PositionResult */
629 static int hf_ansi_map_positionInformation = -1;  /* PositionInformation */
630 static int hf_ansi_map_controlType = -1;          /* ControlType */
631 static int hf_ansi_map_destinationAddress = -1;   /* DestinationAddress */
632 static int hf_ansi_map_gapDuration = -1;          /* GapDuration */
633 static int hf_ansi_map_gapInterval = -1;          /* GapInterval */
634 static int hf_ansi_map_invokingNEType = -1;       /* InvokingNEType */
635 static int hf_ansi_map_range = -1;                /* Range */
636 static int hf_ansi_map_meidStatus = -1;           /* MEIDStatus */
637 static int hf_ansi_map_aKeyProtocolVersion = -1;  /* AKeyProtocolVersion */
638 static int hf_ansi_map_mobileStationPartialKey = -1;  /* MobileStationPartialKey */
639 static int hf_ansi_map_newlyAssignedMSID = -1;    /* NewlyAssignedMSID */
640 static int hf_ansi_map_baseStationPartialKey = -1;  /* BaseStationPartialKey */
641 static int hf_ansi_map_modulusValue = -1;         /* ModulusValue */
642 static int hf_ansi_map_otasp_ResultCode = -1;     /* OTASP_ResultCode */
643 static int hf_ansi_map_primitiveValue = -1;       /* PrimitiveValue */
644 static int hf_ansi_map_record_Type = -1;          /* Record_Type */
645 static int hf_ansi_map_information_Record = -1;   /* Information_Record */
646 static int hf_ansi_map_cdma2000MobileSupportedCapabilities = -1;  /* CDMA2000MobileSupportedCapabilities */
647 static int hf_ansi_map_announcementCode1 = -1;    /* AnnouncementCode */
648 static int hf_ansi_map_announcementCode2 = -1;    /* AnnouncementCode */
649 static int hf_ansi_map_cdmaPilotPN = -1;          /* CDMAPilotPN */
650 static int hf_ansi_map_cdmaPowerCombinedIndicator = -1;  /* CDMAPowerCombinedIndicator */
651 static int hf_ansi_map_CDMACodeChannelList_item = -1;  /* CDMACodeChannelInformation */
652 static int hf_ansi_map_cdmaPilotStrength = -1;    /* CDMAPilotStrength */
653 static int hf_ansi_map_cdmaTargetOneWayDelay = -1;  /* CDMATargetOneWayDelay */
654 static int hf_ansi_map_CDMATargetMAHOList_item = -1;  /* CDMATargetMAHOInformation */
655 static int hf_ansi_map_cdmaSignalQuality = -1;    /* CDMASignalQuality */
656 static int hf_ansi_map_CDMATargetMeasurementList_item = -1;  /* CDMATargetMeasurementInformation */
657 static int hf_ansi_map_TargetMeasurementList_item = -1;  /* TargetMeasurementInformation */
658 static int hf_ansi_map_TerminationList_item = -1;  /* TerminationList_item */
659 static int hf_ansi_map_intersystemTermination = -1;  /* IntersystemTermination */
660 static int hf_ansi_map_localTermination = -1;     /* LocalTermination */
661 static int hf_ansi_map_pstnTermination = -1;      /* PSTNTermination */
662 static int hf_ansi_map_CDMABandClassList_item = -1;  /* CDMABandClassInformation */
663 static int hf_ansi_map_CDMAServiceOptionList_item = -1;  /* CDMAServiceOption */
664 static int hf_ansi_map_pSID_RSIDInformation1 = -1;  /* PSID_RSIDInformation */
665 static int hf_ansi_map_targetCellID1 = -1;        /* TargetCellID */
666 static int hf_ansi_map_cdmaConnectionReference = -1;  /* CDMAConnectionReference */
667 static int hf_ansi_map_cdmaState = -1;            /* CDMAState */
668 static int hf_ansi_map_cdmaServiceOptionConnectionIdentifier = -1;  /* CDMAServiceOptionConnectionIdentifier */
669 static int hf_ansi_map_CDMAConnectionReferenceList_item = -1;  /* CDMAConnectionReferenceList_item */
670 static int hf_ansi_map_cdmaConnectionReferenceInformation = -1;  /* CDMAConnectionReferenceInformation */
671 static int hf_ansi_map_cdmaConnectionReferenceInformation2 = -1;  /* CDMAConnectionReferenceInformation */
672 static int hf_ansi_map_analogRedirectInfo = -1;   /* AnalogRedirectInfo */
673 static int hf_ansi_map_CDMAChannelNumberList_item = -1;  /* CDMAChannelNumberList_item */
674 static int hf_ansi_map_cdmaChannelNumber = -1;    /* CDMAChannelNumber */
675 static int hf_ansi_map_cdmaChannelNumber2 = -1;   /* CDMAChannelNumber */
676 static int hf_ansi_map_cdmaChannelNumberList = -1;  /* CDMAChannelNumberList */
677 static int hf_ansi_map_dataID = -1;               /* DataID */
678 static int hf_ansi_map_change = -1;               /* Change */
679 static int hf_ansi_map_dataValue = -1;            /* DataValue */
680 static int hf_ansi_map_DataAccessElementList_item = -1;  /* DataAccessElementList_item */
681 static int hf_ansi_map_dataAccessElement1 = -1;   /* DataAccessElement */
682 static int hf_ansi_map_dataAccessElement2 = -1;   /* DataAccessElement */
683 static int hf_ansi_map_dataResult = -1;           /* DataResult */
684 static int hf_ansi_map_DataUpdateResultList_item = -1;  /* DataUpdateResult */
685 static int hf_ansi_map_globalTitle = -1;          /* GlobalTitle */
686 static int hf_ansi_map_pC_SSN = -1;               /* PC_SSN */
687 static int hf_ansi_map_scriptName = -1;           /* ScriptName */
688 static int hf_ansi_map_scriptArgument = -1;       /* ScriptArgument */
689 static int hf_ansi_map_allOrNone = -1;            /* AllOrNone */
690 static int hf_ansi_map_ModificationRequestList_item = -1;  /* ModificationRequest */
691 static int hf_ansi_map_serviceDataResultList = -1;  /* ServiceDataResultList */
692 static int hf_ansi_map_ModificationResultList_item = -1;  /* ModificationResult */
693 static int hf_ansi_map_ServiceDataAccessElementList_item = -1;  /* ServiceDataAccessElement */
694 static int hf_ansi_map_dataUpdateResultList = -1;  /* DataUpdateResultList */
695 static int hf_ansi_map_ServiceDataResultList_item = -1;  /* ServiceDataResult */
696 static int hf_ansi_map_triggerList = -1;          /* TriggerList */
697 static int hf_ansi_map_triggerListOpt = -1;       /* TriggerList */
698 static int hf_ansi_map_wIN_TriggerList = -1;      /* WIN_TriggerList */
699 static int hf_ansi_map_triggerCapability = -1;    /* TriggerCapability */
700 static int hf_ansi_map_wINOperationsCapability = -1;  /* WINOperationsCapability */
701 static int hf_ansi_map_CallRecoveryIDList_item = -1;  /* CallRecoveryID */
702 static int hf_ansi_map_generalizedTime = -1;      /* GeneralizedTime */
703 static int hf_ansi_map_geographicPosition = -1;   /* GeographicPosition */
704 static int hf_ansi_map_positionSource = -1;       /* PositionSource */
705 static int hf_ansi_map_horizontal_Velocity = -1;  /* Horizontal_Velocity */
706 static int hf_ansi_map_vertical_Velocity = -1;    /* Vertical_Velocity */
707 static int hf_ansi_map_sCFOverloadGapInterval = -1;  /* SCFOverloadGapInterval */
708 static int hf_ansi_map_serviceManagementSystemGapInterval = -1;  /* ServiceManagementSystemGapInterval */
709 static int hf_ansi_map_CDMAPSMMList_item = -1;    /* CDMAPSMMList_item */
710 static int hf_ansi_map_cdmaTargetMAHOList2 = -1;  /* CDMATargetMAHOList */
711 static int hf_ansi_map_mpcAddress2 = -1;          /* MPCAddress */
712 static int hf_ansi_map_mobileStationIMSI = -1;    /* MobileStationIMSI */
713 static int hf_ansi_map_handoffMeasurementRequest = -1;  /* HandoffMeasurementRequest */
714 static int hf_ansi_map_facilitiesDirective = -1;  /* FacilitiesDirective */
715 static int hf_ansi_map_handoffBack = -1;          /* HandoffBack */
716 static int hf_ansi_map_facilitiesRelease = -1;    /* FacilitiesRelease */
717 static int hf_ansi_map_qualificationRequest = -1;  /* QualificationRequest */
718 static int hf_ansi_map_qualificationDirective = -1;  /* QualificationDirective */
719 static int hf_ansi_map_blocking = -1;             /* Blocking */
720 static int hf_ansi_map_unblocking = -1;           /* Unblocking */
721 static int hf_ansi_map_resetCircuit = -1;         /* ResetCircuit */
722 static int hf_ansi_map_trunkTest = -1;            /* TrunkTest */
723 static int hf_ansi_map_trunkTestDisconnect = -1;  /* TrunkTestDisconnect */
724 static int hf_ansi_map_registrationNotification = -1;  /* RegistrationNotification */
725 static int hf_ansi_map_registrationCancellation = -1;  /* RegistrationCancellation */
726 static int hf_ansi_map_locationRequest = -1;      /* LocationRequest */
727 static int hf_ansi_map_routingRequest = -1;       /* RoutingRequest */
728 static int hf_ansi_map_featureRequest = -1;       /* FeatureRequest */
729 static int hf_ansi_map_unreliableRoamerDataDirective = -1;  /* UnreliableRoamerDataDirective */
730 static int hf_ansi_map_mSInactive = -1;           /* MSInactive */
731 static int hf_ansi_map_transferToNumberRequest = -1;  /* TransferToNumberRequest */
732 static int hf_ansi_map_redirectionRequest = -1;   /* RedirectionRequest */
733 static int hf_ansi_map_handoffToThird = -1;       /* HandoffToThird */
734 static int hf_ansi_map_flashRequest = -1;         /* FlashRequest */
735 static int hf_ansi_map_authenticationDirective = -1;  /* AuthenticationDirective */
736 static int hf_ansi_map_authenticationRequest = -1;  /* AuthenticationRequest */
737 static int hf_ansi_map_baseStationChallenge = -1;  /* BaseStationChallenge */
738 static int hf_ansi_map_authenticationFailureReport = -1;  /* AuthenticationFailureReport */
739 static int hf_ansi_map_countRequest = -1;         /* CountRequest */
740 static int hf_ansi_map_interSystemPage = -1;      /* InterSystemPage */
741 static int hf_ansi_map_unsolicitedResponse = -1;  /* UnsolicitedResponse */
742 static int hf_ansi_map_bulkDeregistration = -1;   /* BulkDeregistration */
743 static int hf_ansi_map_handoffMeasurementRequest2 = -1;  /* HandoffMeasurementRequest2 */
744 static int hf_ansi_map_facilitiesDirective2 = -1;  /* FacilitiesDirective2 */
745 static int hf_ansi_map_handoffBack2 = -1;         /* HandoffBack2 */
746 static int hf_ansi_map_handoffToThird2 = -1;      /* HandoffToThird2 */
747 static int hf_ansi_map_authenticationDirectiveForward = -1;  /* AuthenticationDirectiveForward */
748 static int hf_ansi_map_authenticationStatusReport = -1;  /* AuthenticationStatusReport */
749 static int hf_ansi_map_informationDirective = -1;  /* InformationDirective */
750 static int hf_ansi_map_informationForward = -1;   /* InformationForward */
751 static int hf_ansi_map_interSystemAnswer = -1;    /* InterSystemAnswer */
752 static int hf_ansi_map_interSystemPage2 = -1;     /* InterSystemPage2 */
753 static int hf_ansi_map_interSystemSetup = -1;     /* InterSystemSetup */
754 static int hf_ansi_map_originationRequest = -1;   /* OriginationRequest */
755 static int hf_ansi_map_randomVariableRequest = -1;  /* RandomVariableRequest */
756 static int hf_ansi_map_redirectionDirective = -1;  /* RedirectionDirective */
757 static int hf_ansi_map_remoteUserInteractionDirective = -1;  /* RemoteUserInteractionDirective */
758 static int hf_ansi_map_sMSDeliveryBackward = -1;  /* SMSDeliveryBackward */
759 static int hf_ansi_map_sMSDeliveryForward = -1;   /* SMSDeliveryForward */
760 static int hf_ansi_map_sMSDeliveryPointToPoint = -1;  /* SMSDeliveryPointToPoint */
761 static int hf_ansi_map_sMSNotification = -1;      /* SMSNotification */
762 static int hf_ansi_map_sMSRequest = -1;           /* SMSRequest */
763 static int hf_ansi_map_oTASPRequest = -1;         /* OTASPRequest */
764 static int hf_ansi_map_changeFacilities = -1;     /* ChangeFacilities */
765 static int hf_ansi_map_changeService = -1;        /* ChangeService */
766 static int hf_ansi_map_parameterRequest = -1;     /* ParameterRequest */
767 static int hf_ansi_map_tMSIDirective = -1;        /* TMSIDirective */
768 static int hf_ansi_map_numberPortabilityRequest = -1;  /* NumberPortabilityRequest */
769 static int hf_ansi_map_serviceRequest = -1;       /* ServiceRequest */
770 static int hf_ansi_map_analyzedInformation = -1;  /* AnalyzedInformation */
771 static int hf_ansi_map_connectionFailureReport = -1;  /* ConnectionFailureReport */
772 static int hf_ansi_map_connectResource = -1;      /* ConnectResource */
773 static int hf_ansi_map_facilitySelectedAndAvailable = -1;  /* FacilitySelectedAndAvailable */
774 static int hf_ansi_map_modify = -1;               /* Modify */
775 static int hf_ansi_map_search = -1;               /* Search */
776 static int hf_ansi_map_seizeResource = -1;        /* SeizeResource */
777 static int hf_ansi_map_sRFDirective = -1;         /* SRFDirective */
778 static int hf_ansi_map_tBusy = -1;                /* TBusy */
779 static int hf_ansi_map_tNoAnswer = -1;            /* TNoAnswer */
780 static int hf_ansi_map_smsDeliveryPointToPointAck = -1;  /* SMSDeliveryPointToPointAck */
781 static int hf_ansi_map_messageDirective = -1;     /* MessageDirective */
782 static int hf_ansi_map_bulkDisconnection = -1;    /* BulkDisconnection */
783 static int hf_ansi_map_callControlDirective = -1;  /* CallControlDirective */
784 static int hf_ansi_map_oAnswer = -1;              /* OAnswer */
785 static int hf_ansi_map_oDisconnect = -1;          /* ODisconnect */
786 static int hf_ansi_map_callRecoveryReport = -1;   /* CallRecoveryReport */
787 static int hf_ansi_map_tAnswer = -1;              /* TAnswer */
788 static int hf_ansi_map_tDisconnect = -1;          /* TDisconnect */
789 static int hf_ansi_map_unreliableCallData = -1;   /* UnreliableCallData */
790 static int hf_ansi_map_oCalledPartyBusy = -1;     /* OCalledPartyBusy */
791 static int hf_ansi_map_oNoAnswer = -1;            /* ONoAnswer */
792 static int hf_ansi_map_positionRequest = -1;      /* PositionRequest */
793 static int hf_ansi_map_positionRequestForward = -1;  /* PositionRequestForward */
794 static int hf_ansi_map_callTerminationReport = -1;  /* CallTerminationReport */
795 static int hf_ansi_map_geoPositionRequest = -1;   /* GeoPositionRequest */
796 static int hf_ansi_map_interSystemPositionRequest = -1;  /* InterSystemPositionRequest */
797 static int hf_ansi_map_interSystemPositionRequestForward = -1;  /* InterSystemPositionRequestForward */
798 static int hf_ansi_map_aCGDirective = -1;         /* ACGDirective */
799 static int hf_ansi_map_roamerDatabaseVerificationRequest = -1;  /* RoamerDatabaseVerificationRequest */
800 static int hf_ansi_map_addService = -1;           /* AddService */
801 static int hf_ansi_map_dropService = -1;          /* DropService */
802 static int hf_ansi_map_lcsParameterRequest = -1;  /* LCSParameterRequest */
803 static int hf_ansi_map_checkMEID = -1;            /* CheckMEID */
804 static int hf_ansi_map_positionEventNotification = -1;  /* PositionEventNotification */
805 static int hf_ansi_map_statusRequest = -1;        /* StatusRequest */
806 static int hf_ansi_map_interSystemSMSDeliveryPointToPoint = -1;  /* InterSystemSMSDeliveryPointToPoint */
807 static int hf_ansi_map_qualificationRequest2 = -1;  /* QualificationRequest2 */
808 static int hf_ansi_map_handoffMeasurementRequestRes = -1;  /* HandoffMeasurementRequestRes */
809 static int hf_ansi_map_facilitiesDirectiveRes = -1;  /* FacilitiesDirectiveRes */
810 static int hf_ansi_map_handoffBackRes = -1;       /* HandoffBackRes */
811 static int hf_ansi_map_facilitiesReleaseRes = -1;  /* FacilitiesReleaseRes */
812 static int hf_ansi_map_qualificationDirectiveRes = -1;  /* QualificationDirectiveRes */
813 static int hf_ansi_map_qualificationRequestRes = -1;  /* QualificationRequestRes */
814 static int hf_ansi_map_resetCircuitRes = -1;      /* ResetCircuitRes */
815 static int hf_ansi_map_registrationNotificationRes = -1;  /* RegistrationNotificationRes */
816 static int hf_ansi_map_registrationCancellationRes = -1;  /* RegistrationCancellationRes */
817 static int hf_ansi_map_locationRequestRes = -1;   /* LocationRequestRes */
818 static int hf_ansi_map_routingRequestRes = -1;    /* RoutingRequestRes */
819 static int hf_ansi_map_featureRequestRes = -1;    /* FeatureRequestRes */
820 static int hf_ansi_map_transferToNumberRequestRes = -1;  /* TransferToNumberRequestRes */
821 static int hf_ansi_map_handoffToThirdRes = -1;    /* HandoffToThirdRes */
822 static int hf_ansi_map_authenticationDirectiveRes = -1;  /* AuthenticationDirectiveRes */
823 static int hf_ansi_map_authenticationRequestRes = -1;  /* AuthenticationRequestRes */
824 static int hf_ansi_map_baseStationChallengeRes = -1;  /* BaseStationChallengeRes */
825 static int hf_ansi_map_authenticationFailureReportRes = -1;  /* AuthenticationFailureReportRes */
826 static int hf_ansi_map_countRequestRes = -1;      /* CountRequestRes */
827 static int hf_ansi_map_interSystemPageRes = -1;   /* InterSystemPageRes */
828 static int hf_ansi_map_unsolicitedResponseRes = -1;  /* UnsolicitedResponseRes */
829 static int hf_ansi_map_handoffMeasurementRequest2Res = -1;  /* HandoffMeasurementRequest2Res */
830 static int hf_ansi_map_facilitiesDirective2Res = -1;  /* FacilitiesDirective2Res */
831 static int hf_ansi_map_handoffBack2Res = -1;      /* HandoffBack2Res */
832 static int hf_ansi_map_handoffToThird2Res = -1;   /* HandoffToThird2Res */
833 static int hf_ansi_map_authenticationDirectiveForwardRes = -1;  /* AuthenticationDirectiveForwardRes */
834 static int hf_ansi_map_authenticationStatusReportRes = -1;  /* AuthenticationStatusReportRes */
835 static int hf_ansi_map_informationDirectiveRes = -1;  /* InformationDirectiveRes */
836 static int hf_ansi_map_informationForwardRes = -1;  /* InformationForwardRes */
837 static int hf_ansi_map_interSystemPage2Res = -1;  /* InterSystemPage2Res */
838 static int hf_ansi_map_interSystemSetupRes = -1;  /* InterSystemSetupRes */
839 static int hf_ansi_map_originationRequestRes = -1;  /* OriginationRequestRes */
840 static int hf_ansi_map_randomVariableRequestRes = -1;  /* RandomVariableRequestRes */
841 static int hf_ansi_map_remoteUserInteractionDirectiveRes = -1;  /* RemoteUserInteractionDirectiveRes */
842 static int hf_ansi_map_sMSDeliveryBackwardRes = -1;  /* SMSDeliveryBackwardRes */
843 static int hf_ansi_map_sMSDeliveryForwardRes = -1;  /* SMSDeliveryForwardRes */
844 static int hf_ansi_map_sMSDeliveryPointToPointRes = -1;  /* SMSDeliveryPointToPointRes */
845 static int hf_ansi_map_sMSNotificationRes = -1;   /* SMSNotificationRes */
846 static int hf_ansi_map_sMSRequestRes = -1;        /* SMSRequestRes */
847 static int hf_ansi_map_oTASPRequestRes = -1;      /* OTASPRequestRes */
848 static int hf_ansi_map_changeFacilitiesRes = -1;  /* ChangeFacilitiesRes */
849 static int hf_ansi_map_changeServiceRes = -1;     /* ChangeServiceRes */
850 static int hf_ansi_map_parameterRequestRes = -1;  /* ParameterRequestRes */
851 static int hf_ansi_map_tMSIDirectiveRes = -1;     /* TMSIDirectiveRes */
852 static int hf_ansi_map_numberPortabilityRequestRes = -1;  /* NumberPortabilityRequestRes */
853 static int hf_ansi_map_serviceRequestRes = -1;    /* ServiceRequestRes */
854 static int hf_ansi_map_analyzedInformationRes = -1;  /* AnalyzedInformationRes */
855 static int hf_ansi_map_facilitySelectedAndAvailableRes = -1;  /* FacilitySelectedAndAvailableRes */
856 static int hf_ansi_map_modifyRes = -1;            /* ModifyRes */
857 static int hf_ansi_map_searchRes = -1;            /* SearchRes */
858 static int hf_ansi_map_seizeResourceRes = -1;     /* SeizeResourceRes */
859 static int hf_ansi_map_sRFDirectiveRes = -1;      /* SRFDirectiveRes */
860 static int hf_ansi_map_tBusyRes = -1;             /* TBusyRes */
861 static int hf_ansi_map_tNoAnswerRes = -1;         /* TNoAnswerRes */
862 static int hf_ansi_map_callControlDirectiveRes = -1;  /* CallControlDirectiveRes */
863 static int hf_ansi_map_oDisconnectRes = -1;       /* ODisconnectRes */
864 static int hf_ansi_map_tDisconnectRes = -1;       /* TDisconnectRes */
865 static int hf_ansi_map_oCalledPartyBusyRes = -1;  /* OCalledPartyBusyRes */
866 static int hf_ansi_map_oNoAnswerRes = -1;         /* ONoAnswerRes */
867 static int hf_ansi_map_positionRequestRes = -1;   /* PositionRequestRes */
868 static int hf_ansi_map_positionRequestForwardRes = -1;  /* PositionRequestForwardRes */
869 static int hf_ansi_map_interSystemPositionRequestRes = -1;  /* InterSystemPositionRequestRes */
870 static int hf_ansi_map_interSystemPositionRequestForwardRes = -1;  /* InterSystemPositionRequestForwardRes */
871 static int hf_ansi_map_roamerDatabaseVerificationRequestRes = -1;  /* RoamerDatabaseVerificationRequestRes */
872 static int hf_ansi_map_addServiceRes = -1;        /* AddServiceRes */
873 static int hf_ansi_map_dropServiceRes = -1;       /* DropServiceRes */
874 static int hf_ansi_map_interSystemSMSPage = -1;   /* InterSystemSMSPage */
875 static int hf_ansi_map_lcsParameterRequestRes = -1;  /* LCSParameterRequestRes */
876 static int hf_ansi_map_checkMEIDRes = -1;         /* CheckMEIDRes */
877 static int hf_ansi_map_statusRequestRes = -1;     /* StatusRequestRes */
878 static int hf_ansi_map_interSystemSMSDeliveryPointToPointRes = -1;  /* InterSystemSMSDeliveryPointToPointRes */
879 static int hf_ansi_map_qualificationRequest2Res = -1;  /* QualificationRequest2Res */
880
881 /*--- End of included file: packet-ansi_map-hf.c ---*/
882 #line 323 "../../asn1/ansi_map/packet-ansi_map-template.c"
883
884 /* Initialize the subtree pointers */
885 static gint ett_ansi_map = -1;
886 static gint ett_mintype = -1;
887 static gint ett_digitstype = -1;
888 static gint ett_billingid = -1;
889 static gint ett_sms_bearer_data = -1;
890 static gint ett_sms_teleserviceIdentifier = -1;
891 static gint ett_extendedmscid = -1;
892 static gint ett_extendedsystemmytypecode = -1;
893 static gint ett_handoffstate = -1;
894 static gint ett_mscid = -1;
895 static gint ett_cdmachanneldata = -1;
896 static gint ett_cdmastationclassmark = -1;
897 static gint ett_channeldata = -1;
898 static gint ett_confidentialitymodes = -1;
899 static gint ett_controlchanneldata = -1;
900 static gint ett_CDMA2000HandoffInvokeIOSData = -1;
901 static gint ett_CDMA2000HandoffResponseIOSData = -1;
902 static gint ett_originationtriggers = -1;
903 static gint ett_pacaindicator = -1;
904 static gint ett_callingpartyname = -1;
905 static gint ett_triggercapability = -1;
906 static gint ett_winoperationscapability = -1;
907 static gint ett_win_trigger_list = -1;
908 static gint ett_controlnetworkid = -1;
909 static gint ett_transactioncapability = -1;
910 static gint ett_cdmaserviceoption = -1;
911 static gint ett_systemcapabilities = -1;
912 static gint ett_sms_originationrestrictions = -1;
913
914
915 /*--- Included file: packet-ansi_map-ett.c ---*/
916 #line 1 "../../asn1/ansi_map/packet-ansi_map-ett.c"
917 static gint ett_ansi_map_AuthenticationDirective_U = -1;
918 static gint ett_ansi_map_AuthenticationDirectiveRes_U = -1;
919 static gint ett_ansi_map_AuthenticationDirectiveForward_U = -1;
920 static gint ett_ansi_map_AuthenticationDirectiveForwardRes_U = -1;
921 static gint ett_ansi_map_AuthenticationFailureReport_U = -1;
922 static gint ett_ansi_map_AuthenticationFailureReportRes_U = -1;
923 static gint ett_ansi_map_AuthenticationRequest_U = -1;
924 static gint ett_ansi_map_AuthenticationRequestRes_U = -1;
925 static gint ett_ansi_map_AuthenticationStatusReport_U = -1;
926 static gint ett_ansi_map_AuthenticationStatusReportRes_U = -1;
927 static gint ett_ansi_map_BaseStationChallenge_U = -1;
928 static gint ett_ansi_map_BaseStationChallengeRes_U = -1;
929 static gint ett_ansi_map_Blocking_U = -1;
930 static gint ett_ansi_map_BulkDeregistration_U = -1;
931 static gint ett_ansi_map_CountRequest_U = -1;
932 static gint ett_ansi_map_CountRequestRes_U = -1;
933 static gint ett_ansi_map_FacilitiesDirective_U = -1;
934 static gint ett_ansi_map_FacilitiesDirectiveRes_U = -1;
935 static gint ett_ansi_map_FacilitiesDirective2_U = -1;
936 static gint ett_ansi_map_FacilitiesDirective2Res_U = -1;
937 static gint ett_ansi_map_FacilitiesRelease_U = -1;
938 static gint ett_ansi_map_FacilitiesReleaseRes_U = -1;
939 static gint ett_ansi_map_FeatureRequest_U = -1;
940 static gint ett_ansi_map_FeatureRequestRes_U = -1;
941 static gint ett_ansi_map_FlashRequest_U = -1;
942 static gint ett_ansi_map_HandoffBack_U = -1;
943 static gint ett_ansi_map_HandoffBackRes_U = -1;
944 static gint ett_ansi_map_HandoffBack2_U = -1;
945 static gint ett_ansi_map_HandoffBack2Res_U = -1;
946 static gint ett_ansi_map_HandoffMeasurementRequest_U = -1;
947 static gint ett_ansi_map_HandoffMeasurementRequestRes_U = -1;
948 static gint ett_ansi_map_HandoffMeasurementRequest2_U = -1;
949 static gint ett_ansi_map_HandoffMeasurementRequest2Res_U = -1;
950 static gint ett_ansi_map_HandoffToThird_U = -1;
951 static gint ett_ansi_map_HandoffToThirdRes_U = -1;
952 static gint ett_ansi_map_HandoffToThird2_U = -1;
953 static gint ett_ansi_map_HandoffToThird2Res_U = -1;
954 static gint ett_ansi_map_InformationDirective_U = -1;
955 static gint ett_ansi_map_InformationDirectiveRes_U = -1;
956 static gint ett_ansi_map_InformationForward_U = -1;
957 static gint ett_ansi_map_InformationForwardRes_U = -1;
958 static gint ett_ansi_map_InterSystemAnswer_U = -1;
959 static gint ett_ansi_map_InterSystemPage_U = -1;
960 static gint ett_ansi_map_InterSystemPageRes_U = -1;
961 static gint ett_ansi_map_InterSystemPage2_U = -1;
962 static gint ett_ansi_map_InterSystemPage2Res_U = -1;
963 static gint ett_ansi_map_InterSystemSetup_U = -1;
964 static gint ett_ansi_map_InterSystemSetupRes_U = -1;
965 static gint ett_ansi_map_LocationRequest_U = -1;
966 static gint ett_ansi_map_LocationRequestRes_U = -1;
967 static gint ett_ansi_map_MSInactive_U = -1;
968 static gint ett_ansi_map_OriginationRequest_U = -1;
969 static gint ett_ansi_map_OriginationRequestRes_U = -1;
970 static gint ett_ansi_map_QualificationDirective_U = -1;
971 static gint ett_ansi_map_QualificationDirectiveRes_U = -1;
972 static gint ett_ansi_map_QualificationRequest_U = -1;
973 static gint ett_ansi_map_QualificationRequestRes_U = -1;
974 static gint ett_ansi_map_RandomVariableRequest_U = -1;
975 static gint ett_ansi_map_RandomVariableRequestRes_U = -1;
976 static gint ett_ansi_map_RedirectionDirective_U = -1;
977 static gint ett_ansi_map_RedirectionRequest_U = -1;
978 static gint ett_ansi_map_RegistrationCancellation_U = -1;
979 static gint ett_ansi_map_RegistrationCancellationRes_U = -1;
980 static gint ett_ansi_map_RegistrationNotification_U = -1;
981 static gint ett_ansi_map_RegistrationNotificationRes_U = -1;
982 static gint ett_ansi_map_RemoteUserInteractionDirective_U = -1;
983 static gint ett_ansi_map_RemoteUserInteractionDirectiveRes_U = -1;
984 static gint ett_ansi_map_ResetCircuit_U = -1;
985 static gint ett_ansi_map_ResetCircuitRes_U = -1;
986 static gint ett_ansi_map_RoutingRequest_U = -1;
987 static gint ett_ansi_map_RoutingRequestRes_U = -1;
988 static gint ett_ansi_map_SMSDeliveryBackward_U = -1;
989 static gint ett_ansi_map_SMSDeliveryBackwardRes_U = -1;
990 static gint ett_ansi_map_SMSDeliveryForward_U = -1;
991 static gint ett_ansi_map_SMSDeliveryForwardRes_U = -1;
992 static gint ett_ansi_map_SMSDeliveryPointToPoint_U = -1;
993 static gint ett_ansi_map_SMSDeliveryPointToPointRes_U = -1;
994 static gint ett_ansi_map_SMSDeliveryPointToPointAck_U = -1;
995 static gint ett_ansi_map_SMSNotification_U = -1;
996 static gint ett_ansi_map_SMSNotificationRes_U = -1;
997 static gint ett_ansi_map_SMSRequest_U = -1;
998 static gint ett_ansi_map_SMSRequestRes_U = -1;
999 static gint ett_ansi_map_TransferToNumberRequest_U = -1;
1000 static gint ett_ansi_map_TransferToNumberRequestRes_U = -1;
1001 static gint ett_ansi_map_TrunkTest_U = -1;
1002 static gint ett_ansi_map_TrunkTestDisconnect_U = -1;
1003 static gint ett_ansi_map_Unblocking_U = -1;
1004 static gint ett_ansi_map_UnreliableRoamerDataDirective_U = -1;
1005 static gint ett_ansi_map_UnsolicitedResponse_U = -1;
1006 static gint ett_ansi_map_UnsolicitedResponseRes_U = -1;
1007 static gint ett_ansi_map_ParameterRequest_U = -1;
1008 static gint ett_ansi_map_ParameterRequestRes_U = -1;
1009 static gint ett_ansi_map_TMSIDirective_U = -1;
1010 static gint ett_ansi_map_TMSIDirectiveRes_U = -1;
1011 static gint ett_ansi_map_NumberPortabilityRequest_U = -1;
1012 static gint ett_ansi_map_NumberPortabilityRequestRes_U = -1;
1013 static gint ett_ansi_map_ServiceRequest_U = -1;
1014 static gint ett_ansi_map_ServiceRequestRes_U = -1;
1015 static gint ett_ansi_map_AnalyzedInformation_U = -1;
1016 static gint ett_ansi_map_AnalyzedInformationRes_U = -1;
1017 static gint ett_ansi_map_ConnectionFailureReport_U = -1;
1018 static gint ett_ansi_map_ConnectResource_U = -1;
1019 static gint ett_ansi_map_FacilitySelectedAndAvailable_U = -1;
1020 static gint ett_ansi_map_FacilitySelectedAndAvailableRes_U = -1;
1021 static gint ett_ansi_map_Modify_U = -1;
1022 static gint ett_ansi_map_ModifyRes_U = -1;
1023 static gint ett_ansi_map_Search_U = -1;
1024 static gint ett_ansi_map_SearchRes_U = -1;
1025 static gint ett_ansi_map_SeizeResource_U = -1;
1026 static gint ett_ansi_map_SeizeResourceRes_U = -1;
1027 static gint ett_ansi_map_SRFDirective_U = -1;
1028 static gint ett_ansi_map_SRFDirectiveRes_U = -1;
1029 static gint ett_ansi_map_TBusy_U = -1;
1030 static gint ett_ansi_map_TBusyRes_U = -1;
1031 static gint ett_ansi_map_TNoAnswer_U = -1;
1032 static gint ett_ansi_map_TNoAnswerRes_U = -1;
1033 static gint ett_ansi_map_ChangeFacilities_U = -1;
1034 static gint ett_ansi_map_ChangeFacilitiesRes_U = -1;
1035 static gint ett_ansi_map_ChangeService_U = -1;
1036 static gint ett_ansi_map_ChangeServiceRes_U = -1;
1037 static gint ett_ansi_map_MessageDirective_U = -1;
1038 static gint ett_ansi_map_BulkDisconnection_U = -1;
1039 static gint ett_ansi_map_CallControlDirective_U = -1;
1040 static gint ett_ansi_map_CallControlDirectiveRes_U = -1;
1041 static gint ett_ansi_map_OAnswer_U = -1;
1042 static gint ett_ansi_map_ODisconnect_U = -1;
1043 static gint ett_ansi_map_ODisconnectRes_U = -1;
1044 static gint ett_ansi_map_CallRecoveryReport_U = -1;
1045 static gint ett_ansi_map_TAnswer_U = -1;
1046 static gint ett_ansi_map_TDisconnect_U = -1;
1047 static gint ett_ansi_map_TDisconnectRes_U = -1;
1048 static gint ett_ansi_map_UnreliableCallData_U = -1;
1049 static gint ett_ansi_map_OCalledPartyBusy_U = -1;
1050 static gint ett_ansi_map_OCalledPartyBusyRes_U = -1;
1051 static gint ett_ansi_map_ONoAnswer_U = -1;
1052 static gint ett_ansi_map_ONoAnswerRes_U = -1;
1053 static gint ett_ansi_map_PositionRequest_U = -1;
1054 static gint ett_ansi_map_PositionRequestRes_U = -1;
1055 static gint ett_ansi_map_PositionRequestForward_U = -1;
1056 static gint ett_ansi_map_PositionRequestForwardRes_U = -1;
1057 static gint ett_ansi_map_CallTerminationReport_U = -1;
1058 static gint ett_ansi_map_GeoPositionRequest_U = -1;
1059 static gint ett_ansi_map_InterSystemPositionRequest_U = -1;
1060 static gint ett_ansi_map_InterSystemPositionRequestRes_U = -1;
1061 static gint ett_ansi_map_InterSystemPositionRequestForward_U = -1;
1062 static gint ett_ansi_map_InterSystemPositionRequestForwardRes_U = -1;
1063 static gint ett_ansi_map_ACGDirective_U = -1;
1064 static gint ett_ansi_map_RoamerDatabaseVerificationRequest_U = -1;
1065 static gint ett_ansi_map_RoamerDatabaseVerificationRequestRes_U = -1;
1066 static gint ett_ansi_map_LCSParameterRequest_U = -1;
1067 static gint ett_ansi_map_LCSParameterRequestRes_U = -1;
1068 static gint ett_ansi_map_CheckMEID_U = -1;
1069 static gint ett_ansi_map_CheckMEIDRes_U = -1;
1070 static gint ett_ansi_map_AddService_U = -1;
1071 static gint ett_ansi_map_AddServiceRes_U = -1;
1072 static gint ett_ansi_map_DropService_U = -1;
1073 static gint ett_ansi_map_DropServiceRes_U = -1;
1074 static gint ett_ansi_map_PositionEventNotification_U = -1;
1075 static gint ett_ansi_map_OTASPRequest_U = -1;
1076 static gint ett_ansi_map_OTASPRequestRes_U = -1;
1077 static gint ett_ansi_map_StatusRequest_U = -1;
1078 static gint ett_ansi_map_StatusRequestRes_U = -1;
1079 static gint ett_ansi_map_InterSystemSMSDeliveryPointToPoint_U = -1;
1080 static gint ett_ansi_map_InterSystemSMSDeliveryPointToPointRes_U = -1;
1081 static gint ett_ansi_map_InterSystemSMSPage_U = -1;
1082 static gint ett_ansi_map_QualificationRequest2_U = -1;
1083 static gint ett_ansi_map_QualificationRequest2Res_U = -1;
1084 static gint ett_ansi_map_AnnouncementList = -1;
1085 static gint ett_ansi_map_CDMACodeChannelInformation = -1;
1086 static gint ett_ansi_map_CDMACodeChannelList = -1;
1087 static gint ett_ansi_map_CDMATargetMAHOInformation = -1;
1088 static gint ett_ansi_map_CDMATargetMAHOList = -1;
1089 static gint ett_ansi_map_CDMATargetMeasurementInformation = -1;
1090 static gint ett_ansi_map_CDMATargetMeasurementList = -1;
1091 static gint ett_ansi_map_IntersystemTermination = -1;
1092 static gint ett_ansi_map_LocalTermination = -1;
1093 static gint ett_ansi_map_PSTNTermination = -1;
1094 static gint ett_ansi_map_TargetMeasurementInformation = -1;
1095 static gint ett_ansi_map_TargetMeasurementList = -1;
1096 static gint ett_ansi_map_TerminationList = -1;
1097 static gint ett_ansi_map_TerminationList_item = -1;
1098 static gint ett_ansi_map_CDMABandClassInformation = -1;
1099 static gint ett_ansi_map_CDMABandClassList = -1;
1100 static gint ett_ansi_map_CDMAServiceOptionList = -1;
1101 static gint ett_ansi_map_PSID_RSIDList = -1;
1102 static gint ett_ansi_map_TargetCellIDList = -1;
1103 static gint ett_ansi_map_CDMAConnectionReferenceInformation = -1;
1104 static gint ett_ansi_map_CDMAConnectionReferenceList = -1;
1105 static gint ett_ansi_map_CDMAConnectionReferenceList_item = -1;
1106 static gint ett_ansi_map_AnalogRedirectRecord = -1;
1107 static gint ett_ansi_map_CDMAChannelNumberList = -1;
1108 static gint ett_ansi_map_CDMAChannelNumberList_item = -1;
1109 static gint ett_ansi_map_CDMARedirectRecord = -1;
1110 static gint ett_ansi_map_MSID = -1;
1111 static gint ett_ansi_map_DataAccessElement = -1;
1112 static gint ett_ansi_map_DataAccessElementList = -1;
1113 static gint ett_ansi_map_DataAccessElementList_item = -1;
1114 static gint ett_ansi_map_DataUpdateResult = -1;
1115 static gint ett_ansi_map_DataUpdateResultList = -1;
1116 static gint ett_ansi_map_DestinationAddress = -1;
1117 static gint ett_ansi_map_ExecuteScript = -1;
1118 static gint ett_ansi_map_ModificationRequest = -1;
1119 static gint ett_ansi_map_ModificationRequestList = -1;
1120 static gint ett_ansi_map_ModificationResult = -1;
1121 static gint ett_ansi_map_ModificationResultList = -1;
1122 static gint ett_ansi_map_ServiceDataAccessElement = -1;
1123 static gint ett_ansi_map_ServiceDataAccessElementList = -1;
1124 static gint ett_ansi_map_ServiceDataResult = -1;
1125 static gint ett_ansi_map_ServiceDataResultList = -1;
1126 static gint ett_ansi_map_TriggerAddressList = -1;
1127 static gint ett_ansi_map_TriggerList = -1;
1128 static gint ett_ansi_map_WINCapability = -1;
1129 static gint ett_ansi_map_CallRecoveryID = -1;
1130 static gint ett_ansi_map_CallRecoveryIDList = -1;
1131 static gint ett_ansi_map_PositionInformation = -1;
1132 static gint ett_ansi_map_GapInterval = -1;
1133 static gint ett_ansi_map_CDMAPSMMList = -1;
1134 static gint ett_ansi_map_CDMAPSMMList_item = -1;
1135 static gint ett_ansi_map_MPCAddressList = -1;
1136 static gint ett_ansi_map_MobileStationMSID = -1;
1137 static gint ett_ansi_map_NewlyAssignedMSID = -1;
1138 static gint ett_ansi_map_InvokeData = -1;
1139 static gint ett_ansi_map_ReturnData = -1;
1140
1141 /*--- End of included file: packet-ansi_map-ett.c ---*/
1142 #line 355 "../../asn1/ansi_map/packet-ansi_map-template.c"
1143
1144 /* Global variables */
1145 static dissector_table_t is637_tele_id_dissector_table; /* IS-637 Teleservice ID */
1146 static dissector_table_t is683_dissector_table; /* IS-683-A (OTA) */
1147 static dissector_table_t is801_dissector_table; /* IS-801 (PLD) */
1148 static packet_info *g_pinfo;
1149 static proto_tree *g_tree;
1150 tvbuff_t *SMS_BearerData_tvb = NULL;
1151 gint32    ansi_map_sms_tele_id = -1;
1152 static gboolean is683_ota;
1153 static gboolean is801_pld;
1154 static gboolean ansi_map_is_invoke;
1155 static guint32 OperationCode;
1156 static guint8 ServiceIndicator;
1157
1158
1159 struct ansi_map_invokedata_t {
1160     guint32 opcode;
1161     guint8 ServiceIndicator;
1162 };
1163
1164 static void dissect_ansi_map_win_trigger_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_);
1165
1166
1167 /* Transaction table */
1168 static GHashTable *TransactionId_table=NULL;
1169
1170 static void
1171 TransactionId_table_cleanup(gpointer key , gpointer value, gpointer user_data _U_){
1172
1173     struct ansi_map_invokedata_t *ansi_map_saved_invokedata = (struct ansi_map_invokedata_t *)value;
1174     gchar *TransactionId_str = (gchar *)key;
1175
1176     g_free(TransactionId_str);
1177     g_free(ansi_map_saved_invokedata);
1178
1179 }
1180
1181 static void
1182 ansi_map_init_transaction_table(void){
1183
1184     /* Destroy any existing memory chunks / hashes. */
1185     if (TransactionId_table){
1186         g_hash_table_foreach(TransactionId_table, TransactionId_table_cleanup, NULL);
1187         g_hash_table_destroy(TransactionId_table);
1188     }
1189
1190     TransactionId_table = g_hash_table_new(g_str_hash, g_str_equal);
1191
1192 }
1193
1194 static void
1195 ansi_map_init_protocol(void)
1196 {
1197     ansi_map_init_transaction_table();
1198 }
1199
1200 /* Store Invoke information needed for the corresponding reply */
1201 static void
1202 update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb _U_){
1203     struct ansi_map_invokedata_t *ansi_map_saved_invokedata;
1204     struct ansi_tcap_private_t *p_private_tcap;
1205     address* src = &(pinfo->src);
1206     address* dst = &(pinfo->dst);
1207     guint8 *src_str;
1208     guint8 *dst_str;
1209     char *buf;
1210
1211     buf=ep_alloc(1024);
1212
1213     src_str = ep_address_to_str(src);
1214     dst_str = ep_address_to_str(dst);
1215
1216     /* Data from the TCAP dissector */
1217     if (pinfo->private_data != NULL){
1218         p_private_tcap=(struct ansi_tcap_private_t *)pinfo->private_data;
1219         if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){
1220             /* Only do this once XXX I hope its the right thing to do */
1221             /* The hash string needs to contain src and dest to distiguish differnt flows */
1222                         switch(ansi_map_response_matching_type){
1223                                 case ANSI_MAP_TID_ONLY:
1224                                         g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
1225                                         break;
1226                                 case 1:
1227                                         g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,src_str);
1228                                         break;
1229                                 default:
1230                                         g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,src_str,dst_str);
1231                                         break;
1232                         }
1233             /* If the entry allready exists don't owervrite it */
1234             ansi_map_saved_invokedata = (struct ansi_map_invokedata_t *)g_hash_table_lookup(TransactionId_table,buf);
1235             if(ansi_map_saved_invokedata)
1236                 return;
1237
1238             ansi_map_saved_invokedata = g_new(struct ansi_map_invokedata_t,1);
1239             ansi_map_saved_invokedata->opcode = p_private_tcap->d.OperationCode_private;
1240             ansi_map_saved_invokedata->ServiceIndicator = ServiceIndicator;
1241
1242             g_hash_table_insert(TransactionId_table,
1243                                 g_strdup(buf),
1244                                 ansi_map_saved_invokedata);
1245
1246             /*g_warning("Invoke Hash string %s pkt: %u",buf,pinfo->fd->num);*/
1247         }
1248     }
1249
1250 }
1251 /* value strings */
1252 const value_string ansi_map_opr_code_strings[] = {
1253     {   1, "Handoff Measurement Request" },
1254     {   2, "Facilities Directive" },
1255     {   3, "Mobile On Channel" },
1256     {   4, "Handoff Back" },
1257     {   5, "Facilities Release" },
1258     {   6, "Qualification Request" },
1259     {   7, "Qualification Directive" },
1260     {   8, "Blocking" },
1261     {   9, "Unblocking" },
1262     {  10,  "Reset Circuit" },
1263     {  11, "Trunk Test" },
1264     {  12, "Trunk Test Disconnect" },
1265     {  13, "Registration Notification" },
1266     {  14, "Registration Cancellation" },
1267     {  15, "Location Request" },
1268     {  16, "Routing Request" },
1269     {  17, "Feature Request" },
1270     {  18, "Reserved 18 (Service Profile Request, IS-41-C)" },
1271     {  19, "Reserved 19 (Service Profile Directive, IS-41-C)" },
1272     {  20, "Unreliable Roamer Data Directive" },
1273     {  21, "Reserved 21 (Call Data Request, IS-41-C)" },
1274     {  22, "MS Inactive" },
1275     {  23, "Transfer To Number Request" },
1276     {  24, "Redirection Request" },
1277     {  25, "Handoff To Third" },
1278     {  26, "Flash Request" },
1279     {  27, "Authentication Directive" },
1280     {  28, "Authentication Request" },
1281     {  29, "Base Station Challenge" },
1282     {  30, "Authentication Failure Report" },
1283     {  31, "Count Request" },
1284     {  32, "Inter System Page" },
1285     {  33, "Unsolicited Response" },
1286     {  34, "Bulk Deregistration" },
1287     {  35, "Handoff Measurement Request 2" },
1288     {  36, "Facilities Directive 2" },
1289     {  37, "Handoff Back 2" },
1290     {  38, "Handoff To Third 2" },
1291     {  39, "Authentication Directive Forward" },
1292     {  40, "Authentication Status Report" },
1293     {  41, "Reserved 41" },
1294     {  42, "Information Directive" },
1295     {  43, "Information Forward" },
1296     {  44, "Inter System Answer" },
1297     {  45, "Inter System Page 2" },
1298     {  46, "Inter System Setup" },
1299     {  47, "Origination Request" },
1300     {  48, "Random Variable Request" },
1301     {  49, "Redirection Directive" },
1302     {  50, "Remote User Interaction Directive" },
1303     {  51, "SMS Delivery Backward" },
1304     {  52, "SMS Delivery Forward" },
1305     {  53, "SMS Delivery Point to Point" },
1306     {  54, "SMS Notification" },
1307     {  55, "SMS Request" },
1308     {  56, "OTASP Request" },
1309     {  57, "Information Backward" },
1310     {  58, "Change Facilities" },
1311     {  59, "Change Service" },
1312     {  60, "Parameter Request" },
1313     {  61, "TMSI Directive" },
1314     {  62, "NumberPortabilityRequest" },
1315     {  63, "Service Request" },
1316     {  64, "Analyzed Information Request" },
1317     {  65, "Connection Failure Report" },
1318     {  66, "Connect Resource" },
1319     {  67, "Disconnect Resource" },
1320     {  68, "Facility Selected and Available" },
1321     {  69, "Instruction Request" },
1322     {  70, "Modify" },
1323     {  71, "Reset Timer" },
1324     {  72, "Search" },
1325     {  73, "Seize Resource" },
1326     {  74, "SRF Directive" },
1327     {  75, "T Busy" },
1328     {  76, "T NoAnswer" },
1329     {  77, "Release" },
1330     {  78, "SMS Delivery Point to Point Ack" },
1331     {  79, "Message Directive" },
1332     {  80, "Bulk Disconnection" },
1333     {  81, "Call Control Directive" },
1334     {  82, "O Answer" },
1335     {  83, "O Disconnect" },
1336     {  84, "Call Recovery Report" },
1337     {  85, "T Answer" },
1338     {  86, "T Disconnect" },
1339     {  87, "Unreliable Call Data" },
1340     {  88, "O CalledPartyBusy" },
1341     {  89, "O NoAnswer" },
1342     {  90, "Position Request" },
1343     {  91, "Position Request Forward" },
1344     {  92, "Call Termination Report" },
1345     {  93, "Geo Position Directive" },
1346     {  94, "Geo Position Request" },
1347     {  95, "Inter System Position Request" },
1348     {  96, "Inter System Position Request Forward" },
1349     {  97, "ACG Directive" },
1350     {  98, "Roamer Database Verification Request" },
1351     {  99, "Add Service" },
1352     { 100, "Drop Service" },
1353     { 101, "InterSystemSMSPage" },
1354     { 102, "LCSParameterRequest" },
1355     { 103, "Unknown ANSI-MAP PDU" },
1356     { 104, "Unknown ANSI-MAP PDU" },
1357     { 105, "Unknown ANSI-MAP PDU" },
1358     { 106, "PositionEventNotification" },
1359     { 107, "Unknown ANSI-MAP PDU" },
1360     { 108, "Unknown ANSI-MAP PDU" },
1361     { 109, "Unknown ANSI-MAP PDU" },
1362     { 110, "Unknown ANSI-MAP PDU" },
1363     { 111, "InterSystemSMSDelivery-PointToPoint" },
1364     { 112, "QualificationRequest2" },
1365     {   0, NULL },
1366 };
1367 static value_string_ext ansi_map_opr_code_strings_ext = VALUE_STRING_EXT_INIT(ansi_map_opr_code_strings);
1368
1369 static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
1370 static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset,  asn1_ctx_t *actx);
1371 static int dissect_ansi_map_SystemMyTypeCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
1372
1373 #if 0
1374 /* Moved to tvbuff.h
1375  * XXX remove after trial period.
1376  */
1377 typedef struct dgt_set_t
1378 {
1379     unsigned char out[15];
1380 }
1381 dgt_set_t;
1382 #endif
1383 static dgt_set_t Dgt_tbcd = {
1384     {
1385   /*  0   1   2   3   4   5   6   7   8   9   a   b   c   d   e */
1386      '0','1','2','3','4','5','6','7','8','9','?','B','C','*','#'
1387     }
1388 };
1389 static dgt_set_t Dgt1_9_bcd = {
1390     {
1391   /*  0   1   2   3   4   5   6   7   8   9   a   b   c   d   e */
1392      '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
1393     }
1394 };
1395
1396
1397 /* Type of Digits (octet 1, bits A-H) */
1398 static const value_string ansi_map_type_of_digits_vals[] = {
1399     {   0, "Not Used" },
1400     {   1, "Dialed Number or Called Party Number" },
1401     {   2, "Calling Party Number" },
1402     {   3, "Caller Interaction" },
1403     {   4, "Routing Number" },
1404     {   5, "Billing Number" },
1405     {   6, "Destination Number" },
1406     {   7, "LATA" },
1407     {   8, "Carrier" },
1408     {   0, NULL }
1409 };
1410 /* Nature of Number (octet 2, bits A-H )*/
1411 static const true_false_string ansi_map_na_bool_val  = {
1412     "International",
1413     "National"
1414 };
1415 static const true_false_string ansi_map_pi_bool_val  = {
1416     "Presentation Restricted",
1417     "Presentation Allowed"
1418 };
1419 static const true_false_string ansi_map_navail_bool_val  = {
1420     "Number is not available",
1421     "Number is available"
1422 };
1423 static const true_false_string ansi_map_si_bool_val  = {
1424     "User provided, screening passed",
1425     "User provided, not screened"
1426 };
1427 static const value_string ansi_map_si_vals[]  = {
1428     {   0, "User provided, not screened"},
1429     {   1, "User provided, screening passed"},
1430     {   2, "User provided, screening failed"},
1431     {   3, "Network provided"},
1432     {   0, NULL }
1433 };
1434 /* Encoding (octet 3, bits A-D) */
1435 static const value_string ansi_map_digits_enc_vals[]  = {
1436     {   0, "Not used"},
1437     {   1, "BCD"},
1438     {   2, "IA5"},
1439     {   3, "Octet string"},
1440     {   0, NULL }
1441 };
1442 /* Numbering Plan (octet 3, bits E-H) */
1443 static const value_string ansi_map_np_vals[]  = {
1444     {   0, "Unknown or not applicable"},
1445     {   1, "ISDN Numbering"},
1446     {   2, "Telephony Numbering (ITU-T Rec. E.164,E.163)"},
1447     {   3, "Data Numbering (ITU-T Rec. X.121)"},
1448     {   4, "Telex Numbering (ITU-T Rec. F.69)"},
1449     {   5, "Maritime Mobile Numbering"},
1450     {   6, "Land Mobile Numbering (ITU-T Rec. E.212)"},
1451     {   7, "Private Numbering Plan"},
1452     {  13, "SS7 Point Code (PC) and Subsystem Number (SSN)"},
1453     {  14, "Internet Protocol (IP) Address."},
1454     {  15, "Reserved for extension"},
1455     {   0, NULL }
1456 };
1457
1458 static void
1459 dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1460     const char *digit_str;
1461     int   offset = 0;
1462
1463     proto_tree *subtree;
1464
1465
1466     subtree = proto_item_add_subtree(actx->created_item, ett_mintype);
1467
1468         digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt1_9_bcd, FALSE);
1469     proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
1470     proto_item_append_text(actx->created_item, " - %s", digit_str);
1471 }
1472
1473 static void
1474 dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1475
1476     guint8 octet , octet_len;
1477     guint8 b1,b2,b3,b4;
1478     int    offset = 0;
1479     const char *digit_str;
1480
1481     proto_tree *subtree;
1482
1483
1484     subtree = proto_item_add_subtree(actx->created_item, ett_digitstype);
1485
1486     /* Octet 1 */
1487     proto_tree_add_item(subtree, hf_ansi_map_type_of_digits, tvb, offset, 1, ENC_BIG_ENDIAN);
1488     offset++;
1489     /* Octet 2 */
1490     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHG, tvb, offset, 1, ENC_BIG_ENDIAN);
1491     proto_tree_add_item(subtree, hf_ansi_map_si, tvb, offset, 1, ENC_BIG_ENDIAN);
1492     proto_tree_add_item(subtree, hf_ansi_map_reservedBitD, tvb, offset, 1, ENC_BIG_ENDIAN);
1493     proto_tree_add_item(subtree, hf_ansi_map_navail, tvb, offset, 1, ENC_BIG_ENDIAN);
1494     proto_tree_add_item(subtree, hf_ansi_map_pi, tvb, offset, 1, ENC_BIG_ENDIAN);
1495     proto_tree_add_item(subtree, hf_ansi_map_na, tvb, offset, 1, ENC_BIG_ENDIAN);
1496     offset++;
1497     /* Octet 3 */
1498     octet = tvb_get_guint8(tvb,offset);
1499     proto_tree_add_item(subtree, hf_ansi_map_np, tvb, offset, 1, ENC_BIG_ENDIAN);
1500     proto_tree_add_item(subtree, hf_ansi_map_digits_enc, tvb, offset, 1, ENC_BIG_ENDIAN);
1501     offset++;
1502     /* Octet 4 - */
1503     switch(octet>>4){
1504     case 0:/* Unknown or not applicable */
1505         switch ((octet&0xf)){
1506         case 1:
1507             /* BCD Coding */
1508             octet_len = tvb_get_guint8(tvb,offset);
1509             proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, ENC_BIG_ENDIAN);
1510             if(octet_len == 0)
1511                 return;
1512             offset++;
1513             digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
1514             proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
1515             proto_item_append_text(actx->created_item, " - %s", digit_str);
1516             break;
1517         case 2:
1518             /* IA5 Coding */
1519             octet_len = tvb_get_guint8(tvb,offset);
1520             proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, ENC_BIG_ENDIAN);
1521             if(octet_len == 0)
1522                 return;
1523             offset++;
1524             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, ENC_ASCII|ENC_NA);
1525             proto_item_append_text(actx->created_item, " - %s", tvb_get_ephemeral_string(tvb,offset,tvb_length_remaining(tvb,offset)));
1526             break;
1527         case 3:
1528             /* Octet string */
1529             break;
1530         default:
1531             break;
1532         }
1533         break;
1534     case 1:/* ISDN Numbering (not used in this Standard). */
1535     case 3:/* Data Numbering (ITU-T Rec. X.121) (not used in this Standard). */
1536     case 4:/* Telex Numbering (ITU-T Rec. F.69) (not used in this Standard). */
1537     case 5:/* Maritime Mobile Numbering (not used in this Standard). */
1538         proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
1539         break;
1540     case 2:/* Telephony Numbering (ITU-T Rec. E.164,E.163). */
1541     case 6:/* Land Mobile Numbering (ITU-T Rec. E.212) */
1542     case 7:/* Private Numbering Plan */
1543         octet_len = tvb_get_guint8(tvb,offset);
1544         proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, ENC_BIG_ENDIAN);
1545         if(octet_len == 0)
1546             return;
1547         offset++;
1548         switch ((octet&0xf)){
1549         case 1:
1550             /* BCD Coding */
1551                         digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
1552             proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
1553             proto_item_append_text(actx->created_item, " - %s", digit_str);
1554             break;
1555         case 2:
1556             /* IA5 Coding */
1557             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, ENC_ASCII|ENC_NA);
1558             proto_item_append_text(actx->created_item, " - %s", tvb_get_ephemeral_string(tvb,offset,tvb_length_remaining(tvb,offset)));
1559             break;
1560         case 3:
1561             /* Octet string */
1562             break;
1563         default:
1564             break;
1565         }
1566         break;
1567     case 13:/* ANSI SS7 Point Code (PC) and Subsystem Number (SSN). */
1568         switch ((octet&0xf)){
1569         case 3:
1570             /* Octet string */
1571             /* Point Code Member Number octet 2 */
1572             b1 = tvb_get_guint8(tvb,offset);
1573             offset++;
1574             /* Point Code Cluster Number octet 3 */
1575             b2 = tvb_get_guint8(tvb,offset);
1576             offset++;
1577             /* Point Code Network Number octet 4 */
1578             b3 = tvb_get_guint8(tvb,offset);
1579             offset++;
1580             /* Subsystem Number (SSN) octet 5 */
1581             b4 = tvb_get_guint8(tvb,offset);
1582             proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u  SSN %u",
1583                                 b3, b2, b1, b4);
1584             proto_item_append_text(actx->created_item, " - Point Code %u-%u-%u  SSN %u", b3, b2, b1, b4);
1585             break;
1586         default:
1587             break;
1588         }
1589         break;
1590     case 14:/* Internet Protocol (IP) Address. */
1591         break;
1592     default:
1593         proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
1594         break;
1595     }
1596
1597 }
1598 /* 6.5.3.13. Subaddress */
1599
1600 static const true_false_string ansi_map_Odd_Even_Ind_bool_val  = {
1601   "Odd",
1602   "Even"
1603 };
1604 /* Type of Subaddress (octet 1, bits E-G) */
1605 static const value_string ansi_map_sub_addr_type_vals[]  = {
1606     {   0, "NSAP (CCITT Rec. X.213 or ISO 8348 AD2)"},
1607     {   1, "User specified"},
1608     {   2, "Reserved"},
1609     {   3, "Reserved"},
1610     {   4, "Reserved"},
1611     {   5, "Reserved"},
1612     {   6, "Reserved"},
1613     {   7, "Reserved"},
1614     {   0, NULL }
1615 };
1616
1617 static void
1618 dissect_ansi_map_subaddress(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1619     int offset = 0;
1620
1621     proto_tree *subtree;
1622
1623
1624     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1625     /* Type of Subaddress (octet 1, bits E-G) */
1626     proto_tree_add_item(subtree, hf_ansi_map_subaddr_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1627     /* Odd/Even Indicator (O/E) (octet 1, bit D) */
1628     proto_tree_add_item(subtree, hf_ansi_map_subaddr_odd_even, tvb, offset, 1, ENC_BIG_ENDIAN);
1629
1630 }
1631 /*
1632  * 6.5.2.2 ActionCode
1633  * Table 114 ActionCode value
1634  *
1635  * 6.5.2.2 ActionCode(TIA/EIA-41.5-D, page 5-129) */
1636
1637 static const value_string ansi_map_ActionCode_vals[]  = {
1638     {   0, "Not used"},
1639     {   1, "Continue processing"},
1640     {   2, "Disconnect call"},
1641     {   3, "Disconnect call leg"},
1642     {   4, "Conference Calling Drop Last Party"},
1643     {   5, "Bridge call leg(s) to conference call"},
1644     {   6, "Drop call leg on busy or routing failure"},
1645     {   7, "Disconnect all call legs"},
1646     {   8, "Attach MSC to OTAF"},
1647     {   9, "Initiate RegistrationNotification"},
1648     {  10, "Generate Public Encryption values"},
1649     {  11, "Generate A-key"},
1650     {  12, "Perform SSD Update procedure"},
1651     {  13, "Perform Re-authentication procedure"},
1652     {  14, "Release TRN"},
1653     {  15, "Commit A-key"},
1654     {  16, "Release Resources (e.g., A-key, Traffic Channel)"},
1655     {  17, "Record NEWMSID"},
1656     {  18, "Allocate Resources (e.g., Multiple message traffic channel delivery)."},
1657     {  19, "Generate Authentication Signature"},
1658     {  20, "Release leg and redirect subscriber"},
1659     {  21, "Do Not Wait For MS User Level Response"},
1660     {  22, "Prepare for CDMA Handset-Based Position Determination"},
1661     {  23, "CDMA Handset-Based Position Determination Complete"},
1662     {   0, NULL }
1663 };
1664 static value_string_ext ansi_map_ActionCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_ActionCode_vals);
1665
1666 /* 6.5.2.3 AlertCode */
1667
1668 /* Pitch (octet 1, bits G-H) */
1669 static const value_string ansi_map_AlertCode_Pitch_vals[]  = {
1670     {   0, "Medium pitch"},
1671     {   1, "High pitch"},
1672     {   2, "Low pitch"},
1673     {   3, "Reserved"},
1674     {   0, NULL }
1675 };
1676 /* Cadence (octet 1, bits A-F) */
1677 static const value_string ansi_map_AlertCode_Cadence_vals[]  = {
1678     {   0, "NoTone"},
1679     {   1, "Long"},
1680     {   2, "ShortShort"},
1681     {   3, "ShortShortLong"},
1682     {   4, "ShortShort2"},
1683     {   5, "ShortLongShort"},
1684     {   6, "ShortShortShortShort"},
1685     {   7, "PBXLong"},
1686     {   8, "PBXShortShort"},
1687     {   9, "PBXShortShortLong"},
1688
1689     {  10, "PBXShortLongShort"},
1690     {  11, "PBXShortShortShortShort"},
1691     {  12, "PipPipPipPip"},
1692     {  13, "Reserved. Treat the same as value 0, NoTone"},
1693     {  14, "Reserved. Treat the same as value 0, NoTone"},
1694     {  15, "Reserved. Treat the same as value 0, NoTone"},
1695     {  16, "Reserved. Treat the same as value 0, NoTone"},
1696     {  17, "Reserved. Treat the same as value 0, NoTone"},
1697     {  18, "Reserved. Treat the same as value 0, NoTone"},
1698     {  19, "Reserved. Treat the same as value 0, NoTone"},
1699     {   0, NULL }
1700 };
1701
1702 /* Alert Action (octet 2, bits A-C) */
1703 static const value_string ansi_map_AlertCode_Alert_Action_vals[]  = {
1704     {   0, "Alert without waiting to report"},
1705     {   1, "Apply a reminder alert once"},
1706     {   2, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1707     {   3, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1708     {   4, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1709     {   5, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1710     {   6, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1711     {   7, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1712     {   0, NULL }
1713 };
1714 static void
1715 dissect_ansi_map_alertcode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1716
1717     int offset = 0;
1718
1719     proto_tree *subtree;
1720
1721
1722     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1723     /* Pitch (octet 1, bits G-H) */
1724     proto_tree_add_item(subtree, hf_ansi_alertcode_pitch, tvb, offset, 1, ENC_BIG_ENDIAN);
1725     /* Cadence (octet 1, bits A-F) */
1726     proto_tree_add_item(subtree, hf_ansi_alertcode_cadence, tvb, offset, 1, ENC_BIG_ENDIAN);
1727     offset++;
1728
1729     /* Alert Action (octet 2, bits A-C) */
1730     proto_tree_add_item(subtree, hf_ansi_alertcode_alertaction, tvb, offset, 1, ENC_BIG_ENDIAN);
1731
1732 }
1733 /* 6.5.2.4 AlertResult */
1734 /* Result (octet 1) */
1735 static const value_string ansi_map_AlertResult_result_vals[]  = {
1736     {   0, "Not specified"},
1737     {   1, "Success"},
1738     {   2, "Failure"},
1739     {   3, "Denied"},
1740     {   4, "NotAttempted"},
1741     {   5, "NoPageResponse"},
1742     {   6, "Busy"},
1743     {   0, NULL }
1744 };
1745
1746 /* 6.5.2.5 AnnouncementCode Updatef from NS0018Re*/
1747 /* Tone (octet 1) */
1748 static const value_string ansi_map_AnnouncementCode_tone_vals[]  = {
1749     {   0, "DialTone"},
1750     {   1, "RingBack or AudibleAlerting"},
1751     {   2, "InterceptTone or MobileReorder"},
1752     {   3, "CongestionTone or ReorderTone"},
1753     {   4, "BusyTone"},
1754     {   5, "ConfirmationTone"},
1755     {   6, "AnswerTone"},
1756     {   7, "CallWaitingTone"},
1757     {   8, "OffHookTone"},
1758     {  17, "RecallDialTone"},
1759     {  18, "BargeInTone"},
1760     {  20, "PPCInsufficientTone"},
1761     {  21, "PPCWarningTone1"},
1762     {  22, "PPCWarningTone2"},
1763     {  23, "PPCWarningTone3"},
1764     {  24, "PPCDisconnectTone"},
1765     {  25, "PPCRedirectTone"},
1766     {  63, "TonesOff"},
1767     { 192, "PipTone"},
1768     { 193, "AbbreviatedIntercept"},
1769     { 194, "AbbreviatedCongestion"},
1770     { 195, "WarningTone"},
1771     { 196, "DenialToneBurst"},
1772     { 197, "DialToneBurst"},
1773     { 250, "IncomingAdditionalCallTone"},
1774     { 251, "PriorityAdditionalCallTone"},
1775     {   0, NULL }
1776 };
1777 /* Class (octet 2, bits A-D) */
1778 static const value_string ansi_map_AnnouncementCode_class_vals[]  = {
1779     {   0, "Concurrent"},
1780     {   1, "Sequential"},
1781     {   0, NULL }
1782 };
1783 /* Standard Announcement (octet 3) Updated with N.S0015 */
1784 static const value_string ansi_map_AnnouncementCode_std_ann_vals[]  = {
1785     {   0, "None"},
1786     {   1, "UnauthorizedUser"},
1787     {   2, "InvalidESN"},
1788     {   3, "UnauthorizedMobile"},
1789     {   4, "SuspendedOrigination"},
1790     {   5, "OriginationDenied"},
1791     {   6, "ServiceAreaDenial"},
1792     {  16, "PartialDial"},
1793     {  17, "Require1Plus"},
1794     {  18, "Require1PlusNPA"},
1795     {  19, "Require0Plus"},
1796     {  20, "Require0PlusNPA"},
1797     {  21, "Deny1Plus"},
1798     {  22, "Unsupported10plus"},
1799     {  23, "Deny10plus"},
1800     {  24, "Unsupported10XXX"},
1801     {  25, "Deny10XXX"},
1802     {  26, "Deny10XXXLocally"},
1803     {  27, "Require10Plus"},
1804     {  28, "RequireNPA"},
1805     {  29, "DenyTollOrigination"},
1806     {  30, "DenyInternationalOrigination"},
1807     {  31, "Deny0Minus"},
1808     {  48, "DenyNumber"},
1809     {  49, "AlternateOperatorServices"},
1810     {  64, "No Circuit or AllCircuitsBusy or FacilityProblem"},
1811     {  65, "Overload"},
1812     {  66, "InternalOfficeFailure"},
1813     {  67, "NoWinkReceived"},
1814     {  68, "InterofficeLinkFailure"},
1815     {  69, "Vacant"},
1816     {  70, "InvalidPrefix or InvalidAccessCode"},
1817     {  71, "OtherDialingIrregularity"},
1818     {  80, "VacantNumber or DisconnectedNumber"},
1819     {  81, "DenyTermination"},
1820     {  82, "SuspendedTermination"},
1821     {  83, "ChangedNumber"},
1822     {  84, "InaccessibleSubscriber"},
1823     {  85, "DenyIncomingTol"},
1824     {  86, "RoamerAccessScreening"},
1825     {  87, "RefuseCall"},
1826     {  88, "RedirectCall"},
1827     {  89, "NoPageResponse"},
1828     {  90, "NoAnswer"},
1829     {  96, "RoamerIntercept"},
1830     {  97, "GeneralInformation"},
1831     { 112, "UnrecognizedFeatureCode"},
1832     { 113, "UnauthorizedFeatureCode"},
1833     { 114, "RestrictedFeatureCode"},
1834     { 115, "InvalidModifierDigits"},
1835     { 116, "SuccessfulFeatureRegistration"},
1836     { 117, "SuccessfulFeatureDeRegistration"},
1837     { 118, "SuccessfulFeatureActivation"},
1838     { 119, "SuccessfulFeatureDeActivation"},
1839     { 120, "InvalidForwardToNumber"},
1840     { 121, "CourtesyCallWarning"},
1841     { 128, "EnterPINSendPrompt"},
1842     { 129, "EnterPINPrompt"},
1843     { 130, "ReEnterPINSendPrompt"},
1844     { 131, "ReEnterPINPrompt"},
1845     { 132, "EnterOldPINSendPrompt"},
1846     { 133, "EnterOldPINPrompt"},
1847     { 134, "EnterNewPINSendPrompt"},
1848     { 135, "EnterNewPINPrompt"},
1849     { 136, "ReEnterNewPINSendPrompt"},
1850     { 137, "ReEnterNewPINPrompt"},
1851     { 138, "EnterPasswordPrompt"},
1852     { 139, "EnterDirectoryNumberPrompt"},
1853     { 140, "ReEnterDirectoryNumberPrompt"},
1854     { 141, "EnterFeatureCodePrompt"},
1855     { 142, "EnterEnterCreditCardNumberPrompt"},
1856     { 143, "EnterDestinationNumberPrompt"},
1857     { 152, "PPCInsufficientAccountBalance"},
1858     { 153, "PPCFiveMinuteWarning"},
1859     { 154, "PPCThreeMinuteWarning"},
1860     { 155, "PPCTwoMinuteWarning"},
1861     { 156, "PPCOneMinuteWarning"},
1862     { 157, "PPCDisconnect"},
1863     { 158, "PPCRedirect"},
1864     {   0, NULL }
1865 };
1866
1867
1868
1869 static void
1870 dissect_ansi_map_announcementcode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1871
1872     int offset = 0;
1873
1874     proto_tree *subtree;
1875
1876
1877     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1878
1879     /* Tone (octet 1) */
1880     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_tone, tvb, offset, 1, ENC_BIG_ENDIAN);
1881     offset++;
1882     /* Class (octet 2, bits A-D) */
1883     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_class, tvb, offset, 1, ENC_BIG_ENDIAN);
1884     offset++;
1885     /* Standard Announcement (octet 3) */
1886     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_std_ann, tvb, offset, 1, ENC_BIG_ENDIAN);
1887     offset++;
1888     /* Custom Announcement ( octet 4 )
1889        e.       The assignment of this octet is left to bilateral agreement. When a Custom
1890        Announcement is specified it takes precedence over either the Standard
1891        Announcement or Tone
1892     */
1893     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_cust_ann, tvb, offset, 1, ENC_BIG_ENDIAN);
1894
1895 }
1896 /* 6.5.2.8 AuthenticationCapability Updated N.S0003*/
1897 static const value_string ansi_map_AuthenticationCapability_vals[]  = {
1898     {   0, "Not used"},
1899     {   1, "No authentication required"},
1900     {   2, "Authentication required"},
1901     { 128, "Authentication required and UIM capable."},
1902     {   0, NULL }
1903 };
1904
1905 /* 6.5.2.14 AuthorizationPeriod*/
1906
1907 /* Period (octet 1) */
1908 static const value_string ansi_map_authorizationperiod_period_vals[]  = {
1909     {   0, "Not used"},
1910     {   1, "Per Call"},
1911     {   2, "Hours"},
1912     {   3, "Days"},
1913     {   4, "Weeks"},
1914     {   5, "Per Agreement"},
1915     {   6, "Indefinite (i.e., authorized until canceled or deregistered)"},
1916     {   7, "Number of calls. Re-authorization should be attempted after this number of (rejected) call attempts"},
1917     {   0, NULL }
1918 };
1919 /* Value (octet 2)
1920 Number of minutes hours, days, weeks, or
1921 number of calls (as per Period). If Period
1922 indicates anything else the Value is set to zero
1923 on sending and ignored on receipt.
1924 */
1925 static void
1926 dissect_ansi_map_authorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1927
1928     int offset = 0;
1929
1930     proto_tree *subtree;
1931
1932
1933     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1934     proto_tree_add_item(subtree, hf_ansi_map_authorizationperiod_period, tvb, offset, 1, ENC_BIG_ENDIAN);
1935     offset++;
1936     proto_tree_add_item(subtree, hf_ansi_map_value, tvb, offset, 1, ENC_BIG_ENDIAN);
1937
1938 }
1939 /* 6.5.2.15 AvailabilityType */
1940 static const value_string ansi_map_AvailabilityType_vals[]  = {
1941     {   0, "Not used"},
1942     {   1, "Unspecified MS inactivity type"},
1943     {   0, NULL }
1944 };
1945
1946 /* 6.5.2.16 BillingID */
1947 static void
1948 dissect_ansi_map_billingid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1949
1950     int offset = 0;
1951
1952     proto_tree *subtree;
1953
1954
1955     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1956
1957     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, ENC_BIG_ENDIAN);
1958     offset = offset + 2;
1959     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, ENC_BIG_ENDIAN);
1960     offset++;
1961     /* ID Number */
1962     proto_tree_add_item(subtree, hf_ansi_map_idno, tvb, offset, 3, ENC_BIG_ENDIAN);
1963     offset = offset + 3;
1964     proto_tree_add_item(subtree, hf_ansi_map_segcount, tvb, offset, 1, ENC_BIG_ENDIAN);
1965
1966 }
1967
1968
1969 /* 6.5.2.20 CallingFeaturesIndicator */
1970 static const value_string ansi_map_FeatureActivity_vals[]  = {
1971     {   0, "Not used"},
1972     {   1, "Not authorized"},
1973     {   2, "Authorized but de-activated"},
1974     {   3, "Authorized and activated"},
1975     {   0, NULL }
1976 };
1977
1978
1979 static void
1980 dissect_ansi_map_callingfeaturesindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1981     int offset = 0;
1982     int length;
1983
1984     proto_tree *subtree;
1985
1986     length = tvb_length_remaining(tvb,offset);
1987
1988     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1989
1990     /* Call Waiting: FeatureActivity, CW-FA (Octet 1 bits GH )          */
1991     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cwfa, tvb, offset, 1, ENC_BIG_ENDIAN);
1992     /* Call Forwarding No Answer FeatureActivity, CFNA-FA (Octet 1 bits EF )    */
1993     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfnafa, tvb, offset, 1, ENC_BIG_ENDIAN);
1994     /* Call Forwarding Busy FeatureActivity, CFB-FA (Octet 1 bits CD )  */
1995     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfbfa, tvb, offset, 1, ENC_BIG_ENDIAN);
1996     /* Call Forwarding Unconditional FeatureActivity, CFU-FA (Octet 1 bits AB ) */
1997     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfufa, tvb, offset, 1, ENC_BIG_ENDIAN);
1998     offset++;
1999     length--;
2000
2001     /* Call Transfer: FeatureActivity, CT-FA (Octet 2 bits GH )         */
2002     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ctfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2003     /* Voice Privacy FeatureActivity, VP-FA (Octet 2 bits EF )  */
2004     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_vpfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2005     /* Call Delivery: FeatureActivity (not interpreted on reception by IS-41-C or later)
2006        CD-FA (Octet 2 bits CD )         */
2007     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cdfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2008     /* Three-Way Calling FeatureActivity, 3WC-FA (Octet 2 bits AB )     */
2009     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_3wcfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2010     offset++;
2011     length--;
2012
2013
2014     /* Calling Number Identification Restriction Override FeatureActivity CNIROver-FA (Octet 3 bits GH )        */
2015     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cniroverfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2016     /* Calling Number Identification Restriction: FeatureActivity CNIR-FA (Octet 3 bits EF )    */
2017     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnirfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2018     /* Calling Number Identification Presentation: FeatureActivity CNIP2-FA (Octet 3 bits CD )  */
2019     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnip2fa, tvb, offset, 1, ENC_BIG_ENDIAN);
2020     /* Calling Number Identification Presentation: FeatureActivity CNIP1-FA (Octet 3 bits AB )  */
2021     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnip1fa, tvb, offset, 1, ENC_BIG_ENDIAN);
2022     length--;
2023     if ( length == 0)
2024         return;
2025     offset++;
2026
2027     /* USCF divert to voice mail: FeatureActivity USCFvm-FA (Octet 4 bits GH )  */
2028     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfvmfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2029     /* Answer Hold: FeatureActivity AH-FA (Octet 4 bits EF ) N.S0029-0 v1.0     */
2030     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ahfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2031     /* Data Privacy Feature Activity DP-FA (Octet 4 bits CD ) N.S0008-0 v 1.0   */
2032     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_dpfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2033     /* Priority Call Waiting FeatureActivity PCW-FA (Octet 4 bits AB )  */
2034     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_pcwfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2035     length--;
2036     if ( length == 0)
2037         return;
2038     offset++;
2039
2040     /* USCF divert to mobile station provided DN:FeatureActivity.USCFms-FA (Octet 5 bits AB ) */
2041     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfmsfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2042     /* USCF divert to network registered DN:FeatureActivity. USCFnr-FA (Octet 5 bits CD )*/
2043     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfnrfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2044     /* CDMA-Packet Data Service: FeatureActivity. CPDS-FA (Octet 5 bits EF ) N.S0029-0 v1.0*/
2045     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cpdsfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2046     /* CDMA-Concurrent Service:FeatureActivity. CCS-FA (Octet 5 bits GH ) N.S0029-0 v1.0*/
2047     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ccsfa, tvb, offset, 1, ENC_BIG_ENDIAN);
2048     length--;
2049     if ( length == 0)
2050         return;
2051     offset++;
2052
2053     /* TDMA Enhanced Privacy and Encryption:FeatureActivity.TDMA EPE-FA (Octet 6 bits AB ) N.S0029-0 v1.0*/
2054     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_epefa, tvb, offset, 1, ENC_BIG_ENDIAN);
2055 }
2056
2057
2058 /* 6.5.2.27 CancellationType */
2059 static const value_string ansi_map_CancellationType_vals[]  = {
2060     {   0, "Not used"},
2061     {   1, "ServingSystemOption"},
2062     {   2, "ReportInCall."},
2063     {   3, "Discontinue"},
2064     {   0, NULL }
2065 };
2066
2067 /* 6.5.2.29 CDMACallMode Updated with N.S0029-0 v1.0*/
2068 /* Call Mode (octet 1, bit A) */
2069 static const true_false_string ansi_map_CDMACallMode_cdma_bool_val  = {
2070   "CDMA 800 MHz channel (Band Class 0) acceptable.",
2071   "CDMA 800 MHz channel (Band Class 0) not acceptable"
2072 };
2073 /* Call Mode (octet 1, bit B) */
2074 static const true_false_string ansi_map_CallMode_amps_bool_val  = {
2075     "AAMPS 800 MHz channel acceptable",
2076     "AMPS 800 MHz channel not acceptable"
2077 };
2078 /* Call Mode (octet 1, bit C) */
2079 static const true_false_string ansi_map_CallMode_namps_bool_val  = {
2080     "NAMPS 800 MHz channel acceptable",
2081     "NAMPS 800 MHz channel not acceptable"
2082 };
2083 /* Call Mode (octet 1, bit D) */
2084 static const true_false_string ansi_map_CDMACallMode_cls1_bool_val  = {
2085     "CDMA 1900 MHz channel (Band Class 1) acceptable.",
2086     "CDMA 1900 MHz channel (Band Class 1) not acceptable"
2087 };
2088 /* Call Mode (octet 1, bit E) */
2089 static const true_false_string ansi_map_CDMACallMode_cls2_bool_val  = {
2090     "TACS channel (Band Class 2) acceptable",
2091     "TACS channel (Band Class 2) not acceptable"
2092 };
2093 /* Call Mode (octet 1, bit F) */
2094 static const true_false_string ansi_map_CDMACallMode_cls3_bool_val  = {
2095     "JTACS channel (Band Class 3) acceptable",
2096     "JTACS channel (Band Class 3) not acceptable"
2097 };
2098 /* Call Mode (octet 1, bit G) */
2099 static const true_false_string ansi_map_CDMACallMode_cls4_bool_val  = {
2100     "Korean PCS channel (Band Class 4) acceptable",
2101     "Korean PCS channel (Band Class 4) not acceptable"
2102 };
2103 /* Call Mode (octet 1, bit H) */
2104 static const true_false_string ansi_map_CDMACallMode_cls5_bool_val  = {
2105     "450 MHz channel (Band Class 5) not acceptable",
2106     "450 MHz channel (Band Class 5) not acceptable"
2107 };
2108 /* Call Mode (octet 2, bit A) */
2109 static const true_false_string ansi_map_CDMACallMode_cls6_bool_val  = {
2110     "2 GHz channel (Band Class 6) acceptable.",
2111     "2 GHz channel (Band Class 6) not acceptable."
2112 };
2113
2114 /* Call Mode (octet 2, bit B) */
2115 static const true_false_string ansi_map_CDMACallMode_cls7_bool_val  = {
2116     "700 MHz channel (Band Class 7) acceptable",
2117     "700 MHz channel (Band Class 7) not acceptable"
2118 };
2119
2120 /* Call Mode (octet 2, bit C) */
2121 static const true_false_string ansi_map_CDMACallMode_cls8_bool_val  = {
2122     "1800 MHz channel (Band Class 8) acceptable",
2123     "1800 MHz channel (Band Class 8) not acceptable"
2124 };
2125 /* Call Mode (octet 2, bit D) */
2126 static const true_false_string ansi_map_CDMACallMode_cls9_bool_val  = {
2127     "900 MHz channel (Band Class 9) acceptable",
2128     "900 MHz channel (Band Class 9) not acceptable"
2129 };
2130 /* Call Mode (octet 2, bit E) */
2131 static const true_false_string ansi_map_CDMACallMode_cls10_bool_val  = {
2132     "Secondary 800 MHz channel (Band Class 10) acceptable.",
2133     "Secondary 800 MHz channel (Band Class 10) not acceptable."
2134 };
2135
2136 static void
2137 dissect_ansi_map_cdmacallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2138     int offset = 0;
2139     int length;
2140
2141     proto_tree *subtree;
2142
2143     length = tvb_length_remaining(tvb,offset);
2144
2145
2146     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2147     /* Call Mode (octet 1, bit H) */
2148     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls5, tvb, offset, 1, ENC_BIG_ENDIAN);
2149     /* Call Mode (octet 1, bit G) */
2150     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls4, tvb, offset, 1, ENC_BIG_ENDIAN);
2151     /* Call Mode (octet 1, bit F) */
2152     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls3, tvb, offset, 1, ENC_BIG_ENDIAN);
2153     /* Call Mode (octet 1, bit E) */
2154     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls2, tvb, offset, 1, ENC_BIG_ENDIAN);
2155     /* Call Mode (octet 1, bit D) */
2156     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls1, tvb, offset, 1, ENC_BIG_ENDIAN);
2157     /* Call Mode (octet 1, bit C) */
2158     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_namps, tvb, offset, 1, ENC_BIG_ENDIAN);
2159     /* Call Mode (octet 1, bit B) */
2160     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_amps, tvb, offset, 1, ENC_BIG_ENDIAN);
2161     /* Call Mode (octet 1, bit A) */
2162     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cdma, tvb, offset, 1, ENC_BIG_ENDIAN);
2163
2164     length--;
2165     if ( length == 0)
2166         return;
2167     offset++;
2168
2169     /* Call Mode (octet 2, bit E) */
2170     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls10, tvb, offset, 1, ENC_BIG_ENDIAN);
2171     /* Call Mode (octet 2, bit D) */
2172     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls9, tvb, offset, 1, ENC_BIG_ENDIAN);
2173     /* Call Mode (octet 2, bit C) */
2174     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls8, tvb, offset, 1, ENC_BIG_ENDIAN);
2175     /* Call Mode (octet 2, bit B) */
2176     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls7, tvb, offset, 1, ENC_BIG_ENDIAN);
2177     /* Call Mode (octet 2, bit A) */
2178     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls6, tvb, offset, 1, ENC_BIG_ENDIAN);
2179
2180 }
2181 /* 6.5.2.30 CDMAChannelData */
2182 /* Updated with N.S0010-0 v 1.0 */
2183
2184 static const value_string ansi_map_cdmachanneldata_band_cls_vals[]  = {
2185     {   0, "800 MHz Cellular System"},
2186     {   0, NULL }
2187 };
2188
2189 static void
2190 dissect_ansi_map_cdmachanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2191
2192     int offset = 0;
2193     int length;
2194
2195     proto_tree *subtree;
2196
2197     length = tvb_length_remaining(tvb,offset);
2198
2199
2200     subtree = proto_item_add_subtree(actx->created_item, ett_cdmachanneldata);
2201
2202     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, ENC_BIG_ENDIAN);
2203     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_Frame_Offset, tvb, offset, 1, ENC_BIG_ENDIAN);
2204     /* CDMA Channel Number */
2205     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_CDMA_ch_no, tvb, offset, 2, ENC_BIG_ENDIAN);
2206     offset = offset + 2;
2207     length = length -2;
2208     /* Band Class */
2209     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, ENC_BIG_ENDIAN);
2210     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_band_cls, tvb, offset, 1, ENC_BIG_ENDIAN);
2211     /* Long Code Mask */
2212     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b6, tvb, offset, 1, ENC_BIG_ENDIAN);
2213     offset++;
2214     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b5, tvb, offset, 1, ENC_BIG_ENDIAN);
2215     offset++;
2216     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b4, tvb, offset, 1, ENC_BIG_ENDIAN);
2217     offset++;
2218     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b3, tvb, offset, 1, ENC_BIG_ENDIAN);
2219     offset++;
2220     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b2, tvb, offset, 1, ENC_BIG_ENDIAN);
2221     offset++;
2222     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b1, tvb, offset, 1, ENC_BIG_ENDIAN);
2223     length = length - 6;
2224     if (length == 0)
2225         return;
2226     offset++;
2227     /* NP_EXT */
2228     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_np_ext, tvb, offset, 1, ENC_BIG_ENDIAN);
2229     /* Nominal Power */
2230     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_nominal_pwr, tvb, offset, 1, ENC_BIG_ENDIAN);
2231     /* Number Preamble */
2232     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_nr_preamble, tvb, offset, 1, ENC_BIG_ENDIAN);
2233
2234 }
2235 /* 6.5.2.31 CDMACodeChannel */
2236
2237 /* 6.5.2.41 CDMAStationClassMark */
2238 /* Power Class: (PC) (octet 1, bits A and B) */
2239 static const value_string ansi_map_CDMAStationClassMark_pc_vals[]  = {
2240     {   0, "Class I"},
2241     {   1, "Class II"},
2242     {   2, "Class III"},
2243     {   3, "Reserved"},
2244     {   0, NULL }
2245 };
2246 /* Analog Transmission: (DTX) (octet 1, bit C) */
2247 static const true_false_string ansi_map_CDMAStationClassMark_dtx_bool_val  = {
2248     "Discontinuous",
2249     "Continuous"
2250 };
2251 /* Slotted Mode Indicator: (SMI) (octet 1, bit F) */
2252 static const true_false_string ansi_map_CDMAStationClassMark_smi_bool_val  = {
2253     "Slotted capable",
2254     "Slotted incapable"
2255 };
2256 /* Dual-mode Indicator(DMI) (octet 1, bit G) */
2257 static const true_false_string ansi_map_CDMAStationClassMark_dmi_bool_val  = {
2258     "Dual-mode CDMA",
2259     "CDMA only"
2260 };
2261
2262
2263 static void
2264 dissect_ansi_map_cdmastationclassmark(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2265     int offset = 0;
2266
2267     proto_tree *subtree;
2268
2269
2270     subtree = proto_item_add_subtree(actx->created_item, ett_cdmastationclassmark);
2271
2272     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, ENC_BIG_ENDIAN);
2273     /* Dual-mode Indicator(DMI) (octet 1, bit G) */
2274     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_dmi, tvb, offset, 1, ENC_BIG_ENDIAN);
2275     /* Slotted Mode Indicator: (SMI) (octet 1, bit F) */
2276     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_smi, tvb, offset, 1, ENC_BIG_ENDIAN);
2277     proto_tree_add_item(subtree, hf_ansi_map_reservedBitED, tvb, offset, 1, ENC_BIG_ENDIAN);
2278     /* Analog Transmission: (DTX) (octet 1, bit C) */
2279     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_dtx, tvb, offset, 1, ENC_BIG_ENDIAN);
2280     /* Power Class: (PC) (octet 1, bits A and B) */
2281     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_pc, tvb, offset, 1, ENC_BIG_ENDIAN);
2282 }
2283 /* 6.5.2.47 ChannelData */
2284 /* Discontinuous Transmission Mode (DTX) (octet 1, bits E and D) */
2285 static const value_string ansi_map_ChannelData_dtx_vals[]  = {
2286     {   0, "DTX disabled"},
2287     {   1, "Reserved. Treat the same as value 00, DTX disabled."},
2288     {   2, "DTX-low mode"},
2289     {   3, "DTX mode active or acceptable"},
2290     {   0, NULL }
2291 };
2292
2293
2294 static void
2295 dissect_ansi_map_channeldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2296     int offset = 0;
2297
2298     proto_tree *subtree;
2299
2300
2301     subtree = proto_item_add_subtree(actx->created_item, ett_channeldata);
2302
2303     /* SAT Color Code (SCC) (octet 1, bits H and G) */
2304     proto_tree_add_item(subtree, hf_ansi_map_channeldata_scc, tvb, offset, 1, ENC_BIG_ENDIAN);
2305     /* Discontinuous Transmission Mode (DTX) (octet 1, bits E and D) */
2306     proto_tree_add_item(subtree, hf_ansi_map_channeldata_dtx, tvb, offset, 1, ENC_BIG_ENDIAN);
2307     /* Voice Mobile Attenuation Code (VMAC) (octet 1, bits A - C)*/
2308     proto_tree_add_item(subtree, hf_ansi_map_channeldata_vmac, tvb, offset, 1, ENC_BIG_ENDIAN);
2309
2310     offset++;
2311     /* Channel Number (CHNO) ( octet 2 and 3 ) */
2312     proto_tree_add_item(subtree, hf_ansi_map_channeldata_chno, tvb, offset, 2, ENC_BIG_ENDIAN);
2313
2314 }
2315
2316 /* 6.5.2.50 ConfidentialityModes */
2317 /* Updated with N.S0008-0 v 1.0*/
2318 /* Voice Privacy (VP) Confidentiality Status (octet 1, bit A) */
2319
2320 static const true_false_string ansi_map_ConfidentialityModes_bool_val  = {
2321     "On",
2322     "Off"
2323 };
2324 static void
2325 dissect_ansi_map_confidentialitymodes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2326     int offset = 0;
2327
2328     proto_tree *subtree;
2329
2330
2331     subtree = proto_item_add_subtree(actx->created_item, ett_confidentialitymodes);
2332
2333     /* DataPrivacy (DP) Confidentiality Status (octet 1, bit C) */
2334     proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_dp, tvb, offset, 1, ENC_BIG_ENDIAN);
2335     /* Signaling Message Encryption (SE) Confidentiality Status (octet 1, bit B) */
2336     proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_se, tvb, offset, 1, ENC_BIG_ENDIAN);
2337     /* Voice Privacy (VP) Confidentiality Status (octet 1, bit A) */
2338     proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_vp, tvb, offset, 1, ENC_BIG_ENDIAN);
2339
2340 }
2341
2342 /* 6.5.2.51 ControlChannelData */
2343
2344 /* Digital Color Code (DCC) (octet 1, bit H and G) */
2345 /* Control Mobile Attenuation Code (CMAC) (octet 1, bit A - C) */
2346 /* Channel Number (CHNO) ( octet 2 and 3 ) */
2347 /* Supplementary Digital Color Codes (SDCC1 and SDCC2) */
2348 /* SDCC1 ( octet 4, bit D and C )*/
2349 /* SDCC2 ( octet 4, bit A and B )*/
2350
2351 static void
2352 dissect_ansi_map_controlchanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2353     int offset = 0;
2354
2355     proto_tree *subtree;
2356
2357
2358     subtree = proto_item_add_subtree(actx->created_item, ett_controlchanneldata);
2359
2360     /* Digital Color Code (DCC) (octet 1, bit H and G) */
2361     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_dcc, tvb, offset, 1, ENC_BIG_ENDIAN);
2362     proto_tree_add_item(subtree, hf_ansi_map_reservedBitFED, tvb, offset, 1, ENC_BIG_ENDIAN);
2363     /* Control Mobile Attenuation Code (CMAC) (octet 1, bit A - C) */
2364     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_cmac, tvb, offset, 1, ENC_BIG_ENDIAN);
2365     offset++;
2366     /* Channel Number (CHNO) ( octet 2 and 3 ) */
2367     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_chno, tvb, offset, 2, ENC_BIG_ENDIAN);
2368     /* Supplementary Digital Color Codes (SDCC1 and SDCC2) */
2369     offset = offset +2;
2370     /* SDCC1 ( octet 4, bit D and C )*/
2371     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_sdcc1, tvb, offset, 1, ENC_BIG_ENDIAN);
2372     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHGFE, tvb, offset, 1, ENC_BIG_ENDIAN);
2373     /* SDCC2 ( octet 4, bit A and B )*/
2374     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_sdcc2, tvb, offset, 1, ENC_BIG_ENDIAN);
2375
2376 }
2377
2378 /* 6.5.2.52 CountUpdateReport */
2379 static const value_string ansi_map_CountUpdateReport_vals[]  = {
2380     {   0, "Class I"},
2381     {   1, "Class II"},
2382     {   2, "Class III"},
2383     {   3, "Reserved"},
2384     {   0, NULL }
2385 };
2386
2387 /* 6.5.2.53 DeniedAuthorizationPeriod */
2388 /* Period (octet 1) */
2389 static const value_string ansi_map_deniedauthorizationperiod_period_vals[]  = {
2390     {   0, "Not used"},
2391     {   1, "Per Call. Re-authorization should be attempted on the next call attempt"},
2392     {   2, "Hours"},
2393     {   3, "Days"},
2394     {   4, "Weeks"},
2395     {   5, "Per Agreement"},
2396     {   6, "Reserved"},
2397     {   7, "Number of calls. Re-authorization should be attempted after this number of (rejected) call attempts"},
2398     {   8, "Minutes"},
2399     {   0, NULL }
2400 };
2401 /* Value (octet 2)
2402 Number of minutes hours, days, weeks, or
2403 number of calls (as per Period). If Period
2404 indicates anything else the Value is set to zero
2405 on sending and ignored on receipt.
2406 */
2407
2408 static void
2409 dissect_ansi_map_deniedauthorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2410
2411     int offset = 0;
2412
2413     proto_tree *subtree;
2414
2415
2416     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2417     proto_tree_add_item(subtree, hf_ansi_map_deniedauthorizationperiod_period, tvb, offset, 1, ENC_BIG_ENDIAN);
2418     offset++;
2419     proto_tree_add_item(subtree, hf_ansi_map_value, tvb, offset, 1, ENC_BIG_ENDIAN);
2420
2421 }
2422
2423
2424 /* 6.5.2.57 DigitCollectionControl */
2425 /* TODO Add decoding here */
2426
2427 /* 6.5.2.64 ExtendedMSCID */
2428 static const value_string ansi_map_msc_type_vals[]  = {
2429     {   0, "Not specified"},
2430     {   1, "Serving MSC"},
2431     {   2, "Home MSC"},
2432     {   3, "Gateway MSC"},
2433     {   4, "HLR"},
2434     {   5, "VLR"},
2435     {   6, "EIR (reserved)"},
2436     {   7, "AC"},
2437     {   8, "Border MSC"},
2438     {   9, "Originating MSC"},
2439     {   0, NULL }
2440 };
2441
2442 static void
2443 dissect_ansi_map_extendedmscid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2444
2445     int offset = 0;
2446
2447     proto_tree *subtree;
2448
2449
2450     subtree = proto_item_add_subtree(actx->created_item, ett_extendedmscid);
2451     /* Type (octet 1) */
2452     proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2453     offset++;
2454     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, ENC_BIG_ENDIAN);
2455     offset = offset + 2;
2456     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, ENC_BIG_ENDIAN);
2457
2458 }
2459 /* 6.5.2.65 ExtendedSystemMyTypeCode */
2460 static void
2461 dissect_ansi_map_extendedsystemmytypecode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx){
2462
2463     int offset = 0;
2464
2465     proto_tree *subtree;
2466
2467
2468     subtree = proto_item_add_subtree(actx->created_item, ett_extendedsystemmytypecode);
2469     /* Type (octet 1) */
2470     proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2471     offset++;
2472     offset = dissect_ansi_map_SystemMyTypeCode(TRUE, tvb, offset, actx, subtree, hf_ansi_map_systemMyTypeCode);
2473 }
2474
2475
2476 /* 6.5.2.68 GeographicAuthorization */
2477 /* Geographic Authorization (octet 1) */
2478 static const value_string ansi_map_GeographicAuthorization_vals[]  = {
2479     {   0, "Not used"},
2480     {   1, "Authorized for all MarketIDs served by the VLR"},
2481     {   2, "Authorized for this MarketID only"},
2482     {   3, "Authorized for this MarketID and Switch Number only"},
2483     {   4, "Authorized for this LocationAreaID within a MarketID only"},
2484     {   5, "VLR"},
2485     {   6, "EIR (reserved)"},
2486     {   7, "AC"},
2487     {   8, "Border MSC"},
2488     {   9, "Originating MSC"},
2489     {   0, NULL }
2490 };
2491
2492 /* 6.5.2.71 HandoffState */
2493 /* Party Involved (PI) (octet 1, bit A) */
2494 static const true_false_string ansi_map_HandoffState_pi_bool_val  = {
2495     "Terminator is handing off",
2496     "Originator is handing off"
2497 };
2498 static void
2499 dissect_ansi_map_handoffstate(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2500
2501     int offset = 0;
2502
2503     proto_tree *subtree;
2504
2505
2506     subtree = proto_item_add_subtree(actx->created_item, ett_handoffstate);
2507     /* Party Involved (PI) (octet 1, bit A) */
2508     proto_tree_add_item(subtree, hf_ansi_map_handoffstate_pi, tvb, offset, 1, ENC_BIG_ENDIAN);
2509 }
2510
2511 /* 6.5.2.72 InterMSCCircuitID */
2512 /* Trunk Member Number (M) Octet2 */
2513 static void
2514 dissect_ansi_map_intermsccircuitid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2515
2516     int offset = 0;
2517
2518     proto_tree *subtree;
2519     guint8 octet, octet2;
2520
2521
2522     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2523     /* Trunk Group Number (G) Octet 1 */
2524     octet = tvb_get_guint8(tvb,offset);
2525     proto_tree_add_item(subtree, hf_ansi_map_tgn, tvb, offset, 1, ENC_BIG_ENDIAN);
2526     offset++;
2527     /* Trunk Member Number (M) Octet2 */
2528     octet2 = tvb_get_guint8(tvb,offset);
2529     proto_tree_add_item(subtree, hf_ansi_map_tmn, tvb, offset, 1, ENC_BIG_ENDIAN);
2530     proto_item_append_text(actx->created_item, " (G %u/M %u)", octet, octet2);
2531 }
2532
2533 /* 6.5.2.78 MessageWaitingNotificationCount */
2534 /* Type of messages (octet 1) */
2535 static const value_string ansi_map_MessageWaitingNotificationCount_type_vals[]  = {
2536     {   0, "Voice messages"},
2537     {   1, "Short Message Services (SMS) messages"},
2538     {   2, "Group 3 (G3) Fax messages"},
2539     {   0, NULL }
2540 };
2541
2542 static void
2543 dissect_ansi_map_messagewaitingnotificationcount(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2544
2545     int offset = 0;
2546
2547     proto_tree *subtree;
2548
2549
2550     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2551     /* Type of messages (octet 1) */
2552     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationcount_tom, tvb, offset, 1, ENC_BIG_ENDIAN);
2553     offset++;
2554     /* Number of Messages Waiting (octet 2) */
2555     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationcount_no_mw, tvb, offset, 1, ENC_BIG_ENDIAN);
2556
2557 }
2558
2559 /* 6.5.2.79 MessageWaitingNotificationType */
2560 /* Pip Tone (PT) (octet 1, bit A) */
2561 static const true_false_string ansi_map_MessageWaitingNotificationType_pt_bool_val  = {
2562     "Pip Tone (PT) notification is required",
2563     "Pip Tone (PT) notification is not authorized or no notification is required"
2564 };
2565 /* Alert Pip Tone (APT) (octet 1, bit B) */
2566 static const true_false_string ansi_map_MessageWaitingNotificationType_apt_bool_val  = {
2567     "Alert Pip Tone (APT) notification is required",
2568     "Alert Pip Tone (APT) notification is not authorized or notification is not required"
2569 };
2570 /* Message Waiting Indication (MWI) (octet 1, bits C and D) */
2571 static const value_string ansi_map_MessageWaitingNotificationType_mwi_vals[]  = {
2572     {   0, "No MWI. Message Waiting Indication (MWI) notification is not authorized or notification is not required"},
2573     {   1, "Reserved"},
2574     {   2, "MWI On. Message Waiting Indication (MWI) notification is required. Messages waiting"},
2575     {   3, "MWI Off. Message Waiting Indication (MWI) notification is required. No messages waiting"},
2576     {   0, NULL }
2577 };
2578
2579 static void
2580 dissect_ansi_map_messagewaitingnotificationtype(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2581
2582     int offset = 0;
2583
2584     proto_tree *subtree;
2585
2586
2587     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2588
2589     /* Message Waiting Indication (MWI) (octet 1, bits C and D) */
2590     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_mwi, tvb, offset, 1, ENC_BIG_ENDIAN);
2591     /* Alert Pip Tone (APT) (octet 1, bit B) */
2592     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_apt, tvb, offset, 1, ENC_BIG_ENDIAN);
2593     /* Pip Tone (PT) (octet 1, bit A) */
2594     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_pt, tvb, offset, 1, ENC_BIG_ENDIAN);
2595 }
2596
2597 /* 6.5.2.81 MobileIdentificationNumber */
2598
2599 /* 6.5.2.82 MSCID */
2600
2601 static void
2602 dissect_ansi_map_mscid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2603     int offset = 0;
2604
2605     proto_tree *subtree;
2606
2607
2608     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2609
2610     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, ENC_BIG_ENDIAN);
2611     offset = offset + 2;
2612     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, ENC_BIG_ENDIAN);
2613 }
2614
2615
2616 /* 6.5.2.84 MSLocation */
2617 static void
2618 dissect_ansi_map_mslocation(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2619     int offset = 0;
2620
2621     proto_tree *subtree;
2622
2623
2624     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2625
2626     /* Latitude in tenths of a second octet 1 - 3 */
2627     proto_tree_add_item(subtree, hf_ansi_map_mslocation_lat, tvb, offset, 3, ENC_BIG_ENDIAN);
2628     offset = offset + 3;
2629     /* Longitude in tenths of a second octet 4 - 6 */
2630     proto_tree_add_item(subtree, hf_ansi_map_mslocation_long, tvb, offset, 3, ENC_BIG_ENDIAN);
2631     offset = offset + 3;
2632     /* Resolution in units of 1 foot octet 7, octet 8 optional */
2633     proto_tree_add_item(subtree, hf_ansi_map_mslocation_res, tvb, offset, -1, ENC_BIG_ENDIAN);
2634
2635 }
2636 /* 6.5.2.85 NAMPSCallMode */
2637 static void
2638 dissect_ansi_map_nampscallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2639     int offset = 0;
2640     proto_tree *subtree;
2641
2642
2643     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2644
2645     /* Call Mode (octet 1, bits A and B) */
2646     proto_tree_add_item(subtree, hf_ansi_map_nampscallmode_amps, tvb, offset, 1, ENC_BIG_ENDIAN);
2647     proto_tree_add_item(subtree, hf_ansi_map_nampscallmode_namps, tvb, offset, 1, ENC_BIG_ENDIAN);
2648 }
2649
2650 /* 6.5.2.86 NAMPSChannelData */
2651 /* Narrow Analog Voice Channel Assignment (NAVCA) (octet 1, bits A and B) */
2652 static const value_string ansi_map_NAMPSChannelData_navca_vals[]  = {
2653     {   0, "Wide. 30 kHz AMPS voice channel"},
2654     {   1, "Upper. 10 kHz NAMPS voice channel"},
2655     {   2, "Middle. 10 kHz NAMPS voice channel"},
2656     {   3, "Lower. 10 kHz NAMPS voice channel"},
2657     {   0, NULL }
2658 };
2659 /* Color Code Indicator (CCIndicator) (octet 1, bits C, D, and E) */
2660 static const value_string ansi_map_NAMPSChannelData_ccinidicator_vals[]  = {
2661     {   0, "ChannelData parameter SCC field applies"},
2662     {   1, "Digital SAT Color Code 1 (ignore SCC field)"},
2663     {   2, "Digital SAT Color Code 2 (ignore SCC field)"},
2664     {   3, "Digital SAT Color Code 3 (ignore SCC field)"},
2665     {   4, "Digital SAT Color Code 4 (ignore SCC field)"},
2666     {   5, "Digital SAT Color Code 5 (ignore SCC field)"},
2667     {   6, "Digital SAT Color Code 6 (ignore SCC field)"},
2668     {   7, "Digital SAT Color Code 7 (ignore SCC field)"},
2669     {   0, NULL }
2670 };
2671
2672
2673
2674 static void
2675 dissect_ansi_map_nampschanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2676     int offset = 0;
2677     proto_tree *subtree;
2678
2679
2680     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2681
2682     /* Color Code Indicator (CCIndicator) (octet 1, bits C, D, and E) */
2683     proto_tree_add_item(subtree, hf_ansi_map_nampschanneldata_CCIndicator, tvb, offset, 1, ENC_BIG_ENDIAN);
2684     /* Narrow Analog Voice Channel Assignment (NAVCA) (octet 1, bits A and B) */
2685     proto_tree_add_item(subtree, hf_ansi_map_nampschanneldata_navca, tvb, offset, 1, ENC_BIG_ENDIAN);
2686
2687 }
2688
2689 /* 6.5.2.88 OneTimeFeatureIndicator */
2690 /* updated with N.S0012 */
2691 /* Call Waiting for Future Incoming Call (CWFI) (octet 1, bits A and B) */
2692 /* Call Waiting for Incoming Call (CWIC) (octet 1, bits C and D) */
2693
2694 static const value_string ansi_map_onetimefeatureindicator_cw_vals[]  = {
2695     {   0, "Ignore"},
2696     {   1, "No CW"},
2697     {   2, "Normal CW"},
2698     {   3, "Priority CW"},
2699     {   0, NULL }
2700 };
2701 /* MessageWaitingNotification (MWN) (octet 1, bits E and F) */
2702 static const value_string ansi_map_onetimefeatureindicator_mwn_vals[]  = {
2703     {   0, "Ignore"},
2704     {   1, "Pip Tone Inactive"},
2705     {   2, "Pip Tone Active"},
2706     {   3, "Reserved"},
2707     {   0, NULL }
2708 };
2709 /* Calling Number Identification Restriction (CNIR) (octet 1, bits G and H)*/
2710 static const value_string ansi_map_onetimefeatureindicator_cnir_vals[]  = {
2711     {   0, "Ignore"},
2712     {   1, "CNIR Inactive"},
2713     {   2, "CNIR Active"},
2714     {   3, "Reserved"},
2715     {   0, NULL }
2716 };
2717
2718 /* Priority Access and Channel Assignment (PACA) (octet 2, bits A and B)*/
2719 static const value_string ansi_map_onetimefeatureindicator_paca_vals[]  = {
2720     {   0, "Ignore"},
2721     {   1, "PACA Demand Inactive"},
2722     {   2, "PACA Demand Activated"},
2723     {   3, "Reserved"},
2724     {   0, NULL }
2725 };
2726
2727 /* Flash Privileges (Flash) (octet 2, bits C and D) */
2728 static const value_string ansi_map_onetimefeatureindicator_flash_vals[]  = {
2729     {   0, "Ignore"},
2730     {   1, "Flash Inactive"},
2731     {   2, "Flash Active"},
2732     {   3, "Reserved"},
2733     {   0, NULL }
2734 };
2735 /* Calling Name Restriction (CNAR) (octet 2, bits E and F) */
2736 static const value_string ansi_map_onetimefeatureindicator_cnar_vals[]  = {
2737     {   0, "Ignore"},
2738     {   1, "Presentation Allowed"},
2739     {   2, "Presentation Restricted."},
2740     {   3, "Blocking Toggle"},
2741     {   0, NULL }
2742 };
2743 static void
2744 dissect_ansi_map_onetimefeatureindicator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2745     int offset = 0;
2746     proto_tree *subtree;
2747
2748
2749     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2750
2751     /* Calling Number Identification Restriction (CNIR) (octet 1, bits G and H)*/
2752     /* MessageWaitingNotification (MWN) (octet 1, bits E and F) */
2753     /* Call Waiting for Incoming Call (CWIC) (octet 1, bits C and D) */
2754     /* Call Waiting for Future Incoming Call (CWFI) (octet 1, bits A and B) */
2755     offset++;
2756     /* Calling Name Restriction (CNAR) (octet 2, bits E and F) */
2757     /* Flash Privileges (Flash) (octet 2, bits C and D) */
2758     /* Priority Access and Channel Assignment (PACA) (octet 2, bits A and B)*/
2759
2760
2761 }
2762
2763 /* 6.5.2.90 OriginationTriggers */
2764 /* All Origination (All) (octet 1, bit A) */
2765 static const true_false_string ansi_map_originationtriggers_all_bool_val  = {
2766     "Launch an OriginationRequest for any call attempt. This overrides all other values",
2767     "Trigger is not active"
2768 };
2769
2770 /* Local (octet 1, bit B) */
2771 static const true_false_string ansi_map_originationtriggers_local_bool_val  = {
2772     "Launch an OriginationRequest for any local call attempt",
2773     "Trigger is not active"
2774 };
2775
2776 /* Intra-LATA Toll (ILATA) (octet 1, bit C) */
2777 static const true_false_string ansi_map_originationtriggers_ilata_bool_val  = {
2778     "Launch an OriginationRequest for any intra-LATA call attempt",
2779     "Trigger is not active"
2780 };
2781 /* Inter-LATA Toll (OLATA) (octet 1, bit D) */
2782 static const true_false_string ansi_map_originationtriggers_olata_bool_val  = {
2783     "Launch an OriginationRequest for any inter-LATA toll call attempt",
2784     "Trigger is not active"
2785 };
2786 /* International (Int'l ) (octet 1, bit E) */
2787 static const true_false_string ansi_map_originationtriggers_int_bool_val  = {
2788     "Launch an OriginationRequest for any international call attempt",
2789     "Trigger is not active"
2790 };
2791 /* World Zone (WZ) (octet 1, bit F) */
2792 static const true_false_string ansi_map_originationtriggers_wz_bool_val  = {
2793     "Launch an OriginationRequest for any call attempt outside of the current World Zone (as defined in ITU-T Rec. E.164)",
2794     "Trigger is not active"
2795 };
2796
2797 /* Unrecognized Number (Unrec) (octet 1, bit G) */
2798 static const true_false_string ansi_map_originationtriggers_unrec_bool_val  = {
2799     "Launch an OriginationRequest for any call attempt to an unrecognized number",
2800     "Trigger is not active"
2801 };
2802 /* Revertive Call (RvtC) (octet 1, bit H)*/
2803 static const true_false_string ansi_map_originationtriggers_rvtc_bool_val  = {
2804     "Launch an OriginationRequest for any Revertive Call attempt",
2805     "Trigger is not active"
2806 };
2807
2808 /* Star (octet 2, bit A) */
2809 static const true_false_string ansi_map_originationtriggers_star_bool_val  = {
2810     "Launch an OriginationRequest for any number beginning with a Star '*' digit",
2811     "Trigger is not active"
2812 };
2813
2814 /* Double Star (DS) (octet 2, bit B) */
2815 static const true_false_string ansi_map_originationtriggers_ds_bool_val  = {
2816     "Launch an OriginationRequest for any number beginning with two Star '**' digits",
2817     "Trigger is not active"
2818 };
2819 /* Pound (octet 2, bit C) */
2820 static const true_false_string ansi_map_originationtriggers_pound_bool_val  = {
2821     "Launch an OriginationRequest for any number beginning with a Pound '#' digit",
2822     "Trigger is not active"
2823 };
2824 /* Double Pound (DP) (octet 2, bit D) */
2825 static const true_false_string ansi_map_originationtriggers_dp_bool_val  = {
2826     "Launch an OriginationRequest for any number beginning with two Pound '##' digits",
2827     "Trigger is not active"
2828 };
2829 /* Prior Agreement (PA) (octet 2, bit E) */
2830 static const true_false_string ansi_map_originationtriggers_pa_bool_val  = {
2831     "Launch an OriginationRequest for any number matching a criteria of a prior agreement",
2832     "Trigger is not active"
2833 };
2834
2835 /* No digits (octet 3, bit A) */
2836 static const true_false_string ansi_map_originationtriggers_nodig_bool_val  = {
2837     "Launch an OriginationRequest for any call attempt with no digits",
2838     "Trigger is not active"
2839 };
2840
2841 /* 1 digit (octet 3, bit B) */
2842 static const true_false_string ansi_map_originationtriggers_onedig_bool_val  = {
2843     "Launch an OriginationRequest for any call attempt with 1 digit",
2844     "Trigger is not active"
2845 };
2846 /* 1 digit (octet 3, bit C) */
2847 static const true_false_string ansi_map_originationtriggers_twodig_bool_val  = {
2848     "Launch an OriginationRequest for any call attempt with 2 digits",
2849     "Trigger is not active"
2850 };
2851 /* 1 digit (octet 3, bit D) */
2852 static const true_false_string ansi_map_originationtriggers_threedig_bool_val  = {
2853     "Launch an OriginationRequest for any call attempt with 3 digits",
2854     "Trigger is not active"
2855 };
2856 /* 1 digit (octet 3, bit E) */
2857 static const true_false_string ansi_map_originationtriggers_fourdig_bool_val  = {
2858     "Launch an OriginationRequest for any call attempt with 4 digits",
2859     "Trigger is not active"
2860 };
2861 /* 1 digit (octet 3, bit F) */
2862 static const true_false_string ansi_map_originationtriggers_fivedig_bool_val  = {
2863     "Launch an OriginationRequest for any call attempt with 5 digits",
2864     "Trigger is not active"
2865 };
2866 /* 1 digit (octet 3, bit G) */
2867 static const true_false_string ansi_map_originationtriggers_sixdig_bool_val  = {
2868     "Launch an OriginationRequest for any call attempt with 6 digits",
2869     "Trigger is not active"
2870 };
2871 /* 1 digit (octet 3, bit H) */
2872 static const true_false_string ansi_map_originationtriggers_sevendig_bool_val  = {
2873     "Launch an OriginationRequest for any call attempt with 7 digits",
2874     "Trigger is not active"
2875 };
2876 /* 1 digit (octet 4, bit A) */
2877 static const true_false_string ansi_map_originationtriggers_eightdig_bool_val  = {
2878     "Launch an OriginationRequest for any call attempt with 8 digits",
2879     "Trigger is not active"
2880 };
2881 /* 1 digit (octet 4, bit B) */
2882 static const true_false_string ansi_map_originationtriggers_ninedig_bool_val  = {
2883     "Launch an OriginationRequest for any call attempt with 9 digits",
2884     "Trigger is not active"
2885 };
2886 /* 1 digit (octet 4, bit C) */
2887 static const true_false_string ansi_map_originationtriggers_tendig_bool_val  = {
2888     "Launch an OriginationRequest for any call attempt with 10 digits",
2889     "Trigger is not active"
2890 };
2891 /* 1 digit (octet 4, bit D) */
2892 static const true_false_string ansi_map_originationtriggers_elevendig_bool_val  = {
2893     "Launch an OriginationRequest for any call attempt with 11 digits",
2894     "Trigger is not active"
2895 };
2896 /* 1 digit (octet 4, bit E) */
2897 static const true_false_string ansi_map_originationtriggers_twelvedig_bool_val  = {
2898     "Launch an OriginationRequest for any call attempt with 12 digits",
2899     "Trigger is not active"
2900 };
2901 /* 1 digit (octet 4, bit F) */
2902 static const true_false_string ansi_map_originationtriggers_thirteendig_bool_val  = {
2903     "Launch an OriginationRequest for any call attempt with 13 digits",
2904     "Trigger is not active"
2905 };
2906 /* 1 digit (octet 4, bit G) */
2907 static const true_false_string ansi_map_originationtriggers_fourteendig_bool_val  = {
2908     "Launch an OriginationRequest for any call attempt with 14 digits",
2909     "Trigger is not active"
2910 };
2911 /* 1 digit (octet 4, bit H) */
2912 static const true_false_string ansi_map_originationtriggers_fifteendig_bool_val  = {
2913     "Launch an OriginationRequest for any call attempt with 15 digits",
2914     "Trigger is not active"
2915 };
2916
2917 static void
2918 dissect_ansi_map_originationtriggers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2919
2920     int offset = 0;
2921     proto_tree *subtree;
2922
2923
2924     subtree = proto_item_add_subtree(actx->created_item, ett_originationtriggers);
2925
2926     /* Revertive Call (RvtC) (octet 1, bit H)*/
2927     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_rvtc, tvb, offset,     1, ENC_BIG_ENDIAN);
2928     /* Unrecognized Number (Unrec) (octet 1, bit G) */
2929     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_unrec, tvb, offset,    1, ENC_BIG_ENDIAN);
2930     /* World Zone (WZ) (octet 1, bit F) */
2931     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_wz, tvb, offset,       1, ENC_BIG_ENDIAN);
2932     /* International (Int'l ) (octet 1, bit E) */
2933     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_int, tvb, offset,      1, ENC_BIG_ENDIAN);
2934     /* Inter-LATA Toll (OLATA) (octet 1, bit D) */
2935     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_olata, tvb, offset,    1, ENC_BIG_ENDIAN);
2936     /* Intra-LATA Toll (ILATA) (octet 1, bit C) */
2937     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ilata, tvb, offset,    1, ENC_BIG_ENDIAN);
2938     /* Local (octet 1, bit B) */
2939     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_local, tvb, offset,    1, ENC_BIG_ENDIAN);
2940     /* All Origination (All) (octet 1, bit A) */
2941     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_all, tvb, offset,      1, ENC_BIG_ENDIAN);
2942     offset++;
2943
2944     /*Prior Agreement (PA) (octet 2, bit E) */
2945     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_pa, tvb, offset,       1, ENC_BIG_ENDIAN);
2946     /* Double Pound (DP) (octet 2, bit D) */
2947     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_dp, tvb, offset,       1, ENC_BIG_ENDIAN);
2948     /* Pound (octet 2, bit C) */
2949     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_pound, tvb, offset,    1, ENC_BIG_ENDIAN);
2950     /* Double Star (DS) (octet 2, bit B) */
2951     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ds, tvb, offset,       1, ENC_BIG_ENDIAN);
2952     /* Star (octet 2, bit A) */
2953     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_star, tvb, offset,     1, ENC_BIG_ENDIAN);
2954     offset++;
2955
2956     /* 7 digit (octet 3, bit H) */
2957     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_sevendig, tvb, offset, 1, ENC_BIG_ENDIAN);
2958     /* 6 digit (octet 3, bit G) */
2959     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_sixdig, tvb, offset,   1, ENC_BIG_ENDIAN);
2960     /* 5 digit (octet 3, bit F) */
2961     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fivedig, tvb, offset,  1, ENC_BIG_ENDIAN);
2962     /* 4 digit (octet 3, bit E) */
2963     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fourdig, tvb, offset,  1, ENC_BIG_ENDIAN);
2964     /* 3 digit (octet 3, bit D) */
2965     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_threedig, tvb, offset, 1, ENC_BIG_ENDIAN);
2966     /* 2 digit (octet 3, bit C) */
2967     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_twodig, tvb, offset,   1, ENC_BIG_ENDIAN);
2968     /* 1 digit (octet 3, bit B) */
2969     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_onedig, tvb, offset,   1, ENC_BIG_ENDIAN);
2970     /* No digits (octet 3, bit A) */
2971     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_nodig, tvb, offset,    1, ENC_BIG_ENDIAN);
2972     offset++;
2973
2974     /* 15 digit (octet 4, bit H) */
2975     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fifteendig, tvb, offset,       1, ENC_BIG_ENDIAN);
2976     /* 14 digit (octet 4, bit G) */
2977     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fourteendig, tvb, offset,      1, ENC_BIG_ENDIAN);
2978     /* 13 digit (octet 4, bit F) */
2979     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_thirteendig, tvb, offset,      1, ENC_BIG_ENDIAN);
2980     /* 12 digit (octet 4, bit E) */
2981     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_twelvedig, tvb, offset,        1, ENC_BIG_ENDIAN);
2982     /* 11 digit (octet 4, bit D) */
2983     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_elevendig, tvb, offset,        1, ENC_BIG_ENDIAN);
2984     /* 10 digit (octet 4, bit C) */
2985     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_tendig, tvb, offset,   1, ENC_BIG_ENDIAN);
2986     /* 9 digit (octet 4, bit B) */
2987     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ninedig, tvb, offset,  1, ENC_BIG_ENDIAN);
2988     /* 8 digits (octet 4, bit A) */
2989     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_eightdig, tvb, offset, 1, ENC_BIG_ENDIAN);
2990
2991 }
2992
2993 /* 6.5.2.91 PACAIndicator */
2994
2995 /* Permanent Activation (PA) (octet 1, bit A) */
2996 static const true_false_string ansi_map_pacaindicator_pa_bool_val  = {
2997     "PACA is permanently activated",
2998     "PACA is not permanently activated"
2999 };
3000
3001 static const value_string ansi_map_PACA_Level_vals[]  = {
3002     {   0, "Not used"},
3003     {   1, "Priority Level. 1 This is the highest level"},
3004     {   2, "Priority Level 2"},
3005     {   3, "Priority Level 3"},
3006     {   4, "Priority Level 4"},
3007     {   5, "Priority Level 5"},
3008     {   6, "Priority Level 6"},
3009     {   7, "Priority Level 7"},
3010     {   8, "Priority Level 8"},
3011     {   9, "Priority Level 9"},
3012     {   10, "Priority Level 10"},
3013     {   11, "Priority Level 11"},
3014     {   12, "Priority Level 12"},
3015     {   13, "Priority Level 13"},
3016     {   14, "Priority Level 14"},
3017     {   15, "Priority Level 15"},
3018     {   0, NULL }
3019 };
3020
3021 static void
3022 dissect_ansi_map_pacaindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3023
3024     int offset = 0;
3025     proto_tree *subtree;
3026
3027
3028     subtree = proto_item_add_subtree(actx->created_item, ett_pacaindicator);
3029     /* PACA Level (octet 1, bits B-E) */
3030     proto_tree_add_item(subtree, hf_ansi_map_PACA_Level, tvb, offset,   1, ENC_BIG_ENDIAN);
3031     /* Permanent Activation (PA) (octet 1, bit A) */
3032     proto_tree_add_item(subtree, hf_ansi_map_pacaindicator_pa, tvb, offset,     1, ENC_BIG_ENDIAN);
3033 }
3034
3035 /* 6.5.2.92 PageIndicator */
3036 static const value_string ansi_map_PageIndicator_vals[]  = {
3037     {   0, "Not used"},
3038     {   1, "Page"},
3039     {   2, "Listen only"},
3040     {   0, NULL }
3041 };
3042
3043 /* 6.5.2.93 PC_SSN */
3044 static void
3045 dissect_ansi_map_pc_ssn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3046
3047     int offset = 0;
3048     proto_tree *subtree;
3049     guint8 b1,b2,b3,b4;
3050
3051
3052     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
3053     /* Type (octet 1) */
3054     proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, ENC_BIG_ENDIAN);
3055     offset++;
3056     /* Point Code Member Number octet 2 */
3057     b1 = tvb_get_guint8(tvb,offset);
3058     offset++;
3059     /* Point Code Cluster Number octet 3 */
3060     b2 = tvb_get_guint8(tvb,offset);
3061     offset++;
3062     /* Point Code Network Number octet 4 */
3063     b3 = tvb_get_guint8(tvb,offset);
3064     offset++;
3065     /* Subsystem Number (SSN) octet 5 */
3066     b4 = tvb_get_guint8(tvb,offset);
3067     proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u  SSN %u",
3068                         b3, b2, b1, b4);
3069
3070 }
3071 /* 6.5.2.94 PilotBillingID */
3072 static void
3073 dissect_ansi_map_pilotbillingid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3074
3075     int offset = 0;
3076     proto_tree *subtree;
3077
3078
3079     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
3080     /* First Originating MarketID octet 1 and 2 */
3081     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, ENC_BIG_ENDIAN);
3082     offset = offset + 2;
3083     /* First Originating Switch Number octet 3*/
3084     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, ENC_BIG_ENDIAN);
3085     offset++;
3086     /* ID Number */
3087     proto_tree_add_item(subtree, hf_ansi_map_idno, tvb, offset, 3, ENC_BIG_ENDIAN);
3088     offset = offset + 3;
3089     proto_tree_add_item(subtree, hf_ansi_map_segcount, tvb, offset, 1, ENC_BIG_ENDIAN);
3090
3091 }
3092 /* 6.5.2.96 PreferredLanguageIndicator */
3093 static const value_string ansi_map_PreferredLanguageIndicator_vals[]  = {
3094     {   0, "Unspecified"},
3095     {   1, "English"},
3096     {   2, "French"},
3097     {   3, "Spanish"},
3098     {   4, "German"},
3099     {   5, "Portuguese"},
3100     {   0, NULL }
3101 };
3102
3103 /* 6.5.2.106 ReceivedSignalQuality */
3104 /* a. This octet is encoded the same as octet 1 in the SignalQuality parameter (see
3105    6.5.2.121).
3106 */
3107 /* 6.5.2.118 SetupResult */
3108 static const value_string ansi_map_SetupResult_vals[]  = {
3109     {   0, "Not used"},
3110     {   1, "Unsuccessful"},
3111     {   2, "Successful"},
3112     {   0, NULL }
3113 };
3114 /* 6.5.2.121 SignalQuality */
3115 /* TODO */
3116
3117 /*      6.5.2.122 SMS_AccessDeniedReason (TIA/EIA-41.5-D, page 5-256)
3118         N.S0011-0 v 1.0
3119 */
3120 static const value_string ansi_map_SMS_AccessDeniedReason_vals[]  = {
3121     {   0, "Not used"},
3122     {   1, "Denied"},
3123     {   2, "Postponed"},
3124     {   3, "Unavailable"},
3125     {   4, "Invalid"},
3126     {   0, NULL }
3127 };
3128
3129
3130 /* 6.5.2.125 SMS_CauseCode (TIA/EIA-41.5-D, page 5-262)
3131    N.S0011-0 v 1.0
3132 */
3133 static const value_string ansi_map_SMS_CauseCode_vals[]  = {
3134     {   0, "Address vacant"},
3135     {   1, "Address translation failure"},
3136     {   2, "Network resource shortage"},
3137     {   3, "Network failure"},
3138     {   4, "Invalid Teleservice ID"},
3139     {   5, "Other network problem"},
3140     {   6, "Unsupported network interface"},
3141     {   8, "CDMA handset-based position determination failure"},
3142     {   9, "CDMA handset-based position determination resources released - voice service request"},
3143     {   10, "CDMA handset-based position determination resources released - voice service request - message acknowledged"},
3144     {   11, "Reserved"},
3145     {   12, "Reserved"},
3146     {   13, "Reserved"},
3147     {   14, "Emergency Services Call Precedence"},
3148     {   32, "No page response"},
3149     {   33, "Destination busy"},
3150     {   34, "No acknowledgment"},
3151     {   35, "Destination resource shortage"},
3152     {   36, "SMS delivery postponed"},
3153     {   37, "Destination out of service"},
3154     {   38, "Destination no longer at this address"},
3155     {   39, "Other terminal problem"},
3156     {   64, "Radio interface resource shortage"},
3157     {   65, "Radio interface incompatibility"},
3158     {   66, "Other radio interface problem"},
3159     {   67, "Unsupported Base Station Capability"},
3160     {   96, "Encoding problem"},
3161     {   97, "Service origination denied"},
3162     {   98, "Service termination denied"},
3163     {   99, "Supplementary service not supported"},
3164     {   100, "Service not supported"},
3165     {   101, "Reserved"},
3166     {   102, "Missing expected parameter"},
3167     {   103, "Missing mandatory parameter"},
3168     {   104, "Unrecognized parameter value"},
3169     {   105, "Unexpected parameter value"},
3170     {   106, "User Data size error"},
3171     {   107, "Other general problems"},
3172     {   108, "Session not active"},
3173     {   109, "Reserved"},
3174     {   110, "MS Disconnect"},
3175     {   0, NULL }
3176 };
3177 static value_string_ext ansi_map_SMS_CauseCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_SMS_CauseCode_vals);
3178
3179 /* 6.5.2.126 SMS_ChargeIndicator */
3180 /* SMS Charge Indicator (octet 1) */
3181 static const value_string ansi_map_SMS_ChargeIndicator_vals[]  = {
3182     {   0, "Not used"},
3183     {   1, "No charge"},
3184     {   2, "Charge original originator"},
3185     {   3, "Charge original destination"},
3186     {   0, NULL }
3187 };
3188 /*      4 through 63 Reserved. Treat the same as value 1, No charge.
3189         64 through 127 Reserved. Treat the same as value 2, Charge original originator.
3190         128 through 223 Reserved. Treat the same as value 3, Charge original destination.
3191         224 through 255 Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 2, Charge
3192         original originator.
3193 */
3194
3195 /* 6.5.2.130 SMS_NotificationIndicator N.S0005-0 v 1.0*/
3196 static const value_string ansi_map_SMS_NotificationIndicator_vals[]  = {
3197     {   0, "Not used"},
3198     {   1, "Notify when available"},
3199     {   2, "Do not notify when available"},
3200     {   0, NULL }
3201 };
3202
3203 /* 6.5.2.136 SMS_OriginationRestrictions */
3204 /* DEFAULT (octet 1, bits A and B) */
3205
3206 static const value_string ansi_map_SMS_OriginationRestrictions_default_vals[]  = {
3207     {   0, "Block all"},
3208     {   1, "Reserved"},
3209     {   2, "Allow specific"},
3210     {   3, "Allow all"},
3211     {   0, NULL }
3212 };
3213 /* DIRECT (octet 1, bit C) */
3214 static const true_false_string ansi_map_SMS_OriginationRestrictions_direct_bool_val  = {
3215     "Allow Direct",
3216     "Block Direct"
3217 };
3218
3219 /* Force Message Center (FMC) (octet 1, bit D) */
3220 static const true_false_string ansi_map_SMS_OriginationRestrictions_fmc_bool_val  = {
3221     "Force Indirect",
3222     "No effect"
3223 };
3224
3225 static void
3226 dissect_ansi_map_sms_originationrestrictions(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3227
3228     int offset = 0;
3229     proto_tree *subtree;
3230
3231
3232     subtree = proto_item_add_subtree(actx->created_item, ett_sms_originationrestrictions);
3233     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHGFE, tvb, offset, 1, ENC_BIG_ENDIAN);
3234     proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_fmc, tvb, offset, 1, ENC_BIG_ENDIAN);
3235     proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_direct, tvb, offset, 1, ENC_BIG_ENDIAN);
3236     proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_default, tvb, offset, 1, ENC_BIG_ENDIAN);
3237
3238 }
3239
3240 /* 6.5.2.137 SMS_TeleserviceIdentifier */
3241 /* Updated with N.S0011-0 v 1.0 */
3242
3243 /* SMS Teleservice Identifier (octets 1 and 2) */
3244 static const value_string ansi_map_SMS_TeleserviceIdentifier_vals[]  = {
3245     {     0, "Not used"},
3246     {     1, "Reserved for maintenance"},
3247     {     2, "SSD Update no response"},
3248     {     3, "SSD Update successful"},
3249     {     4, "SSD Update failed"},
3250     {  4096, "AMPS Extended Protocol Enhanced Services" },
3251     {  4097, "CDMA Cellular Paging Teleservice" },
3252     {  4098, "CDMA Cellular Messaging Teleservice" },
3253     {  4099, "CDMA Voice Mail Notification" },
3254     { 32513, "TDMA Cellular Messaging Teleservice" },
3255     { 32520, "TDMA System Assisted Mobile Positioning through Satellite (SAMPS)" },
3256     { 32584, "TDMA Segmented System Assisted Mobile Positioning Service" },
3257     {     0, NULL }
3258 };
3259 /* 6.5.2.140 SPINITriggers */
3260 /* All Origination (All) (octet 1, bit A) */
3261
3262 /* 6.5.2.142 SSDUpdateReport */
3263 static const value_string ansi_map_SSDUpdateReport_vals[]  = {
3264     {       0, "Not used"},
3265     {    4096, "AMPS Extended Protocol Enhanced Services"},
3266     {    4097, "CDMA Cellular Paging Teleservice"},
3267     {    4098, "CDMA Cellular Messaging Teleservice"},
3268     {   32513, "TDMA Cellular Messaging Teleservice"},
3269     {   32514, "TDMA Cellular Paging Teleservice (CPT-136)"},
3270     {   32515, "TDMA Over-the-Air Activation Teleservice (OATS)"},
3271     {   32516, "TDMA Over-the-Air Programming Teleservice (OPTS)"},
3272     {   32517, "TDMA General UDP Transport Service (GUTS)"},
3273     {   32576, "Reserved"},
3274     {   32577, "TDMA Segmented Cellular MessagingTeleservice"},
3275     {   32578, "TDMA Segmented Cellular Paging Teleservice"},
3276     {   32579, "TDMA Segmented Over-the-Air Activation Teleservice (OATS)"},
3277     {   32580, "TDMA Segmented Over-the-Air Programming Teleservice (OPTS)."},
3278     {   32581, "TDMA Segmented General UDP Transport Service (GUTS)"},
3279     {   32576, "Reserved"},
3280     {       0, NULL }
3281 };
3282
3283 /* 6.5.2.143 StationClassMark */
3284
3285 /* 6.5.2.144 SystemAccessData */
3286
3287 /* 6.5.2.146 SystemCapabilities */
3288 /* Updated in N.S0008-0 v 1.0 */
3289 static const true_false_string ansi_map_systemcapabilities_auth_bool_val  = {
3290     "Authentication parameters were requested on this system access (AUTH=1 in the OMT)",
3291     "Authentication parameters were not requested on this system access (AUTH=0 in the OMT)."
3292 };
3293
3294 static const true_false_string ansi_map_systemcapabilities_se_bool_val  = {
3295     "Signaling Message Encryption supported by the system",
3296     "Signaling Message Encryption not supported by the system"
3297 };
3298
3299 static const true_false_string ansi_map_systemcapabilities_vp_bool_val  = {
3300     "Voice Privacy supported by the system",
3301     "Voice Privacy not supported by the system"
3302 };
3303
3304 static const true_false_string ansi_map_systemcapabilities_cave_bool_val  = {
3305     "System can execute the CAVE algorithm and share SSD for the indicated MS",
3306     "System cannot execute the CAVE algorithm and cannot share SSD for the indicated MS"
3307 };
3308
3309 static const true_false_string ansi_map_systemcapabilities_ssd_bool_val  = {
3310     "SSD is shared with the system for the indicated MS",
3311     "SSD is not shared with the system for the indicated MS"
3312 };
3313
3314 static const true_false_string ansi_map_systemcapabilities_dp_bool_val  = {
3315     "DP is supported by the system",
3316     "DP is not supported by the system"
3317 };
3318
3319 static void
3320 dissect_ansi_map_systemcapabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3321
3322     int offset = 0;
3323     proto_tree *subtree;
3324
3325
3326     subtree = proto_item_add_subtree(actx->created_item, ett_systemcapabilities);
3327     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHG, tvb, offset, 1, ENC_BIG_ENDIAN);
3328     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_dp, tvb, offset, 1, ENC_BIG_ENDIAN);
3329     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_ssd, tvb, offset, 1, ENC_BIG_ENDIAN);
3330     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_cave, tvb, offset, 1, ENC_BIG_ENDIAN);
3331     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_vp, tvb, offset, 1, ENC_BIG_ENDIAN);
3332     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_se, tvb, offset, 1, ENC_BIG_ENDIAN);
3333     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_auth, tvb, offset, 1, ENC_BIG_ENDIAN);
3334 }
3335
3336 /* 6.5.2.151 TDMABurstIndicator */
3337 /* 6.5.2.152 TDMACallMode */
3338 /* 6.5.2.153 TDMAChannelData Updated in N.S0007-0 v 1.0*/
3339
3340 /* 6.5.2.155 TerminationAccessType */
3341 /* XXX Fix Me, Fill up the values or do special decoding? */
3342 static const value_string ansi_map_TerminationAccessType_vals[]  = {
3343     {   0, "Not used"},
3344     {   1, "Reserved for controlling system assignment (may be a trunk group identifier)."},
3345     /* 1 through  127 */
3346     { 127, "Reserved for controlling system assignment (may be a trunk group identifier)."},
3347     { 128, "Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 253, Land-to-Mobile Directory Number access"},
3348     /* 128 through  160 */
3349     { 160, "Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 253, Land-to-Mobile Directory Number access"},
3350     { 161, "Reserved for this Standard"},
3351     /* 161 through  251 */
3352     { 151, "Reserved for this Standard"},
3353     { 252, "Mobile-to-Mobile Directory Number access"},
3354     { 253, "Land-to-Mobile Directory Number access"},
3355     { 254, "Remote Feature Control port access"},
3356     { 255, "Roamer port access"},
3357     {   0, NULL }
3358 };
3359
3360 /* 6.5.2.158 TerminationTreatment */
3361 static const value_string ansi_map_TerminationTreatment_vals[]  = {
3362     {   0, "Not used"},
3363     {   1, "MS Termination"},
3364     {   2, "Voice Mail Storage"},
3365     {   3, "Voice Mail Retrieval"},
3366     {   4, "Dialogue Termination"},
3367     {   0, NULL }
3368 };
3369
3370 /* 6.5.2.159 TerminationTriggers */
3371 /* Busy (octet 1, bits A and B) */
3372 static const value_string ansi_map_terminationtriggers_busy_vals[]  = {
3373     {   0, "Busy Call"},
3374     {   1, "Busy Trigger"},
3375     {   2, "Busy Leg"},
3376     {   3, "Reserved. Treat as an unrecognized parameter value"},
3377     {   0, NULL }
3378 };
3379 /* Routing Failure (RF) (octet 1, bits C and D) */
3380 static const value_string ansi_map_terminationtriggers_rf_vals[]  = {
3381     {   0, "Failed Call"},
3382     {   1, "Routing Failure Trigger"},
3383     {   2, "Failed Leg"},
3384     {   3, "Reserved. Treat as an unrecognized parameter value"},
3385     {   0, NULL }
3386 };
3387 /* No Page Response (NPR) (octet 1, bits E and F) */
3388 static const value_string ansi_map_terminationtriggers_npr_vals[]  = {
3389     {   0, "No Page Response Call"},
3390     {   1, "No Page Response Trigger"},
3391     {   2, "No Page Response Leg"},
3392     {   3, "Reserved. Treat as an unrecognized parameter value"},
3393     {   0, NULL }
3394 };
3395 /* No Answer (NA) (octet 1, bits G and H) */
3396 static const value_string ansi_map_terminationtriggers_na_vals[]  = {
3397     {   0, "No Answer Call"},
3398     {   1, "No Answer Trigger"},
3399     {   2, "No Answer Leg"},
3400     {   3, "Reserved"},
3401     {   0, NULL }
3402 };
3403 /* None Reachable (NR) (octet 2, bit A) */
3404 static const value_string ansi_map_terminationtriggers_nr_vals[]  = {
3405     {   0, "Member Not Reachable"},
3406     {   1, "Group Not Reachable"},
3407     {   0, NULL }
3408 };
3409
3410 /* 6.5.2.159 TerminationTriggers N.S0005-0 v 1.0*/
3411 static void
3412 dissect_ansi_map_terminationtriggers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3413
3414     int offset = 0;
3415     proto_tree *subtree;
3416
3417
3418     subtree = proto_item_add_subtree(actx->created_item, ett_transactioncapability);
3419
3420     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, ENC_BIG_ENDIAN);
3421     /* No Page Response (NPR) (octet 1, bits E and F) */
3422     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_npr, tvb, offset, 1, ENC_BIG_ENDIAN);
3423     /* No Answer (NA) (octet 1, bits G and H) */
3424     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_na, tvb, offset, 1, ENC_BIG_ENDIAN);
3425     /* Routing Failure (RF) (octet 1, bits C and D) */
3426     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_rf, tvb, offset, 1, ENC_BIG_ENDIAN);
3427     /* Busy (octet 1, bits A and B) */
3428     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_busy, tvb, offset, 1, ENC_BIG_ENDIAN);
3429     offset++;
3430
3431     /* None Reachable (NR) (octet 2, bit A) */
3432     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_nr, tvb, offset, 1, ENC_BIG_ENDIAN);
3433 }
3434
3435 /* 6.5.2.160 TransactionCapability (TIA/EIA-41.5-D, page 5-315) */
3436 /* Updated with N.S0010-0 v 1.0, N.S0012-0 v 1.0 N.S0013-0 v 1.0 */
3437 static const true_false_string ansi_map_trans_cap_prof_bool_val  = {
3438     "The system is capable of supporting the IS-41-C profile parameters",
3439     "The system is not capable of supporting the IS-41-C profile parameters"
3440 };
3441
3442 static const true_false_string ansi_map_trans_cap_busy_bool_val  = {
3443     "The system is capable of detecting a busy condition at the current time",
3444     "The system is not capable of detecting a busy condition at the current time"
3445 };
3446
3447 static const true_false_string ansi_map_trans_cap_ann_bool_val  = {
3448     "The system is capable of honoring the AnnouncementList parameter at the current time",
3449     "The system is not capable of honoring the AnnouncementList parameter at the current time"
3450 };
3451
3452 static const true_false_string ansi_map_trans_cap_rui_bool_val  = {
3453     "The system is capable of interacting with the user",
3454     "The system is not capable of interacting with the user"
3455 };
3456
3457 static const true_false_string ansi_map_trans_cap_spini_bool_val  = {
3458     "The system is capable of supporting local SPINI operation",
3459     "The system is not capable of supporting local SPINI operation at the current time"
3460 };
3461
3462 static const true_false_string ansi_map_trans_cap_uzci_bool_val  = {
3463     "The system is User Zone capable at the current time",
3464     "The system is not User Zone capable at the current time"
3465 };
3466 static const true_false_string ansi_map_trans_cap_ndss_bool_val  = {
3467     "Serving system is NDSS capable",
3468     "Serving system is not NDSS capable"
3469 };
3470 static const true_false_string ansi_map_trans_cap_nami_bool_val  = {
3471     "The system is CNAP/CNAR capable",
3472     "The system is not CNAP/CNAR capable"
3473 };
3474
3475 static const value_string ansi_map_trans_cap_multerm_vals[]  = {
3476     {   0, "The system cannot accept a termination at this time (i.e., cannot accept routing information)"},
3477     {   1, "The system supports the number of call legs indicated"},
3478     {   2, "The system supports the number of call legs indicated"},
3479     {   3, "The system supports the number of call legs indicated"},
3480     {   4, "The system supports the number of call legs indicated"},
3481     {   5, "The system supports the number of call legs indicated"},
3482     {   6, "The system supports the number of call legs indicated"},
3483     {   7, "The system supports the number of call legs indicated"},
3484     {   8, "The system supports the number of call legs indicated"},
3485     {   9, "The system supports the number of call legs indicated"},
3486     {   10, "The system supports the number of call legs indicated"},
3487     {   11, "The system supports the number of call legs indicated"},
3488     {   12, "The system supports the number of call legs indicated"},
3489     {   13, "The system supports the number of call legs indicated"},
3490     {   14, "The system supports the number of call legs indicated"},
3491     {   15, "The system supports the number of call legs indicated"},
3492     {   0, NULL }
3493 };
3494
3495 static const true_false_string ansi_map_trans_cap_tl_bool_val  = {
3496     "The system is capable of supporting the TerminationList parameter at the current time",
3497     "The system is not capable of supporting the TerminationList parameter at the current time"
3498 };
3499
3500 static const true_false_string ansi_map_trans_cap_waddr_bool_val  = {
3501     "The system is capable of supporting the TriggerAddressList parameter",
3502     "The system is not capable of supporting the TriggerAddressList parameter"
3503 };
3504
3505
3506 static void
3507 dissect_ansi_map_transactioncapability(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3508
3509     int offset = 0;
3510     proto_tree *subtree;
3511
3512
3513     subtree = proto_item_add_subtree(actx->created_item, ett_transactioncapability);
3514
3515     /*NAME Capability Indicator (NAMI) (octet 1, bit H) */
3516     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_nami, tvb, offset, 1, ENC_BIG_ENDIAN);
3517     /* NDSS Capability (NDSS) (octet 1, bit G) */
3518     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_ndss, tvb, offset, 1, ENC_BIG_ENDIAN);
3519     /* UZ Capability Indicator (UZCI) (octet 1, bit F) */
3520     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_uzci, tvb, offset, 1, ENC_BIG_ENDIAN);
3521     /* Subscriber PIN Intercept (SPINI) (octet 1, bit E) */
3522     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_spini, tvb, offset, 1, ENC_BIG_ENDIAN);
3523     /* Remote User Interaction (RUI) (octet 1, bit D) */
3524     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_rui, tvb, offset, 1, ENC_BIG_ENDIAN);
3525     /* Announcements (ANN) (octet 1, bit C) */
3526     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_ann, tvb, offset, 1, ENC_BIG_ENDIAN);
3527     /* Busy Detection (BUSY) (octet 1, bit B) */
3528     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_busy, tvb, offset, 1, ENC_BIG_ENDIAN);
3529     /* Profile (PROF) (octet 1, bit A) */
3530     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_prof, tvb, offset, 1, ENC_BIG_ENDIAN);
3531     offset++;
3532
3533     /* WIN Addressing (WADDR) (octet 2, bit F) */
3534     proto_tree_add_item(subtree, hf_ansi_trans_cap_waddr, tvb, offset, 1, ENC_BIG_ENDIAN);
3535     /* TerminationList (TL) (octet 2, bit E) */
3536     proto_tree_add_item(subtree, hf_ansi_trans_cap_tl, tvb, offset, 1, ENC_BIG_ENDIAN);
3537     /* Multiple Terminations (octet 2, bits A-D) */
3538     proto_tree_add_item(subtree, hf_ansi_trans_cap_multerm, tvb, offset, 1, ENC_BIG_ENDIAN);
3539 }
3540
3541 /* 6.5.2.162 UniqueChallengeReport */
3542 /* Unique Challenge Report (octet 1) */
3543 static const value_string ansi_map_UniqueChallengeReport_vals[]  = {
3544     {   0, "Not used"},
3545     {   1, "Unique Challenge not attempted"},
3546     {   2, "Unique Challenge no response"},
3547     {   3, "Unique Challenge successful"},
3548     {   4, "Unique Challenge failed"},
3549     {   0, NULL }
3550 };
3551
3552 /* 6.5.2.166 VoicePrivacyMask */
3553
3554
3555 /* 6.5.2.e (TSB76) CDMAServiceConfigurationRecord N.S0008-0 v 1.0 */
3556 /* a. This field carries the CDMA Service Configuration Record. The bit-layout is the
3557    same as that of Service Configuration Record in TSB74, and J-STD-008.
3558 */
3559
3560 /* 6.5.2.f CDMAServiceOption N.S0010-0 v 1.0 */
3561
3562 /* values copied from old ANSI map dissector */
3563 static const range_string cdmaserviceoption_vals[] = {
3564     { 1, 1, "Basic Variable Rate Voice Service (8 kbps)" },
3565     { 2, 2, "Mobile Station Loopback (8 kbps)" },
3566     { 3, 3, "Enhanced Variable Rate Voice Service (8 kbps)" },
3567     { 4, 4, "Asynchronous Data Service (9.6 kbps)" },
3568     { 5, 5, "Group 3 Facsimile (9.6 kbps)" },
3569     { 6, 6, "Short Message Services (Rate Set 1)" },
3570     { 7, 7, "Packet Data Service: Internet or ISO Protocol Stack (9.6 kbps)" },
3571     { 8, 8, "Packet Data Service: CDPD Protocol Stack (9.6 kbps)" },
3572     { 9, 9, "Mobile Station Loopback (13 kbps)" },
3573     { 10, 10, "STU-III Transparent Service" },
3574     { 11, 11, "STU-III Non-Transparent Service" },
3575     { 12, 12, "Asynchronous Data Service (14.4 or 9.6 kbps)" },
3576     { 13, 13, "Group 3 Facsimile (14.4 or 9.6 kbps)" },
3577     { 14, 14, "Short Message Services (Rate Set 2)" },
3578     { 15, 15, "Packet Data Service: Internet or ISO Protocol Stack (14.4 kbps)" },
3579     { 16, 16, "Packet Data Service: CDPD Protocol Stack (14.4 kbps)" },
3580     { 17, 17, "High Rate Voice Service (13 kbps)" },
3581     { 18, 18, "Over-the-Air Parameter Administration (Rate Set 1)" },
3582     { 19, 19, "Over-the-Air Parameter Administration (Rate Set 2)" },
3583     { 20, 20, "Group 3 Analog Facsimile (Rate Set 1)" },
3584     { 21, 21, "Group 3 Analog Facsimile (Rate Set 2)" },
3585     { 22, 22, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS1 reverse)" },
3586     { 23, 23, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS2 reverse)" },
3587     { 24, 24, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS1 reverse)" },
3588     { 25, 25, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS2 reverse)" },
3589     { 26, 26, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS1 reverse)" },
3590     { 27, 27, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS2 reverse)" },
3591     { 28, 28, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS1 reverse)" },
3592     { 29, 29, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS2 reverse)" },
3593     { 30, 30, "Supplemental Channel Loopback Test for Rate Set 1" },
3594     { 31, 31, "Supplemental Channel Loopback Test for Rate Set 2" },
3595     { 32, 32, "Test Data Service Option (TDSO)" },
3596     { 33, 33, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
3597     { 34, 34, "cdma2000 High Speed Packet Data Service, CDPD Protocol Stack" },
3598     { 35, 35, "Location Services, Rate Set 1 (9.6 kbps)" },
3599     { 36, 36, "Location Services, Rate Set 2 (14.4 kbps)" },
3600     { 37, 37, "ISDN Interworking Service (64 kbps)" },
3601     { 38, 38, "GSM Voice" },
3602     { 39, 39, "GSM Circuit Data" },
3603     { 40, 40, "GSM Packet Data" },
3604     { 41, 41, "GSM Short Message Service" },
3605     { 42, 42, "None Reserved for MC-MAP standard service options" },
3606     { 54, 54, "Markov Service Option (MSO)" },
3607     { 55, 55, "Loopback Service Option (LSO)" },
3608     { 56, 56, "Selectable Mode Vocoder" },
3609     { 57, 57, "32 kbps Circuit Video Conferencing" },
3610     { 58, 58, "64 kbps Circuit Video Conferencing" },
3611     { 59, 59, "HRPD Accounting Records Identifier" },
3612     { 60, 60, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Removal" },
3613     { 61, 61, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Compression" },
3614     { 62, 62, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 2" },
3615     { 63, 63, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 1" },
3616     { 64, 64, "HRPD auxiliary Packet Data Service instance" },
3617     { 65, 65, "cdma2000/GPRS Inter-working" },
3618     { 66, 66, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
3619     { 67, 67, "HRPD Packet Data IP Service where Higher Layer Protocol is IP or ROHC" },
3620     { 68, 68, "Enhanced Variable Rate Voice Service (EVRC-B)" },
3621     { 69, 69, "HRPD Packet Data Service, which when used in paging over the 1x air interface, a page response is required" },
3622     { 70, 70, "Enhanced Variable Rate Voice Service (EVRC-WB)" },
3623     { 71, 4099, "None Reserved for standard service options" },
3624     { 4100, 4100, "Asynchronous Data Service, Revision 1 (9.6 or 14.4 kbps)" },
3625     { 4101, 4101, "Group 3 Facsimile, Revision 1 (9.6 or 14.4 kbps)" },
3626     { 4102, 4102, "Reserved for standard service option" },
3627     { 4103, 4103, "Packet Data Service: Internet or ISO Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
3628     { 4104, 4104, "Packet Data Service: CDPD Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
3629     { 4105, 32767, "Reserved for standard service options" },
3630     { 32768, 32768, "QCELP (13 kbps)" },
3631     { 32769, 32771, "Proprietary QUALCOMM Incorporated" },
3632     { 32772, 32775, "Proprietary OKI Telecom" },
3633     { 32776, 32779, "Proprietary Lucent Technologies" },
3634     { 32780, 32783, "Nokia" },
3635     { 32784, 32787, "NORTEL NETWORKS" },
3636     { 32788, 32791, "Sony Electronics Inc" },
3637     { 32792, 32795, "Motorola" },
3638     { 32796, 32799, "QUALCOMM Incorporated" },
3639     { 32800, 32803, "QUALCOMM Incorporated" },
3640     { 32804, 32807, "QUALCOMM Incorporated" },
3641     { 32808, 32811, "QUALCOMM Incorporated" },
3642     { 32812, 32815, "Lucent Technologies" },
3643     { 32816, 32819, "Denso International" },
3644     { 32820, 32823, "Motorola" },
3645     { 32824, 32827, "Denso International" },
3646     { 32828, 32831, "Denso International" },
3647     { 32832, 32835, "Denso International" },
3648     { 32836, 32839, "NEC America" },
3649     { 32840, 32843, "Samsung Electronics" },
3650     { 32844, 32847, "Texas Instruments Incorporated" },
3651     { 32848, 32851, "Toshiba Corporation" },
3652     { 32852, 32855, "LG Electronics Inc." },
3653     { 32856, 32859, "VIA Telecom Inc." },
3654     { 0,           0,          NULL                   }
3655 };
3656
3657 static void
3658 dissect_ansi_map_cdmaserviceoption(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3659     int offset = 0;
3660     proto_tree *subtree;
3661
3662
3663     subtree = proto_item_add_subtree(actx->created_item, ett_cdmaserviceoption);
3664
3665     proto_tree_add_item(subtree, hf_ansi_map_cdmaserviceoption, tvb, offset, 2, ENC_BIG_ENDIAN);
3666
3667
3668 }
3669 /* 6.5.2.f (TSB76) CDMAServiceOption N.S0008-0 v 1.0*/
3670 /* This field carries the CDMA Service Option. The bit-layout is the same as that of
3671    Service Option in TSB74 and J-STD-008.*/
3672
3673 /* 6.5.2.i (IS-730) TDMAServiceCode N.S0008-0 v&n