b7fd8bcc5c6ec45dd7d061405cf47dcf6f32911d
[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 . 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 = value;
1174     gchar *TransactionId_str = 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=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 = g_hash_table_lookup(TransactionId_table,buf);
1235             if(ansi_map_saved_invokedata)
1236                 return;
1237
1238             ansi_map_saved_invokedata = g_malloc(sizeof(struct ansi_map_invokedata_t));
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 /* Assumes the rest of the tvb contains the digits to be turned into a string
1396  */
1397 static const char*
1398 unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
1399
1400     int length;
1401     guint8 octet;
1402     int i=0;
1403     char *digit_str;
1404
1405     length = tvb_length(tvb);
1406     if (length < offset)
1407         return "";
1408     digit_str = ep_alloc((length - offset)*2+1);
1409
1410     while ( offset < length ){
1411
1412         octet = tvb_get_guint8(tvb,offset);
1413         digit_str[i] = dgt->out[octet & 0x0f];
1414         i++;
1415
1416         /*
1417          * unpack second value in byte
1418          */
1419         octet = octet >> 4;
1420
1421         if (octet == 0x0f)      /* odd number bytes - hit filler */
1422             break;
1423
1424         digit_str[i] = dgt->out[octet & 0x0f];
1425         i++;
1426         offset++;
1427
1428     }
1429     digit_str[i]= '\0';
1430     return digit_str;
1431 }
1432
1433
1434
1435 /* Type of Digits (octet 1, bits A-H) */
1436 static const value_string ansi_map_type_of_digits_vals[] = {
1437     {   0, "Not Used" },
1438     {   1, "Dialed Number or Called Party Number" },
1439     {   2, "Calling Party Number" },
1440     {   3, "Caller Interaction" },
1441     {   4, "Routing Number" },
1442     {   5, "Billing Number" },
1443     {   6, "Destination Number" },
1444     {   7, "LATA" },
1445     {   8, "Carrier" },
1446     {   0, NULL }
1447 };
1448 /* Nature of Number (octet 2, bits A-H )*/
1449 static const true_false_string ansi_map_na_bool_val  = {
1450     "International",
1451     "National"
1452 };
1453 static const true_false_string ansi_map_pi_bool_val  = {
1454     "Presentation Restricted",
1455     "Presentation Allowed"
1456 };
1457 static const true_false_string ansi_map_navail_bool_val  = {
1458     "Number is not available",
1459     "Number is available"
1460 };
1461 static const true_false_string ansi_map_si_bool_val  = {
1462     "User provided, screening passed",
1463     "User provided, not screened"
1464 };
1465 static const value_string ansi_map_si_vals[]  = {
1466     {   0, "User provided, not screened"},
1467     {   1, "User provided, screening passed"},
1468     {   2, "User provided, screening failed"},
1469     {   3, "Network provided"},
1470     {   0, NULL }
1471 };
1472 /* Encoding (octet 3, bits A-D) */
1473 static const value_string ansi_map_digits_enc_vals[]  = {
1474     {   0, "Not used"},
1475     {   1, "BCD"},
1476     {   2, "IA5"},
1477     {   3, "Octet string"},
1478     {   0, NULL }
1479 };
1480 /* Numbering Plan (octet 3, bits E-H) */
1481 static const value_string ansi_map_np_vals[]  = {
1482     {   0, "Unknown or not applicable"},
1483     {   1, "ISDN Numbering"},
1484     {   2, "Telephony Numbering (ITU-T Rec. E.164,E.163)"},
1485     {   3, "Data Numbering (ITU-T Rec. X.121)"},
1486     {   4, "Telex Numbering (ITU-T Rec. F.69)"},
1487     {   5, "Maritime Mobile Numbering"},
1488     {   6, "Land Mobile Numbering (ITU-T Rec. E.212)"},
1489     {   7, "Private Numbering Plan"},
1490     {  13, "SS7 Point Code (PC) and Subsystem Number (SSN)"},
1491     {  14, "Internet Protocol (IP) Address."},
1492     {  15, "Reserved for extension"},
1493     {   0, NULL }
1494 };
1495
1496 static void
1497 dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1498     const char *digit_str;
1499     int   offset = 0;
1500
1501     proto_tree *subtree;
1502
1503
1504     subtree = proto_item_add_subtree(actx->created_item, ett_mintype);
1505
1506     digit_str = unpack_digits2(tvb, offset, &Dgt1_9_bcd);
1507     proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
1508     proto_item_append_text(actx->created_item, " - %s", digit_str);
1509 }
1510
1511 static void
1512 dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1513
1514     guint8 octet , octet_len;
1515     guint8 b1,b2,b3,b4;
1516     int    offset = 0;
1517     const char *digit_str;
1518
1519     proto_tree *subtree;
1520
1521
1522     subtree = proto_item_add_subtree(actx->created_item, ett_digitstype);
1523
1524     /* Octet 1 */
1525     proto_tree_add_item(subtree, hf_ansi_map_type_of_digits, tvb, offset, 1, FALSE);
1526     offset++;
1527     /* Octet 2 */
1528     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHG, tvb, offset, 1, FALSE);
1529     proto_tree_add_item(subtree, hf_ansi_map_si, tvb, offset, 1, FALSE);
1530     proto_tree_add_item(subtree, hf_ansi_map_reservedBitD, tvb, offset, 1, FALSE);
1531     proto_tree_add_item(subtree, hf_ansi_map_navail, tvb, offset, 1, FALSE);
1532     proto_tree_add_item(subtree, hf_ansi_map_pi, tvb, offset, 1, FALSE);
1533     proto_tree_add_item(subtree, hf_ansi_map_na, tvb, offset, 1, FALSE);
1534     offset++;
1535     /* Octet 3 */
1536     octet = tvb_get_guint8(tvb,offset);
1537     proto_tree_add_item(subtree, hf_ansi_map_np, tvb, offset, 1, FALSE);
1538     proto_tree_add_item(subtree, hf_ansi_map_digits_enc, tvb, offset, 1, FALSE);
1539     offset++;
1540     /* Octet 4 - */
1541     switch(octet>>4){
1542     case 0:/* Unknown or not applicable */
1543         switch ((octet&0xf)){
1544         case 1:
1545             /* BCD Coding */
1546             octet_len = tvb_get_guint8(tvb,offset);
1547             proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE);
1548             if(octet_len == 0)
1549                 return;
1550             offset++;
1551             digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
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             octet_len = tvb_get_guint8(tvb,offset);
1558             proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE);
1559             if(octet_len == 0)
1560                 return;
1561             offset++;
1562             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE);
1563             proto_item_append_text(actx->created_item, " - %s", tvb_get_ephemeral_string(tvb,offset,tvb_length_remaining(tvb,offset)));
1564             break;
1565         case 3:
1566             /* Octet string */
1567             break;
1568         default:
1569             break;
1570         }
1571         break;
1572     case 1:/* ISDN Numbering (not used in this Standard). */
1573     case 3:/* Data Numbering (ITU-T Rec. X.121) (not used in this Standard). */
1574     case 4:/* Telex Numbering (ITU-T Rec. F.69) (not used in this Standard). */
1575     case 5:/* Maritime Mobile Numbering (not used in this Standard). */
1576         proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
1577         break;
1578     case 2:/* Telephony Numbering (ITU-T Rec. E.164,E.163). */
1579     case 6:/* Land Mobile Numbering (ITU-T Rec. E.212) */
1580     case 7:/* Private Numbering Plan */
1581         octet_len = tvb_get_guint8(tvb,offset);
1582         proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE);
1583         if(octet_len == 0)
1584             return;
1585         offset++;
1586         switch ((octet&0xf)){
1587         case 1:
1588             /* BCD Coding */
1589             digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
1590             proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
1591             proto_item_append_text(actx->created_item, " - %s", digit_str);
1592             break;
1593         case 2:
1594             /* IA5 Coding */
1595             proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE);
1596             proto_item_append_text(actx->created_item, " - %s", tvb_get_ephemeral_string(tvb,offset,tvb_length_remaining(tvb,offset)));
1597             break;
1598         case 3:
1599             /* Octet string */
1600             break;
1601         default:
1602             break;
1603         }
1604         break;
1605     case 13:/* ANSI SS7 Point Code (PC) and Subsystem Number (SSN). */
1606         switch ((octet&0xf)){
1607         case 3:
1608             /* Octet string */
1609             /* Point Code Member Number octet 2 */
1610             b1 = tvb_get_guint8(tvb,offset);
1611             offset++;
1612             /* Point Code Cluster Number octet 3 */
1613             b2 = tvb_get_guint8(tvb,offset);
1614             offset++;
1615             /* Point Code Network Number octet 4 */
1616             b3 = tvb_get_guint8(tvb,offset);
1617             offset++;
1618             /* Subsystem Number (SSN) octet 5 */
1619             b4 = tvb_get_guint8(tvb,offset);
1620             proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u  SSN %u",
1621                                 b3, b2, b1, b4);
1622             proto_item_append_text(actx->created_item, " - Point Code %u-%u-%u  SSN %u", b3, b2, b1, b4);
1623             break;
1624         default:
1625             break;
1626         }
1627         break;
1628     case 14:/* Internet Protocol (IP) Address. */
1629         break;
1630     default:
1631         proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
1632         break;
1633     }
1634
1635 }
1636 /* 6.5.3.13. Subaddress */
1637
1638 static const true_false_string ansi_map_Odd_Even_Ind_bool_val  = {
1639   "Odd",
1640   "Even"
1641 };
1642 /* Type of Subaddress (octet 1, bits E-G) */
1643 static const value_string ansi_map_sub_addr_type_vals[]  = {
1644     {   0, "NSAP (CCITT Rec. X.213 or ISO 8348 AD2)"},
1645     {   1, "User specified"},
1646     {   2, "Reserved"},
1647     {   3, "Reserved"},
1648     {   4, "Reserved"},
1649     {   5, "Reserved"},
1650     {   6, "Reserved"},
1651     {   7, "Reserved"},
1652     {   0, NULL }
1653 };
1654
1655 static void
1656 dissect_ansi_map_subaddress(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1657     int offset = 0;
1658
1659     proto_tree *subtree;
1660
1661
1662     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1663     /* Type of Subaddress (octet 1, bits E-G) */
1664     proto_tree_add_item(subtree, hf_ansi_map_subaddr_type, tvb, offset, 1, FALSE);
1665     /* Odd/Even Indicator (O/E) (octet 1, bit D) */
1666     proto_tree_add_item(subtree, hf_ansi_map_subaddr_odd_even, tvb, offset, 1, FALSE);
1667
1668 }
1669 /*
1670  * 6.5.2.2 ActionCode
1671  * Table 114 ActionCode value
1672  *
1673  * 6.5.2.2 ActionCode(TIA/EIA-41.5-D, page 5-129) */
1674
1675 static const value_string ansi_map_ActionCode_vals[]  = {
1676     {   0, "Not used"},
1677     {   1, "Continue processing"},
1678     {   2, "Disconnect call"},
1679     {   3, "Disconnect call leg"},
1680     {   4, "Conference Calling Drop Last Party"},
1681     {   5, "Bridge call leg(s) to conference call"},
1682     {   6, "Drop call leg on busy or routing failure"},
1683     {   7, "Disconnect all call legs"},
1684     {   8, "Attach MSC to OTAF"},
1685     {   9, "Initiate RegistrationNotification"},
1686     {  10, "Generate Public Encryption values"},
1687     {  11, "Generate A-key"},
1688     {  12, "Perform SSD Update procedure"},
1689     {  13, "Perform Re-authentication procedure"},
1690     {  14, "Release TRN"},
1691     {  15, "Commit A-key"},
1692     {  16, "Release Resources (e.g., A-key, Traffic Channel)"},
1693     {  17, "Record NEWMSID"},
1694     {  18, "Allocate Resources (e.g., Multiple message traffic channel delivery)."},
1695     {  19, "Generate Authentication Signature"},
1696     {  20, "Release leg and redirect subscriber"},
1697     {  21, "Do Not Wait For MS User Level Response"},
1698     {  22, "Prepare for CDMA Handset-Based Position Determination"},
1699     {  23, "CDMA Handset-Based Position Determination Complete"},
1700     {   0, NULL }
1701 };
1702 static value_string_ext ansi_map_ActionCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_ActionCode_vals);
1703
1704 /* 6.5.2.3 AlertCode */
1705
1706 /* Pitch (octet 1, bits G-H) */
1707 static const value_string ansi_map_AlertCode_Pitch_vals[]  = {
1708     {   0, "Medium pitch"},
1709     {   1, "High pitch"},
1710     {   2, "Low pitch"},
1711     {   3, "Reserved"},
1712     {   0, NULL }
1713 };
1714 /* Cadence (octet 1, bits A-F) */
1715 static const value_string ansi_map_AlertCode_Cadence_vals[]  = {
1716     {   0, "NoTone"},
1717     {   1, "Long"},
1718     {   2, "ShortShort"},
1719     {   3, "ShortShortLong"},
1720     {   4, "ShortShort2"},
1721     {   5, "ShortLongShort"},
1722     {   6, "ShortShortShortShort"},
1723     {   7, "PBXLong"},
1724     {   8, "PBXShortShort"},
1725     {   9, "PBXShortShortLong"},
1726
1727     {  10, "PBXShortLongShort"},
1728     {  11, "PBXShortShortShortShort"},
1729     {  12, "PipPipPipPip"},
1730     {  13, "Reserved. Treat the same as value 0, NoTone"},
1731     {  14, "Reserved. Treat the same as value 0, NoTone"},
1732     {  15, "Reserved. Treat the same as value 0, NoTone"},
1733     {  16, "Reserved. Treat the same as value 0, NoTone"},
1734     {  17, "Reserved. Treat the same as value 0, NoTone"},
1735     {  18, "Reserved. Treat the same as value 0, NoTone"},
1736     {  19, "Reserved. Treat the same as value 0, NoTone"},
1737     {   0, NULL }
1738 };
1739
1740 /* Alert Action (octet 2, bits A-C) */
1741 static const value_string ansi_map_AlertCode_Alert_Action_vals[]  = {
1742     {   0, "Alert without waiting to report"},
1743     {   1, "Apply a reminder alert once"},
1744     {   2, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1745     {   3, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1746     {   4, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1747     {   5, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1748     {   6, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1749     {   7, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
1750     {   0, NULL }
1751 };
1752 static void
1753 dissect_ansi_map_alertcode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1754
1755     int offset = 0;
1756
1757     proto_tree *subtree;
1758
1759
1760     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1761     /* Pitch (octet 1, bits G-H) */
1762     proto_tree_add_item(subtree, hf_ansi_alertcode_pitch, tvb, offset, 1, FALSE);
1763     /* Cadence (octet 1, bits A-F) */
1764     proto_tree_add_item(subtree, hf_ansi_alertcode_cadence, tvb, offset, 1, FALSE);
1765     offset++;
1766
1767     /* Alert Action (octet 2, bits A-C) */
1768     proto_tree_add_item(subtree, hf_ansi_alertcode_alertaction, tvb, offset, 1, FALSE);
1769
1770 }
1771 /* 6.5.2.4 AlertResult */
1772 /* Result (octet 1) */
1773 static const value_string ansi_map_AlertResult_result_vals[]  = {
1774     {   0, "Not specified"},
1775     {   1, "Success"},
1776     {   2, "Failure"},
1777     {   3, "Denied"},
1778     {   4, "NotAttempted"},
1779     {   5, "NoPageResponse"},
1780     {   6, "Busy"},
1781     {   0, NULL }
1782 };
1783
1784 /* 6.5.2.5 AnnouncementCode Updatef from NS0018Re*/
1785 /* Tone (octet 1) */
1786 static const value_string ansi_map_AnnouncementCode_tone_vals[]  = {
1787     {   0, "DialTone"},
1788     {   1, "RingBack or AudibleAlerting"},
1789     {   2, "InterceptTone or MobileReorder"},
1790     {   3, "CongestionTone or ReorderTone"},
1791     {   4, "BusyTone"},
1792     {   5, "ConfirmationTone"},
1793     {   6, "AnswerTone"},
1794     {   7, "CallWaitingTone"},
1795     {   8, "OffHookTone"},
1796     {  17, "RecallDialTone"},
1797     {  18, "BargeInTone"},
1798     {  20, "PPCInsufficientTone"},
1799     {  21, "PPCWarningTone1"},
1800     {  22, "PPCWarningTone2"},
1801     {  23, "PPCWarningTone3"},
1802     {  24, "PPCDisconnectTone"},
1803     {  25, "PPCRedirectTone"},
1804     {  63, "TonesOff"},
1805     { 192, "PipTone"},
1806     { 193, "AbbreviatedIntercept"},
1807     { 194, "AbbreviatedCongestion"},
1808     { 195, "WarningTone"},
1809     { 196, "DenialToneBurst"},
1810     { 197, "DialToneBurst"},
1811     { 250, "IncomingAdditionalCallTone"},
1812     { 251, "PriorityAdditionalCallTone"},
1813     {   0, NULL }
1814 };
1815 /* Class (octet 2, bits A-D) */
1816 static const value_string ansi_map_AnnouncementCode_class_vals[]  = {
1817     {   0, "Concurrent"},
1818     {   1, "Sequential"},
1819     {   0, NULL }
1820 };
1821 /* Standard Announcement (octet 3) Updated with N.S0015 */
1822 static const value_string ansi_map_AnnouncementCode_std_ann_vals[]  = {
1823     {   0, "None"},
1824     {   1, "UnauthorizedUser"},
1825     {   2, "InvalidESN"},
1826     {   3, "UnauthorizedMobile"},
1827     {   4, "SuspendedOrigination"},
1828     {   5, "OriginationDenied"},
1829     {   6, "ServiceAreaDenial"},
1830     {  16, "PartialDial"},
1831     {  17, "Require1Plus"},
1832     {  18, "Require1PlusNPA"},
1833     {  19, "Require0Plus"},
1834     {  20, "Require0PlusNPA"},
1835     {  21, "Deny1Plus"},
1836     {  22, "Unsupported10plus"},
1837     {  23, "Deny10plus"},
1838     {  24, "Unsupported10XXX"},
1839     {  25, "Deny10XXX"},
1840     {  26, "Deny10XXXLocally"},
1841     {  27, "Require10Plus"},
1842     {  28, "RequireNPA"},
1843     {  29, "DenyTollOrigination"},
1844     {  30, "DenyInternationalOrigination"},
1845     {  31, "Deny0Minus"},
1846     {  48, "DenyNumber"},
1847     {  49, "AlternateOperatorServices"},
1848     {  64, "No Circuit or AllCircuitsBusy or FacilityProblem"},
1849     {  65, "Overload"},
1850     {  66, "InternalOfficeFailure"},
1851     {  67, "NoWinkReceived"},
1852     {  68, "InterofficeLinkFailure"},
1853     {  69, "Vacant"},
1854     {  70, "InvalidPrefix or InvalidAccessCode"},
1855     {  71, "OtherDialingIrregularity"},
1856     {  80, "VacantNumber or DisconnectedNumber"},
1857     {  81, "DenyTermination"},
1858     {  82, "SuspendedTermination"},
1859     {  83, "ChangedNumber"},
1860     {  84, "InaccessibleSubscriber"},
1861     {  85, "DenyIncomingTol"},
1862     {  86, "RoamerAccessScreening"},
1863     {  87, "RefuseCall"},
1864     {  88, "RedirectCall"},
1865     {  89, "NoPageResponse"},
1866     {  90, "NoAnswer"},
1867     {  96, "RoamerIntercept"},
1868     {  97, "GeneralInformation"},
1869     { 112, "UnrecognizedFeatureCode"},
1870     { 113, "UnauthorizedFeatureCode"},
1871     { 114, "RestrictedFeatureCode"},
1872     { 115, "InvalidModifierDigits"},
1873     { 116, "SuccessfulFeatureRegistration"},
1874     { 117, "SuccessfulFeatureDeRegistration"},
1875     { 118, "SuccessfulFeatureActivation"},
1876     { 119, "SuccessfulFeatureDeActivation"},
1877     { 120, "InvalidForwardToNumber"},
1878     { 121, "CourtesyCallWarning"},
1879     { 128, "EnterPINSendPrompt"},
1880     { 129, "EnterPINPrompt"},
1881     { 130, "ReEnterPINSendPrompt"},
1882     { 131, "ReEnterPINPrompt"},
1883     { 132, "EnterOldPINSendPrompt"},
1884     { 133, "EnterOldPINPrompt"},
1885     { 134, "EnterNewPINSendPrompt"},
1886     { 135, "EnterNewPINPrompt"},
1887     { 136, "ReEnterNewPINSendPrompt"},
1888     { 137, "ReEnterNewPINPrompt"},
1889     { 138, "EnterPasswordPrompt"},
1890     { 139, "EnterDirectoryNumberPrompt"},
1891     { 140, "ReEnterDirectoryNumberPrompt"},
1892     { 141, "EnterFeatureCodePrompt"},
1893     { 142, "EnterEnterCreditCardNumberPrompt"},
1894     { 143, "EnterDestinationNumberPrompt"},
1895     { 152, "PPCInsufficientAccountBalance"},
1896     { 153, "PPCFiveMinuteWarning"},
1897     { 154, "PPCThreeMinuteWarning"},
1898     { 155, "PPCTwoMinuteWarning"},
1899     { 156, "PPCOneMinuteWarning"},
1900     { 157, "PPCDisconnect"},
1901     { 158, "PPCRedirect"},
1902     {   0, NULL }
1903 };
1904
1905
1906
1907 static void
1908 dissect_ansi_map_announcementcode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1909
1910     int offset = 0;
1911
1912     proto_tree *subtree;
1913
1914
1915     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1916
1917     /* Tone (octet 1) */
1918     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_tone, tvb, offset, 1, FALSE);
1919     offset++;
1920     /* Class (octet 2, bits A-D) */
1921     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_class, tvb, offset, 1, FALSE);
1922     offset++;
1923     /* Standard Announcement (octet 3) */
1924     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_std_ann, tvb, offset, 1, FALSE);
1925     offset++;
1926     /* Custom Announcement ( octet 4 )
1927        e.       The assignment of this octet is left to bilateral agreement. When a Custom
1928        Announcement is specified it takes precedence over either the Standard
1929        Announcement or Tone
1930     */
1931     proto_tree_add_item(subtree, hf_ansi_map_announcementcode_cust_ann, tvb, offset, 1, FALSE);
1932
1933 }
1934 /* 6.5.2.8 AuthenticationCapability Updated N.S0003*/
1935 static const value_string ansi_map_AuthenticationCapability_vals[]  = {
1936     {   0, "Not used"},
1937     {   1, "No authentication required"},
1938     {   2, "Authentication required"},
1939     { 128, "Authentication required and UIM capable."},
1940     {   0, NULL }
1941 };
1942
1943 /* 6.5.2.14 AuthorizationPeriod*/
1944
1945 /* Period (octet 1) */
1946 static const value_string ansi_map_authorizationperiod_period_vals[]  = {
1947     {   0, "Not used"},
1948     {   1, "Per Call"},
1949     {   2, "Hours"},
1950     {   3, "Days"},
1951     {   4, "Weeks"},
1952     {   5, "Per Agreement"},
1953     {   6, "Indefinite (i.e., authorized until canceled or deregistered)"},
1954     {   7, "Number of calls. Re-authorization should be attempted after this number of (rejected) call attempts"},
1955     {   0, NULL }
1956 };
1957 /* Value (octet 2)
1958 Number of minutes hours, days, weeks, or
1959 number of calls (as per Period). If Period
1960 indicates anything else the Value is set to zero
1961 on sending and ignored on receipt.
1962 */
1963 static void
1964 dissect_ansi_map_authorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1965
1966     int offset = 0;
1967
1968     proto_tree *subtree;
1969
1970
1971     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1972     proto_tree_add_item(subtree, hf_ansi_map_authorizationperiod_period, tvb, offset, 1, FALSE);
1973     offset++;
1974     proto_tree_add_item(subtree, hf_ansi_map_value, tvb, offset, 1, FALSE);
1975
1976 }
1977 /* 6.5.2.15 AvailabilityType */
1978 static const value_string ansi_map_AvailabilityType_vals[]  = {
1979     {   0, "Not used"},
1980     {   1, "Unspecified MS inactivity type"},
1981     {   0, NULL }
1982 };
1983
1984 /* 6.5.2.16 BillingID */
1985 static void
1986 dissect_ansi_map_billingid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1987
1988     int offset = 0;
1989
1990     proto_tree *subtree;
1991
1992
1993     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1994
1995     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
1996     offset = offset + 2;
1997     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
1998     offset++;
1999     /* ID Number */
2000     proto_tree_add_item(subtree, hf_ansi_map_idno, tvb, offset, 3, FALSE);
2001     offset = offset + 3;
2002     proto_tree_add_item(subtree, hf_ansi_map_segcount, tvb, offset, 1, FALSE);
2003
2004 }
2005
2006
2007 /* 6.5.2.20 CallingFeaturesIndicator */
2008 static const value_string ansi_map_FeatureActivity_vals[]  = {
2009     {   0, "Not used"},
2010     {   1, "Not authorized"},
2011     {   2, "Authorized but de-activated"},
2012     {   3, "Authorized and activated"},
2013     {   0, NULL }
2014 };
2015
2016
2017 static void
2018 dissect_ansi_map_callingfeaturesindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2019     int offset = 0;
2020     int length;
2021
2022     proto_tree *subtree;
2023
2024     length = tvb_length_remaining(tvb,offset);
2025
2026     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2027
2028     /* Call Waiting: FeatureActivity, CW-FA (Octet 1 bits GH )          */
2029     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cwfa, tvb, offset, 1, FALSE);
2030     /* Call Forwarding No Answer FeatureActivity, CFNA-FA (Octet 1 bits EF )    */
2031     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfnafa, tvb, offset, 1, FALSE);
2032     /* Call Forwarding Busy FeatureActivity, CFB-FA (Octet 1 bits CD )  */
2033     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfbfa, tvb, offset, 1, FALSE);
2034     /* Call Forwarding Unconditional FeatureActivity, CFU-FA (Octet 1 bits AB ) */
2035     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfufa, tvb, offset, 1, FALSE);
2036     offset++;
2037     length--;
2038
2039     /* Call Transfer: FeatureActivity, CT-FA (Octet 2 bits GH )         */
2040     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ctfa, tvb, offset, 1, FALSE);
2041     /* Voice Privacy FeatureActivity, VP-FA (Octet 2 bits EF )  */
2042     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_vpfa, tvb, offset, 1, FALSE);
2043     /* Call Delivery: FeatureActivity (not interpreted on reception by IS-41-C or later)
2044        CD-FA (Octet 2 bits CD )         */
2045     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cdfa, tvb, offset, 1, FALSE);
2046     /* Three-Way Calling FeatureActivity, 3WC-FA (Octet 2 bits AB )     */
2047     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_3wcfa, tvb, offset, 1, FALSE);
2048     offset++;
2049     length--;
2050
2051
2052     /* Calling Number Identification Restriction Override FeatureActivity CNIROver-FA (Octet 3 bits GH )        */
2053     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cniroverfa, tvb, offset, 1, FALSE);
2054     /* Calling Number Identification Restriction: FeatureActivity CNIR-FA (Octet 3 bits EF )    */
2055     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnirfa, tvb, offset, 1, FALSE);
2056     /* Calling Number Identification Presentation: FeatureActivity CNIP2-FA (Octet 3 bits CD )  */
2057     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnip2fa, tvb, offset, 1, FALSE);
2058     /* Calling Number Identification Presentation: FeatureActivity CNIP1-FA (Octet 3 bits AB )  */
2059     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnip1fa, tvb, offset, 1, FALSE);
2060     length--;
2061     if ( length == 0)
2062         return;
2063     offset++;
2064
2065     /* USCF divert to voice mail: FeatureActivity USCFvm-FA (Octet 4 bits GH )  */
2066     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfvmfa, tvb, offset, 1, FALSE);
2067     /* Answer Hold: FeatureActivity AH-FA (Octet 4 bits EF ) N.S0029-0 v1.0     */
2068     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ahfa, tvb, offset, 1, FALSE);
2069     /* Data Privacy Feature Activity DP-FA (Octet 4 bits CD ) N.S0008-0 v 1.0   */
2070     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_dpfa, tvb, offset, 1, FALSE);
2071     /* Priority Call Waiting FeatureActivity PCW-FA (Octet 4 bits AB )  */
2072     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_pcwfa, tvb, offset, 1, FALSE);
2073     length--;
2074     if ( length == 0)
2075         return;
2076     offset++;
2077
2078     /* USCF divert to mobile station provided DN:FeatureActivity.USCFms-FA (Octet 5 bits AB ) */
2079     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfmsfa, tvb, offset, 1, FALSE);
2080     /* USCF divert to network registered DN:FeatureActivity. USCFnr-FA (Octet 5 bits CD )*/
2081     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfnrfa, tvb, offset, 1, FALSE);
2082     /* CDMA-Packet Data Service: FeatureActivity. CPDS-FA (Octet 5 bits EF ) N.S0029-0 v1.0*/
2083     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cpdsfa, tvb, offset, 1, FALSE);
2084     /* CDMA-Concurrent Service:FeatureActivity. CCS-FA (Octet 5 bits GH ) N.S0029-0 v1.0*/
2085     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ccsfa, tvb, offset, 1, FALSE);
2086     length--;
2087     if ( length == 0)
2088         return;
2089     offset++;
2090
2091     /* TDMA Enhanced Privacy and Encryption:FeatureActivity.TDMA EPE-FA (Octet 6 bits AB ) N.S0029-0 v1.0*/
2092     proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_epefa, tvb, offset, 1, FALSE);
2093 }
2094
2095
2096 /* 6.5.2.27 CancellationType */
2097 static const value_string ansi_map_CancellationType_vals[]  = {
2098     {   0, "Not used"},
2099     {   1, "ServingSystemOption"},
2100     {   2, "ReportInCall."},
2101     {   3, "Discontinue"},
2102     {   0, NULL }
2103 };
2104
2105 /* 6.5.2.29 CDMACallMode Updated with N.S0029-0 v1.0*/
2106 /* Call Mode (octet 1, bit A) */
2107 static const true_false_string ansi_map_CDMACallMode_cdma_bool_val  = {
2108   "CDMA 800 MHz channel (Band Class 0) acceptable.",
2109   "CDMA 800 MHz channel (Band Class 0) not acceptable"
2110 };
2111 /* Call Mode (octet 1, bit B) */
2112 static const true_false_string ansi_map_CallMode_amps_bool_val  = {
2113     "AAMPS 800 MHz channel acceptable",
2114     "AMPS 800 MHz channel not acceptable"
2115 };
2116 /* Call Mode (octet 1, bit C) */
2117 static const true_false_string ansi_map_CallMode_namps_bool_val  = {
2118     "NAMPS 800 MHz channel acceptable",
2119     "NAMPS 800 MHz channel not acceptable"
2120 };
2121 /* Call Mode (octet 1, bit D) */
2122 static const true_false_string ansi_map_CDMACallMode_cls1_bool_val  = {
2123     "CDMA 1900 MHz channel (Band Class 1) acceptable.",
2124     "CDMA 1900 MHz channel (Band Class 1) not acceptable"
2125 };
2126 /* Call Mode (octet 1, bit E) */
2127 static const true_false_string ansi_map_CDMACallMode_cls2_bool_val  = {
2128     "TACS channel (Band Class 2) acceptable",
2129     "TACS channel (Band Class 2) not acceptable"
2130 };
2131 /* Call Mode (octet 1, bit F) */
2132 static const true_false_string ansi_map_CDMACallMode_cls3_bool_val  = {
2133     "JTACS channel (Band Class 3) acceptable",
2134     "JTACS channel (Band Class 3) not acceptable"
2135 };
2136 /* Call Mode (octet 1, bit G) */
2137 static const true_false_string ansi_map_CDMACallMode_cls4_bool_val  = {
2138     "Korean PCS channel (Band Class 4) acceptable",
2139     "Korean PCS channel (Band Class 4) not acceptable"
2140 };
2141 /* Call Mode (octet 1, bit H) */
2142 static const true_false_string ansi_map_CDMACallMode_cls5_bool_val  = {
2143     "450 MHz channel (Band Class 5) not acceptable",
2144     "450 MHz channel (Band Class 5) not acceptable"
2145 };
2146 /* Call Mode (octet 2, bit A) */
2147 static const true_false_string ansi_map_CDMACallMode_cls6_bool_val  = {
2148     "2 GHz channel (Band Class 6) acceptable.",
2149     "2 GHz channel (Band Class 6) not acceptable."
2150 };
2151
2152 /* Call Mode (octet 2, bit B) */
2153 static const true_false_string ansi_map_CDMACallMode_cls7_bool_val  = {
2154     "700 MHz channel (Band Class 7) acceptable",
2155     "700 MHz channel (Band Class 7) not acceptable"
2156 };
2157
2158 /* Call Mode (octet 2, bit C) */
2159 static const true_false_string ansi_map_CDMACallMode_cls8_bool_val  = {
2160     "1800 MHz channel (Band Class 8) acceptable",
2161     "1800 MHz channel (Band Class 8) not acceptable"
2162 };
2163 /* Call Mode (octet 2, bit D) */
2164 static const true_false_string ansi_map_CDMACallMode_cls9_bool_val  = {
2165     "900 MHz channel (Band Class 9) acceptable",
2166     "900 MHz channel (Band Class 9) not acceptable"
2167 };
2168 /* Call Mode (octet 2, bit E) */
2169 static const true_false_string ansi_map_CDMACallMode_cls10_bool_val  = {
2170     "Secondary 800 MHz channel (Band Class 10) acceptable.",
2171     "Secondary 800 MHz channel (Band Class 10) not acceptable."
2172 };
2173
2174 static void
2175 dissect_ansi_map_cdmacallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2176     int offset = 0;
2177     int length;
2178
2179     proto_tree *subtree;
2180
2181     length = tvb_length_remaining(tvb,offset);
2182
2183
2184     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2185     /* Call Mode (octet 1, bit H) */
2186     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls5, tvb, offset, 1, FALSE);
2187     /* Call Mode (octet 1, bit G) */
2188     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls4, tvb, offset, 1, FALSE);
2189     /* Call Mode (octet 1, bit F) */
2190     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls3, tvb, offset, 1, FALSE);
2191     /* Call Mode (octet 1, bit E) */
2192     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls2, tvb, offset, 1, FALSE);
2193     /* Call Mode (octet 1, bit D) */
2194     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls1, tvb, offset, 1, FALSE);
2195     /* Call Mode (octet 1, bit C) */
2196     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_namps, tvb, offset, 1, FALSE);
2197     /* Call Mode (octet 1, bit B) */
2198     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_amps, tvb, offset, 1, FALSE);
2199     /* Call Mode (octet 1, bit A) */
2200     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cdma, tvb, offset, 1, FALSE);
2201
2202     length--;
2203     if ( length == 0)
2204         return;
2205     offset++;
2206
2207     /* Call Mode (octet 2, bit E) */
2208     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls10, tvb, offset, 1, FALSE);
2209     /* Call Mode (octet 2, bit D) */
2210     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls9, tvb, offset, 1, FALSE);
2211     /* Call Mode (octet 2, bit C) */
2212     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls8, tvb, offset, 1, FALSE);
2213     /* Call Mode (octet 2, bit B) */
2214     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls7, tvb, offset, 1, FALSE);
2215     /* Call Mode (octet 2, bit A) */
2216     proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls6, tvb, offset, 1, FALSE);
2217
2218 }
2219 /* 6.5.2.30 CDMAChannelData */
2220 /* Updated with N.S0010-0 v 1.0 */
2221
2222 static const value_string ansi_map_cdmachanneldata_band_cls_vals[]  = {
2223     {   0, "800 MHz Cellular System"},
2224     {   0, NULL }
2225 };
2226
2227 static void
2228 dissect_ansi_map_cdmachanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2229
2230     int offset = 0;
2231     int length;
2232
2233     proto_tree *subtree;
2234
2235     length = tvb_length_remaining(tvb,offset);
2236
2237
2238     subtree = proto_item_add_subtree(actx->created_item, ett_cdmachanneldata);
2239
2240     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
2241     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_Frame_Offset, tvb, offset, 1, FALSE);
2242     /* CDMA Channel Number */
2243     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_CDMA_ch_no, tvb, offset, 2, FALSE);
2244     offset = offset + 2;
2245     length = length -2;
2246     /* Band Class */
2247     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
2248     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_band_cls, tvb, offset, 1, FALSE);
2249     /* Long Code Mask */
2250     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b6, tvb, offset, 1, FALSE);
2251     offset++;
2252     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b5, tvb, offset, 1, FALSE);
2253     offset++;
2254     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b4, tvb, offset, 1, FALSE);
2255     offset++;
2256     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b3, tvb, offset, 1, FALSE);
2257     offset++;
2258     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b2, tvb, offset, 1, FALSE);
2259     offset++;
2260     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b1, tvb, offset, 1, FALSE);
2261     length = length - 6;
2262     if (length == 0)
2263         return;
2264     offset++;
2265     /* NP_EXT */
2266     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_np_ext, tvb, offset, 1, FALSE);
2267     /* Nominal Power */
2268     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_nominal_pwr, tvb, offset, 1, FALSE);
2269     /* Number Preamble */
2270     proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_nr_preamble, tvb, offset, 1, FALSE);
2271
2272 }
2273 /* 6.5.2.31 CDMACodeChannel */
2274
2275 /* 6.5.2.41 CDMAStationClassMark */
2276 /* Power Class: (PC) (octet 1, bits A and B) */
2277 static const value_string ansi_map_CDMAStationClassMark_pc_vals[]  = {
2278     {   0, "Class I"},
2279     {   1, "Class II"},
2280     {   2, "Class III"},
2281     {   3, "Reserved"},
2282     {   0, NULL }
2283 };
2284 /* Analog Transmission: (DTX) (octet 1, bit C) */
2285 static const true_false_string ansi_map_CDMAStationClassMark_dtx_bool_val  = {
2286     "Discontinuous",
2287     "Continuous"
2288 };
2289 /* Slotted Mode Indicator: (SMI) (octet 1, bit F) */
2290 static const true_false_string ansi_map_CDMAStationClassMark_smi_bool_val  = {
2291     "Slotted capable",
2292     "Slotted incapable"
2293 };
2294 /* Dual-mode Indicator(DMI) (octet 1, bit G) */
2295 static const true_false_string ansi_map_CDMAStationClassMark_dmi_bool_val  = {
2296     "Dual-mode CDMA",
2297     "CDMA only"
2298 };
2299
2300
2301 static void
2302 dissect_ansi_map_cdmastationclassmark(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2303     int offset = 0;
2304
2305     proto_tree *subtree;
2306
2307
2308     subtree = proto_item_add_subtree(actx->created_item, ett_cdmastationclassmark);
2309
2310     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
2311     /* Dual-mode Indicator(DMI) (octet 1, bit G) */
2312     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_dmi, tvb, offset, 1, FALSE);
2313     /* Slotted Mode Indicator: (SMI) (octet 1, bit F) */
2314     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_smi, tvb, offset, 1, FALSE);
2315     proto_tree_add_item(subtree, hf_ansi_map_reservedBitED, tvb, offset, 1, FALSE);
2316     /* Analog Transmission: (DTX) (octet 1, bit C) */
2317     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_dtx, tvb, offset, 1, FALSE);
2318     /* Power Class: (PC) (octet 1, bits A and B) */
2319     proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_pc, tvb, offset, 1, FALSE);
2320 }
2321 /* 6.5.2.47 ChannelData */
2322 /* Discontinuous Transmission Mode (DTX) (octet 1, bits E and D) */
2323 static const value_string ansi_map_ChannelData_dtx_vals[]  = {
2324     {   0, "DTX disabled"},
2325     {   1, "Reserved. Treat the same as value 00, DTX disabled."},
2326     {   2, "DTX-low mode"},
2327     {   3, "DTX mode active or acceptable"},
2328     {   0, NULL }
2329 };
2330
2331
2332 static void
2333 dissect_ansi_map_channeldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2334     int offset = 0;
2335
2336     proto_tree *subtree;
2337
2338
2339     subtree = proto_item_add_subtree(actx->created_item, ett_channeldata);
2340
2341     /* SAT Color Code (SCC) (octet 1, bits H and G) */
2342     proto_tree_add_item(subtree, hf_ansi_map_channeldata_scc, tvb, offset, 1, FALSE);
2343     /* Discontinuous Transmission Mode (DTX) (octet 1, bits E and D) */
2344     proto_tree_add_item(subtree, hf_ansi_map_channeldata_dtx, tvb, offset, 1, FALSE);
2345     /* Voice Mobile Attenuation Code (VMAC) (octet 1, bits A - C)*/
2346     proto_tree_add_item(subtree, hf_ansi_map_channeldata_vmac, tvb, offset, 1, FALSE);
2347
2348     offset++;
2349     /* Channel Number (CHNO) ( octet 2 and 3 ) */
2350     proto_tree_add_item(subtree, hf_ansi_map_channeldata_chno, tvb, offset, 2, FALSE);
2351
2352 }
2353
2354 /* 6.5.2.50 ConfidentialityModes */
2355 /* Updated with N.S0008-0 v 1.0*/
2356 /* Voice Privacy (VP) Confidentiality Status (octet 1, bit A) */
2357
2358 static const true_false_string ansi_map_ConfidentialityModes_bool_val  = {
2359     "On",
2360     "Off"
2361 };
2362 static void
2363 dissect_ansi_map_confidentialitymodes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2364     int offset = 0;
2365
2366     proto_tree *subtree;
2367
2368
2369     subtree = proto_item_add_subtree(actx->created_item, ett_confidentialitymodes);
2370
2371     /* DataPrivacy (DP) Confidentiality Status (octet 1, bit C) */
2372     proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_dp, tvb, offset, 1, FALSE);
2373     /* Signaling Message Encryption (SE) Confidentiality Status (octet 1, bit B) */
2374     proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_se, tvb, offset, 1, FALSE);
2375     /* Voice Privacy (VP) Confidentiality Status (octet 1, bit A) */
2376     proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_vp, tvb, offset, 1, FALSE);
2377
2378 }
2379
2380 /* 6.5.2.51 ControlChannelData */
2381
2382 /* Digital Color Code (DCC) (octet 1, bit H and G) */
2383 /* Control Mobile Attenuation Code (CMAC) (octet 1, bit A - C) */
2384 /* Channel Number (CHNO) ( octet 2 and 3 ) */
2385 /* Supplementary Digital Color Codes (SDCC1 and SDCC2) */
2386 /* SDCC1 ( octet 4, bit D and C )*/
2387 /* SDCC2 ( octet 4, bit A and B )*/
2388
2389 static void
2390 dissect_ansi_map_controlchanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2391     int offset = 0;
2392
2393     proto_tree *subtree;
2394
2395
2396     subtree = proto_item_add_subtree(actx->created_item, ett_controlchanneldata);
2397
2398     /* Digital Color Code (DCC) (octet 1, bit H and G) */
2399     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_dcc, tvb, offset, 1, FALSE);
2400     proto_tree_add_item(subtree, hf_ansi_map_reservedBitFED, tvb, offset, 1, FALSE);
2401     /* Control Mobile Attenuation Code (CMAC) (octet 1, bit A - C) */
2402     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_cmac, tvb, offset, 1, FALSE);
2403     offset++;
2404     /* Channel Number (CHNO) ( octet 2 and 3 ) */
2405     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_chno, tvb, offset, 2, FALSE);
2406     /* Supplementary Digital Color Codes (SDCC1 and SDCC2) */
2407     offset = offset +2;
2408     /* SDCC1 ( octet 4, bit D and C )*/
2409     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_sdcc1, tvb, offset, 1, FALSE);
2410     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHGFE, tvb, offset, 1, FALSE);
2411     /* SDCC2 ( octet 4, bit A and B )*/
2412     proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_sdcc2, tvb, offset, 1, FALSE);
2413
2414 }
2415
2416 /* 6.5.2.52 CountUpdateReport */
2417 static const value_string ansi_map_CountUpdateReport_vals[]  = {
2418     {   0, "Class I"},
2419     {   1, "Class II"},
2420     {   2, "Class III"},
2421     {   3, "Reserved"},
2422     {   0, NULL }
2423 };
2424
2425 /* 6.5.2.53 DeniedAuthorizationPeriod */
2426 /* Period (octet 1) */
2427 static const value_string ansi_map_deniedauthorizationperiod_period_vals[]  = {
2428     {   0, "Not used"},
2429     {   1, "Per Call. Re-authorization should be attempted on the next call attempt"},
2430     {   2, "Hours"},
2431     {   3, "Days"},
2432     {   4, "Weeks"},
2433     {   5, "Per Agreement"},
2434     {   6, "Reserved"},
2435     {   7, "Number of calls. Re-authorization should be attempted after this number of (rejected) call attempts"},
2436     {   8, "Minutes"},
2437     {   0, NULL }
2438 };
2439 /* Value (octet 2)
2440 Number of minutes hours, days, weeks, or
2441 number of calls (as per Period). If Period
2442 indicates anything else the Value is set to zero
2443 on sending and ignored on receipt.
2444 */
2445
2446 static void
2447 dissect_ansi_map_deniedauthorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2448
2449     int offset = 0;
2450
2451     proto_tree *subtree;
2452
2453
2454     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2455     proto_tree_add_item(subtree, hf_ansi_map_deniedauthorizationperiod_period, tvb, offset, 1, FALSE);
2456     offset++;
2457     proto_tree_add_item(subtree, hf_ansi_map_value, tvb, offset, 1, FALSE);
2458
2459 }
2460
2461
2462 /* 6.5.2.57 DigitCollectionControl */
2463 /* TODO Add decoding here */
2464
2465 /* 6.5.2.64 ExtendedMSCID */
2466 static const value_string ansi_map_msc_type_vals[]  = {
2467     {   0, "Not specified"},
2468     {   1, "Serving MSC"},
2469     {   2, "Home MSC"},
2470     {   3, "Gateway MSC"},
2471     {   4, "HLR"},
2472     {   5, "VLR"},
2473     {   6, "EIR (reserved)"},
2474     {   7, "AC"},
2475     {   8, "Border MSC"},
2476     {   9, "Originating MSC"},
2477     {   0, NULL }
2478 };
2479
2480 static void
2481 dissect_ansi_map_extendedmscid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2482
2483     int offset = 0;
2484
2485     proto_tree *subtree;
2486
2487
2488     subtree = proto_item_add_subtree(actx->created_item, ett_extendedmscid);
2489     /* Type (octet 1) */
2490     proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE);
2491     offset++;
2492     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
2493     offset = offset + 2;
2494     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
2495
2496 }
2497 /* 6.5.2.65 ExtendedSystemMyTypeCode */
2498 static void
2499 dissect_ansi_map_extendedsystemmytypecode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx){
2500
2501     int offset = 0;
2502
2503     proto_tree *subtree;
2504
2505
2506     subtree = proto_item_add_subtree(actx->created_item, ett_extendedsystemmytypecode);
2507     /* Type (octet 1) */
2508     proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE);
2509     offset++;
2510     offset = dissect_ansi_map_SystemMyTypeCode(TRUE, tvb, offset, actx, subtree, hf_ansi_map_systemMyTypeCode);
2511 }
2512
2513
2514 /* 6.5.2.68 GeographicAuthorization */
2515 /* Geographic Authorization (octet 1) */
2516 static const value_string ansi_map_GeographicAuthorization_vals[]  = {
2517     {   0, "Not used"},
2518     {   1, "Authorized for all MarketIDs served by the VLR"},
2519     {   2, "Authorized for this MarketID only"},
2520     {   3, "Authorized for this MarketID and Switch Number only"},
2521     {   4, "Authorized for this LocationAreaID within a MarketID only"},
2522     {   5, "VLR"},
2523     {   6, "EIR (reserved)"},
2524     {   7, "AC"},
2525     {   8, "Border MSC"},
2526     {   9, "Originating MSC"},
2527     {   0, NULL }
2528 };
2529
2530 /* 6.5.2.71 HandoffState */
2531 /* Party Involved (PI) (octet 1, bit A) */
2532 static const true_false_string ansi_map_HandoffState_pi_bool_val  = {
2533     "Terminator is handing off",
2534     "Originator is handing off"
2535 };
2536 static void
2537 dissect_ansi_map_handoffstate(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2538
2539     int offset = 0;
2540
2541     proto_tree *subtree;
2542
2543
2544     subtree = proto_item_add_subtree(actx->created_item, ett_handoffstate);
2545     /* Party Involved (PI) (octet 1, bit A) */
2546     proto_tree_add_item(subtree, hf_ansi_map_handoffstate_pi, tvb, offset, 1, FALSE);
2547 }
2548
2549 /* 6.5.2.72 InterMSCCircuitID */
2550 /* Trunk Member Number (M) Octet2 */
2551 static void
2552 dissect_ansi_map_intermsccircuitid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2553
2554     int offset = 0;
2555
2556     proto_tree *subtree;
2557     guint8 octet, octet2;
2558
2559
2560     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2561     /* Trunk Group Number (G) Octet 1 */
2562     octet = tvb_get_guint8(tvb,offset);
2563     proto_tree_add_item(subtree, hf_ansi_map_tgn, tvb, offset, 1, FALSE);
2564     offset++;
2565     /* Trunk Member Number (M) Octet2 */
2566     octet2 = tvb_get_guint8(tvb,offset);
2567     proto_tree_add_item(subtree, hf_ansi_map_tmn, tvb, offset, 1, FALSE);
2568     proto_item_append_text(actx->created_item, " (G %u/M %u)", octet, octet2);
2569 }
2570
2571 /* 6.5.2.78 MessageWaitingNotificationCount */
2572 /* Type of messages (octet 1) */
2573 static const value_string ansi_map_MessageWaitingNotificationCount_type_vals[]  = {
2574     {   0, "Voice messages"},
2575     {   1, "Short Message Services (SMS) messages"},
2576     {   2, "Group 3 (G3) Fax messages"},
2577     {   0, NULL }
2578 };
2579
2580 static void
2581 dissect_ansi_map_messagewaitingnotificationcount(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2582
2583     int offset = 0;
2584
2585     proto_tree *subtree;
2586
2587
2588     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2589     /* Type of messages (octet 1) */
2590     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationcount_tom, tvb, offset, 1, FALSE);
2591     offset++;
2592     /* Number of Messages Waiting (octet 2) */
2593     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationcount_no_mw, tvb, offset, 1, FALSE);
2594
2595 }
2596
2597 /* 6.5.2.79 MessageWaitingNotificationType */
2598 /* Pip Tone (PT) (octet 1, bit A) */
2599 static const true_false_string ansi_map_MessageWaitingNotificationType_pt_bool_val  = {
2600     "Pip Tone (PT) notification is required",
2601     "Pip Tone (PT) notification is not authorized or no notification is required"
2602 };
2603 /* Alert Pip Tone (APT) (octet 1, bit B) */
2604 static const true_false_string ansi_map_MessageWaitingNotificationType_apt_bool_val  = {
2605     "Alert Pip Tone (APT) notification is required",
2606     "Alert Pip Tone (APT) notification is not authorized or notification is not required"
2607 };
2608 /* Message Waiting Indication (MWI) (octet 1, bits C and D) */
2609 static const value_string ansi_map_MessageWaitingNotificationType_mwi_vals[]  = {
2610     {   0, "No MWI. Message Waiting Indication (MWI) notification is not authorized or notification is not required"},
2611     {   1, "Reserved"},
2612     {   2, "MWI On. Message Waiting Indication (MWI) notification is required. Messages waiting"},
2613     {   3, "MWI Off. Message Waiting Indication (MWI) notification is required. No messages waiting"},
2614     {   0, NULL }
2615 };
2616
2617 static void
2618 dissect_ansi_map_messagewaitingnotificationtype(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2619
2620     int offset = 0;
2621
2622     proto_tree *subtree;
2623
2624
2625     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2626
2627     /* Message Waiting Indication (MWI) (octet 1, bits C and D) */
2628     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_mwi, tvb, offset, 1, FALSE);
2629     /* Alert Pip Tone (APT) (octet 1, bit B) */
2630     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_apt, tvb, offset, 1, FALSE);
2631     /* Pip Tone (PT) (octet 1, bit A) */
2632     proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_pt, tvb, offset, 1, FALSE);
2633 }
2634
2635 /* 6.5.2.81 MobileIdentificationNumber */
2636
2637 /* 6.5.2.82 MSCID */
2638
2639 static void
2640 dissect_ansi_map_mscid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2641     int offset = 0;
2642
2643     proto_tree *subtree;
2644
2645
2646     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2647
2648     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
2649     offset = offset + 2;
2650     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
2651 }
2652
2653
2654 /* 6.5.2.84 MSLocation */
2655 static void
2656 dissect_ansi_map_mslocation(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2657     int offset = 0;
2658
2659     proto_tree *subtree;
2660
2661
2662     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2663
2664     /* Latitude in tenths of a second octet 1 - 3 */
2665     proto_tree_add_item(subtree, hf_ansi_map_mslocation_lat, tvb, offset, 3, FALSE);
2666     offset = offset + 3;
2667     /* Longitude in tenths of a second octet 4 - 6 */
2668     proto_tree_add_item(subtree, hf_ansi_map_mslocation_long, tvb, offset, 3, FALSE);
2669     offset = offset + 3;
2670     /* Resolution in units of 1 foot octet 7, octet 8 optional */
2671     proto_tree_add_item(subtree, hf_ansi_map_mslocation_res, tvb, offset, -1, FALSE);
2672
2673 }
2674 /* 6.5.2.85 NAMPSCallMode */
2675 static void
2676 dissect_ansi_map_nampscallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2677     int offset = 0;
2678     proto_tree *subtree;
2679
2680
2681     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2682
2683     /* Call Mode (octet 1, bits A and B) */
2684     proto_tree_add_item(subtree, hf_ansi_map_nampscallmode_amps, tvb, offset, 1, FALSE);
2685     proto_tree_add_item(subtree, hf_ansi_map_nampscallmode_namps, tvb, offset, 1, FALSE);
2686 }
2687
2688 /* 6.5.2.86 NAMPSChannelData */
2689 /* Narrow Analog Voice Channel Assignment (NAVCA) (octet 1, bits A and B) */
2690 static const value_string ansi_map_NAMPSChannelData_navca_vals[]  = {
2691     {   0, "Wide. 30 kHz AMPS voice channel"},
2692     {   1, "Upper. 10 kHz NAMPS voice channel"},
2693     {   2, "Middle. 10 kHz NAMPS voice channel"},
2694     {   3, "Lower. 10 kHz NAMPS voice channel"},
2695     {   0, NULL }
2696 };
2697 /* Color Code Indicator (CCIndicator) (octet 1, bits C, D, and E) */
2698 static const value_string ansi_map_NAMPSChannelData_ccinidicator_vals[]  = {
2699     {   0, "ChannelData parameter SCC field applies"},
2700     {   1, "Digital SAT Color Code 1 (ignore SCC field)"},
2701     {   2, "Digital SAT Color Code 2 (ignore SCC field)"},
2702     {   3, "Digital SAT Color Code 3 (ignore SCC field)"},
2703     {   4, "Digital SAT Color Code 4 (ignore SCC field)"},
2704     {   5, "Digital SAT Color Code 5 (ignore SCC field)"},
2705     {   6, "Digital SAT Color Code 6 (ignore SCC field)"},
2706     {   7, "Digital SAT Color Code 7 (ignore SCC field)"},
2707     {   0, NULL }
2708 };
2709
2710
2711
2712 static void
2713 dissect_ansi_map_nampschanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2714     int offset = 0;
2715     proto_tree *subtree;
2716
2717
2718     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2719
2720     /* Color Code Indicator (CCIndicator) (octet 1, bits C, D, and E) */
2721     proto_tree_add_item(subtree, hf_ansi_map_nampschanneldata_CCIndicator, tvb, offset, 1, FALSE);
2722     /* Narrow Analog Voice Channel Assignment (NAVCA) (octet 1, bits A and B) */
2723     proto_tree_add_item(subtree, hf_ansi_map_nampschanneldata_navca, tvb, offset, 1, FALSE);
2724
2725 }
2726
2727 /* 6.5.2.88 OneTimeFeatureIndicator */
2728 /* updated with N.S0012 */
2729 /* Call Waiting for Future Incoming Call (CWFI) (octet 1, bits A and B) */
2730 /* Call Waiting for Incoming Call (CWIC) (octet 1, bits C and D) */
2731
2732 static const value_string ansi_map_onetimefeatureindicator_cw_vals[]  = {
2733     {   0, "Ignore"},
2734     {   1, "No CW"},
2735     {   2, "Normal CW"},
2736     {   3, "Priority CW"},
2737     {   0, NULL }
2738 };
2739 /* MessageWaitingNotification (MWN) (octet 1, bits E and F) */
2740 static const value_string ansi_map_onetimefeatureindicator_mwn_vals[]  = {
2741     {   0, "Ignore"},
2742     {   1, "Pip Tone Inactive"},
2743     {   2, "Pip Tone Active"},
2744     {   3, "Reserved"},
2745     {   0, NULL }
2746 };
2747 /* Calling Number Identification Restriction (CNIR) (octet 1, bits G and H)*/
2748 static const value_string ansi_map_onetimefeatureindicator_cnir_vals[]  = {
2749     {   0, "Ignore"},
2750     {   1, "CNIR Inactive"},
2751     {   2, "CNIR Active"},
2752     {   3, "Reserved"},
2753     {   0, NULL }
2754 };
2755
2756 /* Priority Access and Channel Assignment (PACA) (octet 2, bits A and B)*/
2757 static const value_string ansi_map_onetimefeatureindicator_paca_vals[]  = {
2758     {   0, "Ignore"},
2759     {   1, "PACA Demand Inactive"},
2760     {   2, "PACA Demand Activated"},
2761     {   3, "Reserved"},
2762     {   0, NULL }
2763 };
2764
2765 /* Flash Privileges (Flash) (octet 2, bits C and D) */
2766 static const value_string ansi_map_onetimefeatureindicator_flash_vals[]  = {
2767     {   0, "Ignore"},
2768     {   1, "Flash Inactive"},
2769     {   2, "Flash Active"},
2770     {   3, "Reserved"},
2771     {   0, NULL }
2772 };
2773 /* Calling Name Restriction (CNAR) (octet 2, bits E and F) */
2774 static const value_string ansi_map_onetimefeatureindicator_cnar_vals[]  = {
2775     {   0, "Ignore"},
2776     {   1, "Presentation Allowed"},
2777     {   2, "Presentation Restricted."},
2778     {   3, "Blocking Toggle"},
2779     {   0, NULL }
2780 };
2781 static void
2782 dissect_ansi_map_onetimefeatureindicator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2783     int offset = 0;
2784     proto_tree *subtree;
2785
2786
2787     subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2788
2789     /* Calling Number Identification Restriction (CNIR) (octet 1, bits G and H)*/
2790     /* MessageWaitingNotification (MWN) (octet 1, bits E and F) */
2791     /* Call Waiting for Incoming Call (CWIC) (octet 1, bits C and D) */
2792     /* Call Waiting for Future Incoming Call (CWFI) (octet 1, bits A and B) */
2793     offset++;
2794     /* Calling Name Restriction (CNAR) (octet 2, bits E and F) */
2795     /* Flash Privileges (Flash) (octet 2, bits C and D) */
2796     /* Priority Access and Channel Assignment (PACA) (octet 2, bits A and B)*/
2797
2798
2799 }
2800
2801 /* 6.5.2.90 OriginationTriggers */
2802 /* All Origination (All) (octet 1, bit A) */
2803 static const true_false_string ansi_map_originationtriggers_all_bool_val  = {
2804     "Launch an OriginationRequest for any call attempt. This overrides all other values",
2805     "Trigger is not active"
2806 };
2807
2808 /* Local (octet 1, bit B) */
2809 static const true_false_string ansi_map_originationtriggers_local_bool_val  = {
2810     "Launch an OriginationRequest for any local call attempt",
2811     "Trigger is not active"
2812 };
2813
2814 /* Intra-LATA Toll (ILATA) (octet 1, bit C) */
2815 static const true_false_string ansi_map_originationtriggers_ilata_bool_val  = {
2816     "Launch an OriginationRequest for any intra-LATA call attempt",
2817     "Trigger is not active"
2818 };
2819 /* Inter-LATA Toll (OLATA) (octet 1, bit D) */
2820 static const true_false_string ansi_map_originationtriggers_olata_bool_val  = {
2821     "Launch an OriginationRequest for any inter-LATA toll call attempt",
2822     "Trigger is not active"
2823 };
2824 /* International (Int'l ) (octet 1, bit E) */
2825 static const true_false_string ansi_map_originationtriggers_int_bool_val  = {
2826     "Launch an OriginationRequest for any international call attempt",
2827     "Trigger is not active"
2828 };
2829 /* World Zone (WZ) (octet 1, bit F) */
2830 static const true_false_string ansi_map_originationtriggers_wz_bool_val  = {
2831     "Launch an OriginationRequest for any call attempt outside of the current World Zone (as defined in ITU-T Rec. E.164)",
2832     "Trigger is not active"
2833 };
2834
2835 /* Unrecognized Number (Unrec) (octet 1, bit G) */
2836 static const true_false_string ansi_map_originationtriggers_unrec_bool_val  = {
2837     "Launch an OriginationRequest for any call attempt to an unrecognized number",
2838     "Trigger is not active"
2839 };
2840 /* Revertive Call (RvtC) (octet 1, bit H)*/
2841 static const true_false_string ansi_map_originationtriggers_rvtc_bool_val  = {
2842     "Launch an OriginationRequest for any Revertive Call attempt",
2843     "Trigger is not active"
2844 };
2845
2846 /* Star (octet 2, bit A) */
2847 static const true_false_string ansi_map_originationtriggers_star_bool_val  = {
2848     "Launch an OriginationRequest for any number beginning with a Star '*' digit",
2849     "Trigger is not active"
2850 };
2851
2852 /* Double Star (DS) (octet 2, bit B) */
2853 static const true_false_string ansi_map_originationtriggers_ds_bool_val  = {
2854     "Launch an OriginationRequest for any number beginning with two Star '**' digits",
2855     "Trigger is not active"
2856 };
2857 /* Pound (octet 2, bit C) */
2858 static const true_false_string ansi_map_originationtriggers_pound_bool_val  = {
2859     "Launch an OriginationRequest for any number beginning with a Pound '#' digit",
2860     "Trigger is not active"
2861 };
2862 /* Double Pound (DP) (octet 2, bit D) */
2863 static const true_false_string ansi_map_originationtriggers_dp_bool_val  = {
2864     "Launch an OriginationRequest for any number beginning with two Pound '##' digits",
2865     "Trigger is not active"
2866 };
2867 /* Prior Agreement (PA) (octet 2, bit E) */
2868 static const true_false_string ansi_map_originationtriggers_pa_bool_val  = {
2869     "Launch an OriginationRequest for any number matching a criteria of a prior agreement",
2870     "Trigger is not active"
2871 };
2872
2873 /* No digits (octet 3, bit A) */
2874 static const true_false_string ansi_map_originationtriggers_nodig_bool_val  = {
2875     "Launch an OriginationRequest for any call attempt with no digits",
2876     "Trigger is not active"
2877 };
2878
2879 /* 1 digit (octet 3, bit B) */
2880 static const true_false_string ansi_map_originationtriggers_onedig_bool_val  = {
2881     "Launch an OriginationRequest for any call attempt with 1 digit",
2882     "Trigger is not active"
2883 };
2884 /* 1 digit (octet 3, bit C) */
2885 static const true_false_string ansi_map_originationtriggers_twodig_bool_val  = {
2886     "Launch an OriginationRequest for any call attempt with 2 digits",
2887     "Trigger is not active"
2888 };
2889 /* 1 digit (octet 3, bit D) */
2890 static const true_false_string ansi_map_originationtriggers_threedig_bool_val  = {
2891     "Launch an OriginationRequest for any call attempt with 3 digits",
2892     "Trigger is not active"
2893 };
2894 /* 1 digit (octet 3, bit E) */
2895 static const true_false_string ansi_map_originationtriggers_fourdig_bool_val  = {
2896     "Launch an OriginationRequest for any call attempt with 4 digits",
2897     "Trigger is not active"
2898 };
2899 /* 1 digit (octet 3, bit F) */
2900 static const true_false_string ansi_map_originationtriggers_fivedig_bool_val  = {
2901     "Launch an OriginationRequest for any call attempt with 5 digits",
2902     "Trigger is not active"
2903 };
2904 /* 1 digit (octet 3, bit G) */
2905 static const true_false_string ansi_map_originationtriggers_sixdig_bool_val  = {
2906     "Launch an OriginationRequest for any call attempt with 6 digits",
2907     "Trigger is not active"
2908 };
2909 /* 1 digit (octet 3, bit H) */
2910 static const true_false_string ansi_map_originationtriggers_sevendig_bool_val  = {
2911     "Launch an OriginationRequest for any call attempt with 7 digits",
2912     "Trigger is not active"
2913 };
2914 /* 1 digit (octet 4, bit A) */
2915 static const true_false_string ansi_map_originationtriggers_eightdig_bool_val  = {
2916     "Launch an OriginationRequest for any call attempt with 8 digits",
2917     "Trigger is not active"
2918 };
2919 /* 1 digit (octet 4, bit B) */
2920 static const true_false_string ansi_map_originationtriggers_ninedig_bool_val  = {
2921     "Launch an OriginationRequest for any call attempt with 9 digits",
2922     "Trigger is not active"
2923 };
2924 /* 1 digit (octet 4, bit C) */
2925 static const true_false_string ansi_map_originationtriggers_tendig_bool_val  = {
2926     "Launch an OriginationRequest for any call attempt with 10 digits",
2927     "Trigger is not active"
2928 };
2929 /* 1 digit (octet 4, bit D) */
2930 static const true_false_string ansi_map_originationtriggers_elevendig_bool_val  = {
2931     "Launch an OriginationRequest for any call attempt with 11 digits",
2932     "Trigger is not active"
2933 };
2934 /* 1 digit (octet 4, bit E) */
2935 static const true_false_string ansi_map_originationtriggers_twelvedig_bool_val  = {
2936     "Launch an OriginationRequest for any call attempt with 12 digits",
2937     "Trigger is not active"
2938 };
2939 /* 1 digit (octet 4, bit F) */
2940 static const true_false_string ansi_map_originationtriggers_thirteendig_bool_val  = {
2941     "Launch an OriginationRequest for any call attempt with 13 digits",
2942     "Trigger is not active"
2943 };
2944 /* 1 digit (octet 4, bit G) */
2945 static const true_false_string ansi_map_originationtriggers_fourteendig_bool_val  = {
2946     "Launch an OriginationRequest for any call attempt with 14 digits",
2947     "Trigger is not active"
2948 };
2949 /* 1 digit (octet 4, bit H) */
2950 static const true_false_string ansi_map_originationtriggers_fifteendig_bool_val  = {
2951     "Launch an OriginationRequest for any call attempt with 15 digits",
2952     "Trigger is not active"
2953 };
2954
2955 static void
2956 dissect_ansi_map_originationtriggers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2957
2958     int offset = 0;
2959     proto_tree *subtree;
2960
2961
2962     subtree = proto_item_add_subtree(actx->created_item, ett_originationtriggers);
2963
2964     /* Revertive Call (RvtC) (octet 1, bit H)*/
2965     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_rvtc, tvb, offset,     1, FALSE);
2966     /* Unrecognized Number (Unrec) (octet 1, bit G) */
2967     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_unrec, tvb, offset,    1, FALSE);
2968     /* World Zone (WZ) (octet 1, bit F) */
2969     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_wz, tvb, offset,       1, FALSE);
2970     /* International (Int'l ) (octet 1, bit E) */
2971     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_int, tvb, offset,      1, FALSE);
2972     /* Inter-LATA Toll (OLATA) (octet 1, bit D) */
2973     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_olata, tvb, offset,    1, FALSE);
2974     /* Intra-LATA Toll (ILATA) (octet 1, bit C) */
2975     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ilata, tvb, offset,    1, FALSE);
2976     /* Local (octet 1, bit B) */
2977     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_local, tvb, offset,    1, FALSE);
2978     /* All Origination (All) (octet 1, bit A) */
2979     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_all, tvb, offset,      1, FALSE);
2980     offset++;
2981
2982     /*Prior Agreement (PA) (octet 2, bit E) */
2983     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_pa, tvb, offset,       1, FALSE);
2984     /* Double Pound (DP) (octet 2, bit D) */
2985     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_dp, tvb, offset,       1, FALSE);
2986     /* Pound (octet 2, bit C) */
2987     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_pound, tvb, offset,    1, FALSE);
2988     /* Double Star (DS) (octet 2, bit B) */
2989     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ds, tvb, offset,       1, FALSE);
2990     /* Star (octet 2, bit A) */
2991     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_star, tvb, offset,     1, FALSE);
2992     offset++;
2993
2994     /* 7 digit (octet 3, bit H) */
2995     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_sevendig, tvb, offset, 1, FALSE);
2996     /* 6 digit (octet 3, bit G) */
2997     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_sixdig, tvb, offset,   1, FALSE);
2998     /* 5 digit (octet 3, bit F) */
2999     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fivedig, tvb, offset,  1, FALSE);
3000     /* 4 digit (octet 3, bit E) */
3001     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fourdig, tvb, offset,  1, FALSE);
3002     /* 3 digit (octet 3, bit D) */
3003     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_threedig, tvb, offset, 1, FALSE);
3004     /* 2 digit (octet 3, bit C) */
3005     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_twodig, tvb, offset,   1, FALSE);
3006     /* 1 digit (octet 3, bit B) */
3007     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_onedig, tvb, offset,   1, FALSE);
3008     /* No digits (octet 3, bit A) */
3009     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_nodig, tvb, offset,    1, FALSE);
3010     offset++;
3011
3012     /* 15 digit (octet 4, bit H) */
3013     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fifteendig, tvb, offset,       1, FALSE);
3014     /* 14 digit (octet 4, bit G) */
3015     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fourteendig, tvb, offset,      1, FALSE);
3016     /* 13 digit (octet 4, bit F) */
3017     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_thirteendig, tvb, offset,      1, FALSE);
3018     /* 12 digit (octet 4, bit E) */
3019     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_twelvedig, tvb, offset,        1, FALSE);
3020     /* 11 digit (octet 4, bit D) */
3021     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_elevendig, tvb, offset,        1, FALSE);
3022     /* 10 digit (octet 4, bit C) */
3023     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_tendig, tvb, offset,   1, FALSE);
3024     /* 9 digit (octet 4, bit B) */
3025     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ninedig, tvb, offset,  1, FALSE);
3026     /* 8 digits (octet 4, bit A) */
3027     proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_eightdig, tvb, offset, 1, FALSE);
3028
3029 }
3030
3031 /* 6.5.2.91 PACAIndicator */
3032
3033 /* Permanent Activation (PA) (octet 1, bit A) */
3034 static const true_false_string ansi_map_pacaindicator_pa_bool_val  = {
3035     "PACA is permanently activated",
3036     "PACA is not permanently activated"
3037 };
3038
3039 static const value_string ansi_map_PACA_Level_vals[]  = {
3040     {   0, "Not used"},
3041     {   1, "Priority Level. 1 This is the highest level"},
3042     {   2, "Priority Level 2"},
3043     {   3, "Priority Level 3"},
3044     {   4, "Priority Level 4"},
3045     {   5, "Priority Level 5"},
3046     {   6, "Priority Level 6"},
3047     {   7, "Priority Level 7"},
3048     {   8, "Priority Level 8"},
3049     {   9, "Priority Level 9"},
3050     {   10, "Priority Level 10"},
3051     {   11, "Priority Level 11"},
3052     {   12, "Priority Level 12"},
3053     {   13, "Priority Level 13"},
3054     {   14, "Priority Level 14"},
3055     {   15, "Priority Level 15"},
3056     {   0, NULL }
3057 };
3058
3059 static void
3060 dissect_ansi_map_pacaindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3061
3062     int offset = 0;
3063     proto_tree *subtree;
3064
3065
3066     subtree = proto_item_add_subtree(actx->created_item, ett_pacaindicator);
3067     /* PACA Level (octet 1, bits B-E) */
3068     proto_tree_add_item(subtree, hf_ansi_map_PACA_Level, tvb, offset,   1, FALSE);
3069     /* Permanent Activation (PA) (octet 1, bit A) */
3070     proto_tree_add_item(subtree, hf_ansi_map_pacaindicator_pa, tvb, offset,     1, FALSE);
3071 }
3072
3073 /* 6.5.2.92 PageIndicator */
3074 static const value_string ansi_map_PageIndicator_vals[]  = {
3075     {   0, "Not used"},
3076     {   1, "Page"},
3077     {   2, "Listen only"},
3078     {   0, NULL }
3079 };
3080
3081 /* 6.5.2.93 PC_SSN */
3082 static void
3083 dissect_ansi_map_pc_ssn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3084
3085     int offset = 0;
3086     proto_tree *subtree;
3087     guint8 b1,b2,b3,b4;
3088
3089
3090     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
3091     /* Type (octet 1) */
3092     proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE);
3093     offset++;
3094     /* Point Code Member Number octet 2 */
3095     b1 = tvb_get_guint8(tvb,offset);
3096     offset++;
3097     /* Point Code Cluster Number octet 3 */
3098     b2 = tvb_get_guint8(tvb,offset);
3099     offset++;
3100     /* Point Code Network Number octet 4 */
3101     b3 = tvb_get_guint8(tvb,offset);
3102     offset++;
3103     /* Subsystem Number (SSN) octet 5 */
3104     b4 = tvb_get_guint8(tvb,offset);
3105     proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u  SSN %u",
3106                         b3, b2, b1, b4);
3107
3108 }
3109 /* 6.5.2.94 PilotBillingID */
3110 static void
3111 dissect_ansi_map_pilotbillingid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3112
3113     int offset = 0;
3114     proto_tree *subtree;
3115
3116
3117     subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
3118     /* First Originating MarketID octet 1 and 2 */
3119     proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
3120     offset = offset + 2;
3121     /* First Originating Switch Number octet 3*/
3122     proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
3123     offset++;
3124     /* ID Number */
3125     proto_tree_add_item(subtree, hf_ansi_map_idno, tvb, offset, 3, FALSE);
3126     offset = offset + 3;
3127     proto_tree_add_item(subtree, hf_ansi_map_segcount, tvb, offset, 1, FALSE);
3128
3129 }
3130 /* 6.5.2.96 PreferredLanguageIndicator */
3131 static const value_string ansi_map_PreferredLanguageIndicator_vals[]  = {
3132     {   0, "Unspecified"},
3133     {   1, "English"},
3134     {   2, "French"},
3135     {   3, "Spanish"},
3136     {   4, "German"},
3137     {   5, "Portuguese"},
3138     {   0, NULL }
3139 };
3140
3141 /* 6.5.2.106 ReceivedSignalQuality */
3142 /* a. This octet is encoded the same as octet 1 in the SignalQuality parameter (see
3143    6.5.2.121).
3144 */
3145 /* 6.5.2.118 SetupResult */
3146 static const value_string ansi_map_SetupResult_vals[]  = {
3147     {   0, "Not used"},
3148     {   1, "Unsuccessful"},
3149     {   2, "Successful"},
3150     {   0, NULL }
3151 };
3152 /* 6.5.2.121 SignalQuality */
3153 /* TODO */
3154
3155 /*      6.5.2.122 SMS_AccessDeniedReason (TIA/EIA-41.5-D, page 5-256)
3156         N.S0011-0 v 1.0
3157 */
3158 static const value_string ansi_map_SMS_AccessDeniedReason_vals[]  = {
3159     {   0, "Not used"},
3160     {   1, "Denied"},
3161     {   2, "Postponed"},
3162     {   3, "Unavailable"},
3163     {   4, "Invalid"},
3164     {   0, NULL }
3165 };
3166
3167
3168 /* 6.5.2.125 SMS_CauseCode (TIA/EIA-41.5-D, page 5-262)
3169    N.S0011-0 v 1.0
3170 */
3171 static const value_string ansi_map_SMS_CauseCode_vals[]  = {
3172     {   0, "Address vacant"},
3173     {   1, "Address translation failure"},
3174     {   2, "Network resource shortage"},
3175     {   3, "Network failure"},
3176     {   4, "Invalid Teleservice ID"},
3177     {   5, "Other network problem"},
3178     {   6, "Unsupported network interface"},
3179     {   8, "CDMA handset-based position determination failure"},
3180     {   9, "CDMA handset-based position determination resources released - voice service request"},
3181     {   10, "CDMA handset-based position determination resources released - voice service request - message acknowledged"},
3182     {   11, "Reserved"},
3183     {   12, "Reserved"},
3184     {   13, "Reserved"},
3185     {   14, "Emergency Services Call Precedence"},
3186     {   32, "No page response"},
3187     {   33, "Destination busy"},
3188     {   34, "No acknowledgment"},
3189     {   35, "Destination resource shortage"},
3190     {   36, "SMS delivery postponed"},
3191     {   37, "Destination out of service"},
3192     {   38, "Destination no longer at this address"},
3193     {   39, "Other terminal problem"},
3194     {   64, "Radio interface resource shortage"},
3195     {   65, "Radio interface incompatibility"},
3196     {   66, "Other radio interface problem"},
3197     {   67, "Unsupported Base Station Capability"},
3198     {   96, "Encoding problem"},
3199     {   97, "Service origination denied"},
3200     {   98, "Service termination denied"},
3201     {   99, "Supplementary service not supported"},
3202     {   100, "Service not supported"},
3203     {   101, "Reserved"},
3204     {   102, "Missing expected parameter"},
3205     {   103, "Missing mandatory parameter"},
3206     {   104, "Unrecognized parameter value"},
3207     {   105, "Unexpected parameter value"},
3208     {   106, "User Data size error"},
3209     {   107, "Other general problems"},
3210     {   108, "Session not active"},
3211     {   109, "Reserved"},
3212     {   110, "MS Disconnect"},
3213     {   0, NULL }
3214 };
3215 static value_string_ext ansi_map_SMS_CauseCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_SMS_CauseCode_vals);
3216
3217 /* 6.5.2.126 SMS_ChargeIndicator */
3218 /* SMS Charge Indicator (octet 1) */
3219 static const value_string ansi_map_SMS_ChargeIndicator_vals[]  = {
3220     {   0, "Not used"},
3221     {   1, "No charge"},
3222     {   2, "Charge original originator"},
3223     {   3, "Charge original destination"},
3224     {   0, NULL }
3225 };
3226 /*      4 through 63 Reserved. Treat the same as value 1, No charge.
3227         64 through 127 Reserved. Treat the same as value 2, Charge original originator.
3228         128 through 223 Reserved. Treat the same as value 3, Charge original destination.
3229         224 through 255 Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 2, Charge
3230         original originator.
3231 */
3232
3233 /* 6.5.2.130 SMS_NotificationIndicator N.S0005-0 v 1.0*/
3234 static const value_string ansi_map_SMS_NotificationIndicator_vals[]  = {
3235     {   0, "Not used"},
3236     {   1, "Notify when available"},
3237     {   2, "Do not notify when available"},
3238     {   0, NULL }
3239 };
3240
3241 /* 6.5.2.136 SMS_OriginationRestrictions */
3242 /* DEFAULT (octet 1, bits A and B) */
3243
3244 static const value_string ansi_map_SMS_OriginationRestrictions_default_vals[]  = {
3245     {   0, "Block all"},
3246     {   1, "Reserved"},
3247     {   2, "Allow specific"},
3248     {   3, "Allow all"},
3249     {   0, NULL }
3250 };
3251 /* DIRECT (octet 1, bit C) */
3252 static const true_false_string ansi_map_SMS_OriginationRestrictions_direct_bool_val  = {
3253     "Allow Direct",
3254     "Block Direct"
3255 };
3256
3257 /* Force Message Center (FMC) (octet 1, bit D) */
3258 static const true_false_string ansi_map_SMS_OriginationRestrictions_fmc_bool_val  = {
3259     "Force Indirect",
3260     "No effect"
3261 };
3262
3263 static void
3264 dissect_ansi_map_sms_originationrestrictions(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3265
3266     int offset = 0;
3267     proto_tree *subtree;
3268
3269
3270     subtree = proto_item_add_subtree(actx->created_item, ett_sms_originationrestrictions);
3271     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHGFE, tvb, offset, 1, FALSE);
3272     proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_fmc, tvb, offset, 1, FALSE);
3273     proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_direct, tvb, offset, 1, FALSE);
3274     proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_default, tvb, offset, 1, FALSE);
3275
3276 }
3277
3278 /* 6.5.2.137 SMS_TeleserviceIdentifier */
3279 /* Updated with N.S0011-0 v 1.0 */
3280
3281 /* SMS Teleservice Identifier (octets 1 and 2) */
3282 static const value_string ansi_map_SMS_TeleserviceIdentifier_vals[]  = {
3283     {     0, "Not used"},
3284     {     1, "Reserved for maintenance"},
3285     {     2, "SSD Update no response"},
3286     {     3, "SSD Update successful"},
3287     {     4, "SSD Update failed"},
3288     {  4096, "AMPS Extended Protocol Enhanced Services" },
3289     {  4097, "CDMA Cellular Paging Teleservice" },
3290     {  4098, "CDMA Cellular Messaging Teleservice" },
3291     {  4099, "CDMA Voice Mail Notification" },
3292     { 32513, "TDMA Cellular Messaging Teleservice" },
3293     { 32520, "TDMA System Assisted Mobile Positioning through Satellite (SAMPS)" },
3294     { 32584, "TDMA Segmented System Assisted Mobile Positioning Service" },
3295     {     0, NULL }
3296 };
3297 /* 6.5.2.140 SPINITriggers */
3298 /* All Origination (All) (octet 1, bit A) */
3299
3300 /* 6.5.2.142 SSDUpdateReport */
3301 static const value_string ansi_map_SSDUpdateReport_vals[]  = {
3302     {       0, "Not used"},
3303     {    4096, "AMPS Extended Protocol Enhanced Services"},
3304     {    4097, "CDMA Cellular Paging Teleservice"},
3305     {    4098, "CDMA Cellular Messaging Teleservice"},
3306     {   32513, "TDMA Cellular Messaging Teleservice"},
3307     {   32514, "TDMA Cellular Paging Teleservice (CPT-136)"},
3308     {   32515, "TDMA Over-the-Air Activation Teleservice (OATS)"},
3309     {   32516, "TDMA Over-the-Air Programming Teleservice (OPTS)"},
3310     {   32517, "TDMA General UDP Transport Service (GUTS)"},
3311     {   32576, "Reserved"},
3312     {   32577, "TDMA Segmented Cellular MessagingTeleservice"},
3313     {   32578, "TDMA Segmented Cellular Paging Teleservice"},
3314     {   32579, "TDMA Segmented Over-the-Air Activation Teleservice (OATS)"},
3315     {   32580, "TDMA Segmented Over-the-Air Programming Teleservice (OPTS)."},
3316     {   32581, "TDMA Segmented General UDP Transport Service (GUTS)"},
3317     {   32576, "Reserved"},
3318     {       0, NULL }
3319 };
3320
3321 /* 6.5.2.143 StationClassMark */
3322
3323 /* 6.5.2.144 SystemAccessData */
3324
3325 /* 6.5.2.146 SystemCapabilities */
3326 /* Updated in N.S0008-0 v 1.0 */
3327 static const true_false_string ansi_map_systemcapabilities_auth_bool_val  = {
3328     "Authentication parameters were requested on this system access (AUTH=1 in the OMT)",
3329     "Authentication parameters were not requested on this system access (AUTH=0 in the OMT)."
3330 };
3331
3332 static const true_false_string ansi_map_systemcapabilities_se_bool_val  = {
3333     "Signaling Message Encryption supported by the system",
3334     "Signaling Message Encryption not supported by the system"
3335 };
3336
3337 static const true_false_string ansi_map_systemcapabilities_vp_bool_val  = {
3338     "Voice Privacy supported by the system",
3339     "Voice Privacy not supported by the system"
3340 };
3341
3342 static const true_false_string ansi_map_systemcapabilities_cave_bool_val  = {
3343     "System can execute the CAVE algorithm and share SSD for the indicated MS",
3344     "System cannot execute the CAVE algorithm and cannot share SSD for the indicated MS"
3345 };
3346
3347 static const true_false_string ansi_map_systemcapabilities_ssd_bool_val  = {
3348     "SSD is shared with the system for the indicated MS",
3349     "SSD is not shared with the system for the indicated MS"
3350 };
3351
3352 static const true_false_string ansi_map_systemcapabilities_dp_bool_val  = {
3353     "DP is supported by the system",
3354     "DP is not supported by the system"
3355 };
3356
3357 static void
3358 dissect_ansi_map_systemcapabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3359
3360     int offset = 0;
3361     proto_tree *subtree;
3362
3363
3364     subtree = proto_item_add_subtree(actx->created_item, ett_systemcapabilities);
3365     proto_tree_add_item(subtree, hf_ansi_map_reservedBitHG, tvb, offset, 1, FALSE);
3366     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_dp, tvb, offset, 1, FALSE);
3367     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_ssd, tvb, offset, 1, FALSE);
3368     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_cave, tvb, offset, 1, FALSE);
3369     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_vp, tvb, offset, 1, FALSE);
3370     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_se, tvb, offset, 1, FALSE);
3371     proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_auth, tvb, offset, 1, FALSE);
3372 }
3373
3374 /* 6.5.2.151 TDMABurstIndicator */
3375 /* 6.5.2.152 TDMACallMode */
3376 /* 6.5.2.153 TDMAChannelData Updated in N.S0007-0 v 1.0*/
3377
3378 /* 6.5.2.155 TerminationAccessType */
3379 /* XXX Fix Me, Fill up the values or do special decoding? */
3380 static const value_string ansi_map_TerminationAccessType_vals[]  = {
3381     {   0, "Not used"},
3382     {   1, "Reserved for controlling system assignment (may be a trunk group identifier)."},
3383     /* 1 through  127 */
3384     { 127, "Reserved for controlling system assignment (may be a trunk group identifier)."},
3385     { 128, "Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 253, Land-to-Mobile Directory Number access"},
3386     /* 128 through  160 */
3387     { 160, "Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 253, Land-to-Mobile Directory Number access"},
3388     { 161, "Reserved for this Standard"},
3389     /* 161 through  251 */
3390     { 151, "Reserved for this Standard"},
3391     { 252, "Mobile-to-Mobile Directory Number access"},
3392     { 253, "Land-to-Mobile Directory Number access"},
3393     { 254, "Remote Feature Control port access"},
3394     { 255, "Roamer port access"},
3395     {   0, NULL }
3396 };
3397
3398 /* 6.5.2.158 TerminationTreatment */
3399 static const value_string ansi_map_TerminationTreatment_vals[]  = {
3400     {   0, "Not used"},
3401     {   1, "MS Termination"},
3402     {   2, "Voice Mail Storage"},
3403     {   3, "Voice Mail Retrieval"},
3404     {   4, "Dialogue Termination"},
3405     {   0, NULL }
3406 };
3407
3408 /* 6.5.2.159 TerminationTriggers */
3409 /* Busy (octet 1, bits A and B) */
3410 static const value_string ansi_map_terminationtriggers_busy_vals[]  = {
3411     {   0, "Busy Call"},
3412     {   1, "Busy Trigger"},
3413     {   2, "Busy Leg"},
3414     {   3, "Reserved. Treat as an unrecognized parameter value"},
3415     {   0, NULL }
3416 };
3417 /* Routing Failure (RF) (octet 1, bits C and D) */
3418 static const value_string ansi_map_terminationtriggers_rf_vals[]  = {
3419     {   0, "Failed Call"},
3420     {   1, "Routing Failure Trigger"},
3421     {   2, "Failed Leg"},
3422     {   3, "Reserved. Treat as an unrecognized parameter value"},
3423     {   0, NULL }
3424 };
3425 /* No Page Response (NPR) (octet 1, bits E and F) */
3426 static const value_string ansi_map_terminationtriggers_npr_vals[]  = {
3427     {   0, "No Page Response Call"},
3428     {   1, "No Page Response Trigger"},
3429     {   2, "No Page Response Leg"},
3430     {   3, "Reserved. Treat as an unrecognized parameter value"},
3431     {   0, NULL }
3432 };
3433 /* No Answer (NA) (octet 1, bits G and H) */
3434 static const value_string ansi_map_terminationtriggers_na_vals[]  = {
3435     {   0, "No Answer Call"},
3436     {   1, "No Answer Trigger"},
3437     {   2, "No Answer Leg"},
3438     {   3, "Reserved"},
3439     {   0, NULL }
3440 };
3441 /* None Reachable (NR) (octet 2, bit A) */
3442 static const value_string ansi_map_terminationtriggers_nr_vals[]  = {
3443     {   0, "Member Not Reachable"},
3444     {   1, "Group Not Reachable"},
3445     {   0, NULL }
3446 };
3447
3448 /* 6.5.2.159 TerminationTriggers N.S0005-0 v 1.0*/
3449 static void
3450 dissect_ansi_map_terminationtriggers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3451
3452     int offset = 0;
3453     proto_tree *subtree;
3454
3455
3456     subtree = proto_item_add_subtree(actx->created_item, ett_transactioncapability);
3457
3458     proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
3459     /* No Page Response (NPR) (octet 1, bits E and F) */
3460     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_npr, tvb, offset, 1, FALSE);
3461     /* No Answer (NA) (octet 1, bits G and H) */
3462     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_na, tvb, offset, 1, FALSE);
3463     /* Routing Failure (RF) (octet 1, bits C and D) */
3464     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_rf, tvb, offset, 1, FALSE);
3465     /* Busy (octet 1, bits A and B) */
3466     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_busy, tvb, offset, 1, FALSE);
3467     offset++;
3468
3469     /* None Reachable (NR) (octet 2, bit A) */
3470     proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_nr, tvb, offset, 1, FALSE);
3471 }
3472
3473 /* 6.5.2.160 TransactionCapability (TIA/EIA-41.5-D, page 5-315) */
3474 /* Updated with N.S0010-0 v 1.0, N.S0012-0 v 1.0 N.S0013-0 v 1.0 */
3475 static const true_false_string ansi_map_trans_cap_prof_bool_val  = {
3476     "The system is capable of supporting the IS-41-C profile parameters",
3477     "The system is not capable of supporting the IS-41-C profile parameters"
3478 };
3479
3480 static const true_false_string ansi_map_trans_cap_busy_bool_val  = {
3481     "The system is capable of detecting a busy condition at the current time",
3482     "The system is not capable of detecting a busy condition at the current time"
3483 };
3484
3485 static const true_false_string ansi_map_trans_cap_ann_bool_val  = {
3486     "The system is capable of honoring the AnnouncementList parameter at the current time",
3487     "The system is not capable of honoring the AnnouncementList parameter at the current time"
3488 };
3489
3490 static const true_false_string ansi_map_trans_cap_rui_bool_val  = {
3491     "The system is capable of interacting with the user",
3492     "The system is not capable of interacting with the user"
3493 };
3494
3495 static const true_false_string ansi_map_trans_cap_spini_bool_val  = {
3496     "The system is capable of supporting local SPINI operation",
3497     "The system is not capable of supporting local SPINI operation at the current time"
3498 };
3499
3500 static const true_false_string ansi_map_trans_cap_uzci_bool_val  = {
3501     "The system is User Zone capable at the current time",
3502     "The system is not User Zone capable at the current time"
3503 };
3504 static const true_false_string ansi_map_trans_cap_ndss_bool_val  = {
3505     "Serving system is NDSS capable",
3506     "Serving system is not NDSS capable"
3507 };
3508 static const true_false_string ansi_map_trans_cap_nami_bool_val  = {
3509     "The system is CNAP/CNAR capable",
3510     "The system is not CNAP/CNAR capable"
3511 };
3512
3513 static const value_string ansi_map_trans_cap_multerm_vals[]  = {
3514     {   0, "The system cannot accept a termination at this time (i.e., cannot accept routing information)"},
3515     {   1, "The system supports the number of call legs indicated"},
3516     {   2, "The system supports the number of call legs indicated"},
3517     {   3, "The system supports the number of call legs indicated"},
3518     {   4, "The system supports the number of call legs indicated"},
3519     {   5, "The system supports the number of call legs indicated"},
3520     {   6, "The system supports the number of call legs indicated"},
3521     {   7, "The system supports the number of call legs indicated"},
3522     {   8, "The system supports the number of call legs indicated"},
3523     {   9, "The system supports the number of call legs indicated"},
3524     {   10, "The system supports the number of call legs indicated"},
3525     {   11, "The system supports the number of call legs indicated"},
3526     {   12, "The system supports the number of call legs indicated"},
3527     {   13, "The system supports the number of call legs indicated"},
3528     {   14, "The system supports the number of call legs indicated"},
3529     {   15, "The system supports the number of call legs indicated"},
3530     {   0, NULL }
3531 };
3532
3533 static const true_false_string ansi_map_trans_cap_tl_bool_val  = {
3534     "The system is capable of supporting the TerminationList parameter at the current time",
3535     "The system is not capable of supporting the TerminationList parameter at the current time"
3536 };
3537
3538 static const true_false_string ansi_map_trans_cap_waddr_bool_val  = {
3539     "The system is capable of supporting the TriggerAddressList parameter",
3540     "The system is not capable of supporting the TriggerAddressList parameter"
3541 };
3542
3543
3544 static void
3545 dissect_ansi_map_transactioncapability(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3546
3547     int offset = 0;
3548     proto_tree *subtree;
3549
3550
3551     subtree = proto_item_add_subtree(actx->created_item, ett_transactioncapability);
3552
3553     /*NAME Capability Indicator (NAMI) (octet 1, bit H) */
3554     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_nami, tvb, offset, 1, FALSE);
3555     /* NDSS Capability (NDSS) (octet 1, bit G) */
3556     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_ndss, tvb, offset, 1, FALSE);
3557     /* UZ Capability Indicator (UZCI) (octet 1, bit F) */
3558     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_uzci, tvb, offset, 1, FALSE);
3559     /* Subscriber PIN Intercept (SPINI) (octet 1, bit E) */
3560     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_spini, tvb, offset, 1, FALSE);
3561     /* Remote User Interaction (RUI) (octet 1, bit D) */
3562     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_rui, tvb, offset, 1, FALSE);
3563     /* Announcements (ANN) (octet 1, bit C) */
3564     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_ann, tvb, offset, 1, FALSE);
3565     /* Busy Detection (BUSY) (octet 1, bit B) */
3566     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_busy, tvb, offset, 1, FALSE);
3567     /* Profile (PROF) (octet 1, bit A) */
3568     proto_tree_add_item(subtree, hf_ansi_map_trans_cap_prof, tvb, offset, 1, FALSE);
3569     offset++;
3570
3571     /* WIN Addressing (WADDR) (octet 2, bit F) */
3572     proto_tree_add_item(subtree, hf_ansi_trans_cap_waddr, tvb, offset, 1, FALSE);
3573     /* TerminationList (TL) (octet 2, bit E) */
3574     proto_tree_add_item(subtree, hf_ansi_trans_cap_tl, tvb, offset, 1, FALSE);
3575     /* Multiple Terminations (octet 2, bits A-D) */
3576     proto_tree_add_item(subtree, hf_ansi_trans_cap_multerm, tvb, offset, 1, FALSE);
3577 }
3578
3579 /* 6.5.2.162 UniqueChallengeReport */
3580 /* Unique Challenge Report (octet 1) */
3581 static const value_string ansi_map_UniqueChallengeReport_vals[]  = {
3582     {   0, "Not used"},
3583     {   1, "Unique Challenge not attempted"},
3584     {   2, "Unique Challenge no response"},
3585     {   3, "Unique Challenge successful"},
3586     {   4, "Unique Challenge failed"},
3587     {   0, NULL }
3588 };
3589
3590 /* 6.5.2.166 VoicePrivacyMask */
3591
3592
3593 /* 6.5.2.e (TSB76) CDMAServiceConfigurationRecord N.S0008-0 v 1.0 */
3594 /* a. This field carries the CDMA Service Configuration Record. The bit-layout is the
3595    same as that of Service Configuration Record in TSB74, and J-STD-008.
3596 */
3597
3598 /* 6.5.2.f CDMAServiceOption N.S0010-0 v 1.0 */
3599
3600 /* values copied from old ANSI map dissector */
3601 static const range_string cdmaserviceoption_vals[] = {
3602     { 1, 1, "Basic Variable Rate Voice Service (8 kbps)" },
3603     { 2, 2, "Mobile Station Loopback (8 kbps)" },
3604     { 3, 3, "Enhanced Variable Rate Voice Service (8 kbps)" },
3605     { 4, 4, "Asynchronous Data Service (9.6 kbps)" },
3606     { 5, 5, "Group 3 Facsimile (9.6 kbps)" },
3607     { 6, 6, "Short Message Services (Rate Set 1)" },
3608     { 7, 7, "Packet Data Service: Internet or ISO Protocol Stack (9.6 kbps)" },
3609     { 8, 8, "Packet Data Service: CDPD Protocol Stack (9.6 kbps)" },
3610     { 9, 9, "Mobile Station Loopback (13 kbps)" },
3611     { 10, 10, "STU-III Transparent Service" },
3612     { 11, 11, "STU-III Non-Transparent Service" },
3613     { 12, 12, "Asynchronous Data Service (14.4 or 9.6 kbps)" },
3614     { 13, 13, "Group 3 Facsimile (14.4 or 9.6 kbps)" },
3615     { 14, 14, "Short Message Services (Rate Set 2)" },
3616     { 15, 15, "Packet Data Service: Internet or ISO Protocol Stack (14.4 kbps)" },
3617     { 16, 16, "Packet Data Service: CDPD Protocol Stack (14.4 kbps)" },
3618     { 17, 17, "High Rate Voice Service (13 kbps)" },
3619     { 18, 18, "Over-the-Air Parameter Administration (Rate Set 1)" },
3620     { 19, 19, "Over-the-Air Parameter Administration (Rate Set 2)" },
3621     { 20, 20, "Group 3 Analog Facsimile (Rate Set 1)" },
3622     { 21, 21, "Group 3 Analog Facsimile (Rate Set 2)" },
3623     { 22, 22, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS1 reverse)" },
3624     { 23, 23, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS2 reverse)" },
3625     { 24, 24, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS1 reverse)" },
3626     { 25, 25, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS2 reverse)" },
3627     { 26, 26, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS1 reverse)" },
3628     { 27, 27, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS2 reverse)" },
3629     { 28, 28, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS1 reverse)" },
3630     { 29, 29, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS2 reverse)" },
3631     { 30, 30, "Supplemental Channel Loopback Test for Rate Set 1" },
3632     { 31, 31, "Supplemental Channel Loopback Test for Rate Set 2" },
3633     { 32, 32, "Test Data Service Option (TDSO)" },
3634     { 33, 33, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
3635     { 34, 34, "cdma2000 High Speed Packet Data Service, CDPD Protocol Stack" },
3636     { 35, 35, "Location Services, Rate Set 1 (9.6 kbps)" },
3637     { 36, 36, "Location Services, Rate Set 2 (14.4 kbps)" },
3638     { 37, 37, "ISDN Interworking Service (64 kbps)" },
3639     { 38, 38, "GSM Voice" },
3640     { 39, 39, "GSM Circuit Data" },
3641     { 40, 40, "GSM Packet Data" },
3642     { 41, 41, "GSM Short Message Service" },
3643     { 42, 42, "None Reserved for MC-MAP standard service options" },
3644     { 54, 54, "Markov Service Option (MSO)" },
3645     { 55, 55, "Loopback Service Option (LSO)" },
3646     { 56, 56, "Selectable Mode Vocoder" },
3647     { 57, 57, "32 kbps Circuit Video Conferencing" },
3648     { 58, 58, "64 kbps Circuit Video Conferencing" },
3649     { 59, 59, "HRPD Accounting Records Identifier" },
3650     { 60, 60, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Removal" },
3651     { 61, 61, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Compression" },
3652     { 62, 62, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 2" },
3653     { 63, 63, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 1" },
3654     { 64, 64, "HRPD auxiliary Packet Data Service instance" },
3655     { 65, 65, "cdma2000/GPRS Inter-working" },
3656     { 66, 66, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
3657     { 67, 67, "HRPD Packet Data IP Service where Higher Layer Protocol is IP or ROHC" },
3658     { 68, 68, "Enhanced Variable Rate Voice Service (EVRC-B)" },
3659     { 69, 69, "HRPD Packet Data Service, which when used in paging over the 1x air interface, a page response is required" },
3660     { 70, 70, "Enhanced Variable Rate Voice Service (EVRC-WB)" },
3661     { 71, 4099, "None Reserved for standard service options" },
3662     { 4100, 4100, "Asynchronous Data Service, Revision 1 (9.6 or 14.4 kbps)" },
3663     { 4101, 4101, "Group 3 Facsimile, Revision 1 (9.6 or 14.4 kbps)" },
3664     { 4102, 4102, "Reserved for standard service option" },
3665     { 4103, 4103, "Packet Data Service: Internet or ISO Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
3666     { 4104, 4104, "Packet Data Service: CDPD Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
3667     { 4105, 32767, "Reserved for standard service options" },
3668     { 32768, 32768, "QCELP (13 kbps)" },
3669     { 32769, 32771, "Proprietary QUALCOMM Incorporated" },
3670     { 32772, 32775, "Proprietary OKI Telecom" },
3671     { 32776, 32779, "Proprietary Lucent Technologies" },
3672     { 32780, 32783, "Nokia" },
3673     { 32784, 32787, "NORTEL NETWORKS" },
3674     { 32788, 32791, "Sony Electronics Inc" },
3675     { 32792, 32795, "Motorola" },
3676     { 32796, 32799, "QUALCOMM Incorporated" },
3677     { 32800, 32803, "QUALCOMM Incorporated" },
3678     { 32804, 32807, "QUALCOMM Incorporated" },
3679     { 32808, 32811, "QUALCOMM Incorporated" },
3680     { 32812, 32815, "Lucent Technologies" },
3681     { 32816, 32819, "Denso International" },
3682     { 32820, 32823, "Motorola" },
3683     { 32824, 32827, "Denso International" },