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