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