2 * Routines for ANSI 41 Mobile Application Part (IS41 MAP) dissection
3 * Specications from 3GPP2 (www.3gpp2.org)
4 * Based on the dissector by :
5 * Michael Lum <mlum [AT] telostech.com>
6 * In association with Telos Technology Inc.
8 * Copyright 2005 - 2009, Anders Broman <anders.broman@ericsson.com>
12 * Wireshark - Network traffic analyzer
13 * By Gerald Combs <gerald@wireshark.org>
14 * Copyright 1998 Gerald Combs
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License
18 * as published by the Free Software Foundation; either version 2
19 * of the License, or (at your option) any later version.
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 * Credit to Tomas Kukosa for developing the asn2wrs compiler.
34 * Cellular Radiotelecommunications Intersystem Operations
35 * 3GPP2 N.S0005-0 v 1.0 ANSI/TIA/EIA-41-D
37 * Network Support for MDN-Based Message Centers
38 * 3GPP2 N.S0024-0 v1.0 IS-841
40 * Enhanced International Calling
41 * 3GPP2 N.S0027 IS-875
43 * ANSI-41-D Miscellaneous Enhancements Revision 0
44 * 3GPP2 N.S0015 PN-3590 (ANSI-41-E)
46 * Authentication Enhancements
47 * 3GPP2 N.S0014-0 v1.0 IS-778
50 * 3GPP2 N.S0010-0 v1.0 IS-735
53 * 3GPP2 N.S0011-0 v1.0 IS-725-A
55 * Circuit Mode Services
56 * 3GPP2 N.S0008-0 v1.0 IS-737
57 * XXX SecondInterMSCCircuitID not implemented, parameter ID conflicts with ISLP Information!
60 * 3GPP2 N.S0009-0 v1.0 IS-751
63 * 3GPP2 N.S0013-0 v1.0 IS-771
65 * DCCH (Clarification of Audit Order with Forced
66 * Re-Registration in pre-TIA/EIA-136-A Implementation
67 * 3GPP2 A.S0017-B IS-730
73 * 3GPP2 N.S0004-0 v1.0 IS-848
75 * TIA/EIA-41-D Pre-Paid Charging
76 * 3GPP2 N.S0018-0 v1.0 IS-826
78 * User Selective Call Forwarding
79 * 3GPP2 N.S0021-0 v1.0 IS-838
83 * 3GPP2 N.S0022-0 v1.0 IS-837
92 #include <epan/packet.h>
93 #include <epan/prefs.h>
95 #include <epan/asn1.h>
97 #include "packet-ber.h"
98 #include "packet-ansi_map.h"
99 #include "packet-ansi_a.h"
100 #include "packet-gsm_map.h"
101 #include "packet-tcap.h"
102 #include "packet-ansi_tcap.h"
104 #define PNAME "ANSI Mobile Application Part"
105 #define PSNAME "ANSI MAP"
106 #define PFNAME "ansi_map"
108 /* Preference settings default */
110 static range_t *global_ssn_range;
111 gint ansi_map_response_matching_type = 1;
113 #define ANSI_MAP_TID_ONLY 0
115 static dissector_handle_t ansi_map_handle=NULL;
117 /* Initialize the protocol and registered fields */
118 static int ansi_map_tap = -1;
119 static int proto_ansi_map = -1;
121 static int hf_ansi_map_op_code_fam = -1;
122 static int hf_ansi_map_op_code = -1;
124 static int hf_ansi_map_reservedBitH = -1;
125 static int hf_ansi_map_reservedBitHG = -1;
126 static int hf_ansi_map_reservedBitHGFE = -1;
127 static int hf_ansi_map_reservedBitFED = -1;
128 static int hf_ansi_map_reservedBitD = -1;
129 static int hf_ansi_map_reservedBitED = -1;
131 static int hf_ansi_map_type_of_digits = -1;
132 static int hf_ansi_map_na = -1;
133 static int hf_ansi_map_pi = -1;
134 static int hf_ansi_map_navail = -1;
135 static int hf_ansi_map_si = -1;
136 static int hf_ansi_map_digits_enc = -1;
137 static int hf_ansi_map_np = -1;
138 static int hf_ansi_map_nr_digits = -1;
139 static int hf_ansi_map_bcd_digits = -1;
140 static int hf_ansi_map_ia5_digits = -1;
141 static int hf_ansi_map_subaddr_type = -1;
142 static int hf_ansi_map_subaddr_odd_even = -1;
143 static int hf_ansi_alertcode_cadence = -1;
144 static int hf_ansi_alertcode_pitch = -1;
145 static int hf_ansi_alertcode_alertaction = -1;
146 static int hf_ansi_map_announcementcode_tone = -1;
147 static int hf_ansi_map_announcementcode_class = -1;
148 static int hf_ansi_map_announcementcode_std_ann = -1;
149 static int hf_ansi_map_announcementcode_cust_ann = -1;
150 static int hf_ansi_map_authorizationperiod_period = -1;
151 static int hf_ansi_map_value = -1;
152 static int hf_ansi_map_msc_type = -1;
153 static int hf_ansi_map_handoffstate_pi = -1;
154 static int hf_ansi_map_tgn = -1;
155 static int hf_ansi_map_tmn = -1;
156 static int hf_ansi_map_messagewaitingnotificationcount_tom = -1;
157 static int hf_ansi_map_messagewaitingnotificationcount_no_mw = -1;
158 static int hf_ansi_map_messagewaitingnotificationtype_mwi = -1;
159 static int hf_ansi_map_messagewaitingnotificationtype_apt = -1;
160 static int hf_ansi_map_messagewaitingnotificationtype_pt = -1;
162 static int hf_ansi_map_trans_cap_prof = -1;
163 static int hf_ansi_map_trans_cap_busy = -1;
164 static int hf_ansi_map_trans_cap_ann = -1;
165 static int hf_ansi_map_trans_cap_rui = -1;
166 static int hf_ansi_map_trans_cap_spini = -1;
167 static int hf_ansi_map_trans_cap_uzci = -1;
168 static int hf_ansi_map_trans_cap_ndss = -1;
169 static int hf_ansi_map_trans_cap_nami = -1;
170 static int hf_ansi_trans_cap_multerm = -1;
171 static int hf_ansi_map_terminationtriggers_busy = -1;
172 static int hf_ansi_map_terminationtriggers_rf = -1;
173 static int hf_ansi_map_terminationtriggers_npr = -1;
174 static int hf_ansi_map_terminationtriggers_na = -1;
175 static int hf_ansi_map_terminationtriggers_nr = -1;
176 static int hf_ansi_trans_cap_tl = -1;
177 static int hf_ansi_map_cdmaserviceoption = -1;
178 static int hf_ansi_trans_cap_waddr = -1;
179 static int hf_ansi_map_MarketID = -1;
180 static int hf_ansi_map_swno = -1;
181 static int hf_ansi_map_idno = -1;
182 static int hf_ansi_map_segcount = -1;
183 static int hf_ansi_map_sms_originationrestrictions_fmc = -1;
184 static int hf_ansi_map_sms_originationrestrictions_direct = -1;
185 static int hf_ansi_map_sms_originationrestrictions_default = -1;
186 static int hf_ansi_map_systemcapabilities_auth = -1;
187 static int hf_ansi_map_systemcapabilities_se = -1;
188 static int hf_ansi_map_systemcapabilities_vp = -1;
189 static int hf_ansi_map_systemcapabilities_cave = -1;
190 static int hf_ansi_map_systemcapabilities_ssd = -1;
191 static int hf_ansi_map_systemcapabilities_dp = -1;
193 static int hf_ansi_map_mslocation_lat = -1;
194 static int hf_ansi_map_mslocation_long = -1;
195 static int hf_ansi_map_mslocation_res = -1;
196 static int hf_ansi_map_nampscallmode_namps = -1;
197 static int hf_ansi_map_nampscallmode_amps = -1;
198 static int hf_ansi_map_nampschanneldata_navca = -1;
199 static int hf_ansi_map_nampschanneldata_CCIndicator = -1;
201 static int hf_ansi_map_callingfeaturesindicator_cfufa = -1;
202 static int hf_ansi_map_callingfeaturesindicator_cfbfa = -1;
203 static int hf_ansi_map_callingfeaturesindicator_cfnafa = -1;
204 static int hf_ansi_map_callingfeaturesindicator_cwfa = -1;
205 static int hf_ansi_map_callingfeaturesindicator_3wcfa = -1;
206 static int hf_ansi_map_callingfeaturesindicator_pcwfa =-1;
207 static int hf_ansi_map_callingfeaturesindicator_dpfa = -1;
208 static int hf_ansi_map_callingfeaturesindicator_ahfa = -1;
209 static int hf_ansi_map_callingfeaturesindicator_uscfvmfa = -1;
210 static int hf_ansi_map_callingfeaturesindicator_uscfmsfa = -1;
211 static int hf_ansi_map_callingfeaturesindicator_uscfnrfa = -1;
212 static int hf_ansi_map_callingfeaturesindicator_cpdsfa = -1;
213 static int hf_ansi_map_callingfeaturesindicator_ccsfa = -1;
214 static int hf_ansi_map_callingfeaturesindicator_epefa = -1;
215 static int hf_ansi_map_callingfeaturesindicator_cdfa = -1;
216 static int hf_ansi_map_callingfeaturesindicator_vpfa = -1;
217 static int hf_ansi_map_callingfeaturesindicator_ctfa = -1;
218 static int hf_ansi_map_callingfeaturesindicator_cnip1fa = -1;
219 static int hf_ansi_map_callingfeaturesindicator_cnip2fa = -1;
220 static int hf_ansi_map_callingfeaturesindicator_cnirfa = -1;
221 static int hf_ansi_map_callingfeaturesindicator_cniroverfa = -1;
222 static int hf_ansi_map_cdmacallmode_cdma = -1;
223 static int hf_ansi_map_cdmacallmode_amps = -1;
224 static int hf_ansi_map_cdmacallmode_namps = -1;
225 static int hf_ansi_map_cdmacallmode_cls1 = -1;
226 static int hf_ansi_map_cdmacallmode_cls2 = -1;
227 static int hf_ansi_map_cdmacallmode_cls3 = -1;
228 static int hf_ansi_map_cdmacallmode_cls4 = -1;
229 static int hf_ansi_map_cdmacallmode_cls5 = -1;
230 static int hf_ansi_map_cdmacallmode_cls6 = -1;
231 static int hf_ansi_map_cdmacallmode_cls7 = -1;
232 static int hf_ansi_map_cdmacallmode_cls8 = -1;
233 static int hf_ansi_map_cdmacallmode_cls9 = -1;
234 static int hf_ansi_map_cdmacallmode_cls10 = -1;
235 static int hf_ansi_map_cdmachanneldata_Frame_Offset = -1;
236 static int hf_ansi_map_cdmachanneldata_CDMA_ch_no = -1;
237 static int hf_ansi_map_cdmachanneldata_band_cls = -1;
238 static int hf_ansi_map_cdmachanneldata_lc_mask_b6 = -1;
239 static int hf_ansi_map_cdmachanneldata_lc_mask_b5 = -1;
240 static int hf_ansi_map_cdmachanneldata_lc_mask_b4 = -1;
241 static int hf_ansi_map_cdmachanneldata_lc_mask_b3 = -1;
242 static int hf_ansi_map_cdmachanneldata_lc_mask_b2 = -1;
243 static int hf_ansi_map_cdmachanneldata_lc_mask_b1 = -1;
244 static int hf_ansi_map_cdmachanneldata_np_ext = -1;
245 static int hf_ansi_map_cdmachanneldata_nominal_pwr = -1;
246 static int hf_ansi_map_cdmachanneldata_nr_preamble = -1;
248 static int hf_ansi_map_cdmastationclassmark_pc = -1;
249 static int hf_ansi_map_cdmastationclassmark_dtx = -1;
250 static int hf_ansi_map_cdmastationclassmark_smi = -1;
251 static int hf_ansi_map_cdmastationclassmark_dmi = -1;
252 static int hf_ansi_map_channeldata_vmac = -1;
253 static int hf_ansi_map_channeldata_dtx = -1;
254 static int hf_ansi_map_channeldata_scc = -1;
255 static int hf_ansi_map_channeldata_chno = -1;
256 static int hf_ansi_map_ConfidentialityModes_vp = -1;
257 static int hf_ansi_map_controlchanneldata_dcc = -1;
258 static int hf_ansi_map_controlchanneldata_cmac = -1;
259 static int hf_ansi_map_controlchanneldata_chno = -1;
260 static int hf_ansi_map_controlchanneldata_sdcc1 = -1;
261 static int hf_ansi_map_controlchanneldata_sdcc2 = -1;
262 static int hf_ansi_map_ConfidentialityModes_se = -1;
263 static int hf_ansi_map_deniedauthorizationperiod_period = -1;
264 static int hf_ansi_map_ConfidentialityModes_dp = -1;
266 static int hf_ansi_map_originationtriggers_all = -1;
267 static int hf_ansi_map_originationtriggers_local = -1;
268 static int hf_ansi_map_originationtriggers_ilata = -1;
269 static int hf_ansi_map_originationtriggers_olata = -1;
270 static int hf_ansi_map_originationtriggers_int = -1;
271 static int hf_ansi_map_originationtriggers_wz = -1;
272 static int hf_ansi_map_originationtriggers_unrec = -1;
273 static int hf_ansi_map_originationtriggers_rvtc = -1;
274 static int hf_ansi_map_originationtriggers_star = -1;
275 static int hf_ansi_map_originationtriggers_ds = -1;
276 static int hf_ansi_map_originationtriggers_pound = -1;
277 static int hf_ansi_map_originationtriggers_dp = -1;
278 static int hf_ansi_map_originationtriggers_pa = -1;
279 static int hf_ansi_map_originationtriggers_nodig = -1;
280 static int hf_ansi_map_originationtriggers_onedig = -1;
281 static int hf_ansi_map_originationtriggers_twodig = -1;
282 static int hf_ansi_map_originationtriggers_threedig = -1;
283 static int hf_ansi_map_originationtriggers_fourdig = -1;
284 static int hf_ansi_map_originationtriggers_fivedig = -1;
285 static int hf_ansi_map_originationtriggers_sixdig = -1;
286 static int hf_ansi_map_originationtriggers_sevendig = -1;
287 static int hf_ansi_map_originationtriggers_eightdig = -1;
288 static int hf_ansi_map_originationtriggers_ninedig = -1;
289 static int hf_ansi_map_originationtriggers_tendig = -1;
290 static int hf_ansi_map_originationtriggers_elevendig = -1;
291 static int hf_ansi_map_originationtriggers_twelvedig = -1;
292 static int hf_ansi_map_originationtriggers_thirteendig = -1;
293 static int hf_ansi_map_originationtriggers_fourteendig = -1;
294 static int hf_ansi_map_originationtriggers_fifteendig = -1;
295 static int hf_ansi_map_triggercapability_init = -1;
296 static int hf_ansi_map_triggercapability_kdigit = -1;
297 static int hf_ansi_map_triggercapability_all = -1;
298 static int hf_ansi_map_triggercapability_rvtc = -1;
299 static int hf_ansi_map_triggercapability_oaa = -1;
300 static int hf_ansi_map_triggercapability_oans = -1;
301 static int hf_ansi_map_triggercapability_odisc = -1;
302 static int hf_ansi_map_triggercapability_ona = -1;
303 static int hf_ansi_map_triggercapability_ct = -1;
304 static int hf_ansi_map_triggercapability_unrec =-1;
305 static int hf_ansi_map_triggercapability_pa = -1;
306 static int hf_ansi_map_triggercapability_at = -1;
307 static int hf_ansi_map_triggercapability_cgraa = -1;
308 static int hf_ansi_map_triggercapability_it = -1;
309 static int hf_ansi_map_triggercapability_cdraa = -1;
310 static int hf_ansi_map_triggercapability_obsy = -1;
311 static int hf_ansi_map_triggercapability_tra = -1;
312 static int hf_ansi_map_triggercapability_tbusy = -1;
313 static int hf_ansi_map_triggercapability_tna = -1;
314 static int hf_ansi_map_triggercapability_tans = -1;
315 static int hf_ansi_map_triggercapability_tdisc = -1;
316 static int hf_ansi_map_winoperationscapability_conn = -1;
317 static int hf_ansi_map_winoperationscapability_ccdir = -1;
318 static int hf_ansi_map_winoperationscapability_pos = -1;
319 static int hf_ansi_map_PACA_Level = -1;
320 static int hf_ansi_map_pacaindicator_pa = -1;
322 #include "packet-ansi_map-hf.c"
324 /* Initialize the subtree pointers */
325 static gint ett_ansi_map = -1;
326 static gint ett_mintype = -1;
327 static gint ett_digitstype = -1;
328 static gint ett_billingid = -1;
329 static gint ett_sms_bearer_data = -1;
330 static gint ett_sms_teleserviceIdentifier = -1;
331 static gint ett_extendedmscid = -1;
332 static gint ett_extendedsystemmytypecode = -1;
333 static gint ett_handoffstate = -1;
334 static gint ett_mscid = -1;
335 static gint ett_cdmachanneldata = -1;
336 static gint ett_cdmastationclassmark = -1;
337 static gint ett_channeldata = -1;
338 static gint ett_confidentialitymodes = -1;
339 static gint ett_controlchanneldata = -1;
340 static gint ett_CDMA2000HandoffInvokeIOSData = -1;
341 static gint ett_CDMA2000HandoffResponseIOSData = -1;
342 static gint ett_originationtriggers = -1;
343 static gint ett_pacaindicator = -1;
344 static gint ett_callingpartyname = -1;
345 static gint ett_triggercapability = -1;
346 static gint ett_winoperationscapability = -1;
347 static gint ett_win_trigger_list = -1;
348 static gint ett_controlnetworkid = -1;
349 static gint ett_transactioncapability = -1;
350 static gint ett_cdmaserviceoption = -1;
351 static gint ett_systemcapabilities = -1;
352 static gint ett_sms_originationrestrictions = -1;
354 #include "packet-ansi_map-ett.c"
356 /* Global variables */
357 static dissector_table_t is637_tele_id_dissector_table; /* IS-637 Teleservice ID */
358 static dissector_table_t is683_dissector_table; /* IS-683-A (OTA) */
359 static dissector_table_t is801_dissector_table; /* IS-801 (PLD) */
360 static packet_info *g_pinfo;
361 static proto_tree *g_tree;
362 tvbuff_t *SMS_BearerData_tvb = NULL;
363 gint32 ansi_map_sms_tele_id = -1;
364 static gboolean is683_ota;
365 static gboolean is801_pld;
366 static gboolean ansi_map_is_invoke;
367 static guint32 OperationCode;
368 static guint8 ServiceIndicator;
371 struct ansi_map_invokedata_t {
373 guint8 ServiceIndicator;
376 static void dissect_ansi_map_win_trigger_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_);
379 /* Transaction table */
380 static GHashTable *TransactionId_table=NULL;
383 TransactionId_table_cleanup(gpointer key , gpointer value, gpointer user_data _U_){
385 struct ansi_map_invokedata_t *ansi_map_saved_invokedata = value;
386 gchar *TransactionId_str = key;
388 g_free(TransactionId_str);
389 g_free(ansi_map_saved_invokedata);
394 ansi_map_init_transaction_table(void){
396 /* Destroy any existing memory chunks / hashes. */
397 if (TransactionId_table){
398 g_hash_table_foreach(TransactionId_table, TransactionId_table_cleanup, NULL);
399 g_hash_table_destroy(TransactionId_table);
402 TransactionId_table = g_hash_table_new(g_str_hash, g_str_equal);
407 ansi_map_init_protocol(void)
409 ansi_map_init_transaction_table();
412 /* Store Invoke information needed for the corresponding reply */
414 update_saved_invokedata(packet_info *pinfo, proto_tree *tree _U_, tvbuff_t *tvb _U_){
415 struct ansi_map_invokedata_t *ansi_map_saved_invokedata;
416 struct ansi_tcap_private_t *p_private_tcap;
417 address* src = &(pinfo->src);
418 address* dst = &(pinfo->dst);
425 src_str = ep_address_to_str(src);
426 dst_str = ep_address_to_str(dst);
428 /* Data from the TCAP dissector */
429 if (pinfo->private_data != NULL){
430 p_private_tcap=pinfo->private_data;
431 if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){
432 /* Only do this once XXX I hope its the right thing to do */
433 /* The hash string needs to contain src and dest to distiguish differnt flows */
434 switch(ansi_map_response_matching_type){
435 case ANSI_MAP_TID_ONLY:
436 g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
439 g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,src_str);
442 g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,src_str,dst_str);
445 /* If the entry allready exists don't owervrite it */
446 ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table,buf);
447 if(ansi_map_saved_invokedata)
450 ansi_map_saved_invokedata = g_malloc(sizeof(struct ansi_map_invokedata_t));
451 ansi_map_saved_invokedata->opcode = p_private_tcap->d.OperationCode_private;
452 ansi_map_saved_invokedata->ServiceIndicator = ServiceIndicator;
454 g_hash_table_insert(TransactionId_table,
456 ansi_map_saved_invokedata);
457 g_warning("Invoke Hash string %s pkt: %u",buf,pinfo->fd->num);
463 const value_string ansi_map_opr_code_strings[] = {
464 { 1, "Handoff Measurement Request" },
465 { 2, "Facilities Directive" },
466 { 3, "Mobile On Channel" },
467 { 4, "Handoff Back" },
468 { 5, "Facilities Release" },
469 { 6, "Qualification Request" },
470 { 7, "Qualification Directive" },
473 { 10, "Reset Circuit" },
474 { 11, "Trunk Test" },
475 { 12, "Trunk Test Disconnect" },
476 { 13, "Registration Notification" },
477 { 14, "Registration Cancellation" },
478 { 15, "Location Request" },
479 { 16, "Routing Request" },
480 { 17, "Feature Request" },
481 { 18, "Reserved 18 (Service Profile Request, IS-41-C)" },
482 { 19, "Reserved 19 (Service Profile Directive, IS-41-C)" },
483 { 20, "Unreliable Roamer Data Directive" },
484 { 21, "Reserved 21 (Call Data Request, IS-41-C)" },
485 { 22, "MS Inactive" },
486 { 23, "Transfer To Number Request" },
487 { 24, "Redirection Request" },
488 { 25, "Handoff To Third" },
489 { 26, "Flash Request" },
490 { 27, "Authentication Directive" },
491 { 28, "Authentication Request" },
492 { 29, "Base Station Challenge" },
493 { 30, "Authentication Failure Report" },
494 { 31, "Count Request" },
495 { 32, "Inter System Page" },
496 { 33, "Unsolicited Response" },
497 { 34, "Bulk Deregistration" },
498 { 35, "Handoff Measurement Request 2" },
499 { 36, "Facilities Directive 2" },
500 { 37, "Handoff Back 2" },
501 { 38, "Handoff To Third 2" },
502 { 39, "Authentication Directive Forward" },
503 { 40, "Authentication Status Report" },
504 { 41, "Reserved 41" },
505 { 42, "Information Directive" },
506 { 43, "Information Forward" },
507 { 44, "Inter System Answer" },
508 { 45, "Inter System Page 2" },
509 { 46, "Inter System Setup" },
510 { 47, "Origination Request" },
511 { 48, "Random Variable Request" },
512 { 49, "Redirection Directive" },
513 { 50, "Remote User Interaction Directive" },
514 { 51, "SMS Delivery Backward" },
515 { 52, "SMS Delivery Forward" },
516 { 53, "SMS Delivery Point to Point" },
517 { 54, "SMS Notification" },
518 { 55, "SMS Request" },
519 { 56, "OTASP Request" },
520 { 57, "Information Backward" },
521 { 58, "Change Facilities" },
522 { 59, "Change Service" },
523 { 60, "Parameter Request" },
524 { 61, "TMSI Directive" },
525 { 62, "NumberPortabilityRequest" },
526 { 63, "Service Request" },
527 { 64, "Analyzed Information Request" },
528 { 65, "Connection Failure Report" },
529 { 66, "Connect Resource" },
530 { 67, "Disconnect Resource" },
531 { 68, "Facility Selected and Available" },
532 { 69, "Instruction Request" },
534 { 71, "Reset Timer" },
536 { 73, "Seize Resource" },
537 { 74, "SRF Directive" },
539 { 76, "T NoAnswer" },
541 { 78, "SMS Delivery Point to Point Ack" },
542 { 79, "Message Directive" },
543 { 80, "Bulk Disconnection" },
544 { 81, "Call Control Directive" },
546 { 83, "O Disconnect" },
547 { 84, "Call Recovery Report" },
549 { 86, "T Disconnect" },
550 { 87, "Unreliable Call Data" },
551 { 88, "O CalledPartyBusy" },
552 { 89, "O NoAnswer" },
553 { 90, "Position Request" },
554 { 91, "Position Request Forward" },
555 { 92, "Call Termination Report" },
556 { 93, "Geo Position Directive" },
557 { 94, "Geo Position Request" },
558 { 95, "Inter System Position Request" },
559 { 96, "Inter System Position Request Forward" },
560 { 97, "ACG Directive" },
561 { 98, "Roamer Database Verification Request" },
562 { 99, "Add Service" },
563 { 100, "Drop Service" },
564 { 101, "InterSystemSMSPage" },
565 { 102, "LCSParameterRequest" },
566 { 103, "Unknown ANSI-MAP PDU" },
567 { 104, "Unknown ANSI-MAP PDU" },
568 { 105, "Unknown ANSI-MAP PDU" },
569 { 106, "PositionEventNotification" },
570 { 107, "Unknown ANSI-MAP PDU" },
571 { 108, "Unknown ANSI-MAP PDU" },
572 { 109, "Unknown ANSI-MAP PDU" },
573 { 110, "Unknown ANSI-MAP PDU" },
574 { 111, "InterSystemSMSDelivery-PointToPoint" },
575 { 112, "QualificationRequest2" },
578 static value_string_ext ansi_map_opr_code_strings_ext = VALUE_STRING_EXT_INIT(ansi_map_opr_code_strings);
580 static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
581 static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
582 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_);
586 * XXX remove after trial period.
588 typedef struct dgt_set_t
590 unsigned char out[15];
594 static dgt_set_t Dgt_tbcd = {
596 /* 0 1 2 3 4 5 6 7 8 9 a b c d e */
597 '0','1','2','3','4','5','6','7','8','9','?','B','C','*','#'
600 static dgt_set_t Dgt1_9_bcd = {
602 /* 0 1 2 3 4 5 6 7 8 9 a b c d e */
603 '0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
606 /* Assumes the rest of the tvb contains the digits to be turned into a string
609 unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
616 length = tvb_length(tvb);
619 digit_str = ep_alloc((length - offset)*2+1);
621 while ( offset < length ){
623 octet = tvb_get_guint8(tvb,offset);
624 digit_str[i] = dgt->out[octet & 0x0f];
628 * unpack second value in byte
632 if (octet == 0x0f) /* odd number bytes - hit filler */
635 digit_str[i] = dgt->out[octet & 0x0f];
646 /* Type of Digits (octet 1, bits A-H) */
647 static const value_string ansi_map_type_of_digits_vals[] = {
649 { 1, "Dialed Number or Called Party Number" },
650 { 2, "Calling Party Number" },
651 { 3, "Caller Interaction" },
652 { 4, "Routing Number" },
653 { 5, "Billing Number" },
654 { 6, "Destination Number" },
659 /* Nature of Number (octet 2, bits A-H )*/
660 static const true_false_string ansi_map_na_bool_val = {
664 static const true_false_string ansi_map_pi_bool_val = {
665 "Presentation Restricted",
666 "Presentation Allowed"
668 static const true_false_string ansi_map_navail_bool_val = {
669 "Number is not available",
670 "Number is available"
672 static const true_false_string ansi_map_si_bool_val = {
673 "User provided, screening passed",
674 "User provided, not screened"
676 static const value_string ansi_map_si_vals[] = {
677 { 0, "User provided, not screened"},
678 { 1, "User provided, screening passed"},
679 { 2, "User provided, screening failed"},
680 { 3, "Network provided"},
683 /* Encoding (octet 3, bits A-D) */
684 static const value_string ansi_map_digits_enc_vals[] = {
688 { 3, "Octet string"},
691 /* Numbering Plan (octet 3, bits E-H) */
692 static const value_string ansi_map_np_vals[] = {
693 { 0, "Unknown or not applicable"},
694 { 1, "ISDN Numbering"},
695 { 2, "Telephony Numbering (ITU-T Rec. E.164,E.163)"},
696 { 3, "Data Numbering (ITU-T Rec. X.121)"},
697 { 4, "Telex Numbering (ITU-T Rec. F.69)"},
698 { 5, "Maritime Mobile Numbering"},
699 { 6, "Land Mobile Numbering (ITU-T Rec. E.212)"},
700 { 7, "Private Numbering Plan"},
701 { 13, "SS7 Point Code (PC) and Subsystem Number (SSN)"},
702 { 14, "Internet Protocol (IP) Address."},
703 { 15, "Reserved for extension"},
708 dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
709 const char *digit_str;
715 subtree = proto_item_add_subtree(actx->created_item, ett_mintype);
717 digit_str = unpack_digits2(tvb, offset, &Dgt1_9_bcd);
718 proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
719 proto_item_append_text(actx->created_item, " - %s", digit_str);
723 dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
725 guint8 octet , octet_len;
728 const char *digit_str;
733 subtree = proto_item_add_subtree(actx->created_item, ett_digitstype);
736 proto_tree_add_item(subtree, hf_ansi_map_type_of_digits, tvb, offset, 1, FALSE);
739 proto_tree_add_item(subtree, hf_ansi_map_reservedBitHG, tvb, offset, 1, FALSE);
740 proto_tree_add_item(subtree, hf_ansi_map_si, tvb, offset, 1, FALSE);
741 proto_tree_add_item(subtree, hf_ansi_map_reservedBitD, tvb, offset, 1, FALSE);
742 proto_tree_add_item(subtree, hf_ansi_map_navail, tvb, offset, 1, FALSE);
743 proto_tree_add_item(subtree, hf_ansi_map_pi, tvb, offset, 1, FALSE);
744 proto_tree_add_item(subtree, hf_ansi_map_na, tvb, offset, 1, FALSE);
747 octet = tvb_get_guint8(tvb,offset);
748 proto_tree_add_item(subtree, hf_ansi_map_np, tvb, offset, 1, FALSE);
749 proto_tree_add_item(subtree, hf_ansi_map_digits_enc, tvb, offset, 1, FALSE);
753 case 0:/* Unknown or not applicable */
754 switch ((octet&0xf)){
757 octet_len = tvb_get_guint8(tvb,offset);
758 proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE);
762 digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
763 proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
764 proto_item_append_text(actx->created_item, " - %s", digit_str);
768 octet_len = tvb_get_guint8(tvb,offset);
769 proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE);
773 proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE);
774 proto_item_append_text(actx->created_item, " - %s", tvb_get_ephemeral_string(tvb,offset,tvb_length_remaining(tvb,offset)));
783 case 1:/* ISDN Numbering (not used in this Standard). */
784 case 3:/* Data Numbering (ITU-T Rec. X.121) (not used in this Standard). */
785 case 4:/* Telex Numbering (ITU-T Rec. F.69) (not used in this Standard). */
786 case 5:/* Maritime Mobile Numbering (not used in this Standard). */
787 proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
789 case 2:/* Telephony Numbering (ITU-T Rec. E.164,E.163). */
790 case 6:/* Land Mobile Numbering (ITU-T Rec. E.212) */
791 case 7:/* Private Numbering Plan */
792 octet_len = tvb_get_guint8(tvb,offset);
793 proto_tree_add_item(subtree, hf_ansi_map_nr_digits, tvb, offset, 1, FALSE);
797 switch ((octet&0xf)){
800 digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
801 proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
802 proto_item_append_text(actx->created_item, " - %s", digit_str);
806 proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE);
807 proto_item_append_text(actx->created_item, " - %s", tvb_get_ephemeral_string(tvb,offset,tvb_length_remaining(tvb,offset)));
816 case 13:/* ANSI SS7 Point Code (PC) and Subsystem Number (SSN). */
817 switch ((octet&0xf)){
820 /* Point Code Member Number octet 2 */
821 b1 = tvb_get_guint8(tvb,offset);
823 /* Point Code Cluster Number octet 3 */
824 b2 = tvb_get_guint8(tvb,offset);
826 /* Point Code Network Number octet 4 */
827 b3 = tvb_get_guint8(tvb,offset);
829 /* Subsystem Number (SSN) octet 5 */
830 b4 = tvb_get_guint8(tvb,offset);
831 proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u SSN %u",
833 proto_item_append_text(actx->created_item, " - Point Code %u-%u-%u SSN %u", b3, b2, b1, b4);
839 case 14:/* Internet Protocol (IP) Address. */
842 proto_tree_add_text(subtree, tvb, offset, -1, "This Number plan should not have been used");
847 /* 6.5.3.13. Subaddress */
849 static const true_false_string ansi_map_Odd_Even_Ind_bool_val = {
853 /* Type of Subaddress (octet 1, bits E-G) */
854 static const value_string ansi_map_sub_addr_type_vals[] = {
855 { 0, "NSAP (CCITT Rec. X.213 or ISO 8348 AD2)"},
856 { 1, "User specified"},
867 dissect_ansi_map_subaddress(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
873 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
874 /* Type of Subaddress (octet 1, bits E-G) */
875 proto_tree_add_item(subtree, hf_ansi_map_subaddr_type, tvb, offset, 1, FALSE);
876 /* Odd/Even Indicator (O/E) (octet 1, bit D) */
877 proto_tree_add_item(subtree, hf_ansi_map_subaddr_odd_even, tvb, offset, 1, FALSE);
882 * Table 114 ActionCode value
884 * 6.5.2.2 ActionCode(TIA/EIA-41.5-D, page 5-129) */
886 static const value_string ansi_map_ActionCode_vals[] = {
888 { 1, "Continue processing"},
889 { 2, "Disconnect call"},
890 { 3, "Disconnect call leg"},
891 { 4, "Conference Calling Drop Last Party"},
892 { 5, "Bridge call leg(s) to conference call"},
893 { 6, "Drop call leg on busy or routing failure"},
894 { 7, "Disconnect all call legs"},
895 { 8, "Attach MSC to OTAF"},
896 { 9, "Initiate RegistrationNotification"},
897 { 10, "Generate Public Encryption values"},
898 { 11, "Generate A-key"},
899 { 12, "Perform SSD Update procedure"},
900 { 13, "Perform Re-authentication procedure"},
901 { 14, "Release TRN"},
902 { 15, "Commit A-key"},
903 { 16, "Release Resources (e.g., A-key, Traffic Channel)"},
904 { 17, "Record NEWMSID"},
905 { 18, "Allocate Resources (e.g., Multiple message traffic channel delivery)."},
906 { 19, "Generate Authentication Signature"},
907 { 20, "Release leg and redirect subscriber"},
908 { 21, "Do Not Wait For MS User Level Response"},
909 { 22, "Prepare for CDMA Handset-Based Position Determination"},
910 { 23, "CDMA Handset-Based Position Determination Complete"},
913 static value_string_ext ansi_map_ActionCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_ActionCode_vals);
915 /* 6.5.2.3 AlertCode */
917 /* Pitch (octet 1, bits G-H) */
918 static const value_string ansi_map_AlertCode_Pitch_vals[] = {
919 { 0, "Medium pitch"},
925 /* Cadence (octet 1, bits A-F) */
926 static const value_string ansi_map_AlertCode_Cadence_vals[] = {
930 { 3, "ShortShortLong"},
932 { 5, "ShortLongShort"},
933 { 6, "ShortShortShortShort"},
935 { 8, "PBXShortShort"},
936 { 9, "PBXShortShortLong"},
938 { 10, "PBXShortLongShort"},
939 { 11, "PBXShortShortShortShort"},
940 { 12, "PipPipPipPip"},
941 { 13, "Reserved. Treat the same as value 0, NoTone"},
942 { 14, "Reserved. Treat the same as value 0, NoTone"},
943 { 15, "Reserved. Treat the same as value 0, NoTone"},
944 { 16, "Reserved. Treat the same as value 0, NoTone"},
945 { 17, "Reserved. Treat the same as value 0, NoTone"},
946 { 18, "Reserved. Treat the same as value 0, NoTone"},
947 { 19, "Reserved. Treat the same as value 0, NoTone"},
951 /* Alert Action (octet 2, bits A-C) */
952 static const value_string ansi_map_AlertCode_Alert_Action_vals[] = {
953 { 0, "Alert without waiting to report"},
954 { 1, "Apply a reminder alert once"},
955 { 2, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
956 { 3, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
957 { 4, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
958 { 5, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
959 { 6, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
960 { 7, "Other values reserved. Treat the same as value 0, Alert without waiting to report"},
964 dissect_ansi_map_alertcode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
971 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
972 /* Pitch (octet 1, bits G-H) */
973 proto_tree_add_item(subtree, hf_ansi_alertcode_pitch, tvb, offset, 1, FALSE);
974 /* Cadence (octet 1, bits A-F) */
975 proto_tree_add_item(subtree, hf_ansi_alertcode_cadence, tvb, offset, 1, FALSE);
978 /* Alert Action (octet 2, bits A-C) */
979 proto_tree_add_item(subtree, hf_ansi_alertcode_alertaction, tvb, offset, 1, FALSE);
982 /* 6.5.2.4 AlertResult */
983 /* Result (octet 1) */
984 static const value_string ansi_map_AlertResult_result_vals[] = {
985 { 0, "Not specified"},
989 { 4, "NotAttempted"},
990 { 5, "NoPageResponse"},
995 /* 6.5.2.5 AnnouncementCode Updatef from NS0018Re*/
997 static const value_string ansi_map_AnnouncementCode_tone_vals[] = {
999 { 1, "RingBack or AudibleAlerting"},
1000 { 2, "InterceptTone or MobileReorder"},
1001 { 3, "CongestionTone or ReorderTone"},
1003 { 5, "ConfirmationTone"},
1005 { 7, "CallWaitingTone"},
1006 { 8, "OffHookTone"},
1007 { 17, "RecallDialTone"},
1008 { 18, "BargeInTone"},
1009 { 20, "PPCInsufficientTone"},
1010 { 21, "PPCWarningTone1"},
1011 { 22, "PPCWarningTone2"},
1012 { 23, "PPCWarningTone3"},
1013 { 24, "PPCDisconnectTone"},
1014 { 25, "PPCRedirectTone"},
1017 { 193, "AbbreviatedIntercept"},
1018 { 194, "AbbreviatedCongestion"},
1019 { 195, "WarningTone"},
1020 { 196, "DenialToneBurst"},
1021 { 197, "DialToneBurst"},
1022 { 250, "IncomingAdditionalCallTone"},
1023 { 251, "PriorityAdditionalCallTone"},
1026 /* Class (octet 2, bits A-D) */
1027 static const value_string ansi_map_AnnouncementCode_class_vals[] = {
1032 /* Standard Announcement (octet 3) Updated with N.S0015 */
1033 static const value_string ansi_map_AnnouncementCode_std_ann_vals[] = {
1035 { 1, "UnauthorizedUser"},
1037 { 3, "UnauthorizedMobile"},
1038 { 4, "SuspendedOrigination"},
1039 { 5, "OriginationDenied"},
1040 { 6, "ServiceAreaDenial"},
1041 { 16, "PartialDial"},
1042 { 17, "Require1Plus"},
1043 { 18, "Require1PlusNPA"},
1044 { 19, "Require0Plus"},
1045 { 20, "Require0PlusNPA"},
1047 { 22, "Unsupported10plus"},
1048 { 23, "Deny10plus"},
1049 { 24, "Unsupported10XXX"},
1051 { 26, "Deny10XXXLocally"},
1052 { 27, "Require10Plus"},
1053 { 28, "RequireNPA"},
1054 { 29, "DenyTollOrigination"},
1055 { 30, "DenyInternationalOrigination"},
1056 { 31, "Deny0Minus"},
1057 { 48, "DenyNumber"},
1058 { 49, "AlternateOperatorServices"},
1059 { 64, "No Circuit or AllCircuitsBusy or FacilityProblem"},
1061 { 66, "InternalOfficeFailure"},
1062 { 67, "NoWinkReceived"},
1063 { 68, "InterofficeLinkFailure"},
1065 { 70, "InvalidPrefix or InvalidAccessCode"},
1066 { 71, "OtherDialingIrregularity"},
1067 { 80, "VacantNumber or DisconnectedNumber"},
1068 { 81, "DenyTermination"},
1069 { 82, "SuspendedTermination"},
1070 { 83, "ChangedNumber"},
1071 { 84, "InaccessibleSubscriber"},
1072 { 85, "DenyIncomingTol"},
1073 { 86, "RoamerAccessScreening"},
1074 { 87, "RefuseCall"},
1075 { 88, "RedirectCall"},
1076 { 89, "NoPageResponse"},
1078 { 96, "RoamerIntercept"},
1079 { 97, "GeneralInformation"},
1080 { 112, "UnrecognizedFeatureCode"},
1081 { 113, "UnauthorizedFeatureCode"},
1082 { 114, "RestrictedFeatureCode"},
1083 { 115, "InvalidModifierDigits"},
1084 { 116, "SuccessfulFeatureRegistration"},
1085 { 117, "SuccessfulFeatureDeRegistration"},
1086 { 118, "SuccessfulFeatureActivation"},
1087 { 119, "SuccessfulFeatureDeActivation"},
1088 { 120, "InvalidForwardToNumber"},
1089 { 121, "CourtesyCallWarning"},
1090 { 128, "EnterPINSendPrompt"},
1091 { 129, "EnterPINPrompt"},
1092 { 130, "ReEnterPINSendPrompt"},
1093 { 131, "ReEnterPINPrompt"},
1094 { 132, "EnterOldPINSendPrompt"},
1095 { 133, "EnterOldPINPrompt"},
1096 { 134, "EnterNewPINSendPrompt"},
1097 { 135, "EnterNewPINPrompt"},
1098 { 136, "ReEnterNewPINSendPrompt"},
1099 { 137, "ReEnterNewPINPrompt"},
1100 { 138, "EnterPasswordPrompt"},
1101 { 139, "EnterDirectoryNumberPrompt"},
1102 { 140, "ReEnterDirectoryNumberPrompt"},
1103 { 141, "EnterFeatureCodePrompt"},
1104 { 142, "EnterEnterCreditCardNumberPrompt"},
1105 { 143, "EnterDestinationNumberPrompt"},
1106 { 152, "PPCInsufficientAccountBalance"},
1107 { 153, "PPCFiveMinuteWarning"},
1108 { 154, "PPCThreeMinuteWarning"},
1109 { 155, "PPCTwoMinuteWarning"},
1110 { 156, "PPCOneMinuteWarning"},
1111 { 157, "PPCDisconnect"},
1112 { 158, "PPCRedirect"},
1119 dissect_ansi_map_announcementcode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1123 proto_tree *subtree;
1126 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1128 /* Tone (octet 1) */
1129 proto_tree_add_item(subtree, hf_ansi_map_announcementcode_tone, tvb, offset, 1, FALSE);
1131 /* Class (octet 2, bits A-D) */
1132 proto_tree_add_item(subtree, hf_ansi_map_announcementcode_class, tvb, offset, 1, FALSE);
1134 /* Standard Announcement (octet 3) */
1135 proto_tree_add_item(subtree, hf_ansi_map_announcementcode_std_ann, tvb, offset, 1, FALSE);
1137 /* Custom Announcement ( octet 4 )
1138 e. The assignment of this octet is left to bilateral agreement. When a Custom
1139 Announcement is specified it takes precedence over either the Standard
1140 Announcement or Tone
1142 proto_tree_add_item(subtree, hf_ansi_map_announcementcode_cust_ann, tvb, offset, 1, FALSE);
1145 /* 6.5.2.8 AuthenticationCapability Updated N.S0003*/
1146 static const value_string ansi_map_AuthenticationCapability_vals[] = {
1148 { 1, "No authentication required"},
1149 { 2, "Authentication required"},
1150 { 128, "Authentication required and UIM capable."},
1154 /* 6.5.2.14 AuthorizationPeriod*/
1156 /* Period (octet 1) */
1157 static const value_string ansi_map_authorizationperiod_period_vals[] = {
1163 { 5, "Per Agreement"},
1164 { 6, "Indefinite (i.e., authorized until canceled or deregistered)"},
1165 { 7, "Number of calls. Re-authorization should be attempted after this number of (rejected) call attempts"},
1169 Number of minutes hours, days, weeks, or
1170 number of calls (as per Period). If Period
1171 indicates anything else the Value is set to zero
1172 on sending and ignored on receipt.
1175 dissect_ansi_map_authorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1179 proto_tree *subtree;
1182 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1183 proto_tree_add_item(subtree, hf_ansi_map_authorizationperiod_period, tvb, offset, 1, FALSE);
1185 proto_tree_add_item(subtree, hf_ansi_map_value, tvb, offset, 1, FALSE);
1188 /* 6.5.2.15 AvailabilityType */
1189 static const value_string ansi_map_AvailabilityType_vals[] = {
1191 { 1, "Unspecified MS inactivity type"},
1195 /* 6.5.2.16 BillingID */
1197 dissect_ansi_map_billingid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1201 proto_tree *subtree;
1204 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1206 proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
1207 offset = offset + 2;
1208 proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
1211 proto_tree_add_item(subtree, hf_ansi_map_idno, tvb, offset, 3, FALSE);
1212 offset = offset + 3;
1213 proto_tree_add_item(subtree, hf_ansi_map_segcount, tvb, offset, 1, FALSE);
1218 /* 6.5.2.20 CallingFeaturesIndicator */
1219 static const value_string ansi_map_FeatureActivity_vals[] = {
1221 { 1, "Not authorized"},
1222 { 2, "Authorized but de-activated"},
1223 { 3, "Authorized and activated"},
1229 dissect_ansi_map_callingfeaturesindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1233 proto_tree *subtree;
1235 length = tvb_length_remaining(tvb,offset);
1237 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1239 /* Call Waiting: FeatureActivity, CW-FA (Octet 1 bits GH ) */
1240 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cwfa, tvb, offset, 1, FALSE);
1241 /* Call Forwarding No Answer FeatureActivity, CFNA-FA (Octet 1 bits EF ) */
1242 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfnafa, tvb, offset, 1, FALSE);
1243 /* Call Forwarding Busy FeatureActivity, CFB-FA (Octet 1 bits CD ) */
1244 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfbfa, tvb, offset, 1, FALSE);
1245 /* Call Forwarding Unconditional FeatureActivity, CFU-FA (Octet 1 bits AB ) */
1246 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cfufa, tvb, offset, 1, FALSE);
1250 /* Call Transfer: FeatureActivity, CT-FA (Octet 2 bits GH ) */
1251 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ctfa, tvb, offset, 1, FALSE);
1252 /* Voice Privacy FeatureActivity, VP-FA (Octet 2 bits EF ) */
1253 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_vpfa, tvb, offset, 1, FALSE);
1254 /* Call Delivery: FeatureActivity (not interpreted on reception by IS-41-C or later)
1255 CD-FA (Octet 2 bits CD ) */
1256 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cdfa, tvb, offset, 1, FALSE);
1257 /* Three-Way Calling FeatureActivity, 3WC-FA (Octet 2 bits AB ) */
1258 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_3wcfa, tvb, offset, 1, FALSE);
1263 /* Calling Number Identification Restriction Override FeatureActivity CNIROver-FA (Octet 3 bits GH ) */
1264 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cniroverfa, tvb, offset, 1, FALSE);
1265 /* Calling Number Identification Restriction: FeatureActivity CNIR-FA (Octet 3 bits EF ) */
1266 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnirfa, tvb, offset, 1, FALSE);
1267 /* Calling Number Identification Presentation: FeatureActivity CNIP2-FA (Octet 3 bits CD ) */
1268 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnip2fa, tvb, offset, 1, FALSE);
1269 /* Calling Number Identification Presentation: FeatureActivity CNIP1-FA (Octet 3 bits AB ) */
1270 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cnip1fa, tvb, offset, 1, FALSE);
1276 /* USCF divert to voice mail: FeatureActivity USCFvm-FA (Octet 4 bits GH ) */
1277 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfvmfa, tvb, offset, 1, FALSE);
1278 /* Answer Hold: FeatureActivity AH-FA (Octet 4 bits EF ) N.S0029-0 v1.0 */
1279 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ahfa, tvb, offset, 1, FALSE);
1280 /* Data Privacy Feature Activity DP-FA (Octet 4 bits CD ) N.S0008-0 v 1.0 */
1281 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_dpfa, tvb, offset, 1, FALSE);
1282 /* Priority Call Waiting FeatureActivity PCW-FA (Octet 4 bits AB ) */
1283 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_pcwfa, tvb, offset, 1, FALSE);
1289 /* USCF divert to mobile station provided DN:FeatureActivity.USCFms-FA (Octet 5 bits AB ) */
1290 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfmsfa, tvb, offset, 1, FALSE);
1291 /* USCF divert to network registered DN:FeatureActivity. USCFnr-FA (Octet 5 bits CD )*/
1292 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_uscfnrfa, tvb, offset, 1, FALSE);
1293 /* CDMA-Packet Data Service: FeatureActivity. CPDS-FA (Octet 5 bits EF ) N.S0029-0 v1.0*/
1294 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_cpdsfa, tvb, offset, 1, FALSE);
1295 /* CDMA-Concurrent Service:FeatureActivity. CCS-FA (Octet 5 bits GH ) N.S0029-0 v1.0*/
1296 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_ccsfa, tvb, offset, 1, FALSE);
1302 /* TDMA Enhanced Privacy and Encryption:FeatureActivity.TDMA EPE-FA (Octet 6 bits AB ) N.S0029-0 v1.0*/
1303 proto_tree_add_item(subtree, hf_ansi_map_callingfeaturesindicator_epefa, tvb, offset, 1, FALSE);
1307 /* 6.5.2.27 CancellationType */
1308 static const value_string ansi_map_CancellationType_vals[] = {
1310 { 1, "ServingSystemOption"},
1311 { 2, "ReportInCall."},
1312 { 3, "Discontinue"},
1316 /* 6.5.2.29 CDMACallMode Updated with N.S0029-0 v1.0*/
1317 /* Call Mode (octet 1, bit A) */
1318 static const true_false_string ansi_map_CDMACallMode_cdma_bool_val = {
1319 "CDMA 800 MHz channel (Band Class 0) acceptable.",
1320 "CDMA 800 MHz channel (Band Class 0) not acceptable"
1322 /* Call Mode (octet 1, bit B) */
1323 static const true_false_string ansi_map_CallMode_amps_bool_val = {
1324 "AAMPS 800 MHz channel acceptable",
1325 "AMPS 800 MHz channel not acceptable"
1327 /* Call Mode (octet 1, bit C) */
1328 static const true_false_string ansi_map_CallMode_namps_bool_val = {
1329 "NAMPS 800 MHz channel acceptable",
1330 "NAMPS 800 MHz channel not acceptable"
1332 /* Call Mode (octet 1, bit D) */
1333 static const true_false_string ansi_map_CDMACallMode_cls1_bool_val = {
1334 "CDMA 1900 MHz channel (Band Class 1) acceptable.",
1335 "CDMA 1900 MHz channel (Band Class 1) not acceptable"
1337 /* Call Mode (octet 1, bit E) */
1338 static const true_false_string ansi_map_CDMACallMode_cls2_bool_val = {
1339 "TACS channel (Band Class 2) acceptable",
1340 "TACS channel (Band Class 2) not acceptable"
1342 /* Call Mode (octet 1, bit F) */
1343 static const true_false_string ansi_map_CDMACallMode_cls3_bool_val = {
1344 "JTACS channel (Band Class 3) acceptable",
1345 "JTACS channel (Band Class 3) not acceptable"
1347 /* Call Mode (octet 1, bit G) */
1348 static const true_false_string ansi_map_CDMACallMode_cls4_bool_val = {
1349 "Korean PCS channel (Band Class 4) acceptable",
1350 "Korean PCS channel (Band Class 4) not acceptable"
1352 /* Call Mode (octet 1, bit H) */
1353 static const true_false_string ansi_map_CDMACallMode_cls5_bool_val = {
1354 "450 MHz channel (Band Class 5) not acceptable",
1355 "450 MHz channel (Band Class 5) not acceptable"
1357 /* Call Mode (octet 2, bit A) */
1358 static const true_false_string ansi_map_CDMACallMode_cls6_bool_val = {
1359 "2 GHz channel (Band Class 6) acceptable.",
1360 "2 GHz channel (Band Class 6) not acceptable."
1363 /* Call Mode (octet 2, bit B) */
1364 static const true_false_string ansi_map_CDMACallMode_cls7_bool_val = {
1365 "700 MHz channel (Band Class 7) acceptable",
1366 "700 MHz channel (Band Class 7) not acceptable"
1369 /* Call Mode (octet 2, bit C) */
1370 static const true_false_string ansi_map_CDMACallMode_cls8_bool_val = {
1371 "1800 MHz channel (Band Class 8) acceptable",
1372 "1800 MHz channel (Band Class 8) not acceptable"
1374 /* Call Mode (octet 2, bit D) */
1375 static const true_false_string ansi_map_CDMACallMode_cls9_bool_val = {
1376 "900 MHz channel (Band Class 9) acceptable",
1377 "900 MHz channel (Band Class 9) not acceptable"
1379 /* Call Mode (octet 2, bit E) */
1380 static const true_false_string ansi_map_CDMACallMode_cls10_bool_val = {
1381 "Secondary 800 MHz channel (Band Class 10) acceptable.",
1382 "Secondary 800 MHz channel (Band Class 10) not acceptable."
1386 dissect_ansi_map_cdmacallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1390 proto_tree *subtree;
1392 length = tvb_length_remaining(tvb,offset);
1395 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1396 /* Call Mode (octet 1, bit H) */
1397 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls5, tvb, offset, 1, FALSE);
1398 /* Call Mode (octet 1, bit G) */
1399 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls4, tvb, offset, 1, FALSE);
1400 /* Call Mode (octet 1, bit F) */
1401 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls3, tvb, offset, 1, FALSE);
1402 /* Call Mode (octet 1, bit E) */
1403 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls2, tvb, offset, 1, FALSE);
1404 /* Call Mode (octet 1, bit D) */
1405 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls1, tvb, offset, 1, FALSE);
1406 /* Call Mode (octet 1, bit C) */
1407 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_namps, tvb, offset, 1, FALSE);
1408 /* Call Mode (octet 1, bit B) */
1409 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_amps, tvb, offset, 1, FALSE);
1410 /* Call Mode (octet 1, bit A) */
1411 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cdma, tvb, offset, 1, FALSE);
1418 /* Call Mode (octet 2, bit E) */
1419 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls10, tvb, offset, 1, FALSE);
1420 /* Call Mode (octet 2, bit D) */
1421 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls9, tvb, offset, 1, FALSE);
1422 /* Call Mode (octet 2, bit C) */
1423 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls8, tvb, offset, 1, FALSE);
1424 /* Call Mode (octet 2, bit B) */
1425 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls7, tvb, offset, 1, FALSE);
1426 /* Call Mode (octet 2, bit A) */
1427 proto_tree_add_item(subtree, hf_ansi_map_cdmacallmode_cls6, tvb, offset, 1, FALSE);
1430 /* 6.5.2.30 CDMAChannelData */
1431 /* Updated with N.S0010-0 v 1.0 */
1433 static const value_string ansi_map_cdmachanneldata_band_cls_vals[] = {
1434 { 0, "800 MHz Cellular System"},
1439 dissect_ansi_map_cdmachanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1444 proto_tree *subtree;
1446 length = tvb_length_remaining(tvb,offset);
1449 subtree = proto_item_add_subtree(actx->created_item, ett_cdmachanneldata);
1451 proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
1452 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_Frame_Offset, tvb, offset, 1, FALSE);
1453 /* CDMA Channel Number */
1454 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_CDMA_ch_no, tvb, offset, 2, FALSE);
1455 offset = offset + 2;
1458 proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
1459 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_band_cls, tvb, offset, 1, FALSE);
1460 /* Long Code Mask */
1461 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b6, tvb, offset, 1, FALSE);
1463 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b5, tvb, offset, 1, FALSE);
1465 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b4, tvb, offset, 1, FALSE);
1467 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b3, tvb, offset, 1, FALSE);
1469 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b2, tvb, offset, 1, FALSE);
1471 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_lc_mask_b1, tvb, offset, 1, FALSE);
1472 length = length - 6;
1477 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_np_ext, tvb, offset, 1, FALSE);
1479 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_nominal_pwr, tvb, offset, 1, FALSE);
1480 /* Number Preamble */
1481 proto_tree_add_item(subtree, hf_ansi_map_cdmachanneldata_nr_preamble, tvb, offset, 1, FALSE);
1484 /* 6.5.2.31 CDMACodeChannel */
1486 /* 6.5.2.41 CDMAStationClassMark */
1487 /* Power Class: (PC) (octet 1, bits A and B) */
1488 static const value_string ansi_map_CDMAStationClassMark_pc_vals[] = {
1495 /* Analog Transmission: (DTX) (octet 1, bit C) */
1496 static const true_false_string ansi_map_CDMAStationClassMark_dtx_bool_val = {
1500 /* Slotted Mode Indicator: (SMI) (octet 1, bit F) */
1501 static const true_false_string ansi_map_CDMAStationClassMark_smi_bool_val = {
1505 /* Dual-mode Indicator(DMI) (octet 1, bit G) */
1506 static const true_false_string ansi_map_CDMAStationClassMark_dmi_bool_val = {
1513 dissect_ansi_map_cdmastationclassmark(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1516 proto_tree *subtree;
1519 subtree = proto_item_add_subtree(actx->created_item, ett_cdmastationclassmark);
1521 proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
1522 /* Dual-mode Indicator(DMI) (octet 1, bit G) */
1523 proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_dmi, tvb, offset, 1, FALSE);
1524 /* Slotted Mode Indicator: (SMI) (octet 1, bit F) */
1525 proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_smi, tvb, offset, 1, FALSE);
1526 proto_tree_add_item(subtree, hf_ansi_map_reservedBitED, tvb, offset, 1, FALSE);
1527 /* Analog Transmission: (DTX) (octet 1, bit C) */
1528 proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_dtx, tvb, offset, 1, FALSE);
1529 /* Power Class: (PC) (octet 1, bits A and B) */
1530 proto_tree_add_item(subtree, hf_ansi_map_cdmastationclassmark_pc, tvb, offset, 1, FALSE);
1532 /* 6.5.2.47 ChannelData */
1533 /* Discontinuous Transmission Mode (DTX) (octet 1, bits E and D) */
1534 static const value_string ansi_map_ChannelData_dtx_vals[] = {
1535 { 0, "DTX disabled"},
1536 { 1, "Reserved. Treat the same as value 00, DTX disabled."},
1537 { 2, "DTX-low mode"},
1538 { 3, "DTX mode active or acceptable"},
1544 dissect_ansi_map_channeldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1547 proto_tree *subtree;
1550 subtree = proto_item_add_subtree(actx->created_item, ett_channeldata);
1552 /* SAT Color Code (SCC) (octet 1, bits H and G) */
1553 proto_tree_add_item(subtree, hf_ansi_map_channeldata_scc, tvb, offset, 1, FALSE);
1554 /* Discontinuous Transmission Mode (DTX) (octet 1, bits E and D) */
1555 proto_tree_add_item(subtree, hf_ansi_map_channeldata_dtx, tvb, offset, 1, FALSE);
1556 /* Voice Mobile Attenuation Code (VMAC) (octet 1, bits A - C)*/
1557 proto_tree_add_item(subtree, hf_ansi_map_channeldata_vmac, tvb, offset, 1, FALSE);
1560 /* Channel Number (CHNO) ( octet 2 and 3 ) */
1561 proto_tree_add_item(subtree, hf_ansi_map_channeldata_chno, tvb, offset, 2, FALSE);
1565 /* 6.5.2.50 ConfidentialityModes */
1566 /* Updated with N.S0008-0 v 1.0*/
1567 /* Voice Privacy (VP) Confidentiality Status (octet 1, bit A) */
1569 static const true_false_string ansi_map_ConfidentialityModes_bool_val = {
1574 dissect_ansi_map_confidentialitymodes(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1577 proto_tree *subtree;
1580 subtree = proto_item_add_subtree(actx->created_item, ett_confidentialitymodes);
1582 /* DataPrivacy (DP) Confidentiality Status (octet 1, bit C) */
1583 proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_dp, tvb, offset, 1, FALSE);
1584 /* Signaling Message Encryption (SE) Confidentiality Status (octet 1, bit B) */
1585 proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_se, tvb, offset, 1, FALSE);
1586 /* Voice Privacy (VP) Confidentiality Status (octet 1, bit A) */
1587 proto_tree_add_item(subtree, hf_ansi_map_ConfidentialityModes_vp, tvb, offset, 1, FALSE);
1591 /* 6.5.2.51 ControlChannelData */
1593 /* Digital Color Code (DCC) (octet 1, bit H and G) */
1594 /* Control Mobile Attenuation Code (CMAC) (octet 1, bit A - C) */
1595 /* Channel Number (CHNO) ( octet 2 and 3 ) */
1596 /* Supplementary Digital Color Codes (SDCC1 and SDCC2) */
1597 /* SDCC1 ( octet 4, bit D and C )*/
1598 /* SDCC2 ( octet 4, bit A and B )*/
1601 dissect_ansi_map_controlchanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1604 proto_tree *subtree;
1607 subtree = proto_item_add_subtree(actx->created_item, ett_controlchanneldata);
1609 /* Digital Color Code (DCC) (octet 1, bit H and G) */
1610 proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_dcc, tvb, offset, 1, FALSE);
1611 proto_tree_add_item(subtree, hf_ansi_map_reservedBitFED, tvb, offset, 1, FALSE);
1612 /* Control Mobile Attenuation Code (CMAC) (octet 1, bit A - C) */
1613 proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_cmac, tvb, offset, 1, FALSE);
1615 /* Channel Number (CHNO) ( octet 2 and 3 ) */
1616 proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_chno, tvb, offset, 2, FALSE);
1617 /* Supplementary Digital Color Codes (SDCC1 and SDCC2) */
1619 /* SDCC1 ( octet 4, bit D and C )*/
1620 proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_sdcc1, tvb, offset, 1, FALSE);
1621 proto_tree_add_item(subtree, hf_ansi_map_reservedBitHGFE, tvb, offset, 1, FALSE);
1622 /* SDCC2 ( octet 4, bit A and B )*/
1623 proto_tree_add_item(subtree, hf_ansi_map_controlchanneldata_sdcc2, tvb, offset, 1, FALSE);
1627 /* 6.5.2.52 CountUpdateReport */
1628 static const value_string ansi_map_CountUpdateReport_vals[] = {
1636 /* 6.5.2.53 DeniedAuthorizationPeriod */
1637 /* Period (octet 1) */
1638 static const value_string ansi_map_deniedauthorizationperiod_period_vals[] = {
1640 { 1, "Per Call. Re-authorization should be attempted on the next call attempt"},
1644 { 5, "Per Agreement"},
1646 { 7, "Number of calls. Re-authorization should be attempted after this number of (rejected) call attempts"},
1651 Number of minutes hours, days, weeks, or
1652 number of calls (as per Period). If Period
1653 indicates anything else the Value is set to zero
1654 on sending and ignored on receipt.
1658 dissect_ansi_map_deniedauthorizationperiod(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1662 proto_tree *subtree;
1665 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1666 proto_tree_add_item(subtree, hf_ansi_map_deniedauthorizationperiod_period, tvb, offset, 1, FALSE);
1668 proto_tree_add_item(subtree, hf_ansi_map_value, tvb, offset, 1, FALSE);
1673 /* 6.5.2.57 DigitCollectionControl */
1674 /* TODO Add decoding here */
1676 /* 6.5.2.64 ExtendedMSCID */
1677 static const value_string ansi_map_msc_type_vals[] = {
1678 { 0, "Not specified"},
1679 { 1, "Serving MSC"},
1681 { 3, "Gateway MSC"},
1684 { 6, "EIR (reserved)"},
1687 { 9, "Originating MSC"},
1692 dissect_ansi_map_extendedmscid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1696 proto_tree *subtree;
1699 subtree = proto_item_add_subtree(actx->created_item, ett_extendedmscid);
1700 /* Type (octet 1) */
1701 proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE);
1703 proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
1704 offset = offset + 2;
1705 proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
1708 /* 6.5.2.65 ExtendedSystemMyTypeCode */
1710 dissect_ansi_map_extendedsystemmytypecode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx){
1714 proto_tree *subtree;
1717 subtree = proto_item_add_subtree(actx->created_item, ett_extendedsystemmytypecode);
1718 /* Type (octet 1) */
1719 proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE);
1721 offset = dissect_ansi_map_SystemMyTypeCode(TRUE, tvb, offset, actx, subtree, hf_ansi_map_systemMyTypeCode);
1725 /* 6.5.2.68 GeographicAuthorization */
1726 /* Geographic Authorization (octet 1) */
1727 static const value_string ansi_map_GeographicAuthorization_vals[] = {
1729 { 1, "Authorized for all MarketIDs served by the VLR"},
1730 { 2, "Authorized for this MarketID only"},
1731 { 3, "Authorized for this MarketID and Switch Number only"},
1732 { 4, "Authorized for this LocationAreaID within a MarketID only"},
1734 { 6, "EIR (reserved)"},
1737 { 9, "Originating MSC"},
1741 /* 6.5.2.71 HandoffState */
1742 /* Party Involved (PI) (octet 1, bit A) */
1743 static const true_false_string ansi_map_HandoffState_pi_bool_val = {
1744 "Terminator is handing off",
1745 "Originator is handing off"
1748 dissect_ansi_map_handoffstate(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1752 proto_tree *subtree;
1755 subtree = proto_item_add_subtree(actx->created_item, ett_handoffstate);
1756 /* Party Involved (PI) (octet 1, bit A) */
1757 proto_tree_add_item(subtree, hf_ansi_map_handoffstate_pi, tvb, offset, 1, FALSE);
1760 /* 6.5.2.72 InterMSCCircuitID */
1761 /* Trunk Member Number (M) Octet2 */
1763 dissect_ansi_map_intermsccircuitid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1767 proto_tree *subtree;
1768 guint8 octet, octet2;
1771 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1772 /* Trunk Group Number (G) Octet 1 */
1773 octet = tvb_get_guint8(tvb,offset);
1774 proto_tree_add_item(subtree, hf_ansi_map_tgn, tvb, offset, 1, FALSE);
1776 /* Trunk Member Number (M) Octet2 */
1777 octet2 = tvb_get_guint8(tvb,offset);
1778 proto_tree_add_item(subtree, hf_ansi_map_tmn, tvb, offset, 1, FALSE);
1779 proto_item_append_text(actx->created_item, " (G %u/M %u)", octet, octet2);
1782 /* 6.5.2.78 MessageWaitingNotificationCount */
1783 /* Type of messages (octet 1) */
1784 static const value_string ansi_map_MessageWaitingNotificationCount_type_vals[] = {
1785 { 0, "Voice messages"},
1786 { 1, "Short Message Services (SMS) messages"},
1787 { 2, "Group 3 (G3) Fax messages"},
1792 dissect_ansi_map_messagewaitingnotificationcount(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1796 proto_tree *subtree;
1799 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1800 /* Type of messages (octet 1) */
1801 proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationcount_tom, tvb, offset, 1, FALSE);
1803 /* Number of Messages Waiting (octet 2) */
1804 proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationcount_no_mw, tvb, offset, 1, FALSE);
1808 /* 6.5.2.79 MessageWaitingNotificationType */
1809 /* Pip Tone (PT) (octet 1, bit A) */
1810 static const true_false_string ansi_map_MessageWaitingNotificationType_pt_bool_val = {
1811 "Pip Tone (PT) notification is required",
1812 "Pip Tone (PT) notification is not authorized or no notification is required"
1814 /* Alert Pip Tone (APT) (octet 1, bit B) */
1815 static const true_false_string ansi_map_MessageWaitingNotificationType_apt_bool_val = {
1816 "Alert Pip Tone (APT) notification is required",
1817 "Alert Pip Tone (APT) notification is not authorized or notification is not required"
1819 /* Message Waiting Indication (MWI) (octet 1, bits C and D) */
1820 static const value_string ansi_map_MessageWaitingNotificationType_mwi_vals[] = {
1821 { 0, "No MWI. Message Waiting Indication (MWI) notification is not authorized or notification is not required"},
1823 { 2, "MWI On. Message Waiting Indication (MWI) notification is required. Messages waiting"},
1824 { 3, "MWI Off. Message Waiting Indication (MWI) notification is required. No messages waiting"},
1829 dissect_ansi_map_messagewaitingnotificationtype(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1833 proto_tree *subtree;
1836 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
1838 /* Message Waiting Indication (MWI) (octet 1, bits C and D) */
1839 proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_mwi, tvb, offset, 1, FALSE);
1840 /* Alert Pip Tone (APT) (octet 1, bit B) */
1841 proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_apt, tvb, offset, 1, FALSE);
1842 /* Pip Tone (PT) (octet 1, bit A) */
1843 proto_tree_add_item(subtree, hf_ansi_map_messagewaitingnotificationtype_pt, tvb, offset, 1, FALSE);
1846 /* 6.5.2.81 MobileIdentificationNumber */
1848 /* 6.5.2.82 MSCID */
1851 dissect_ansi_map_mscid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1854 proto_tree *subtree;
1857 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1859 proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
1860 offset = offset + 2;
1861 proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
1865 /* 6.5.2.84 MSLocation */
1867 dissect_ansi_map_mslocation(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1870 proto_tree *subtree;
1873 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1875 /* Latitude in tenths of a second octet 1 - 3 */
1876 proto_tree_add_item(subtree, hf_ansi_map_mslocation_lat, tvb, offset, 3, FALSE);
1877 offset = offset + 3;
1878 /* Longitude in tenths of a second octet 4 - 6 */
1879 proto_tree_add_item(subtree, hf_ansi_map_mslocation_long, tvb, offset, 3, FALSE);
1880 offset = offset + 3;
1881 /* Resolution in units of 1 foot octet 7, octet 8 optional */
1882 proto_tree_add_item(subtree, hf_ansi_map_mslocation_res, tvb, offset, -1, FALSE);
1885 /* 6.5.2.85 NAMPSCallMode */
1887 dissect_ansi_map_nampscallmode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1889 proto_tree *subtree;
1892 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1894 /* Call Mode (octet 1, bits A and B) */
1895 proto_tree_add_item(subtree, hf_ansi_map_nampscallmode_amps, tvb, offset, 1, FALSE);
1896 proto_tree_add_item(subtree, hf_ansi_map_nampscallmode_namps, tvb, offset, 1, FALSE);
1899 /* 6.5.2.86 NAMPSChannelData */
1900 /* Narrow Analog Voice Channel Assignment (NAVCA) (octet 1, bits A and B) */
1901 static const value_string ansi_map_NAMPSChannelData_navca_vals[] = {
1902 { 0, "Wide. 30 kHz AMPS voice channel"},
1903 { 1, "Upper. 10 kHz NAMPS voice channel"},
1904 { 2, "Middle. 10 kHz NAMPS voice channel"},
1905 { 3, "Lower. 10 kHz NAMPS voice channel"},
1908 /* Color Code Indicator (CCIndicator) (octet 1, bits C, D, and E) */
1909 static const value_string ansi_map_NAMPSChannelData_ccinidicator_vals[] = {
1910 { 0, "ChannelData parameter SCC field applies"},
1911 { 1, "Digital SAT Color Code 1 (ignore SCC field)"},
1912 { 2, "Digital SAT Color Code 2 (ignore SCC field)"},
1913 { 3, "Digital SAT Color Code 3 (ignore SCC field)"},
1914 { 4, "Digital SAT Color Code 4 (ignore SCC field)"},
1915 { 5, "Digital SAT Color Code 5 (ignore SCC field)"},
1916 { 6, "Digital SAT Color Code 6 (ignore SCC field)"},
1917 { 7, "Digital SAT Color Code 7 (ignore SCC field)"},
1924 dissect_ansi_map_nampschanneldata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1926 proto_tree *subtree;
1929 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
1931 /* Color Code Indicator (CCIndicator) (octet 1, bits C, D, and E) */
1932 proto_tree_add_item(subtree, hf_ansi_map_nampschanneldata_CCIndicator, tvb, offset, 1, FALSE);
1933 /* Narrow Analog Voice Channel Assignment (NAVCA) (octet 1, bits A and B) */
1934 proto_tree_add_item(subtree, hf_ansi_map_nampschanneldata_navca, tvb, offset, 1, FALSE);
1938 /* 6.5.2.88 OneTimeFeatureIndicator */
1939 /* updated with N.S0012 */
1940 /* Call Waiting for Future Incoming Call (CWFI) (octet 1, bits A and B) */
1941 /* Call Waiting for Incoming Call (CWIC) (octet 1, bits C and D) */
1943 static const value_string ansi_map_onetimefeatureindicator_cw_vals[] = {
1947 { 3, "Priority CW"},
1950 /* MessageWaitingNotification (MWN) (octet 1, bits E and F) */
1951 static const value_string ansi_map_onetimefeatureindicator_mwn_vals[] = {
1953 { 1, "Pip Tone Inactive"},
1954 { 2, "Pip Tone Active"},
1958 /* Calling Number Identification Restriction (CNIR) (octet 1, bits G and H)*/
1959 static const value_string ansi_map_onetimefeatureindicator_cnir_vals[] = {
1961 { 1, "CNIR Inactive"},
1962 { 2, "CNIR Active"},
1967 /* Priority Access and Channel Assignment (PACA) (octet 2, bits A and B)*/
1968 static const value_string ansi_map_onetimefeatureindicator_paca_vals[] = {
1970 { 1, "PACA Demand Inactive"},
1971 { 2, "PACA Demand Activated"},
1976 /* Flash Privileges (Flash) (octet 2, bits C and D) */
1977 static const value_string ansi_map_onetimefeatureindicator_flash_vals[] = {
1979 { 1, "Flash Inactive"},
1980 { 2, "Flash Active"},
1984 /* Calling Name Restriction (CNAR) (octet 2, bits E and F) */
1985 static const value_string ansi_map_onetimefeatureindicator_cnar_vals[] = {
1987 { 1, "Presentation Allowed"},
1988 { 2, "Presentation Restricted."},
1989 { 3, "Blocking Toggle"},
1993 dissect_ansi_map_onetimefeatureindicator(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
1995 proto_tree *subtree;
1998 subtree = proto_item_add_subtree(actx->created_item, ett_mscid);
2000 /* Calling Number Identification Restriction (CNIR) (octet 1, bits G and H)*/
2001 /* MessageWaitingNotification (MWN) (octet 1, bits E and F) */
2002 /* Call Waiting for Incoming Call (CWIC) (octet 1, bits C and D) */
2003 /* Call Waiting for Future Incoming Call (CWFI) (octet 1, bits A and B) */
2005 /* Calling Name Restriction (CNAR) (octet 2, bits E and F) */
2006 /* Flash Privileges (Flash) (octet 2, bits C and D) */
2007 /* Priority Access and Channel Assignment (PACA) (octet 2, bits A and B)*/
2012 /* 6.5.2.90 OriginationTriggers */
2013 /* All Origination (All) (octet 1, bit A) */
2014 static const true_false_string ansi_map_originationtriggers_all_bool_val = {
2015 "Launch an OriginationRequest for any call attempt. This overrides all other values",
2016 "Trigger is not active"
2019 /* Local (octet 1, bit B) */
2020 static const true_false_string ansi_map_originationtriggers_local_bool_val = {
2021 "Launch an OriginationRequest for any local call attempt",
2022 "Trigger is not active"
2025 /* Intra-LATA Toll (ILATA) (octet 1, bit C) */
2026 static const true_false_string ansi_map_originationtriggers_ilata_bool_val = {
2027 "Launch an OriginationRequest for any intra-LATA call attempt",
2028 "Trigger is not active"
2030 /* Inter-LATA Toll (OLATA) (octet 1, bit D) */
2031 static const true_false_string ansi_map_originationtriggers_olata_bool_val = {
2032 "Launch an OriginationRequest for any inter-LATA toll call attempt",
2033 "Trigger is not active"
2035 /* International (Int'l ) (octet 1, bit E) */
2036 static const true_false_string ansi_map_originationtriggers_int_bool_val = {
2037 "Launch an OriginationRequest for any international call attempt",
2038 "Trigger is not active"
2040 /* World Zone (WZ) (octet 1, bit F) */
2041 static const true_false_string ansi_map_originationtriggers_wz_bool_val = {
2042 "Launch an OriginationRequest for any call attempt outside of the current World Zone (as defined in ITU-T Rec. E.164)",
2043 "Trigger is not active"
2046 /* Unrecognized Number (Unrec) (octet 1, bit G) */
2047 static const true_false_string ansi_map_originationtriggers_unrec_bool_val = {
2048 "Launch an OriginationRequest for any call attempt to an unrecognized number",
2049 "Trigger is not active"
2051 /* Revertive Call (RvtC) (octet 1, bit H)*/
2052 static const true_false_string ansi_map_originationtriggers_rvtc_bool_val = {
2053 "Launch an OriginationRequest for any Revertive Call attempt",
2054 "Trigger is not active"
2057 /* Star (octet 2, bit A) */
2058 static const true_false_string ansi_map_originationtriggers_star_bool_val = {
2059 "Launch an OriginationRequest for any number beginning with a Star '*' digit",
2060 "Trigger is not active"
2063 /* Double Star (DS) (octet 2, bit B) */
2064 static const true_false_string ansi_map_originationtriggers_ds_bool_val = {
2065 "Launch an OriginationRequest for any number beginning with two Star '**' digits",
2066 "Trigger is not active"
2068 /* Pound (octet 2, bit C) */
2069 static const true_false_string ansi_map_originationtriggers_pound_bool_val = {
2070 "Launch an OriginationRequest for any number beginning with a Pound '#' digit",
2071 "Trigger is not active"
2073 /* Double Pound (DP) (octet 2, bit D) */
2074 static const true_false_string ansi_map_originationtriggers_dp_bool_val = {
2075 "Launch an OriginationRequest for any number beginning with two Pound '##' digits",
2076 "Trigger is not active"
2078 /* Prior Agreement (PA) (octet 2, bit E) */
2079 static const true_false_string ansi_map_originationtriggers_pa_bool_val = {
2080 "Launch an OriginationRequest for any number matching a criteria of a prior agreement",
2081 "Trigger is not active"
2084 /* No digits (octet 3, bit A) */
2085 static const true_false_string ansi_map_originationtriggers_nodig_bool_val = {
2086 "Launch an OriginationRequest for any call attempt with no digits",
2087 "Trigger is not active"
2090 /* 1 digit (octet 3, bit B) */
2091 static const true_false_string ansi_map_originationtriggers_onedig_bool_val = {
2092 "Launch an OriginationRequest for any call attempt with 1 digit",
2093 "Trigger is not active"
2095 /* 1 digit (octet 3, bit C) */
2096 static const true_false_string ansi_map_originationtriggers_twodig_bool_val = {
2097 "Launch an OriginationRequest for any call attempt with 2 digits",
2098 "Trigger is not active"
2100 /* 1 digit (octet 3, bit D) */
2101 static const true_false_string ansi_map_originationtriggers_threedig_bool_val = {
2102 "Launch an OriginationRequest for any call attempt with 3 digits",
2103 "Trigger is not active"
2105 /* 1 digit (octet 3, bit E) */
2106 static const true_false_string ansi_map_originationtriggers_fourdig_bool_val = {
2107 "Launch an OriginationRequest for any call attempt with 4 digits",
2108 "Trigger is not active"
2110 /* 1 digit (octet 3, bit F) */
2111 static const true_false_string ansi_map_originationtriggers_fivedig_bool_val = {
2112 "Launch an OriginationRequest for any call attempt with 5 digits",
2113 "Trigger is not active"
2115 /* 1 digit (octet 3, bit G) */
2116 static const true_false_string ansi_map_originationtriggers_sixdig_bool_val = {
2117 "Launch an OriginationRequest for any call attempt with 6 digits",
2118 "Trigger is not active"
2120 /* 1 digit (octet 3, bit H) */
2121 static const true_false_string ansi_map_originationtriggers_sevendig_bool_val = {
2122 "Launch an OriginationRequest for any call attempt with 7 digits",
2123 "Trigger is not active"
2125 /* 1 digit (octet 4, bit A) */
2126 static const true_false_string ansi_map_originationtriggers_eightdig_bool_val = {
2127 "Launch an OriginationRequest for any call attempt with 8 digits",
2128 "Trigger is not active"
2130 /* 1 digit (octet 4, bit B) */
2131 static const true_false_string ansi_map_originationtriggers_ninedig_bool_val = {
2132 "Launch an OriginationRequest for any call attempt with 9 digits",
2133 "Trigger is not active"
2135 /* 1 digit (octet 4, bit C) */
2136 static const true_false_string ansi_map_originationtriggers_tendig_bool_val = {
2137 "Launch an OriginationRequest for any call attempt with 10 digits",
2138 "Trigger is not active"
2140 /* 1 digit (octet 4, bit D) */
2141 static const true_false_string ansi_map_originationtriggers_elevendig_bool_val = {
2142 "Launch an OriginationRequest for any call attempt with 11 digits",
2143 "Trigger is not active"
2145 /* 1 digit (octet 4, bit E) */
2146 static const true_false_string ansi_map_originationtriggers_twelvedig_bool_val = {
2147 "Launch an OriginationRequest for any call attempt with 12 digits",
2148 "Trigger is not active"
2150 /* 1 digit (octet 4, bit F) */
2151 static const true_false_string ansi_map_originationtriggers_thirteendig_bool_val = {
2152 "Launch an OriginationRequest for any call attempt with 13 digits",
2153 "Trigger is not active"
2155 /* 1 digit (octet 4, bit G) */
2156 static const true_false_string ansi_map_originationtriggers_fourteendig_bool_val = {
2157 "Launch an OriginationRequest for any call attempt with 14 digits",
2158 "Trigger is not active"
2160 /* 1 digit (octet 4, bit H) */
2161 static const true_false_string ansi_map_originationtriggers_fifteendig_bool_val = {
2162 "Launch an OriginationRequest for any call attempt with 15 digits",
2163 "Trigger is not active"
2167 dissect_ansi_map_originationtriggers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2170 proto_tree *subtree;
2173 subtree = proto_item_add_subtree(actx->created_item, ett_originationtriggers);
2175 /* Revertive Call (RvtC) (octet 1, bit H)*/
2176 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_rvtc, tvb, offset, 1, FALSE);
2177 /* Unrecognized Number (Unrec) (octet 1, bit G) */
2178 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_unrec, tvb, offset, 1, FALSE);
2179 /* World Zone (WZ) (octet 1, bit F) */
2180 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_wz, tvb, offset, 1, FALSE);
2181 /* International (Int'l ) (octet 1, bit E) */
2182 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_int, tvb, offset, 1, FALSE);
2183 /* Inter-LATA Toll (OLATA) (octet 1, bit D) */
2184 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_olata, tvb, offset, 1, FALSE);
2185 /* Intra-LATA Toll (ILATA) (octet 1, bit C) */
2186 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ilata, tvb, offset, 1, FALSE);
2187 /* Local (octet 1, bit B) */
2188 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_local, tvb, offset, 1, FALSE);
2189 /* All Origination (All) (octet 1, bit A) */
2190 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_all, tvb, offset, 1, FALSE);
2193 /*Prior Agreement (PA) (octet 2, bit E) */
2194 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_pa, tvb, offset, 1, FALSE);
2195 /* Double Pound (DP) (octet 2, bit D) */
2196 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_dp, tvb, offset, 1, FALSE);
2197 /* Pound (octet 2, bit C) */
2198 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_pound, tvb, offset, 1, FALSE);
2199 /* Double Star (DS) (octet 2, bit B) */
2200 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ds, tvb, offset, 1, FALSE);
2201 /* Star (octet 2, bit A) */
2202 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_star, tvb, offset, 1, FALSE);
2205 /* 7 digit (octet 3, bit H) */
2206 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_sevendig, tvb, offset, 1, FALSE);
2207 /* 6 digit (octet 3, bit G) */
2208 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_sixdig, tvb, offset, 1, FALSE);
2209 /* 5 digit (octet 3, bit F) */
2210 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fivedig, tvb, offset, 1, FALSE);
2211 /* 4 digit (octet 3, bit E) */
2212 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fourdig, tvb, offset, 1, FALSE);
2213 /* 3 digit (octet 3, bit D) */
2214 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_threedig, tvb, offset, 1, FALSE);
2215 /* 2 digit (octet 3, bit C) */
2216 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_twodig, tvb, offset, 1, FALSE);
2217 /* 1 digit (octet 3, bit B) */
2218 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_onedig, tvb, offset, 1, FALSE);
2219 /* No digits (octet 3, bit A) */
2220 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_nodig, tvb, offset, 1, FALSE);
2223 /* 15 digit (octet 4, bit H) */
2224 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fifteendig, tvb, offset, 1, FALSE);
2225 /* 14 digit (octet 4, bit G) */
2226 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_fourteendig, tvb, offset, 1, FALSE);
2227 /* 13 digit (octet 4, bit F) */
2228 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_thirteendig, tvb, offset, 1, FALSE);
2229 /* 12 digit (octet 4, bit E) */
2230 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_twelvedig, tvb, offset, 1, FALSE);
2231 /* 11 digit (octet 4, bit D) */
2232 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_elevendig, tvb, offset, 1, FALSE);
2233 /* 10 digit (octet 4, bit C) */
2234 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_tendig, tvb, offset, 1, FALSE);
2235 /* 9 digit (octet 4, bit B) */
2236 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_ninedig, tvb, offset, 1, FALSE);
2237 /* 8 digits (octet 4, bit A) */
2238 proto_tree_add_item(subtree, hf_ansi_map_originationtriggers_eightdig, tvb, offset, 1, FALSE);
2242 /* 6.5.2.91 PACAIndicator */
2244 /* Permanent Activation (PA) (octet 1, bit A) */
2245 static const true_false_string ansi_map_pacaindicator_pa_bool_val = {
2246 "PACA is permanently activated",
2247 "PACA is not permanently activated"
2250 static const value_string ansi_map_PACA_Level_vals[] = {
2252 { 1, "Priority Level. 1 This is the highest level"},
2253 { 2, "Priority Level 2"},
2254 { 3, "Priority Level 3"},
2255 { 4, "Priority Level 4"},
2256 { 5, "Priority Level 5"},
2257 { 6, "Priority Level 6"},
2258 { 7, "Priority Level 7"},
2259 { 8, "Priority Level 8"},
2260 { 8, "Priority Level 9"},
2261 { 10, "Priority Level 10"},
2262 { 11, "Priority Level 11"},
2263 { 12, "Priority Level 12"},
2264 { 13, "Priority Level 13"},
2265 { 14, "Priority Level 14"},
2266 { 15, "Priority Level 15"},
2271 dissect_ansi_map_pacaindicator(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2274 proto_tree *subtree;
2277 subtree = proto_item_add_subtree(actx->created_item, ett_pacaindicator);
2278 /* PACA Level (octet 1, bits B-E) */
2279 proto_tree_add_item(subtree, hf_ansi_map_PACA_Level, tvb, offset, 1, FALSE);
2280 /* Permanent Activation (PA) (octet 1, bit A) */
2281 proto_tree_add_item(subtree, hf_ansi_map_pacaindicator_pa, tvb, offset, 1, FALSE);
2284 /* 6.5.2.92 PageIndicator */
2285 static const value_string ansi_map_PageIndicator_vals[] = {
2288 { 2, "Listen only"},
2292 /* 6.5.2.93 PC_SSN */
2294 dissect_ansi_map_pc_ssn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2297 proto_tree *subtree;
2301 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2302 /* Type (octet 1) */
2303 proto_tree_add_item(subtree, hf_ansi_map_msc_type, tvb, offset, 1, FALSE);
2305 /* Point Code Member Number octet 2 */
2306 b1 = tvb_get_guint8(tvb,offset);
2308 /* Point Code Cluster Number octet 3 */
2309 b2 = tvb_get_guint8(tvb,offset);
2311 /* Point Code Network Number octet 4 */
2312 b3 = tvb_get_guint8(tvb,offset);
2314 /* Subsystem Number (SSN) octet 5 */
2315 b4 = tvb_get_guint8(tvb,offset);
2316 proto_tree_add_text(subtree, tvb, offset-3, 4 , "Point Code %u-%u-%u SSN %u",
2320 /* 6.5.2.94 PilotBillingID */
2322 dissect_ansi_map_pilotbillingid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2325 proto_tree *subtree;
2328 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
2329 /* First Originating MarketID octet 1 and 2 */
2330 proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
2331 offset = offset + 2;
2332 /* First Originating Switch Number octet 3*/
2333 proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
2336 proto_tree_add_item(subtree, hf_ansi_map_idno, tvb, offset, 3, FALSE);
2337 offset = offset + 3;
2338 proto_tree_add_item(subtree, hf_ansi_map_segcount, tvb, offset, 1, FALSE);
2341 /* 6.5.2.96 PreferredLanguageIndicator */
2342 static const value_string ansi_map_PreferredLanguageIndicator_vals[] = {
2343 { 0, "Unspecified"},
2352 /* 6.5.2.106 ReceivedSignalQuality */
2353 /* a. This octet is encoded the same as octet 1 in the SignalQuality parameter (see
2356 /* 6.5.2.118 SetupResult */
2357 static const value_string ansi_map_SetupResult_vals[] = {
2359 { 1, "Unsuccessful"},
2363 /* 6.5.2.121 SignalQuality */
2366 /* 6.5.2.122 SMS_AccessDeniedReason (TIA/EIA-41.5-D, page 5-256)
2369 static const value_string ansi_map_SMS_AccessDeniedReason_vals[] = {
2373 { 3, "Unavailable"},
2379 /* 6.5.2.125 SMS_CauseCode (TIA/EIA-41.5-D, page 5-262)
2382 static const value_string ansi_map_SMS_CauseCode_vals[] = {
2383 { 0, "Address vacant"},
2384 { 1, "Address translation failure"},
2385 { 2, "Network resource shortage"},
2386 { 3, "Network failure"},
2387 { 4, "Invalid Teleservice ID"},
2388 { 5, "Other network problem"},
2389 { 6, "Unsupported network interface"},
2390 { 8, "CDMA handset-based position determination failure"},
2391 { 9, "CDMA handset-based position determination resources released - voice service request"},
2392 { 10, "CDMA handset-based position determination resources released - voice service request - message acknowledged"},
2396 { 14, "Emergency Services Call Precedence"},
2397 { 32, "No page response"},
2398 { 33, "Destination busy"},
2399 { 34, "No acknowledgment"},
2400 { 35, "Destination resource shortage"},
2401 { 36, "SMS delivery postponed"},
2402 { 37, "Destination out of service"},
2403 { 38, "Destination no longer at this address"},
2404 { 39, "Other terminal problem"},
2405 { 64, "Radio interface resource shortage"},
2406 { 65, "Radio interface incompatibility"},
2407 { 66, "Other radio interface problem"},
2408 { 67, "Unsupported Base Station Capability"},
2409 { 96, "Encoding problem"},
2410 { 97, "Service origination denied"},
2411 { 98, "Service termination denied"},
2412 { 99, "Supplementary service not supported"},
2413 { 100, "Service not supported"},
2415 { 102, "Missing expected parameter"},
2416 { 103, "Missing mandatory parameter"},
2417 { 104, "Unrecognized parameter value"},
2418 { 105, "Unexpected parameter value"},
2419 { 106, "User Data size error"},
2420 { 107, "Other general problems"},
2421 { 108, "Session not active"},
2423 { 110, "MS Disconnect"},
2426 static value_string_ext ansi_map_SMS_CauseCode_vals_ext = VALUE_STRING_EXT_INIT(ansi_map_SMS_CauseCode_vals);
2428 /* 6.5.2.126 SMS_ChargeIndicator */
2429 /* SMS Charge Indicator (octet 1) */
2430 static const value_string ansi_map_SMS_ChargeIndicator_vals[] = {
2433 { 2, "Charge original originator"},
2434 { 3, "Charge original destination"},
2437 /* 4 through 63 Reserved. Treat the same as value 1, No charge.
2438 64 through 127 Reserved. Treat the same as value 2, Charge original originator.
2439 128 through 223 Reserved. Treat the same as value 3, Charge original destination.
2440 224 through 255 Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 2, Charge
2441 original originator.
2444 /* 6.5.2.130 SMS_NotificationIndicator N.S0005-0 v 1.0*/
2445 static const value_string ansi_map_SMS_NotificationIndicator_vals[] = {
2447 { 1, "Notify when available"},
2448 { 2, "Do not notify when available"},
2452 /* 6.5.2.136 SMS_OriginationRestrictions */
2453 /* DEFAULT (octet 1, bits A and B) */
2455 static const value_string ansi_map_SMS_OriginationRestrictions_default_vals[] = {
2458 { 1, "Allow specific"},
2462 /* DIRECT (octet 1, bit C) */
2463 static const true_false_string ansi_map_SMS_OriginationRestrictions_direct_bool_val = {
2468 /* Force Message Center (FMC) (octet 1, bit D) */
2469 static const true_false_string ansi_map_SMS_OriginationRestrictions_fmc_bool_val = {
2475 dissect_ansi_map_sms_originationrestrictions(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2478 proto_tree *subtree;
2481 subtree = proto_item_add_subtree(actx->created_item, ett_sms_originationrestrictions);
2482 proto_tree_add_item(subtree, hf_ansi_map_reservedBitHGFE, tvb, offset, 1, FALSE);
2483 proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_fmc, tvb, offset, 1, FALSE);
2484 proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_direct, tvb, offset, 1, FALSE);
2485 proto_tree_add_item(subtree, hf_ansi_map_sms_originationrestrictions_default, tvb, offset, 1, FALSE);
2489 /* 6.5.2.137 SMS_TeleserviceIdentifier */
2490 /* Updated with N.S0011-0 v 1.0 */
2492 /* SMS Teleservice Identifier (octets 1 and 2) */
2493 static const value_string ansi_map_SMS_TeleserviceIdentifier_vals[] = {
2495 { 1, "Reserved for maintenance"},
2496 { 2, "SSD Update no response"},
2497 { 3, "SSD Update successful"},
2498 { 4, "SSD Update failed"},
2499 { 4096, "AMPS Extended Protocol Enhanced Services" },
2500 { 4097, "CDMA Cellular Paging Teleservice" },
2501 { 4098, "CDMA Cellular Messaging Teleservice" },
2502 { 4099, "CDMA Voice Mail Notification" },
2503 { 32513, "TDMA Cellular Messaging Teleservice" },
2504 { 32520, "TDMA System Assisted Mobile Positioning through Satellite (SAMPS)" },
2505 { 32584, "TDMA Segmented System Assisted Mobile Positioning Service" },
2508 /* 6.5.2.140 SPINITriggers */
2509 /* All Origination (All) (octet 1, bit A) */
2511 /* 6.5.2.142 SSDUpdateReport */
2512 static const value_string ansi_map_SSDUpdateReport_vals[] = {
2514 { 4096, "AMPS Extended Protocol Enhanced Services"},
2515 { 4097, "CDMA Cellular Paging Teleservice"},
2516 { 4098, "CDMA Cellular Messaging Teleservice"},
2517 { 32513, "TDMA Cellular Messaging Teleservice"},
2518 { 32514, "TDMA Cellular Paging Teleservice (CPT-136)"},
2519 { 32515, "TDMA Over-the-Air Activation Teleservice (OATS)"},
2520 { 32516, "TDMA Over-the-Air Programming Teleservice (OPTS)"},
2521 { 32517, "TDMA General UDP Transport Service (GUTS)"},
2522 { 32576, "Reserved"},
2523 { 32577, "TDMA Segmented Cellular MessagingTeleservice"},
2524 { 32578, "TDMA Segmented Cellular Paging Teleservice"},
2525 { 32579, "TDMA Segmented Over-the-Air Activation Teleservice (OATS)"},
2526 { 32580, "TDMA Segmented Over-the-Air Programming Teleservice (OPTS)."},
2527 { 32581, "TDMA Segmented General UDP Transport Service (GUTS)"},
2528 { 32576, "Reserved"},
2532 /* 6.5.2.143 StationClassMark */
2534 /* 6.5.2.144 SystemAccessData */
2536 /* 6.5.2.146 SystemCapabilities */
2537 /* Updated in N.S0008-0 v 1.0 */
2538 static const true_false_string ansi_map_systemcapabilities_auth_bool_val = {
2539 "Authentication parameters were requested on this system access (AUTH=1 in the OMT)",
2540 "Authentication parameters were not requested on this system access (AUTH=0 in the OMT)."
2543 static const true_false_string ansi_map_systemcapabilities_se_bool_val = {
2544 "Signaling Message Encryption supported by the system",
2545 "Signaling Message Encryption not supported by the system"
2548 static const true_false_string ansi_map_systemcapabilities_vp_bool_val = {
2549 "Voice Privacy supported by the system",
2550 "Voice Privacy not supported by the system"
2553 static const true_false_string ansi_map_systemcapabilities_cave_bool_val = {
2554 "System can execute the CAVE algorithm and share SSD for the indicated MS",
2555 "System cannot execute the CAVE algorithm and cannot share SSD for the indicated MS"
2558 static const true_false_string ansi_map_systemcapabilities_ssd_bool_val = {
2559 "SSD is shared with the system for the indicated MS",
2560 "SSD is not shared with the system for the indicated MS"
2563 static const true_false_string ansi_map_systemcapabilities_dp_bool_val = {
2564 "DP is supported by the system",
2565 "DP is not supported by the system"
2569 dissect_ansi_map_systemcapabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2572 proto_tree *subtree;
2575 subtree = proto_item_add_subtree(actx->created_item, ett_systemcapabilities);
2576 proto_tree_add_item(subtree, hf_ansi_map_reservedBitHG, tvb, offset, 1, FALSE);
2577 proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_dp, tvb, offset, 1, FALSE);
2578 proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_ssd, tvb, offset, 1, FALSE);
2579 proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_cave, tvb, offset, 1, FALSE);
2580 proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_vp, tvb, offset, 1, FALSE);
2581 proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_se, tvb, offset, 1, FALSE);
2582 proto_tree_add_item(subtree, hf_ansi_map_systemcapabilities_auth, tvb, offset, 1, FALSE);
2585 /* 6.5.2.151 TDMABurstIndicator */
2586 /* 6.5.2.152 TDMACallMode */
2587 /* 6.5.2.153 TDMAChannelData Updated in N.S0007-0 v 1.0*/
2589 /* 6.5.2.155 TerminationAccessType */
2590 /* XXX Fix Me, Fill up the values or do special decoding? */
2591 static const value_string ansi_map_TerminationAccessType_vals[] = {
2593 { 1, "Reserved for controlling system assignment (may be a trunk group identifier)."},
2595 { 127, "Reserved for controlling system assignment (may be a trunk group identifier)."},
2596 { 128, "Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 253, Land-to-Mobile Directory Number access"},
2597 /* 128 through 160 */
2598 { 160, "Reserved for TIA/EIA-41 protocol extension. If unknown, treat the same as value 253, Land-to-Mobile Directory Number access"},
2599 { 161, "Reserved for this Standard"},
2600 /* 161 through 251 */
2601 { 151, "Reserved for this Standard"},
2602 { 252, "Mobile-to-Mobile Directory Number access"},
2603 { 253, "Land-to-Mobile Directory Number access"},
2604 { 254, "Remote Feature Control port access"},
2605 { 255, "Roamer port access"},
2609 /* 6.5.2.158 TerminationTreatment */
2610 static const value_string ansi_map_TerminationTreatment_vals[] = {
2612 { 1, "MS Termination"},
2613 { 2, "Voice Mail Storage"},
2614 { 3, "Voice Mail Retrieval"},
2615 { 4, "Dialogue Termination"},
2619 /* 6.5.2.159 TerminationTriggers */
2620 /* Busy (octet 1, bits A and B) */
2621 static const value_string ansi_map_terminationtriggers_busy_vals[] = {
2623 { 1, "Busy Trigger"},
2625 { 3, "Reserved. Treat as an unrecognized parameter value"},
2628 /* Routing Failure (RF) (octet 1, bits C and D) */
2629 static const value_string ansi_map_terminationtriggers_rf_vals[] = {
2630 { 0, "Failed Call"},
2631 { 1, "Routing Failure Trigger"},
2633 { 3, "Reserved. Treat as an unrecognized parameter value"},
2636 /* No Page Response (NPR) (octet 1, bits E and F) */
2637 static const value_string ansi_map_terminationtriggers_npr_vals[] = {
2638 { 0, "No Page Response Call"},
2639 { 1, "No Page Response Trigger"},
2640 { 2, "No Page Response Leg"},
2641 { 3, "Reserved. Treat as an unrecognized parameter value"},
2644 /* No Answer (NA) (octet 1, bits G and H) */
2645 static const value_string ansi_map_terminationtriggers_na_vals[] = {
2646 { 0, "No Answer Call"},
2647 { 1, "No Answer Trigger"},
2648 { 2, "No Answer Leg"},
2652 /* None Reachable (NR) (octet 2, bit A) */
2653 static const value_string ansi_map_terminationtriggers_nr_vals[] = {
2654 { 0, "Member Not Reachable"},
2655 { 1, "Group Not Reachable"},
2659 /* 6.5.2.159 TerminationTriggers N.S0005-0 v 1.0*/
2661 dissect_ansi_map_terminationtriggers(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2664 proto_tree *subtree;
2667 subtree = proto_item_add_subtree(actx->created_item, ett_transactioncapability);
2669 proto_tree_add_item(subtree, hf_ansi_map_reservedBitH, tvb, offset, 1, FALSE);
2670 /* No Page Response (NPR) (octet 1, bits E and F) */
2671 proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_npr, tvb, offset, 1, FALSE);
2672 /* No Answer (NA) (octet 1, bits G and H) */
2673 proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_na, tvb, offset, 1, FALSE);
2674 /* Routing Failure (RF) (octet 1, bits C and D) */
2675 proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_rf, tvb, offset, 1, FALSE);
2676 /* Busy (octet 1, bits A and B) */
2677 proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_busy, tvb, offset, 1, FALSE);
2680 /* None Reachable (NR) (octet 2, bit A) */
2681 proto_tree_add_item(subtree, hf_ansi_map_terminationtriggers_nr, tvb, offset, 1, FALSE);
2684 /* 6.5.2.160 TransactionCapability (TIA/EIA-41.5-D, page 5-315) */
2685 /* Updated with N.S0010-0 v 1.0, N.S0012-0 v 1.0 N.S0013-0 v 1.0 */
2686 static const true_false_string ansi_map_trans_cap_prof_bool_val = {
2687 "The system is capable of supporting the IS-41-C profile parameters",
2688 "The system is not capable of supporting the IS-41-C profile parameters"
2691 static const true_false_string ansi_map_trans_cap_busy_bool_val = {
2692 "The system is capable of detecting a busy condition at the current time",
2693 "The system is not capable of detecting a busy condition at the current time"
2696 static const true_false_string ansi_map_trans_cap_ann_bool_val = {
2697 "The system is capable of honoring the AnnouncementList parameter at the current time",
2698 "The system is not capable of honoring the AnnouncementList parameter at the current time"
2701 static const true_false_string ansi_map_trans_cap_rui_bool_val = {
2702 "The system is capable of interacting with the user",
2703 "The system is not capable of interacting with the user"
2706 static const true_false_string ansi_map_trans_cap_spini_bool_val = {
2707 "The system is capable of supporting local SPINI operation",
2708 "The system is not capable of supporting local SPINI operation at the current time"
2711 static const true_false_string ansi_map_trans_cap_uzci_bool_val = {
2712 "The system is User Zone capable at the current time",
2713 "The system is not User Zone capable at the current time"
2715 static const true_false_string ansi_map_trans_cap_ndss_bool_val = {
2716 "Serving system is NDSS capable",
2717 "Serving system is not NDSS capable"
2719 static const true_false_string ansi_map_trans_cap_nami_bool_val = {
2720 "The system is CNAP/CNAR capable",
2721 "The system is not CNAP/CNAR capable"
2724 static const value_string ansi_map_trans_cap_multerm_vals[] = {
2725 { 0, "The system cannot accept a termination at this time (i.e., cannot accept routing information)"},
2726 { 1, "The system supports the number of call legs indicated"},
2727 { 2, "The system supports the number of call legs indicated"},
2728 { 3, "The system supports the number of call legs indicated"},
2729 { 4, "The system supports the number of call legs indicated"},
2730 { 5, "The system supports the number of call legs indicated"},
2731 { 6, "The system supports the number of call legs indicated"},
2732 { 7, "The system supports the number of call legs indicated"},
2733 { 8, "The system supports the number of call legs indicated"},
2734 { 9, "The system supports the number of call legs indicated"},
2735 { 10, "The system supports the number of call legs indicated"},
2736 { 11, "The system supports the number of call legs indicated"},
2737 { 12, "The system supports the number of call legs indicated"},
2738 { 13, "The system supports the number of call legs indicated"},
2739 { 14, "The system supports the number of call legs indicated"},
2740 { 15, "The system supports the number of call legs indicated"},
2744 static const true_false_string ansi_map_trans_cap_tl_bool_val = {
2745 "The system is capable of supporting the TerminationList parameter at the current time",
2746 "The system is not capable of supporting the TerminationList parameter at the current time"
2749 static const true_false_string ansi_map_trans_cap_waddr_bool_val = {
2750 "The system is capable of supporting the TriggerAddressList parameter",
2751 "The system is not capable of supporting the TriggerAddressList parameter"
2756 dissect_ansi_map_transactioncapability(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2759 proto_tree *subtree;
2762 subtree = proto_item_add_subtree(actx->created_item, ett_transactioncapability);
2764 /*NAME Capability Indicator (NAMI) (octet 1, bit H) */
2765 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_nami, tvb, offset, 1, FALSE);
2766 /* NDSS Capability (NDSS) (octet 1, bit G) */
2767 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_ndss, tvb, offset, 1, FALSE);
2768 /* UZ Capability Indicator (UZCI) (octet 1, bit F) */
2769 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_uzci, tvb, offset, 1, FALSE);
2770 /* Subscriber PIN Intercept (SPINI) (octet 1, bit E) */
2771 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_spini, tvb, offset, 1, FALSE);
2772 /* Remote User Interaction (RUI) (octet 1, bit D) */
2773 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_rui, tvb, offset, 1, FALSE);
2774 /* Announcements (ANN) (octet 1, bit C) */
2775 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_ann, tvb, offset, 1, FALSE);
2776 /* Busy Detection (BUSY) (octet 1, bit B) */
2777 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_busy, tvb, offset, 1, FALSE);
2778 /* Profile (PROF) (octet 1, bit A) */
2779 proto_tree_add_item(subtree, hf_ansi_map_trans_cap_prof, tvb, offset, 1, FALSE);
2782 /* WIN Addressing (WADDR) (octet 2, bit F) */
2783 proto_tree_add_item(subtree, hf_ansi_trans_cap_waddr, tvb, offset, 1, FALSE);
2784 /* TerminationList (TL) (octet 2, bit E) */
2785 proto_tree_add_item(subtree, hf_ansi_trans_cap_tl, tvb, offset, 1, FALSE);
2786 /* Multiple Terminations (octet 2, bits A-D) */
2787 proto_tree_add_item(subtree, hf_ansi_trans_cap_multerm, tvb, offset, 1, FALSE);
2790 /* 6.5.2.162 UniqueChallengeReport */
2791 /* Unique Challenge Report (octet 1) */
2792 static const value_string ansi_map_UniqueChallengeReport_vals[] = {
2794 { 1, "Unique Challenge not attempted"},
2795 { 2, "Unique Challenge no response"},
2796 { 3, "Unique Challenge successful"},
2797 { 4, "Unique Challenge failed"},
2801 /* 6.5.2.166 VoicePrivacyMask */
2804 /* 6.5.2.e (TSB76) CDMAServiceConfigurationRecord N.S0008-0 v 1.0 */
2805 /* a. This field carries the CDMA Service Configuration Record. The bit-layout is the
2806 same as that of Service Configuration Record in TSB74, and J-STD-008.
2809 /* 6.5.2.f CDMAServiceOption N.S0010-0 v 1.0 */
2811 /* values copied from old ANSI map dissector */
2812 static const range_string cdmaserviceoption_vals[] = {
2813 { 1, 1, "Basic Variable Rate Voice Service (8 kbps)" },
2814 { 2, 2, "Mobile Station Loopback (8 kbps)" },
2815 { 3, 3, "Enhanced Variable Rate Voice Service (8 kbps)" },
2816 { 4, 4, "Asynchronous Data Service (9.6 kbps)" },
2817 { 5, 5, "Group 3 Facsimile (9.6 kbps)" },
2818 { 6, 6, "Short Message Services (Rate Set 1)" },
2819 { 7, 7, "Packet Data Service: Internet or ISO Protocol Stack (9.6 kbps)" },
2820 { 8, 8, "Packet Data Service: CDPD Protocol Stack (9.6 kbps)" },
2821 { 9, 9, "Mobile Station Loopback (13 kbps)" },
2822 { 10, 10, "STU-III Transparent Service" },
2823 { 11, 11, "STU-III Non-Transparent Service" },
2824 { 12, 12, "Asynchronous Data Service (14.4 or 9.6 kbps)" },
2825 { 13, 13, "Group 3 Facsimile (14.4 or 9.6 kbps)" },
2826 { 14, 14, "Short Message Services (Rate Set 2)" },
2827 { 15, 15, "Packet Data Service: Internet or ISO Protocol Stack (14.4 kbps)" },
2828 { 16, 16, "Packet Data Service: CDPD Protocol Stack (14.4 kbps)" },
2829 { 17, 17, "High Rate Voice Service (13 kbps)" },
2830 { 18, 18, "Over-the-Air Parameter Administration (Rate Set 1)" },
2831 { 19, 19, "Over-the-Air Parameter Administration (Rate Set 2)" },
2832 { 20, 20, "Group 3 Analog Facsimile (Rate Set 1)" },
2833 { 21, 21, "Group 3 Analog Facsimile (Rate Set 2)" },
2834 { 22, 22, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS1 reverse)" },
2835 { 23, 23, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS1 forward, RS2 reverse)" },
2836 { 24, 24, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS1 reverse)" },
2837 { 25, 25, "High Speed Packet Data Service: Internet or ISO Protocol Stack (RS2 forward, RS2 reverse)" },
2838 { 26, 26, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS1 reverse)" },
2839 { 27, 27, "High Speed Packet Data Service: CDPD Protocol Stack (RS1 forward, RS2 reverse)" },
2840 { 28, 28, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS1 reverse)" },
2841 { 29, 29, "High Speed Packet Data Service: CDPD Protocol Stack (RS2 forward, RS2 reverse)" },
2842 { 30, 30, "Supplemental Channel Loopback Test for Rate Set 1" },
2843 { 31, 31, "Supplemental Channel Loopback Test for Rate Set 2" },
2844 { 32, 32, "Test Data Service Option (TDSO)" },
2845 { 33, 33, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
2846 { 34, 34, "cdma2000 High Speed Packet Data Service, CDPD Protocol Stack" },
2847 { 35, 35, "Location Services, Rate Set 1 (9.6 kbps)" },
2848 { 36, 36, "Location Services, Rate Set 2 (14.4 kbps)" },
2849 { 37, 37, "ISDN Interworking Service (64 kbps)" },
2850 { 38, 38, "GSM Voice" },
2851 { 39, 39, "GSM Circuit Data" },
2852 { 40, 40, "GSM Packet Data" },
2853 { 41, 41, "GSM Short Message Service" },
2854 { 42, 42, "None Reserved for MC-MAP standard service options" },
2855 { 54, 54, "Markov Service Option (MSO)" },
2856 { 55, 55, "Loopback Service Option (LSO)" },
2857 { 56, 56, "Selectable Mode Vocoder" },
2858 { 57, 57, "32 kbps Circuit Video Conferencing" },
2859 { 58, 58, "64 kbps Circuit Video Conferencing" },
2860 { 59, 59, "HRPD Accounting Records Identifier" },
2861 { 60, 60, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Removal" },
2862 { 61, 61, "Link Layer Assisted Robust Header Compression (LLA ROHC) - Header Compression" },
2863 { 62, 62, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 2" },
2864 { 63, 63, "Source-Controlled Variable-Rate Multimode Wideband Speech Codec (VMR-WB) Rate Set 1" },
2865 { 64, 64, "HRPD auxiliary Packet Data Service instance" },
2866 { 65, 65, "cdma2000/GPRS Inter-working" },
2867 { 66, 66, "cdma2000 High Speed Packet Data Service, Internet or ISO Protocol Stack" },
2868 { 67, 67, "HRPD Packet Data IP Service where Higher Layer Protocol is IP or ROHC" },
2869 { 68, 68, "Enhanced Variable Rate Voice Service (EVRC-B)" },
2870 { 69, 69, "HRPD Packet Data Service, which when used in paging over the 1x air interface, a page response is required" },
2871 { 70, 70, "Enhanced Variable Rate Voice Service (EVRC-WB)" },
2872 { 71, 4099, "None Reserved for standard service options" },
2873 { 4100, 4100, "Asynchronous Data Service, Revision 1 (9.6 or 14.4 kbps)" },
2874 { 4101, 4101, "Group 3 Facsimile, Revision 1 (9.6 or 14.4 kbps)" },
2875 { 4102, 4102, "Reserved for standard service option" },
2876 { 4103, 4103, "Packet Data Service: Internet or ISO Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
2877 { 4104, 4104, "Packet Data Service: CDPD Protocol Stack, Revision 1 (9.6 or 14.4 kbps)" },
2878 { 4105, 32767, "Reserved for standard service options" },
2879 { 32768, 32768, "QCELP (13 kbps)" },
2880 { 32769, 32771, "Proprietary QUALCOMM Incorporated" },
2881 { 32772, 32775, "Proprietary OKI Telecom" },
2882 { 32776, 32779, "Proprietary Lucent Technologies" },
2883 { 32780, 32783, "Nokia" },
2884 { 32784, 32787, "NORTEL NETWORKS" },
2885 { 32788, 32791, "Sony Electronics Inc" },
2886 { 32792, 32795, "Motorola" },
2887 { 32796, 32799, "QUALCOMM Incorporated" },
2888 { 32800, 32803, "QUALCOMM Incorporated" },
2889 { 32804, 32807, "QUALCOMM Incorporated" },
2890 { 32808, 32811, "QUALCOMM Incorporated" },
2891 { 32812, 32815, "Lucent Technologies" },
2892 { 32816, 32819, "Denso International" },
2893 { 32820, 32823, "Motorola" },
2894 { 32824, 32827, "Denso International" },
2895 { 32828, 32831, "Denso International" },
2896 { 32832, 32835, "Denso International" },
2897 { 32836, 32839, "NEC America" },
2898 { 32840, 32843, "Samsung Electronics" },
2899 { 32844, 32847, "Texas Instruments Incorporated" },
2900 { 32848, 32851, "Toshiba Corporation" },
2901 { 32852, 32855, "LG Electronics Inc." },
2902 { 32856, 32859, "VIA Telecom Inc." },
2907 dissect_ansi_map_cdmaserviceoption(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
2909 proto_tree *subtree;
2912 subtree = proto_item_add_subtree(actx->created_item, ett_cdmaserviceoption);
2914 proto_tree_add_item(subtree, hf_ansi_map_cdmaserviceoption, tvb, offset, 2, FALSE);
2918 /* 6.5.2.f (TSB76) CDMAServiceOption N.S0008-0 v 1.0*/
2919 /* This field carries the CDMA Service Option. The bit-layout is the same as that of
2920 Service Option in TSB74 and J-STD-008.*/
2922 /* 6.5.2.i (IS-730) TDMAServiceCode N.S0008-0 v 1.0 */
2923 static const value_string ansi_map_TDMAServiceCode_vals[] = {
2924 { 0, "Analog Speech Only"},
2925 { 1, "Digital Speech Only"},
2926 { 2, "Analog or Digital Speech, Analog Preferred"},
2927 { 3, "Analog or Digital Speech, Digital Preferred"},
2928 { 4, "Asynchronous Data"},
2930 { 6, "Not Used (Service Rejected)"},
2934 /* 6.5.2.j (IS-730) TDMATerminalCapability N.S0008-0 v 1.0 Updted with N.S0015-0 */
2935 /* Supported Frequency Band (octet 1) */
2936 /* Voice Coder (octet 2) */
2937 /* Protocol Version (octet 3) N.S0015-0 */
2938 static const value_string ansi_map_TDMATerminalCapability_prot_ver_vals[] = {
2939 { 0, "EIA-553 or IS-54-A"},
2940 { 1, "TIA/EIA-627.(IS-54-B)"},
2942 { 3, "Permanently Reserved (ANSI J-STD-011).Treat the same as value 4, IS-136-A."},
2943 { 4, "PV 0 as published in TIA/EIA-136-0 and IS-136-A."},
2944 { 5, "PV 1 as published in TIA/EIA-136-A."},
2945 { 6, "PV 2 as published in TIA/EIA-136-A."},
2946 { 7, "PV 3 as published in TIA/EIA-136-A."},
2949 /* Asynchronous Data (ADS) (octet 4, bit A) N.S0007-0*/
2950 /* Group 3 Fax (G3FAX) (octet 4, bit B) */
2951 /* Secure Telephone Unit III (STU3) (octet 4, bit C) */
2952 /* Analog Voice (AVOX) (octet 4, bit D) */
2953 /* Half Rate (HRATE) (octet 4, bit E) */
2954 /* Full Rate (FRATE) (octet 4, bit F) */
2955 /* Double Rate (2RATE) (octet 4, bit G) */
2956 /* Triple Rate (3RATE) (octet 4, bit H) */
2959 /* 6.5.2.k (IS-730)) TDMAVoiceCoder N.S0008-0 v 1.0, N.S0007-0 */
2960 /* VoiceCoder (octet 1) */
2962 /* 6.5.2.p UserZoneData N.S0015-0 */
2964 /* 6.5.2.aa BaseStationManufacturerCode N.S0007-0 v 1.0 */
2965 /* The BaseStationManufacturerCode (BSMC) parameter specifies the manufacturer of the
2966 base station that is currently serving the MS (see IS-136 for enumeration of values).*/
2968 /* 6.5.2.ab BSMCStatus */
2970 /* BSMC Status (octet 1) */
2971 static const value_string ansi_map_BSMCStatus_vals[] = {
2972 { 0, "Same BSMC Value shall not be supported"},
2973 { 1, "Same BSMC Value shall be supported"},
2977 /*- 6.5.2.ac ControlChannelMode (N.S0007-0 v 1.0)*/
2978 static const value_string ansi_map_ControlChannelMode_vals[] = {
2980 { 1, "MS is in Analog CC Mode"},
2981 { 2, "MS is in Digital CC Mode"},
2982 { 3, "MS is in NAMPS CC Mode"},
2986 /* 6.5.2.ad NonPublicData N.S0007-0 v 1.0*/
2987 /* NP Only Service (NPOS) (octet 1, bits A and B) */
2988 /* Charging Area Tone Service (CATS) (octet 1, bits C - F) */
2989 /* PSID/RSID Download Order (PRDO) (octet 1, bits G and H) */
2991 /* 6.5.2.ae PagingFrameClass N.S0007-0 v 1.0*/
2992 /* Paging Frame Class (octet 1) */
2994 static const value_string ansi_map_PagingFrameClass_vals[] = {
2995 { 0, "PagingFrameClass 1 (1.28 seconds)"},
2996 { 1, "PagingFrameClass 2 (2.56 seconds)"},
2997 { 2, "PagingFrameClass 3 (3.84 seconds)"},
2998 { 3, "PagingFrameClass 4 (7.68 seconds)"},
2999 { 4, "PagingFrameClass 5 (15.36 seconds)"},
3000 { 5, "PagingFrameClass 6 (30.72 seconds)"},
3001 { 6, "PagingFrameClass 7 (61.44 seconds)"},
3002 { 7, "PagingFrameClass 8 (122.88 seconds)"},
3003 { 8, "Reserved. Treat the same as value 0, PagingFrameClass 1"},
3007 /* 6.5.2.af PSID_RSIDInformation N.S0007-0 v 1.0*/
3008 /* PSID/RSID Indicator (octet 1, bit A) */
3009 /* PSID/RSID Type (octet 1, bits B-D) */
3011 /* 6.5.2.ah ServicesResult N.S0007-0 v 1.0*/
3012 /* PSID/RSID Download Result (PRDR) (octet 1, bits A and B) */
3013 static const value_string ansi_map_ServicesResult_ppr_vals[] = {
3014 { 0, "No Indication"},
3015 { 1, "Unsuccessful PSID/RSID download"},
3016 { 2, "Successful PSID/RSID download"},
3017 { 3, "Reserved. Treat the same as value 0, No Indication"},
3021 /* 6.5.2.ai SOCStatus N.S0007-0 v 1.0*/
3023 /* SOC Status (octet 1) */
3024 static const value_string ansi_map_SOCStatus_vals[] = {
3025 { 0, "Same SOC Value shall not be supported"},
3026 { 1, "Same SOC Value shall be supported"},
3030 /* 6.5.2.aj SystemOperatorCode N.S0007-0 v 1.0*/
3031 /* The SystemOperatorCode (SOC) parameter specifies the system operator that is currently
3032 providing service to a MS (see IS-136 for enumeration of values) */
3034 /* 6.5.2.al UserGroup N.S0007-0 v 1.0*/
3036 /* 6.5.2.am UserZoneData N.S0007-0 v 1.0*/
3039 /*Table 6.5.2.ay TDMABandwidth value N.S0008-0 v 1.0 */
3040 static const value_string ansi_map_TDMABandwidth_vals[] = {
3041 { 0, "Half-Rate Digital Traffic Channel Only"},
3042 { 1, "Full-Rate Digital Traffic Channel Only"},
3043 { 2, "Half-Rate or Full-rate Digital Traffic Channel - Full-Rate Preferred"},
3044 { 3, "Half-rate or Full-rate Digital Traffic Channel - Half-rate Preferred"},
3045 { 4, "Double Full-Rate Digital Traffic Channel Only"},
3046 { 5, "Triple Full-Rate Digital Traffic Channel Only"},
3047 { 6, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3048 { 7, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3049 { 8, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3050 { 9, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3051 { 10, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3052 { 11, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3053 { 12, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3054 { 13, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3055 { 14, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3056 { 15, "Reserved. Treat reserved values the same as value 1 - Full-Rate Digital Traffic Channel Only"},
3061 /* 6.5.2.az TDMADataFeaturesIndicator N.S0008-0 v 1.0 */
3062 /* TDMADataFeaturesIndicator
3063 ansi_map_FeatureActivity_vals
3065 ADS FeatureActivity ADS-FA ( octet 1 bit A and B )
3066 G3 Fax FeatureActivity G3FAX-FA ( octet 1 bit C and D )
3067 STU-III FeatureActivity STUIII-FA ( octet 1 bit E and F )
3068 Half Rate data FeatureActivity HRATE-FA ( octet 2 bit A and B )
3069 Full Rate data FeatureActivity FRATE-FA ( octet 2 bit C and D )
3070 Double Rate data FeatureActivity 2RATE-FA ( octet 2 bit E and F )
3071 Triple Rate data FeatureActivity 3RATE-FA ( octet g bit G and H )
3073 Table 6.5.2.azt TDMADataFeaturesIndicator value
3074 static const value_string ansi_map_TDMADataFeaturesIndicator_vals[] = {
3076 { 1, "Not Authorized"},
3077 { 2, "Authorized, but de-activated"},
3078 { 3, "Authorized and activated"},
3084 /* 6.5.2.ba TDMADataMode N.S0008-0 v 1.0*/
3086 /* 6.5.2.bb TDMAVoiceMode */
3088 /* 6.5.2.bb CDMAConnectionReference N.S0008-0 v 1.0 */
3089 /* Service Option Connection Reference Octet 1 */
3090 /* a. This field carries the CDMA Service Option Connection Reference. The bitlayout
3091 is the same as that of Service Option Connection Reference in TSB74 and
3095 /* 6.5.2.ad CDMAState N.S0008-0 v 1.0 */
3096 /* Service Option State Octet 1 */
3097 /* a. This field carries the CDMA Service Option State information. The CDMA
3098 Service Option State is defined in the current CDMA Service Options standard.
3099 If CDMA Service Option State is not explicitly defined within a section of the
3100 relevant CDMA Service Option standard, the CDMA Service Option State shall
3101 carry the value of the ORD_Q octet of all current Service Option Control Orders
3102 (see IS-95), or the contents of all current CDMA Service Option Control
3103 Messages (see TSB74) type specific field for this connection reference. */
3105 /* 6.5.2.aj SecondInterMSCCircuitID */
3106 /* -- XXX Same code as ISLPinformation???
3107 dissect_ansi_map_secondintermsccircuitid(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree){
3111 proto_tree *subtree;
3114 subtree = proto_item_add_subtree(actx->created_item, ett_billingid);
3115 / Trunk Group Number (G) Octet 1 /
3116 proto_tree_add_item(subtree, hf_ansi_map_tgn, tvb, offset, 1, FALSE);
3118 / Trunk Member Number (M) Octet2 /
3119 proto_tree_add_item(subtree, hf_ansi_map_tmn, tvb, offset, 1, FALSE);
3122 /* 6.5.2.as ChangeServiceAttributes N.S0008-0 v 1.0 */
3123 /* Change Facilities Flag (CHGFAC)(octet 1, bits A - B) */
3124 static const value_string ansi_map_ChangeServiceAttributes_chgfac_vals[] = {
3125 { 0, "Change Facilities Operation Requested"},
3126 { 1, "Change Facilities Operation Not Requested"},
3127 { 2, "Change Facilities Operation Used"},
3128 { 3, "Change Facilities Operation Not Used"},
3131 /* Service Negotiate Flag (SRVNEG)(octet 1, bits C - D) */
3132 static const value_string ansi_map_ChangeServiceAttributes_srvneg_vals[] = {
3133 { 0, "Service Negotiation Used"},
3134 { 1, "Service Negotiation Not Used"},
3135 { 2, "Service Negotiation Required"},
3136 { 3, "Service Negotiation Not Required"},
3139 /* 6.5.2.au DataPrivacyParameters N.S0008-0 v 1.0*/
3140 /* Privacy Mode (PM) (octet 1, Bits A and B) */
3141 static const value_string ansi_map_DataPrivacyParameters_pm_vals[] = {
3142 { 0, "Privacy inactive or not supported"},
3143 { 1, "Privacy Requested or Acknowledged"},
3144 { 2, "Reserved. Treat reserved values the same as value 0, Privacy inactive or not supported."},
3145 { 3, "Reserved. Treat reserved values the same as value 0, Privacy inactive or not supported."},
3148 /* Data Privacy Version (PM) (octet 2) */
3149 static const value_string ansi_map_DataPrivacyParameters_data_priv_ver_vals[] = {
3151 { 1, "Data Privacy Version 1"},
3155 /* 6.5.2.av ISLPInformation N.S0008-0 v 1.0*/
3156 /* ISLP Type (octet 1) */
3157 static const value_string ansi_map_islp_type_vals[] = {
3158 { 0, "No ISLP supported"},
3159 { 1, "ISLP supported"},
3162 /* 6.5.2.bc AnalogRedirectInfo */
3163 /* Sys Ordering (octet 1, bits A-E) */
3164 /* Ignore CDMA (IC) (octet 1, bit F) */
3166 /* 6.5.2.be CDMAChannelNumber N.S0010-0 v 1.0*/
3168 /* 6.5.2.bg CDMAPowerCombinedIndicator N.S0010-0 v 1.0*/
3170 /* 6.5.2.bi CDMASearchParameters N.S0010-0 v 1.0*/
3172 /* 6.5.2.bk CDMANetworkIdentification N.S0010-0 v 1.0*/
3173 /* See CDMA [J-STD-008] for encoding of this field. */
3175 /* 6.5.2.bo RequiredParametersMask N.S0010-0 v 1.0 */
3177 /* 6.5.2.bp ServiceRedirectionCause */
3178 static const value_string ansi_map_ServiceRedirectionCause_type_vals[] = {
3180 { 1, "NormalRegistration"},
3181 { 2, "SystemNotFound."},
3182 { 3, "ProtocolMismatch."},
3183 { 4, "RegistrationRejection."},
3189 /* 6.5.2.bq ServiceRedirectionInfo N.S0010-0 v 1.0 */
3191 /* 6.5.2.br RoamingIndication N.S0010-0 v 1.0*/
3192 /* See CDMA [TSB58] for the definition of this field. */
3194 /* 6.5.2.bw CallingPartyName N.S0012-0 v 1.0*/
3196 /* Presentation Status (octet 1, bits A and B) */
3197 static const value_string ansi_map_Presentation_Status_vals[] = {
3198 { 0, "Presentation allowed"},
3199 { 1, "Presentation restricted"},
3200 { 2, "Blocking toggle"},
3201 { 3, "No indication"},
3204 /* Availability (octet 1, bit E) N.S0012-0 v 1.0*/
3205 static const true_false_string ansi_map_Availability_bool_val = {
3206 "Name not available",
3207 "Name available/unknown"
3210 dissect_ansi_map_callingpartyname(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3212 proto_tree *subtree;
3214 subtree = proto_item_add_subtree(actx->created_item, ett_callingpartyname);
3215 /* Availability (octet 1, bit E) N.S0012-0 v 1.0*/
3217 /* Presentation Status (octet 1, bits A and B) */
3224 /* 6.5.2.bx DisplayText N.S0012-0 v 1.0*/
3225 /* a. Refer to ANSI T1.610 for field encoding. */
3227 /* 6.5.2.bz ServiceID
3228 Service Identifier (octets 1 to n)
3230 1 Calling Name Presentation - No RND.
3231 2 Calling Name Presentation with RND.
3234 /* 6.5.2.co GlobalTitle N.S0013-0 v 1.0
3235 * Refer to Section 3 of ANSI T1.112 for the encoding of this field.
3237 /* Address Indicator octet 1 */
3238 /* Global Title Octet 2 - n */
3241 /* 6.5.2.dc SpecializedResource N.S0013-0 v 1.0*/
3242 /* Resource Type (octet 1) */
3243 static const value_string ansi_map_resource_type_vals[] = {
3245 { 1, "DTMF tone detector"},
3246 { 2, "Automatic Speech Recognition - Speaker Independent - Digits"},
3247 { 3, "Automatic Speech Recognition - Speaker Independent - Speech User Interface Version 1"},
3250 /* 6.5.2.df TriggerCapability */
3251 /* Updated with N.S0004 N.S0013-0 v 1.0*/
3253 static const true_false_string ansi_map_triggercapability_bool_val = {
3254 "triggers can be armed by the TriggerAddressList parameter",
3255 "triggers cannot be armed by the TriggerAddressList parameter"
3259 dissect_ansi_map_triggercapability(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3262 proto_tree *subtree;
3265 subtree = proto_item_add_subtree(actx->created_item, ett_triggercapability);
3268 /* O_No_Answer (ONA) (octet 1, bit H)*/
3269 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_ona, tvb, offset, 1, FALSE);
3270 /* O_Disconnect (ODISC) (octet 1, bit G)*/
3271 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_odisc, tvb, offset, 1, FALSE);
3272 /* O_Answer (OANS) (octet 1, bit F)*/
3273 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_oans, tvb, offset, 1, FALSE);
3274 /* Origination_Attempt_Authorized (OAA) (octet 1, bit E)*/
3275 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_oaa, tvb, offset, 1, FALSE);
3276 /* Revertive_Call (RvtC) (octet 1, bit D)*/
3277 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_rvtc, tvb, offset, 1, FALSE);
3278 /* All_Calls (All) (octet 1, bit C)*/
3279 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_all, tvb, offset, 1, FALSE);
3280 /* K-digit (K-digit) (octet 1, bit B)*/
3281 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_kdigit, tvb, offset, 1, FALSE);
3282 /* Introducing Star/Pound (INIT) (octet 1, bit A) */
3283 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_init, tvb, offset, 1, FALSE);
3287 /* O_Called_Party_Busy (OBSY) (octet 2, bit H)*/
3288 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_obsy, tvb, offset, 1, FALSE);
3289 /* Called_Routing_Address_Available (CdRAA) (octet 2, bit G)*/
3290 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_cdraa, tvb, offset, 1, FALSE);
3291 /* Initial_Termination (IT) (octet 2, bit F)*/
3292 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_it, tvb, offset, 1, FALSE);
3293 /* Calling_Routing_Address_Available (CgRAA)*/
3294 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_cgraa, tvb, offset, 1, FALSE);
3295 /* Advanced_Termination (AT) (octet 2, bit D)*/
3296 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_at, tvb, offset, 1, FALSE);
3297 /* Prior_Agreement (PA) (octet 2, bit C)*/
3298 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_pa, tvb, offset, 1, FALSE);
3299 /* Unrecognized_Number (Unrec) (octet 2, bit B)*/
3300 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_unrec, tvb, offset, 1, FALSE);
3301 /* Call Types (CT) (octet 2, bit A)*/
3302 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_ct, tvb, offset, 1, FALSE);
3307 /* T_Disconnect (TDISC) (octet 3, bit E)*/
3308 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_tdisc, tvb, offset, 1, FALSE);
3309 /* T_Answer (TANS) (octet 3, bit D)*/
3310 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_tans, tvb, offset, 1, FALSE);
3311 /* T_No_Answer (TNA) (octet 3, bit C)*/
3312 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_tna, tvb, offset, 1, FALSE);
3313 /* T_Busy (TBusy) (octet 3, bit B)*/
3314 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_tbusy, tvb, offset, 1, FALSE);
3315 /* Terminating_Resource_Available (TRA) (octet 3, bit A) */
3316 proto_tree_add_item(subtree, hf_ansi_map_triggercapability_tra, tvb, offset, 1, FALSE);
3319 /* 6.5.2.ei DMH_ServiceID N.S0018 */
3321 /* 6.5.2.dj WINOperationsCapability */
3322 /* Updated with N.S0004 */
3323 /* ConnectResource (CONN) (octet 1, bit A) */
3324 static const true_false_string ansi_map_winoperationscapability_conn_bool_val = {
3325 "Sender is capable of supporting the ConnectResource, DisconnectResource, ConnectionFailureReport and ResetTimer (SSFT timer) operations",
3326 "Sender is not capable of supporting the ConnectResource, DisconnectResource,ConnectionFailureReport and ResetTimer (SSFT timer) operations"
3329 /* CallControlDirective (CCDIR) (octet 1, bit B) */
3330 static const true_false_string ansi_map_winoperationscapability_ccdir_bool_val = {
3331 "Sender is capable of supporting the CallControlDirective operation",
3332 "Sender is not capable of supporting the CallControlDirective operation"
3335 /* PositionRequest (POS) (octet 1, bit C) */
3336 static const true_false_string ansi_map_winoperationscapability_pos_bool_val = {
3337 "Sender is capable of supporting the PositionRequest operation",
3338 "Sender is not capable of supporting the PositionRequest operation"
3341 dissect_ansi_map_winoperationscapability(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3344 proto_tree *subtree;
3346 subtree = proto_item_add_subtree(actx->created_item, ett_winoperationscapability);
3348 /* PositionRequest (POS) (octet 1, bit C) */
3349 proto_tree_add_item(subtree, hf_ansi_map_winoperationscapability_pos, tvb, offset, 1, FALSE);
3350 /* CallControlDirective (CCDIR) (octet 1, bit B) */
3351 proto_tree_add_item(subtree, hf_ansi_map_winoperationscapability_ccdir, tvb, offset, 1, FALSE);
3352 /* ConnectResource (CONN) (octet 1, bit A) */
3353 proto_tree_add_item(subtree, hf_ansi_map_winoperationscapability_conn, tvb, offset, 1, FALSE);
3357 * 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301
3358 * Code to be found after include functions.
3361 /* 6.5.2.ei TIA/EIA-41.5-D Modifications N.S0018Re */
3362 /* Octet 1,2 1st MarketID */
3363 /* Octet 3 1st MarketSegmentID */
3364 /* Octet 4,5 1st DMH_ServiceID value */
3365 /* Second marcet ID etc */
3366 /* 6.5.2.ek ControlNetworkID N.S0018*/
3368 dissect_ansi_map_controlnetworkid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3371 proto_tree *subtree;
3374 subtree = proto_item_add_subtree(actx->created_item, ett_controlnetworkid);
3375 /* MarketID octet 1 and 2 */
3376 proto_tree_add_item(subtree, hf_ansi_map_MarketID, tvb, offset, 2, FALSE);
3377 offset = offset + 2;
3378 /* Switch Number octet 3*/
3379 proto_tree_add_item(subtree, hf_ansi_map_swno, tvb, offset, 1, FALSE);
3384 /* 6.5.2.dk WIN_TriggerList N.S0013-0 v 1.0 */
3386 /* 6.5.2.ec DisplayText2 Updated in N.S0015-0*/
3388 /* 6.5.2.eq MSStatus N.S0004 */
3390 /* 6.5.2.er PositionInformationCode N.S0004 */
3392 /* 6.5.2.fd InterMessageTime N.S0015-0*/
3393 /* Timer value (in 10s of seconds) octet 1 */
3395 /* 6.5.2.fe MSIDUsage N.S0015-0 */
3396 /* M and I Report (octet 1, bits A and B) */
3397 static const value_string ansi_MSIDUsage_m_or_i_vals[] = {
3399 { 1, "MIN last used"},
3400 { 2, "IMSI last used"},
3405 /* 6.5.2.ff NewMINExtension N.S0015-0 */
3407 /* 6.5.2.fv ACGEncountered N.S0023-0 v 1.0 */
3408 /* ACG Encountered (octet 1, bits A-F) */
3409 static const value_string ansi_ACGEncountered_vals[] = {
3411 { 1, "1-digit control"},
3412 { 2, "2-digit control"},
3413 { 3, "3-digit control"},
3414 { 4, "4-digit control"},
3415 { 5, "5-digit control"},
3416 { 6, "6-digit control"},
3417 { 7, "7-digit control"},
3418 { 8, "8-digit control"},
3419 { 9, "9-digit control"},
3420 { 10, "10-digit control"},
3421 { 11, "11-digit control"},
3422 { 12, "12-digit control"},
3423 { 13, "13-digit control"},
3424 { 14, "14-digit control"},
3425 { 15, "15-digit control"},
3428 /* Control Type (octet 1, bits G-H) */
3429 static const value_string ansi_ACGEncountered_cntrl_type_vals[] = {
3431 { 1, "Service Management System Initiated control encountered"},
3432 { 2, "SCF Overload control encountered"},
3433 { 3, "Reserved. Treat the same as value 0, Not used."},
3437 /* 6.5.2.fw ControlType N.S0023-0 v 1.0 */
3441 /* 6.5.2.ge QoSPriority N.S0029-0 v1.0*/
3442 /* 6.5.2.xx QOSPriority */
3443 /* Non-Assured Priority (octet 1, bits A-D) */
3444 static const value_string ansi_map_Priority_vals[] = {
3445 { 0, "Priority Level 0. This is the lowest level"},
3446 { 1, "Priority Level 1"},
3447 { 2, "Priority Level 2"},
3448 { 3, "Priority Level 3"},
3449 { 4, "Priority Level 4"},
3450 { 5, "Priority Level 5"},
3451 { 6, "Priority Level 6"},
3452 { 7, "Priority Level 7"},
3453 { 8, "Priority Level 8"},
3454 { 8, "Priority Level 9"},
3455 { 10, "Priority Level 10"},
3456 { 11, "Priority Level 11"},
3457 { 12, "Priority Level 12"},
3458 { 13, "Priority Level 13"},
3463 /* Assured Priority (octet 1, bits E-H)*/
3466 /* 6.5.2.gf PDSNAddress N.S0029-0 v1.0*/
3467 /* a. See IOS Handoff Request message for the definition of this field. */
3469 /* 6.5.2.gg PDSNProtocolType N.S0029-0 v1.0*/
3470 /* See IOS Handoff Request message for the definition of this field. */
3472 /* 6.5.2.gh CDMAMSMeasuredChannelIdentity N.S0029-0 v1.0*/
3474 /* 6.5.2.gl CallingPartyCategory N.S0027*/
3475 /* a. Refer to ITU-T Q.763 (Signalling System No. 7 ISDN user part formats and
3476 codes) for encoding of this parameter.
3477 b. Refer to national ISDN user part specifications for definitions and encoding of the
3478 reserved for national use values.
3480 /* 6.5.2.gm CDMA2000HandoffInvokeIOSData N.S0029-0 v1.0*/
3481 /* IOS A1 Element Handoff Invoke Information */
3484 /* 6.5.2.gn CDMA2000HandoffResponseIOSData */
3485 /* IOS A1 Element Handoff Response Information N.S0029-0 v1.0*/
3487 /* 6.5.2.gr CDMAServiceOptionConnectionIdentifier N.S0029-0 v1.0*/
3489 /* 6.5.2.fk GeographicPosition */
3490 /* Calling Geodetic Location (CGL)
3491 * a. See T1.628 for encoding.
3492 * b. Ignore extra octets, if received. Send only defined (or significant) octets.
3494 /* 6.5.2.fs PositionRequestType (See J-STD-036, page 8-47) X.S0002-0 v2.0
3497 /* Position Request Type (octet 1, bits A-H) */
3499 static const value_string ansi_map_Position_Request_Type_vals[] = {
3501 { 1, "Initial Position"},
3502 { 2, "Return the updated position"},
3503 { 3, "Return the updated or last known position"},
3504 { 4, "Reserved for LSP interface"},
3505 { 5, "Initial Position Only"},
3506 { 6, "Return the last known position"},
3507 { 7, "Return the updated position based on the serving cell identity"},
3510 values through 95 Reserved. Treat the same as value 1, Initial position.
3511 96 through 255 Reserved for TIA/EIA-41 protocol extension. If unknown, treat the
3512 same as value 1, Initial position.
3519 /* LCS Client Type (CTYP) (octet 2, bit A) *
3520 0 Emergency services LCS Client.
3521 1 Non-emergency services LCS Client.
3522 Call-Related Indicator (CALL) (octet 2, bit B)
3523 Decimal Value Meaning
3524 0 Call-related LCS Client request.
3525 1 Non call-related LCS Client request.
3527 Current Serving Cell Information for Coarse Position Determination (CELL) (octet 2, bit C)
3528 Decimal Value Meaning
3529 0 No specific request.
3530 1 Current serving cell information. Current serving cell information for
3531 Target MS requested. Radio contact with Target MS is required.
3533 /* 6.5.2.ft PositionResult *
3534 static const value_string ansi_map_PositionResult_vals[] = {
3536 { 1, "Initial position returned"},
3537 { 2, "Updated position returned"},
3538 { 3, "Last known position returned"},
3539 { 4, "Requested position is not available"},
3540 { 5, "Target MS disconnect"},
3541 { 6, "Target MS has handed-off"},
3542 { 7, "Identified MS is inactive or has roamed to another system"},
3543 { 8, "Unresponsive"},
3544 { 9, "Identified MS is responsive, but refused position request"},
3545 { 10, "System Failure"},
3546 { 11, "MSID is not known"},
3547 { 12, "Callback number is not known"},
3548 { 13, "Improper request"},
3549 { 14, "Mobile information returned"},
3550 { 15, "Signal not detected"},
3551 { 16, "PDE Timeout"},
3552 { 17, "Position pending"},
3553 { 18, "TDMA MAHO Information Returned"},
3554 { 19, "TDMA MAHO Information is not available"},
3555 { 20, "Access Denied"},
3556 { 21, "Requested PQOS not met"},
3557 { 22, "Resource required for CDMA handset-based position determination is currently unavailable"},
3558 { 23, "CDMA handset-based position determination failure"},
3559 { 24, "CDMA handset-based position determination failure detected by the PDE"},
3560 { 25, "CDMA handset-based position determination incomplete traffic channel requested for voice services"},
3561 { 26, "Emergency services call notification"},
3562 { 27, "Emergency services call precedence"},
3563 { 28, "Request acknowledged"},
3567 /* 6.5.2.bp-1 ServiceRedirectionCause value */
3568 static const value_string ansi_map_ServiceRedirectionCause_vals[] = {
3570 { 1, "NormalRegistration"},
3571 { 2, "SystemNotFound"},
3572 { 3, "ProtocolMismatch"},
3573 { 4, "RegistrationRejection"},
3578 /* 6.5.2.mT AuthenticationResponseReauthentication N.S0011-0 v 1.0*/
3580 /* 6.5.2.vT ReauthenticationReport N.S0011-0 v 1.0*/
3581 static const value_string ansi_map_ReauthenticationReport_vals[] = {
3583 { 1, "Reauthentication not attempted"},
3584 { 2, "Reauthentication no response"},
3585 { 3, "Reauthentication successful"},
3586 { 4, "Reauthentication failed"},
3592 /* 6.5.2.lB AKeyProtocolVersion
3595 static const value_string ansi_map_AKeyProtocolVersion_vals[] = {
3597 { 1, "A-key Generation not supported"},
3598 { 2, "Diffie Hellman with 768-bit modulus, 160-bit primitive, and 160-bit exponents"},
3599 { 3, "Diffie Hellman with 512-bit modulus, 160-bit primitive, and 160-bit exponents"},
3600 { 4, "Diffie Hellman with 768-bit modulus, 32-bit primitive, and 160-bit exponents"},
3603 /* 6.5.2.sB OTASP_ResultCode
3606 static const value_string ansi_map_OTASP_ResultCode_vals[] = {
3607 { 0, "Accepted - Successful"},
3608 { 1, "Rejected - Unknown cause."},
3609 { 2, "Computation Failure - E.g., unable to compute A-key"},
3610 { 3, "CSC Rejected - CSC challenge failure"},
3611 { 4, "Unrecognized OTASPCallEntry"},
3612 { 5, "Unsupported AKeyProtocolVersion(s)"},
3613 { 6, "Unable to Commit"},
3617 /*6.5.2.wB ServiceIndicator
3620 static const value_string ansi_map_ServiceIndicator_vals[] = {
3621 { 0, "Undefined Service"},
3622 { 1, "CDMA OTASP Service"},
3623 { 2, "TDMA OTASP Service"},
3624 { 3, "CDMA OTAPA Service"},
3625 { 4, "CDMA Position Determination Service (Emergency Services)"},
3626 { 5, "AMPS Position Determination Service (Emergency Services)"},
3627 { 6, "CDMA Position Determination Service (Value Added Services)"},
3631 /* 6.5.2.xB SignalingMessageEncryptionReport
3634 static const value_string ansi_map_SMEReport_vals[] = {
3636 { 1, "Signaling Message Encryption enabling not attempted"},
3637 { 2, "Signaling Message Encryption enabling no response"},
3638 { 3, "Signaling Message Encryption is enabled"},
3639 { 4, "Signaling Message Encryption enabling failed"},
3643 /* 6.5.2.zB VoicePrivacyReport
3646 static const value_string ansi_map_VoicePrivacyReport_vals[] = {
3648 { 1, "Voice Privacy not attempted"},
3649 { 2, "Voice Privacy no response"},
3650 { 3, "Voice Privacy is active"},
3651 { 4, "Voice Privacy failed"},
3656 #include "packet-ansi_map-fn.c"
3659 * 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301
3662 dissect_ansi_map_win_trigger_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx _U_){
3667 proto_tree *subtree;
3670 end_offset = tvb_length_remaining(tvb,offset);
3671 subtree = proto_item_add_subtree(actx->created_item, ett_win_trigger_list);
3673 while(offset< end_offset) {
3674 octet = tvb_get_guint8(tvb,offset);
3677 proto_tree_add_text(subtree, tvb, offset, 1, "TDP-R's armed");
3681 proto_tree_add_text(subtree, tvb, offset, 1, "TDP-N's armed");
3685 proto_tree_add_text(subtree, tvb, offset, 1, "EDP-R's armed");
3689 proto_tree_add_text(subtree, tvb, offset, 1, "EDP-N's armed");
3693 proto_tree_add_text(subtree, tvb, offset, 1, "[%u] (%u) %s",j,octet,val_to_str_ext(octet, &ansi_map_TriggerType_vals_ext, "Unknown TriggerType (%u)"));
3702 static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
3703 static gboolean opCodeKnown = TRUE;
3704 static ansi_map_tap_rec_t tap_rec[16];
3705 static ansi_map_tap_rec_t *tap_p;
3706 static int tap_current=0;
3709 * set tap record pointer
3712 if (tap_current == array_length(tap_rec))
3716 tap_p = &tap_rec[tap_current];
3718 switch(OperationCode){
3719 case 1: /*Handoff Measurement Request*/
3720 offset = dissect_ansi_map_HandoffMeasurementRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffMeasurementRequest);
3722 case 2: /*Facilities Directive*/
3723 offset = dissect_ansi_map_FacilitiesDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesDirective);
3725 case 3: /*Mobile On Channel*/
3726 proto_tree_add_text(tree, tvb, offset, -1, "[Carries no data]");
3728 case 4: /*Handoff Back*/
3729 offset = dissect_ansi_map_HandoffBack(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffBack);
3731 case 5: /*Facilities Release*/
3732 offset = dissect_ansi_map_FacilitiesRelease(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesRelease);
3734 case 6: /*Qualification Request*/
3735 offset = dissect_ansi_map_QualificationRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest);
3737 case 7: /*Qualification Directive*/
3738 offset = dissect_ansi_map_QualificationDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationDirective);
3740 case 8: /*Blocking*/
3741 offset = dissect_ansi_map_Blocking(TRUE, tvb, offset, actx, tree, hf_ansi_map_blocking);
3743 case 9: /*Unblocking*/
3744 offset = dissect_ansi_map_Unblocking(TRUE, tvb, offset, actx, tree, hf_ansi_map_unblocking);
3746 case 10: /*Reset Circuit*/
3747 offset = dissect_ansi_map_ResetCircuit(TRUE, tvb, offset, actx, tree, hf_ansi_map_resetCircuit);
3749 case 11: /*Trunk Test*/
3750 offset = dissect_ansi_map_TrunkTest(TRUE, tvb, offset, actx, tree, hf_ansi_map_trunkTest);
3752 case 12: /*Trunk Test Disconnect*/
3753 offset = dissect_ansi_map_TrunkTestDisconnect(TRUE, tvb, offset, actx, tree, hf_ansi_map_trunkTestDisconnect);
3755 case 13: /*Registration Notification*/
3756 offset = dissect_ansi_map_RegistrationNotification(TRUE, tvb, offset, actx, tree, hf_ansi_map_registrationNotification);
3758 case 14: /*Registration Cancellation*/
3759 offset = dissect_ansi_map_RegistrationCancellation(TRUE, tvb, offset, actx, tree, hf_ansi_map_registrationCancellation);
3761 case 15: /*Location Request*/
3762 offset = dissect_ansi_map_LocationRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_locationRequest);
3764 case 16: /*Routing Request*/
3765 offset = dissect_ansi_map_RoutingRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_routingRequest);
3767 case 17: /*Feature Request*/
3768 offset = dissect_ansi_map_FeatureRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_featureRequest);
3770 case 18: /*Reserved 18 (Service Profile Request, IS-41-C)*/
3771 proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob(18 (Service Profile Request, IS-41-C)");
3773 case 19: /*Reserved 19 (Service Profile Directive, IS-41-C)*/
3774 proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob(19 Service Profile Directive, IS-41-C)");
3776 case 20: /*Unreliable Roamer Data Directive*/
3777 offset = dissect_ansi_map_UnreliableRoamerDataDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_unreliableRoamerDataDirective);
3779 case 21: /*Reserved 21 (Call Data Request, IS-41-C)*/
3780 proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob(Reserved 21 (Call Data Request, IS-41-C)");
3782 case 22: /*MS Inactive*/
3783 offset = dissect_ansi_map_MSInactive(TRUE, tvb, offset, actx, tree, hf_ansi_map_mSInactive);
3785 case 23: /*Transfer To Number Request*/
3786 offset = dissect_ansi_map_TransferToNumberRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_transferToNumberRequest);
3788 case 24: /*Redirection Request*/
3789 offset = dissect_ansi_map_RedirectionRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_redirectionRequest);
3791 case 25: /*Handoff To Third*/
3792 offset = dissect_ansi_map_HandoffToThird(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffToThird);
3794 case 26: /*Flash Request*/
3795 offset = dissect_ansi_map_FlashRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_flashRequest);
3797 case 27: /*Authentication Directive*/
3798 offset = dissect_ansi_map_AuthenticationDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationDirective);
3800 case 28: /*Authentication Request*/
3801 offset = dissect_ansi_map_AuthenticationRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationRequest);
3803 case 29: /*Base Station Challenge*/
3804 offset = dissect_ansi_map_BaseStationChallenge(TRUE, tvb, offset, actx, tree, hf_ansi_map_baseStationChallenge);
3806 case 30: /*Authentication Failure Report*/
3807 offset = dissect_ansi_map_AuthenticationFailureReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationFailureReport);
3809 case 31: /*Count Request*/
3810 offset = dissect_ansi_map_CountRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_countRequest);
3812 case 32: /*Inter System Page*/
3813 offset = dissect_ansi_map_InterSystemPage(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPage);
3815 case 33: /*Unsolicited Response*/
3816 offset = dissect_ansi_map_UnsolicitedResponse(TRUE, tvb, offset, actx, tree, hf_ansi_map_unsolicitedResponse);
3818 case 34: /*Bulk Deregistration*/
3819 offset = dissect_ansi_map_BulkDeregistration(TRUE, tvb, offset, actx, tree, hf_ansi_map_bulkDeregistration);
3821 case 35: /*Handoff Measurement Request 2*/
3822 offset = dissect_ansi_map_HandoffMeasurementRequest2(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffMeasurementRequest2);
3824 case 36: /*Facilities Directive 2*/
3825 offset = dissect_ansi_map_FacilitiesDirective2(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesDirective2);
3827 case 37: /*Handoff Back 2*/
3828 offset = dissect_ansi_map_HandoffBack2(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffBack2);
3830 case 38: /*Handoff To Third 2*/
3831 offset = dissect_ansi_map_HandoffToThird2(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffToThird2);
3833 case 39: /*Authentication Directive Forward*/
3834 offset = dissect_ansi_map_AuthenticationDirectiveForward(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationDirectiveForward);
3836 case 40: /*Authentication Status Report*/
3837 offset = dissect_ansi_map_AuthenticationStatusReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationStatusReport);
3839 case 41: /*Reserved 41*/
3840 proto_tree_add_text(tree, tvb, offset, -1, "Reserved 41, Unknown invokeData blob");
3842 case 42: /*Information Directive*/
3843 offset = dissect_ansi_map_InformationDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_informationDirective);
3845 case 43: /*Information Forward*/
3846 offset = dissect_ansi_map_InformationForward(TRUE, tvb, offset, actx, tree, hf_ansi_map_informationForward);
3848 case 44: /*Inter System Answer*/
3849 offset = dissect_ansi_map_InterSystemAnswer(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemAnswer);
3851 case 45: /*Inter System Page 2*/
3852 offset = dissect_ansi_map_InterSystemPage2(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPage2);
3854 case 46: /*Inter System Setup*/
3855 offset = dissect_ansi_map_InterSystemSetup(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSetup);
3857 case 47: /*OriginationRequest*/
3858 offset = dissect_ansi_map_OriginationRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_originationRequest);
3860 case 48: /*Random Variable Request*/
3861 offset = dissect_ansi_map_RandomVariableRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_randomVariableRequest);
3863 case 49: /*Redirection Directive*/
3864 offset = dissect_ansi_map_RedirectionDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_redirectionDirective);
3866 case 50: /*Remote User Interaction Directive*/
3867 offset = dissect_ansi_map_RemoteUserInteractionDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_remoteUserInteractionDirective);
3869 case 51: /*SMS Delivery Backward*/
3870 offset = dissect_ansi_map_SMSDeliveryBackward(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSDeliveryBackward);
3872 case 52: /*SMS Delivery Forward*/
3873 offset = dissect_ansi_map_SMSDeliveryForward(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSDeliveryForward);
3875 case 53: /*SMS Delivery Point to Point*/
3876 offset = dissect_ansi_map_SMSDeliveryPointToPoint(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSDeliveryPointToPoint);
3878 case 54: /*SMS Notification*/
3879 offset = dissect_ansi_map_SMSNotification(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSNotification);
3881 case 55: /*SMS Request*/
3882 offset = dissect_ansi_map_SMSRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSRequest);
3885 /* N.S0010-0 v 1.0 */
3886 /* N.S0011-0 v 1.0 */
3887 case 56: /*OTASP Request 6.4.2.CC*/
3888 offset = dissect_ansi_map_OTASPRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_oTASPRequest);
3890 /*End N.S0011-0 v 1.0 */
3891 case 57: /*Information Backward*/
3894 /* N.S0008-0 v 1.0 */
3895 case 58: /*Change Facilities*/
3896 offset = dissect_ansi_map_ChangeFacilities(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeFacilities);
3898 case 59: /*Change Service*/
3899 offset = dissect_ansi_map_ChangeService(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeService);
3901 /* End N.S0008-0 v 1.0 */
3902 case 60: /*Parameter Request*/
3903 offset = dissect_ansi_map_ParameterRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_parameterRequest);
3905 case 61: /*TMSI Directive*/
3906 offset = dissect_ansi_map_TMSIDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_tMSIDirective);
3908 /*End N.S0010-0 v 1.0 */
3909 case 62: /*NumberPortabilityRequest 62*/
3910 offset = dissect_ansi_map_NumberPortabilityRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_numberPortabilityRequest);
3912 case 63: /*Service Request N.S0012-0 v 1.0*/
3913 offset = dissect_ansi_map_ServiceRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_serviceRequest);
3916 case 64: /*Analyzed Information Request*/
3917 offset = dissect_ansi_map_AnalyzedInformation(TRUE, tvb, offset, actx, tree, hf_ansi_map_analyzedInformation);
3919 case 65: /*Connection Failure Report*/
3920 offset = dissect_ansi_map_ConnectionFailureReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_connectionFailureReport);
3922 case 66: /*Connect Resource*/
3923 offset = dissect_ansi_map_ConnectResource(TRUE, tvb, offset, actx, tree, hf_ansi_map_connectResource);
3925 case 67: /*Disconnect Resource*/
3928 case 68: /*Facility Selected and Available*/
3929 offset = dissect_ansi_map_FacilitySelectedAndAvailable(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitySelectedAndAvailable);
3931 case 69: /*Instruction Request*/
3935 offset = dissect_ansi_map_Modify(TRUE, tvb, offset, actx, tree, hf_ansi_map_modify);
3937 case 71: /*Reset Timer*/
3941 offset = dissect_ansi_map_Search(TRUE, tvb, offset, actx, tree, hf_ansi_map_search);
3943 case 73: /*Seize Resource*/
3944 offset = dissect_ansi_map_SeizeResource(TRUE, tvb, offset, actx, tree, hf_ansi_map_seizeResource);
3946 case 74: /*SRF Directive*/
3947 offset = dissect_ansi_map_SRFDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_sRFDirective);
3950 offset = dissect_ansi_map_TBusy(TRUE, tvb, offset, actx, tree, hf_ansi_map_tBusy);
3952 case 76: /*T NoAnswer*/
3953 offset = dissect_ansi_map_TNoAnswer(TRUE, tvb, offset, actx, tree, hf_ansi_map_tNoAnswer);
3956 case 77: /*Release*/
3959 case 78: /*SMS Delivery Point to Point Ack*/
3960 offset = dissect_ansi_map_SMSDeliveryPointToPointAck(TRUE, tvb, offset, actx, tree, hf_ansi_map_smsDeliveryPointToPointAck);
3963 case 79: /*Message Directive*/
3964 offset = dissect_ansi_map_MessageDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_messageDirective);
3967 /* N.S0018 PN-4287*/
3968 case 80: /*Bulk Disconnection*/
3969 offset = dissect_ansi_map_BulkDisconnection(TRUE, tvb, offset, actx, tree, hf_ansi_map_bulkDisconnection);
3971 case 81: /*Call Control Directive*/
3972 offset = dissect_ansi_map_CallControlDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_callControlDirective);
3974 case 82: /*O Answer*/
3975 offset = dissect_ansi_map_OAnswer(TRUE, tvb, offset, actx, tree, hf_ansi_map_oAnswer);
3977 case 83: /*O Disconnect*/
3978 offset = dissect_ansi_map_ODisconnect(TRUE, tvb, offset, actx, tree, hf_ansi_map_oDisconnect);
3980 case 84: /*Call Recovery Report*/
3981 offset = dissect_ansi_map_CallRecoveryReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_callRecoveryReport);
3983 case 85: /*T Answer*/
3984 offset = dissect_ansi_map_TAnswer(TRUE, tvb, offset, actx, tree, hf_ansi_map_tAnswer);
3986 case 86: /*T Disconnect*/
3987 offset = dissect_ansi_map_TDisconnect(TRUE, tvb, offset, actx, tree, hf_ansi_map_tDisconnect);
3989 case 87: /*Unreliable Call Data*/
3990 offset = dissect_ansi_map_UnreliableCallData(TRUE, tvb, offset, actx, tree, hf_ansi_map_unreliableCallData);
3992 /* N.S0018 PN-4287*/
3994 case 88: /*O CalledPartyBusy*/
3995 offset = dissect_ansi_map_OCalledPartyBusy(TRUE, tvb, offset, actx, tree, hf_ansi_map_oCalledPartyBusy);
3997 case 89: /*O NoAnswer*/
3998 offset = dissect_ansi_map_ONoAnswer(TRUE, tvb, offset, actx, tree, hf_ansi_map_oNoAnswer);
4000 case 90: /*Position Request*/
4001 offset = dissect_ansi_map_PositionRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionRequest);
4003 case 91: /*Position Request Forward*/
4004 offset = dissect_ansi_map_PositionRequestForward(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionRequestForward);
4007 case 92: /*Call Termination Report*/
4008 offset = dissect_ansi_map_CallTerminationReport(TRUE, tvb, offset, actx, tree, hf_ansi_map_callTerminationReport);
4010 case 93: /*Geo Position Directive*/
4013 case 94: /*Geo Position Request*/
4014 offset = dissect_ansi_map_GeoPositionRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPositionRequest);
4016 case 95: /*Inter System Position Request*/
4017 offset = dissect_ansi_map_InterSystemPositionRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPositionRequest);
4019 case 96: /*Inter System Position Request Forward*/
4020 offset = dissect_ansi_map_InterSystemPositionRequestForward(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPositionRequestForward);
4022 /* 3GPP2 N.S0023-0 */
4023 case 97: /*ACG Directive*/
4024 offset = dissect_ansi_map_ACGDirective(TRUE, tvb, offset, actx, tree, hf_ansi_map_aCGDirective);
4026 /* END 3GPP2 N.S0023-0 */
4027 case 98: /*Roamer Database Verification Request*/
4028 offset = dissect_ansi_map_RoamerDatabaseVerificationRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_roamerDatabaseVerificationRequest);
4030 /* N.S0029 X.S0001-A v1.0*/
4031 case 99: /*Add Service*/
4032 offset = dissect_ansi_map_AddService(TRUE, tvb, offset, actx, tree, hf_ansi_map_addService);
4034 case 100: /*Drop Service*/
4035 offset = dissect_ansi_map_DropService(TRUE, tvb, offset, actx, tree, hf_ansi_map_dropService);
4037 /*End N.S0029 X.S0001-A v1.0*/
4038 /* X.S0002-0 v1.0 */
4039 /* LCSParameterRequest */
4040 case 101: /* InterSystemSMSPage 101 */
4041 offset = dissect_ansi_map_InterSystemSMSPage(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSPage);
4044 offset = dissect_ansi_map_LCSParameterRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_lcsParameterRequest);
4046 /* CheckMEID X.S0008-0 v1.0*/
4048 offset = dissect_ansi_map_CheckMEID(TRUE, tvb, offset, actx, tree, hf_ansi_map_checkMEID);
4050 /* PositionEventNotification */
4052 offset = dissect_ansi_map_PositionEventNotification(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionEventNotification);
4055 /* StatusRequest X.S0008-0 v1.0*/
4056 offset = dissect_ansi_map_StatusRequest(TRUE, tvb, offset, actx, tree, hf_ansi_map_statusRequest);
4058 /* InterSystemSMSDelivery-PointToPoint 111 X.S0004-540-E v2.0*/
4060 /* InterSystemSMSDeliveryPointToPoint X.S0004-540-E v2.0 */
4061 offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPoint(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPoint);
4064 /* QualificationRequest2 112 X.S0004-540-E v2.0*/
4065 offset = dissect_ansi_map_QualificationRequest2(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2);
4068 proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
4069 opCodeKnown = FALSE;
4075 tap_p->message_type = OperationCode;
4076 tap_p->size = 0; /* should be number of octets in message */
4078 tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
4084 static int dissect_returnData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
4085 static gboolean opCodeKnown = TRUE;
4086 static ansi_map_tap_rec_t tap_rec[16];
4087 static ansi_map_tap_rec_t *tap_p;
4088 static int tap_current=0;
4091 * set tap record pointer
4094 if (tap_current == array_length(tap_rec))
4098 tap_p = &tap_rec[tap_current];
4100 switch(OperationCode){
4101 case 1: /*Handoff Measurement Request*/
4102 offset = dissect_ansi_map_HandoffMeasurementRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffMeasurementRequestRes);
4104 case 2: /*Facilities Directive*/
4105 offset = dissect_ansi_map_FacilitiesDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesDirectiveRes);
4107 case 4: /*Handoff Back*/
4108 offset = dissect_ansi_map_HandoffBackRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffBackRes);
4110 case 5: /*Facilities Release*/
4111 offset = dissect_ansi_map_FacilitiesReleaseRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesReleaseRes);
4113 case 6: /*Qualification Request*/
4114 offset = dissect_ansi_map_QualificationRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequestRes);
4116 case 7: /*Qualification Directive*/
4117 offset = dissect_ansi_map_QualificationDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationDirectiveRes);
4119 case 10: /*Reset Circuit*/
4120 offset = dissect_ansi_map_ResetCircuitRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_resetCircuitRes);
4122 case 13: /*Registration Notification*/
4123 offset = dissect_ansi_map_RegistrationNotificationRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_registrationNotificationRes);
4125 case 14: /*Registration Cancellation*/
4126 offset = dissect_ansi_map_RegistrationCancellationRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_registrationCancellationRes);
4128 case 15: /*Location Request*/
4129 offset = dissect_ansi_map_LocationRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_locationRequestRes);
4131 case 16: /*Routing Request*/
4132 offset = dissect_ansi_map_RoutingRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_routingRequestRes);
4134 case 17: /*Feature Request*/
4135 offset = dissect_ansi_map_FeatureRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_featureRequestRes);
4137 case 23: /*Transfer To Number Request*/
4138 offset = dissect_ansi_map_TransferToNumberRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_transferToNumberRequestRes);
4140 case 25: /*Handoff To Third*/
4141 offset = dissect_ansi_map_HandoffToThirdRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffToThirdRes);
4143 case 26: /*Flash Request*/
4145 proto_tree_add_text(tree, tvb, offset, -1, "No Data");
4147 case 27: /*Authentication Directive*/
4148 offset = dissect_ansi_map_AuthenticationDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationDirectiveRes);
4150 case 28: /*Authentication Request*/
4151 offset = dissect_ansi_map_AuthenticationRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationRequestRes);
4153 case 29: /*Base Station Challenge*/
4154 offset = dissect_ansi_map_BaseStationChallengeRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_baseStationChallengeRes);
4156 case 30: /*Authentication Failure Report*/
4157 offset = dissect_ansi_map_AuthenticationFailureReportRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationFailureReportRes);
4159 case 31: /*Count Request*/
4160 offset = dissect_ansi_map_CountRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_countRequestRes);
4162 case 32: /*Inter System Page*/
4163 offset = dissect_ansi_map_InterSystemPageRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPageRes);
4165 case 33: /*Unsolicited Response*/
4166 offset = dissect_ansi_map_UnsolicitedResponseRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_unsolicitedResponseRes);
4168 case 35: /*Handoff Measurement Request 2*/
4169 offset = dissect_ansi_map_HandoffMeasurementRequest2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffMeasurementRequest2Res);
4171 case 36: /*Facilities Directive 2*/
4172 offset = dissect_ansi_map_FacilitiesDirective2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitiesDirective2Res);
4174 case 37: /*Handoff Back 2*/
4175 offset = dissect_ansi_map_HandoffBack2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffBack2Res);
4177 case 38: /*Handoff To Third 2*/
4178 offset = dissect_ansi_map_HandoffToThird2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_handoffToThird2Res);
4180 case 39: /*Authentication Directive Forward*/
4181 offset = dissect_ansi_map_AuthenticationDirectiveForwardRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationDirectiveForwardRes);
4183 case 40: /*Authentication Status Report*/
4184 offset = dissect_ansi_map_AuthenticationStatusReportRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_authenticationStatusReportRes);
4187 case 42: /*Information Directive*/
4188 offset = dissect_ansi_map_InformationDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_informationDirectiveRes);
4190 case 43: /*Information Forward*/
4191 offset = dissect_ansi_map_InformationForwardRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_informationForwardRes);
4193 case 45: /*Inter System Page 2*/
4194 offset = dissect_ansi_map_InterSystemPage2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPage2Res);
4196 case 46: /*Inter System Setup*/
4197 offset = dissect_ansi_map_InterSystemSetupRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSetupRes);
4199 case 47: /*OriginationRequest*/
4200 offset = dissect_ansi_map_OriginationRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_originationRequestRes);
4202 case 48: /*Random Variable Request*/
4203 offset = dissect_ansi_map_RandomVariableRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_randomVariableRequestRes);
4205 case 50: /*Remote User Interaction Directive*/
4206 offset = dissect_ansi_map_RemoteUserInteractionDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_remoteUserInteractionDirectiveRes);
4208 case 51: /*SMS Delivery Backward*/
4209 offset = dissect_ansi_map_SMSDeliveryBackwardRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSDeliveryBackwardRes);
4211 case 52: /*SMS Delivery Forward*/
4212 offset = dissect_ansi_map_SMSDeliveryForwardRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSDeliveryForwardRes);
4214 case 53: /*SMS Delivery Point to Point*/
4215 offset = dissect_ansi_map_SMSDeliveryPointToPointRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSDeliveryPointToPointRes);
4217 case 54: /*SMS Notification*/
4218 offset = dissect_ansi_map_SMSNotificationRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSNotificationRes);
4220 case 55: /*SMS Request*/
4221 offset = dissect_ansi_map_SMSRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_sMSRequestRes);
4223 /* N.S0008-0 v 1.0 */
4224 case 56: /*OTASP Request 6.4.2.CC*/
4225 offset = dissect_ansi_map_OTASPRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_oTASPRequestRes);
4227 /* 57 Information Backward*/
4228 case 58: /*Change Facilities*/
4229 offset = dissect_ansi_map_ChangeFacilitiesRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeFacilitiesRes);
4231 case 59: /*Change Service*/
4232 offset = dissect_ansi_map_ChangeServiceRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_changeServiceRes);
4234 case 60: /*Parameter Request*/
4235 offset = dissect_ansi_map_ParameterRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_parameterRequestRes);
4237 case 61: /*TMSI Directive*/
4238 offset = dissect_ansi_map_TMSIDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_tMSIDirectiveRes);
4240 case 62: /*NumberPortabilityRequest */
4241 offset = dissect_ansi_map_NumberPortabilityRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_numberPortabilityRequestRes);
4243 case 63: /*Service Request*/
4244 offset = dissect_ansi_map_ServiceRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_serviceRequestRes);
4247 case 64: /*Analyzed Information Request*/
4248 offset = dissect_ansi_map_AnalyzedInformationRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_analyzedInformationRes);
4250 /* 65 Connection Failure Report*/
4251 /* 66 Connect Resource*/
4252 /* 67 Disconnect Resource*/
4253 case 68: /*Facility Selected and Available*/
4254 offset = dissect_ansi_map_FacilitySelectedAndAvailableRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_facilitySelectedAndAvailableRes);
4256 /* 69 Instruction Request*/
4258 offset = dissect_ansi_map_ModifyRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_modifyRes);
4261 offset = dissect_ansi_map_SearchRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_searchRes);;
4263 case 73: /*Seize Resource*/
4264 offset = dissect_ansi_map_SeizeResourceRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_seizeResourceRes);
4266 case 74: /*SRF Directive*/
4267 offset = dissect_ansi_map_SRFDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_sRFDirectiveRes);
4270 offset = dissect_ansi_map_TBusyRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_tBusyRes);
4272 case 76: /*T NoAnswer*/
4273 offset = dissect_ansi_map_TNoAnswerRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_tNoAnswerRes);
4275 case 81: /*Call Control Directive*/
4276 offset = dissect_ansi_map_CallControlDirectiveRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_callControlDirectiveRes);
4278 case 83: /*O Disconnect*/
4279 offset = dissect_ansi_map_ODisconnectRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_oDisconnectRes);
4281 case 86: /*T Disconnect*/
4282 offset = dissect_ansi_map_TDisconnectRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_tDisconnectRes);
4284 case 88: /*O CalledPartyBusy*/
4285 offset = dissect_ansi_map_OCalledPartyBusyRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_oCalledPartyBusyRes);
4287 case 89: /*O NoAnswer*/
4288 offset = dissect_ansi_map_ONoAnswerRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_oNoAnswerRes);
4290 case 90: /*Position Request*/
4291 offset = dissect_ansi_map_PositionRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionRequestRes);
4293 case 91: /*Position Request Forward*/
4294 offset = dissect_ansi_map_PositionRequestForwardRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionRequestForwardRes);
4296 case 95: /*Inter System Position Request*/
4297 offset = dissect_ansi_map_InterSystemPositionRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPositionRequestRes);
4299 case 96: /*Inter System Position Request Forward*/
4300 offset = dissect_ansi_map_InterSystemPositionRequestForwardRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemPositionRequestRes);
4302 case 98: /*Roamer Database Verification Request*/
4303 offset = dissect_ansi_map_RoamerDatabaseVerificationRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_roamerDatabaseVerificationRequestRes);
4305 case 99: /*Add Service*/
4306 offset = dissect_ansi_map_AddServiceRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_addServiceRes);
4308 case 100: /*Drop Service*/
4309 offset = dissect_ansi_map_DropServiceRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_dropServiceRes);
4312 /* X.S0002-0 v1.0 */
4313 /* LCSParameterRequest */
4315 offset = dissect_ansi_map_LCSParameterRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_lcsParameterRequestRes);
4317 /* CheckMEID X.S0008-0 v1.0*/
4319 offset = dissect_ansi_map_CheckMEIDRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_checkMEIDRes);
4321 /* PositionEventNotification *
4323 offset = dissect_ansi_map_PositionEventNotification(TRUE, tvb, offset, actx, tree, hf_ansi_map_positionEventNotificationRes);
4327 /* StatusRequest X.S0008-0 v1.0*/
4328 offset = dissect_ansi_map_StatusRequestRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_statusRequestRes);
4331 /* InterSystemSMSDeliveryPointToPointRes X.S0004-540-E v2.0 */
4332 offset = dissect_ansi_map_InterSystemSMSDeliveryPointToPointRes(TRUE, tvb, offset, actx, tree, hf_ansi_map_interSystemSMSDeliveryPointToPointRes);
4335 /* QualificationRequest2Res 112 X.S0004-540-E v2.0*/
4336 offset = dissect_ansi_map_QualificationRequest2Res(TRUE, tvb, offset, actx, tree, hf_ansi_map_qualificationRequest2Res);
4339 proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
4340 opCodeKnown = FALSE;
4346 tap_p->message_type = OperationCode;
4347 tap_p->size = 0; /* should be number of octets in message */
4349 tap_queue_packet(ansi_map_tap, g_pinfo, tap_p);
4356 find_saved_invokedata(asn1_ctx_t *actx){
4357 struct ansi_map_invokedata_t *ansi_map_saved_invokedata;
4358 struct ansi_tcap_private_t *p_private_tcap;
4359 address* src = &(actx->pinfo->src);
4360 address* dst = &(actx->pinfo->dst);
4366 src_str = ep_address_to_str(src);
4367 dst_str = ep_address_to_str(dst);
4369 /* Data from the TCAP dissector */
4370 if (actx->pinfo->private_data != NULL){
4371 p_private_tcap=actx->pinfo->private_data;
4372 /* The hash string needs to contain src and dest to distiguish differnt flows */
4373 src_str = ep_address_to_str(src);
4374 dst_str = ep_address_to_str(dst);
4375 /* Reverse order to invoke */
4376 switch(ansi_map_response_matching_type){
4377 case ANSI_MAP_TID_ONLY:
4378 g_snprintf(buf,1024,"%s",p_private_tcap->TransactionID_str);
4381 g_snprintf(buf,1024,"%s%s",p_private_tcap->TransactionID_str,dst_str);
4384 g_snprintf(buf,1024,"%s%s%s",p_private_tcap->TransactionID_str,dst_str,src_str);
4388 g_warning("Find Hash string %s pkt: %u",buf,actx->pinfo->fd->num);
4389 ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table, buf);
4390 if(ansi_map_saved_invokedata){
4391 OperationCode = ansi_map_saved_invokedata->opcode & 0xff;
4392 ServiceIndicator = ansi_map_saved_invokedata->ServiceIndicator;
4394 OperationCode = OperationCode & 0x00ff;
4397 g_warning("No private data pkt: %u",actx->pinfo->fd->num);
4398 OperationCode = OperationCode & 0x00ff;
4400 return OperationCode;
4404 dissect_ansi_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4406 proto_item *ansi_map_item;
4407 proto_tree *ansi_map_tree = NULL;
4409 struct ansi_tcap_private_t *p_private_tcap;
4410 asn1_ctx_t asn1_ctx;
4411 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4413 SMS_BearerData_tvb = NULL;
4414 ansi_map_sms_tele_id = -1;
4418 * Make entry in the Protocol column on summary display
4420 col_set_str(pinfo->cinfo, COL_PROTOCOL, "ANSI MAP");
4422 /* Data from the TCAP dissector */
4423 if (pinfo->private_data == NULL){
4424 proto_tree_add_text(tree, tvb, 0, -1, "Dissector ERROR this dissector relays on private data");
4429 * create the ansi_map protocol tree
4431 ansi_map_item = proto_tree_add_item(tree, proto_ansi_map, tvb, 0, -1, FALSE);
4432 ansi_map_tree = proto_item_add_subtree(ansi_map_item, ett_ansi_map);
4433 ansi_map_is_invoke = FALSE;
4436 ServiceIndicator = 0;
4438 p_private_tcap=pinfo->private_data;
4440 switch(p_private_tcap->d.pdu){
4448 OperationCode = p_private_tcap->d.OperationCode_private & 0x00ff;
4449 ansi_map_is_invoke = TRUE;
4450 col_add_fstr(pinfo->cinfo, COL_INFO,"%s Invoke ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
4451 proto_item_append_text(p_private_tcap->d.OperationCode_item," %s",val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
4452 offset = dissect_invokeData(ansi_map_tree, tvb, 0, &asn1_ctx);
4453 update_saved_invokedata(pinfo, ansi_map_tree, tvb);
4456 OperationCode = find_saved_invokedata(&asn1_ctx);
4457 col_add_fstr(pinfo->cinfo, COL_INFO,"%s ReturnResult ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
4458 proto_item_append_text(p_private_tcap->d.OperationCode_item," %s",val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
4459 offset = dissect_returnData(ansi_map_tree, tvb, 0, &asn1_ctx);
4462 col_add_fstr(pinfo->cinfo, COL_INFO,"%s ReturnError ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
4465 col_add_fstr(pinfo->cinfo, COL_INFO,"%s Reject ", val_to_str_ext(OperationCode, &ansi_map_opr_code_strings_ext, "Unknown ANSI-MAP PDU (%u)"));
4468 /* Must be Invoke ReturnResult ReturnError or Reject */
4469 DISSECTOR_ASSERT_NOT_REACHED();
4474 static void range_delete_callback(guint32 ssn)
4477 delete_ansi_tcap_subdissector(ssn , ansi_map_handle);
4481 static void range_add_callback(guint32 ssn)
4484 add_ansi_tcap_subdissector(ssn , ansi_map_handle);
4489 proto_reg_handoff_ansi_map(void)
4491 static gboolean ansi_map_prefs_initialized = FALSE;
4492 static range_t *ssn_range;
4494 if(!ansi_map_prefs_initialized)
4496 ansi_map_prefs_initialized = TRUE;
4497 ansi_map_handle = find_dissector("ansi_map");
4501 range_foreach(ssn_range, range_delete_callback);
4505 ssn_range = range_copy(global_ssn_range);
4507 range_foreach(ssn_range, range_add_callback);
4510 /*--- proto_register_ansi_map -------------------------------------------*/
4511 void proto_register_ansi_map(void) {
4513 module_t *ansi_map_module;
4515 /* List of fields */
4516 static hf_register_info hf[] = {
4518 { &hf_ansi_map_op_code_fam,
4519 { "Operation Code Family", "ansi_map.op_code_fam",
4520 FT_UINT8, BASE_DEC, NULL, 0,
4522 { &hf_ansi_map_reservedBitH,
4523 { "Reserved", "ansi_map.reserved_bitH",
4524 FT_BOOLEAN, 8, NULL,0x80,
4526 { &hf_ansi_map_reservedBitD,
4527 { "Reserved", "ansi_map.reserved_bitD",
4528 FT_BOOLEAN, 8, NULL,0x08,
4530 { &hf_ansi_map_reservedBitHG,
4531 { "Reserved", "ansi_map.reserved_bitHG",
4532 FT_UINT8, BASE_DEC, NULL, 0xc0,
4534 { &hf_ansi_map_reservedBitHGFE,
4535 { "Reserved", "ansi_map.reserved_bitHGFE",
4536 FT_UINT8, BASE_DEC, NULL, 0xf0,
4538 { &hf_ansi_map_reservedBitFED,
4539 { "Reserved", "ansi_map.reserved_bitFED",
4540 FT_UINT8, BASE_DEC, NULL, 0x38,
4542 { &hf_ansi_map_reservedBitED,
4543 { "Reserved", "ansi_map.reserved_bitED",
4544 FT_UINT8, BASE_DEC, NULL, 0x18,
4546 { &hf_ansi_map_op_code,
4547 { "Operation Code", "ansi_map.op_code",
4548 FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ansi_map_opr_code_strings_ext, 0x0,
4550 { &hf_ansi_map_type_of_digits,
4551 { "Type of Digits", "ansi_map.type_of_digits",
4552 FT_UINT8, BASE_DEC, VALS(ansi_map_type_of_digits_vals), 0x0,
4555 { "Nature of Number", "ansi_map.na",
4556 FT_BOOLEAN, 8, TFS(&ansi_map_na_bool_val),0x01,
4559 { "Presentation Indication", "ansi_map.type_of_pi",
4560 FT_BOOLEAN, 8, TFS(&ansi_map_pi_bool_val),0x02,
4562 { &hf_ansi_map_navail,
4563 { "Number available indication", "ansi_map.navail",
4564 FT_BOOLEAN, 8, TFS(&ansi_map_navail_bool_val),0x04,
4567 { "Screening indication", "ansi_map.si",
4568 FT_UINT8, BASE_DEC, VALS(ansi_map_si_vals), 0x30,
4570 { &hf_ansi_map_digits_enc,
4571 { "Encoding", "ansi_map.enc",
4572 FT_UINT8, BASE_DEC, VALS(ansi_map_digits_enc_vals), 0x0f,
4575 { "Numbering Plan", "ansi_map.np",
4576 FT_UINT8, BASE_DEC, VALS(ansi_map_np_vals), 0xf0,
4578 { &hf_ansi_map_nr_digits,
4579 { "Number of Digits", "ansi_map.nr_digits",
4580 FT_UINT8, BASE_DEC, NULL, 0x0,
4582 { &hf_ansi_map_bcd_digits,
4583 { "BCD digits", "ansi_map.bcd_digits",
4584 FT_STRING, BASE_NONE, NULL, 0,
4586 { &hf_ansi_map_ia5_digits,
4587 { "IA5 digits", "ansi_map.ia5_digits",
4588 FT_STRING, BASE_NONE, NULL, 0,
4590 { &hf_ansi_map_subaddr_type,
4591 { "Type of Subaddress", "ansi_map.subaddr_type",
4592 FT_UINT8, BASE_DEC, VALS(ansi_map_sub_addr_type_vals), 0x70,
4594 { &hf_ansi_map_subaddr_odd_even,
4595 { "Odd/Even Indicator", "ansi_map.subaddr_odd_even",
4596 FT_BOOLEAN, 8, TFS(&ansi_map_navail_bool_val),0x08,
4599 { &hf_ansi_alertcode_cadence,
4600 { "Cadence", "ansi_map.alertcode.cadence",
4601 FT_UINT8, BASE_DEC, VALS(ansi_map_AlertCode_Cadence_vals), 0x3f,
4603 { &hf_ansi_alertcode_pitch,
4604 { "Pitch", "ansi_map.alertcode.pitch",
4605 FT_UINT8, BASE_DEC, VALS(ansi_map_AlertCode_Pitch_vals), 0xc0,
4607 { &hf_ansi_alertcode_alertaction,
4608 { "Alert Action", "ansi_map.alertcode.alertaction",
4609 FT_UINT8, BASE_DEC, VALS(ansi_map_AlertCode_Alert_Action_vals), 0x07,
4611 { &hf_ansi_map_announcementcode_tone,
4612 { "Tone", "ansi_map.announcementcode.tone",
4613 FT_UINT8, BASE_DEC, VALS(ansi_map_AnnouncementCode_tone_vals), 0x0,
4615 { &hf_ansi_map_announcementcode_class,
4616 { "Tone", "ansi_map.announcementcode.class",
4617 FT_UINT8, BASE_DEC, VALS(ansi_map_AnnouncementCode_class_vals), 0xf,
4619 { &hf_ansi_map_announcementcode_std_ann,
4620 { "Standard Announcement", "ansi_map.announcementcode.std_ann",
4621 FT_UINT8, BASE_DEC, VALS(ansi_map_AnnouncementCode_std_ann_vals), 0x0,
4623 { &hf_ansi_map_announcementcode_cust_ann,
4624 { "Custom Announcement", "ansi_map.announcementcode.cust_ann",
4625 FT_UINT8, BASE_DEC, NULL, 0x0,
4627 { &hf_ansi_map_authorizationperiod_period,
4628 { "Period", "ansi_map.authorizationperiod.period",
4629 FT_UINT8, BASE_DEC, VALS(ansi_map_authorizationperiod_period_vals), 0x0,
4631 { &hf_ansi_map_value,
4632 { "Value", "ansi_map.value",
4633 FT_UINT8, BASE_DEC, NULL, 0x0,
4635 { &hf_ansi_map_msc_type,
4636 { "Type", "ansi_map.extendedmscid.type",
4637 FT_UINT8, BASE_DEC, VALS(ansi_map_msc_type_vals), 0x0,
4639 { &hf_ansi_map_handoffstate_pi,
4640 { "Party Involved (PI)", "ansi_map.handoffstate.pi",
4641 FT_BOOLEAN, 8, TFS(&ansi_map_HandoffState_pi_bool_val),0x01,
4644 { "Trunk Group Number (G)", "ansi_map.tgn",
4645 FT_UINT8, BASE_DEC, NULL,0x0,
4648 { "Trunk Member Number (M)", "ansi_map.tgn",
4649 FT_UINT8, BASE_DEC, NULL,0x0,
4651 { &hf_ansi_map_messagewaitingnotificationcount_tom,
4652 { "Type of messages", "ansi_map.messagewaitingnotificationcount.tom",
4653 FT_UINT8, BASE_DEC, VALS(ansi_map_MessageWaitingNotificationCount_type_vals), 0x0,
4655 { &hf_ansi_map_messagewaitingnotificationcount_no_mw,
4656 { "Number of Messages Waiting", "ansi_map.messagewaitingnotificationcount.nomw",
4657 FT_UINT8, BASE_DEC, NULL,0x0,
4659 { &hf_ansi_map_messagewaitingnotificationtype_mwi,
4660 { "Message Waiting Indication (MWI)", "ansi_map.messagewaitingnotificationcount.mwi",
4661 FT_UINT8, BASE_DEC, VALS(ansi_map_MessageWaitingNotificationType_mwi_vals), 0x0,
4663 { &hf_ansi_map_messagewaitingnotificationtype_apt,
4664 { "Alert Pip Tone (APT)", "ansi_map.messagewaitingnotificationtype.apt",
4665 FT_BOOLEAN, 8, TFS(&ansi_map_HandoffState_pi_bool_val),0x02,
4667 { &hf_ansi_map_messagewaitingnotificationtype_pt,
4668 { "Pip Tone (PT)", "ansi_map.messagewaitingnotificationtype.pt",
4669 FT_UINT8, BASE_DEC, VALS(ansi_map_MessageWaitingNotificationType_mwi_vals), 0xc0,
4672 { &hf_ansi_map_trans_cap_prof,
4673 { "Profile (PROF)", "ansi_map.trans_cap_prof",
4674 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_prof_bool_val),0x01,
4676 { &hf_ansi_map_trans_cap_busy,
4677 { "Busy Detection (BUSY)", "ansi_map.trans_cap_busy",
4678 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_busy_bool_val),0x02,
4680 { &hf_ansi_map_trans_cap_ann,
4681 { "Announcements (ANN)", "ansi_map.trans_cap_ann",
4682 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_ann_bool_val),0x04,
4684 { &hf_ansi_map_trans_cap_rui,
4685 { "Remote User Interaction (RUI)", "ansi_map.trans_cap_rui",
4686 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_rui_bool_val),0x08,
4688 { &hf_ansi_map_trans_cap_spini,
4689 { "Subscriber PIN Intercept (SPINI)", "ansi_map.trans_cap_spini",
4690 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_spini_bool_val),0x10,
4692 { &hf_ansi_map_trans_cap_uzci,
4693 { "UZ Capability Indicator (UZCI)", "ansi_map.trans_cap_uzci",
4694 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_uzci_bool_val),0x20,
4696 { &hf_ansi_map_trans_cap_ndss,
4697 { "NDSS Capability (NDSS)", "ansi_map.trans_cap_ndss",
4698 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_ndss_bool_val),0x40,
4700 { &hf_ansi_map_trans_cap_nami,
4701 { "NAME Capability Indicator (NAMI)", "ansi_map.trans_cap_nami",
4702 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_nami_bool_val),0x80,
4704 { &hf_ansi_trans_cap_multerm,
4705 { "Multiple Terminations", "ansi_map.trans_cap_multerm",
4706 FT_UINT8, BASE_DEC, VALS(ansi_map_trans_cap_multerm_vals), 0x0f,
4708 { &hf_ansi_map_terminationtriggers_busy,
4709 { "Busy", "ansi_map.terminationtriggers.busy",
4710 FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_busy_vals), 0x03,
4712 { &hf_ansi_map_terminationtriggers_rf,
4713 { "Routing Failure (RF)", "ansi_map.terminationtriggers.rf",
4714 FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_rf_vals), 0x0c,
4716 { &hf_ansi_map_terminationtriggers_npr,
4717 { "No Page Response (NPR)", "ansi_map.terminationtriggers.npr",
4718 FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_npr_vals), 0x30,
4720 { &hf_ansi_map_terminationtriggers_na,
4721 { "No Answer (NA)", "ansi_map.terminationtriggers.na",
4722 FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_na_vals), 0xc0,
4724 { &hf_ansi_map_terminationtriggers_nr,
4725 { "None Reachable (NR)", "ansi_map.terminationtriggers.nr",
4726 FT_UINT8, BASE_DEC, VALS(ansi_map_terminationtriggers_nr_vals), 0x01,
4728 { &hf_ansi_trans_cap_tl,
4729 { "TerminationList (TL)", "ansi_map.trans_cap_tl",
4730 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_tl_bool_val),0x10,
4732 { &hf_ansi_map_cdmaserviceoption,
4733 { "CDMAServiceOption", "ansi_map.cdmaserviceoption",
4734 FT_UINT16, BASE_RANGE_STRING | BASE_DEC, RVALS(&cdmaserviceoption_vals), 0x0,
4736 { &hf_ansi_trans_cap_waddr,
4737 { "WIN Addressing (WADDR)", "ansi_map.trans_cap_waddr",
4738 FT_BOOLEAN, 8, TFS(&ansi_map_trans_cap_waddr_bool_val),0x20,
4741 { &hf_ansi_map_MarketID,
4742 { "MarketID", "ansi_map.marketid",
4743 FT_UINT16, BASE_DEC, NULL, 0,
4745 { &hf_ansi_map_swno,
4746 { "Switch Number (SWNO)", "ansi_map.swno",
4747 FT_UINT8, BASE_DEC, NULL, 0,
4749 { &hf_ansi_map_idno,
4750 { "ID Number", "ansi_map.idno",
4751 FT_UINT32, BASE_DEC, NULL, 0,
4753 { &hf_ansi_map_segcount,
4754 { "Segment Counter", "ansi_map.segcount",
4755 FT_UINT8, BASE_DEC, NULL, 0,
4757 { &hf_ansi_map_sms_originationrestrictions_direct,
4758 { "DIRECT", "ansi_map.originationrestrictions.direct",
4759 FT_BOOLEAN, 8, TFS(&ansi_map_SMS_OriginationRestrictions_direct_bool_val),0x04,
4761 { &hf_ansi_map_sms_originationrestrictions_default,
4762 { "DEFAULT", "ansi_map.originationrestrictions.default",
4763 FT_UINT8, BASE_DEC, VALS(ansi_map_SMS_OriginationRestrictions_default_vals), 0x03,
4765 { &hf_ansi_map_sms_originationrestrictions_fmc,
4766 { "Force Message Center (FMC)", "ansi_map.originationrestrictions.fmc",
4767 FT_BOOLEAN, 8, TFS(&ansi_map_SMS_OriginationRestrictions_fmc_bool_val),0x08,
4770 { &hf_ansi_map_systemcapabilities_auth,
4771 { "Authentication Parameters Requested (AUTH)", "ansi_map.systemcapabilities.auth",
4772 FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_auth_bool_val),0x01,
4774 { &hf_ansi_map_systemcapabilities_se,
4775 { "Signaling Message Encryption Capable (SE )", "ansi_map.systemcapabilities.se",
4776 FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_se_bool_val),0x02,
4778 { &hf_ansi_map_systemcapabilities_vp,
4779 { "Voice Privacy Capable (VP )", "ansi_map.systemcapabilities.vp",
4780 FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_vp_bool_val),0x04,
4782 { &hf_ansi_map_systemcapabilities_cave,
4783 { "CAVE Algorithm Capable (CAVE)", "ansi_map.systemcapabilities.cave",
4784 FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_cave_bool_val),0x08,
4786 { &hf_ansi_map_systemcapabilities_ssd,
4787 { "Shared SSD (SSD)", "ansi_map.systemcapabilities.ssd",
4788 FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_ssd_bool_val),0x10,
4790 { &hf_ansi_map_systemcapabilities_dp,
4791 { "Data Privacy (DP)", "ansi_map.systemcapabilities.dp",
4792 FT_BOOLEAN, 8, TFS(&ansi_map_systemcapabilities_dp_bool_val),0x20,
4795 { &hf_ansi_map_mslocation_lat,
4796 { "Latitude in tenths of a second", "ansi_map.mslocation.lat",
4797 FT_UINT8, BASE_DEC, NULL, 0,
4799 { &hf_ansi_map_mslocation_long,
4800 { "Longitude in tenths of a second", "ansi_map.mslocation.long",
4801 FT_UINT8, BASE_DEC, NULL, 0,
4802 "Switch Number (SWNO)", HFILL }},
4803 { &hf_ansi_map_mslocation_res,
4804 { "Resolution in units of 1 foot", "ansi_map.mslocation.res",
4805 FT_UINT8, BASE_DEC, NULL, 0,
4807 { &hf_ansi_map_nampscallmode_namps,
4808 { "Call Mode", "ansi_map.nampscallmode.namps",
4809 FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_namps_bool_val),0x01,
4811 { &hf_ansi_map_nampscallmode_amps,
4812 { "Call Mode", "ansi_map.nampscallmode.amps",
4813 FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_amps_bool_val),0x02,
4815 { &hf_ansi_map_nampschanneldata_navca,
4816 { "Narrow Analog Voice Channel Assignment (NAVCA)", "ansi_map.nampschanneldata.navca",
4817 FT_UINT8, BASE_DEC, VALS(ansi_map_NAMPSChannelData_navca_vals), 0x03,
4819 { &hf_ansi_map_nampschanneldata_CCIndicator,
4820 { "Color Code Indicator (CCIndicator)", "ansi_map.nampschanneldata.ccindicator",
4821 FT_UINT8, BASE_DEC, VALS(ansi_map_NAMPSChannelData_ccinidicator_vals), 0x1c,
4825 { &hf_ansi_map_callingfeaturesindicator_cfufa,
4826 { "Call Forwarding Unconditional FeatureActivity, CFU-FA", "ansi_map.callingfeaturesindicator.cfufa",
4827 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
4829 { &hf_ansi_map_callingfeaturesindicator_cfbfa,
4830 { "Call Forwarding Busy FeatureActivity, CFB-FA", "ansi_map.callingfeaturesindicator.cfbafa",
4831 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
4833 { &hf_ansi_map_callingfeaturesindicator_cfnafa,
4834 { "Call Forwarding No Answer FeatureActivity, CFNA-FA", "ansi_map.callingfeaturesindicator.cfnafa",
4835 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
4837 { &hf_ansi_map_callingfeaturesindicator_cwfa,
4838 { "Call Waiting: FeatureActivity, CW-FA", "ansi_map.callingfeaturesindicator.cwfa",
4839 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
4842 { &hf_ansi_map_callingfeaturesindicator_3wcfa,
4843 { "Three-Way Calling FeatureActivity, 3WC-FA", "ansi_map.callingfeaturesindicator.3wcfa",
4844 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
4847 { &hf_ansi_map_callingfeaturesindicator_pcwfa,
4848 { "Priority Call Waiting FeatureActivity PCW-FA", "ansi_map.callingfeaturesindicator.pcwfa",
4849 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
4852 { &hf_ansi_map_callingfeaturesindicator_dpfa,
4853 { "Data Privacy Feature Activity DP-FA", "ansi_map.callingfeaturesindicator.dpfa",
4854 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
4856 { &hf_ansi_map_callingfeaturesindicator_ahfa,
4857 { "Answer Hold: FeatureActivity AH-FA", "ansi_map.callingfeaturesindicator.ahfa",
4858 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
4860 { &hf_ansi_map_callingfeaturesindicator_uscfvmfa,
4861 { "USCF divert to voice mail: FeatureActivity USCFvm-FA", "ansi_map.callingfeaturesindicator.uscfvmfa",
4862 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
4865 { &hf_ansi_map_callingfeaturesindicator_uscfmsfa,
4866 { "USCF divert to mobile station provided DN:FeatureActivity.USCFms-FA", "ansi_map.callingfeaturesindicator.uscfmsfa",
4867 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
4869 { &hf_ansi_map_callingfeaturesindicator_uscfnrfa,
4870 { "USCF divert to network registered DN:FeatureActivity. USCFnr-FA", "ansi_map.callingfeaturesindicator.uscfmsfa",
4871 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
4873 { &hf_ansi_map_callingfeaturesindicator_cpdsfa,
4874 { "CDMA-Packet Data Service: FeatureActivity. CPDS-FA", "ansi_map.callingfeaturesindicator.cpdfa",
4875 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
4877 { &hf_ansi_map_callingfeaturesindicator_ccsfa,
4878 { "CDMA-Concurrent Service:FeatureActivity. CCS-FA", "ansi_map.callingfeaturesindicator.ccsfa",
4879 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
4882 { &hf_ansi_map_callingfeaturesindicator_epefa,
4883 { "TDMA Enhanced Privacy and Encryption:FeatureActivity.TDMA EPE-FA", "ansi_map.callingfeaturesindicator.epefa",
4884 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
4888 { &hf_ansi_map_callingfeaturesindicator_cdfa,
4889 { "Call Delivery: FeatureActivity, CD-FA", "ansi_map.callingfeaturesindicator.cdfa",
4890 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
4892 { &hf_ansi_map_callingfeaturesindicator_vpfa,
4893 { "Voice Privacy FeatureActivity, VP-FA", "ansi_map.callingfeaturesindicator.vpfa",
4894 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
4896 { &hf_ansi_map_callingfeaturesindicator_ctfa,
4897 { "Call Transfer: FeatureActivity, CT-FA", "ansi_map.callingfeaturesindicator.ctfa",
4898 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
4901 { &hf_ansi_map_callingfeaturesindicator_cnip1fa,
4902 { "One number (network-provided only) Calling Number Identification Presentation: FeatureActivity CNIP1-FA", "ansi_map.callingfeaturesindicator.cnip1fa",
4903 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x03,
4905 { &hf_ansi_map_callingfeaturesindicator_cnip2fa,
4906 { "Two number (network-provided and user-provided) Calling Number Identification Presentation: FeatureActivity CNIP2-FA", "ansi_map.callingfeaturesindicator.cnip2fa",
4907 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x0c,
4909 { &hf_ansi_map_callingfeaturesindicator_cnirfa,
4910 { "Calling Number Identification Restriction: FeatureActivity CNIR-FA", "ansi_map.callingfeaturesindicator.cnirfa",
4911 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0x30,
4913 { &hf_ansi_map_callingfeaturesindicator_cniroverfa,
4914 { "Calling Number Identification Restriction Override FeatureActivity CNIROver-FA", "ansi_map.callingfeaturesindicator.cniroverfa",
4915 FT_UINT8, BASE_DEC, VALS(ansi_map_FeatureActivity_vals), 0xc0,
4918 { &hf_ansi_map_cdmacallmode_cdma,
4919 { "Call Mode", "ansi_map.cdmacallmode.cdma",
4920 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cdma_bool_val),0x01,
4922 { &hf_ansi_map_cdmacallmode_amps,
4923 { "Call Mode", "ansi_map.cdmacallmode.amps",
4924 FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_amps_bool_val),0x02,
4926 { &hf_ansi_map_cdmacallmode_namps,
4927 { "Call Mode", "ansi_map.cdmacallmode.namps",
4928 FT_BOOLEAN, 8, TFS(&ansi_map_CallMode_namps_bool_val),0x04,
4930 { &hf_ansi_map_cdmacallmode_cls1,
4931 { "Call Mode", "ansi_map.cdmacallmode.cls1",
4932 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls1_bool_val),0x08,
4934 { &hf_ansi_map_cdmacallmode_cls2,
4935 { "Call Mode", "ansi_map.cdmacallmode.cls2",
4936 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls2_bool_val),0x10,
4938 { &hf_ansi_map_cdmacallmode_cls3,
4939 { "Call Mode", "ansi_map.cdmacallmode.cls3",
4940 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls3_bool_val),0x20,
4942 { &hf_ansi_map_cdmacallmode_cls4,
4943 { "Call Mode", "ansi_map.cdmacallmode.cls4",
4944 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls4_bool_val),0x40,
4946 { &hf_ansi_map_cdmacallmode_cls5,
4947 { "Call Mode", "ansi_map.cdmacallmode.cls5",
4948 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls5_bool_val),0x80,
4950 { &hf_ansi_map_cdmacallmode_cls6,
4951 { "Call Mode", "ansi_map.cdmacallmode.cls6",
4952 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls6_bool_val),0x01,
4954 { &hf_ansi_map_cdmacallmode_cls7,
4955 { "Call Mode", "ansi_map.cdmacallmode.cls7",
4956 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls7_bool_val),0x02,
4958 { &hf_ansi_map_cdmacallmode_cls8,
4959 { "Call Mode", "ansi_map.cdmacallmode.cls8",
4960 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls8_bool_val),0x04,
4962 { &hf_ansi_map_cdmacallmode_cls9,
4963 { "Call Mode", "ansi_map.cdmacallmode.cls9",
4964 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls9_bool_val),0x08,
4966 { &hf_ansi_map_cdmacallmode_cls10,
4967 { "Call Mode", "ansi_map.cdmacallmode.cls10",
4968 FT_BOOLEAN, 8, TFS(&ansi_map_CDMACallMode_cls10_bool_val),0x10,
4970 {&hf_ansi_map_cdmachanneldata_Frame_Offset,
4971 { "Frame Offset", "ansi_map.cdmachanneldata.frameoffset",
4972 FT_UINT8, BASE_DEC, NULL, 0x78,
4974 {&hf_ansi_map_cdmachanneldata_CDMA_ch_no,
4975 { "CDMA Channel Number", "ansi_map.cdmachanneldata.cdma_ch_no",
4976 FT_UINT16, BASE_DEC, NULL, 0x07FF,
4978 {&hf_ansi_map_cdmachanneldata_band_cls,
4979 { "Band Class", "ansi_map.cdmachanneldata.band_cls",
4980 FT_UINT8, BASE_DEC, VALS(ansi_map_cdmachanneldata_band_cls_vals), 0x7c,
4982 {&hf_ansi_map_cdmachanneldata_lc_mask_b6,
4983 { "Long Code Mask (byte 6) MSB", "ansi_map.cdmachanneldata.lc_mask_b6",
4984 FT_UINT8, BASE_HEX, NULL, 0x03,
4985 "Long Code Mask MSB (byte 6)", HFILL }},
4986 {&hf_ansi_map_cdmachanneldata_lc_mask_b5,
4987 { "Long Code Mask (byte 5)", "ansi_map.cdmachanneldata.lc_mask_b5",
4988 FT_UINT8, BASE_HEX, NULL, 0xff,
4990 {&hf_ansi_map_cdmachanneldata_lc_mask_b4,
4991 { "Long Code Mask (byte 4)", "ansi_map.cdmachanneldata.lc_mask_b4",
4992 FT_UINT8, BASE_HEX, NULL, 0xff,
4994 {&hf_ansi_map_cdmachanneldata_lc_mask_b3,
4995 { "Long Code Mask (byte 3)", "ansi_map.cdmachanneldata.lc_mask_b3",
4996 FT_UINT8, BASE_HEX, NULL, 0xff,
4998 {&hf_ansi_map_cdmachanneldata_lc_mask_b2,
4999 { "Long Code Mask (byte 2)", "ansi_map.cdmachanneldata.lc_mask_b2",
5000 FT_UINT8, BASE_HEX, NULL, 0xff,
5002 {&hf_ansi_map_cdmachanneldata_lc_mask_b1,
5003 { "Long Code Mask LSB(byte 1)", "ansi_map.cdmachanneldata.lc_mask_b1",
5004 FT_UINT8, BASE_HEX, NULL, 0xff,
5005 "Long Code Mask (byte 1)LSB", HFILL }},
5006 {&hf_ansi_map_cdmachanneldata_np_ext,
5007 { "NP EXT", "ansi_map.cdmachanneldata.np_ext",
5008 FT_BOOLEAN, 8, NULL,0x80,
5010 {&hf_ansi_map_cdmachanneldata_nominal_pwr,
5011 { "Nominal Power", "ansi_map.cdmachanneldata.nominal_pwr",
5012 FT_UINT8, BASE_DEC, NULL, 0x71,
5014 {&hf_ansi_map_cdmachanneldata_nr_preamble,
5015 { "Number Preamble", "ansi_map.cdmachanneldata.nr_preamble",
5016 FT_UINT8, BASE_DEC, NULL, 0x07,
5019 { &hf_ansi_map_cdmastationclassmark_pc,
5020 { "Power Class(PC)", "ansi_map.cdmastationclassmark.pc",
5021 FT_UINT8, BASE_DEC, VALS(ansi_map_CDMAStationClassMark_pc_vals), 0x03,
5024 { &hf_ansi_map_cdmastationclassmark_dtx,
5025 { "Analog Transmission: (DTX)", "ansi_map.cdmastationclassmark.dtx",
5026 FT_BOOLEAN, 8, TFS(&ansi_map_CDMAStationClassMark_dtx_bool_val),0x04,
5028 { &hf_ansi_map_cdmastationclassmark_smi,
5029 { "Slotted Mode Indicator: (SMI)", "ansi_map.cdmastationclassmark.smi",
5030 FT_BOOLEAN, 8, TFS(&ansi_map_CDMAStationClassMark_smi_bool_val),0x20,
5032 { &hf_ansi_map_cdmastationclassmark_dmi,
5033 { "Dual-mode Indicator(DMI)", "ansi_map.cdmastationclassmark.dmi",
5034 FT_BOOLEAN, 8, TFS(&ansi_map_CDMAStationClassMark_dmi_bool_val),0x40,
5036 { &hf_ansi_map_channeldata_vmac,
5037 { "Voice Mobile Attenuation Code (VMAC)", "ansi_map.channeldata.vmac",
5038 FT_UINT8, BASE_DEC, NULL, 0x07,
5040 { &hf_ansi_map_channeldata_dtx,
5041 { "Discontinuous Transmission Mode (DTX)", "ansi_map.channeldata.dtx",
5042 FT_UINT8, BASE_DEC, VALS(ansi_map_ChannelData_dtx_vals), 0x18,
5044 { &hf_ansi_map_channeldata_scc,
5045 { "SAT Color Code (SCC)", "ansi_map.channeldata.scc",
5046 FT_UINT8, BASE_DEC, NULL, 0xc0,
5048 { &hf_ansi_map_channeldata_chno,
5049 { "Channel Number (CHNO)", "ansi_map.channeldata.chno",
5050 FT_UINT16, BASE_DEC, NULL, 0x0,
5052 { &hf_ansi_map_ConfidentialityModes_vp,
5053 { "Voice Privacy (VP) Confidentiality Status", "ansi_map.confidentialitymodes.vp",
5054 FT_BOOLEAN, 8, TFS(&ansi_map_ConfidentialityModes_bool_val),0x01,
5056 { &hf_ansi_map_controlchanneldata_dcc,
5057 { "Digital Color Code (DCC)", "ansi_map.controlchanneldata.dcc",
5058 FT_UINT8, BASE_DEC, NULL, 0xc0,
5060 { &hf_ansi_map_controlchanneldata_cmac,
5061 { "Control Mobile Attenuation Code (CMAC)", "ansi_map.controlchanneldata.cmac",
5062 FT_UINT8, BASE_DEC, NULL, 0x07,
5064 { &hf_ansi_map_controlchanneldata_chno,
5065 { "Channel Number (CHNO)", "ansi_map.controlchanneldata.cmac",
5066 FT_UINT16, BASE_DEC, NULL, 0x0,
5068 { &hf_ansi_map_controlchanneldata_sdcc1,
5069 { "Supplementary Digital Color Codes (SDCC1)", "ansi_map.controlchanneldata.ssdc1",
5070 FT_UINT8, BASE_DEC, NULL, 0x0c,
5072 { &hf_ansi_map_controlchanneldata_sdcc2,
5073 { "Supplementary Digital Color Codes (SDCC2)", "ansi_map.controlchanneldata.ssdc2",
5074 FT_UINT8, BASE_DEC, NULL, 0x03,
5076 { &hf_ansi_map_ConfidentialityModes_se,
5077 { "Signaling Message Encryption (SE) Confidentiality Status", "ansi_map.confidentialitymodes.se",
5078 FT_BOOLEAN, 8, TFS(&ansi_map_ConfidentialityModes_bool_val),0x02,
5080 { &hf_ansi_map_ConfidentialityModes_dp,
5081 { "DataPrivacy (DP) Confidentiality Status", "ansi_map.confidentialitymodes.dp",
5082 FT_BOOLEAN, 8, TFS(&ansi_map_ConfidentialityModes_bool_val),0x04,
5085 { &hf_ansi_map_deniedauthorizationperiod_period,
5086 { "Period", "ansi_map.deniedauthorizationperiod.period",
5087 FT_UINT8, BASE_DEC, VALS(ansi_map_deniedauthorizationperiod_period_vals), 0x0,
5091 { &hf_ansi_map_originationtriggers_all,
5092 { "All Origination (All)", "ansi_map.originationtriggers.all",
5093 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_all_bool_val),0x01,
5095 { &hf_ansi_map_originationtriggers_local,
5096 { "Local", "ansi_map.originationtriggers.all",
5097 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_local_bool_val),0x02,
5099 { &hf_ansi_map_originationtriggers_ilata,
5100 { "Intra-LATA Toll (ILATA)", "ansi_map.originationtriggers.ilata",
5101 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_ilata_bool_val),0x04,
5103 { &hf_ansi_map_originationtriggers_olata,
5104 { "Inter-LATA Toll (OLATA)", "ansi_map.originationtriggers.olata",
5105 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_olata_bool_val),0x08,
5107 { &hf_ansi_map_originationtriggers_int,
5108 { "International (Int'l )", "ansi_map.originationtriggers.int",
5109 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_int_bool_val),0x10,
5111 { &hf_ansi_map_originationtriggers_wz,
5112 { "World Zone (WZ)", "ansi_map.originationtriggers.wz",
5113 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_wz_bool_val),0x20,
5115 { &hf_ansi_map_originationtriggers_unrec,
5116 { "Unrecognized Number (Unrec)", "ansi_map.originationtriggers.unrec",
5117 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_unrec_bool_val),0x40,
5119 { &hf_ansi_map_originationtriggers_rvtc,
5120 { "Revertive Call (RvtC)", "ansi_map.originationtriggers.rvtc",
5121 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_rvtc_bool_val),0x80,
5123 { &hf_ansi_map_originationtriggers_star,
5124 { "Star", "ansi_map.originationtriggers.star",
5125 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_star_bool_val),0x01,
5127 { &hf_ansi_map_originationtriggers_ds,
5128 { "Double Star (DS)", "ansi_map.originationtriggers.ds",
5129 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_ds_bool_val),0x02,
5131 { &hf_ansi_map_originationtriggers_pound,
5132 { "Pound", "ansi_map.originationtriggers.pound",
5133 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_pound_bool_val),0x04,
5135 { &hf_ansi_map_originationtriggers_dp,
5136 { "Double Pound (DP)", "ansi_map.originationtriggers.dp",
5137 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_dp_bool_val),0x08,
5139 { &hf_ansi_map_originationtriggers_pa,
5140 { "Prior Agreement (PA)", "ansi_map.originationtriggers.pa",
5141 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_pa_bool_val),0x10,
5143 { &hf_ansi_map_originationtriggers_nodig,
5144 { "No digits", "ansi_map.originationtriggers.nodig",
5145 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_nodig_bool_val),0x01,
5147 { &hf_ansi_map_originationtriggers_onedig,
5148 { "1 digit", "ansi_map.originationtriggers.onedig",
5149 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_onedig_bool_val),0x02,
5151 { &hf_ansi_map_originationtriggers_twodig,
5152 { "2 digits", "ansi_map.originationtriggers.twodig",
5153 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_twodig_bool_val),0x04,
5155 { &hf_ansi_map_originationtriggers_threedig,
5156 { "3 digits", "ansi_map.originationtriggers.threedig",
5157 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_threedig_bool_val),0x08,
5159 { &hf_ansi_map_originationtriggers_fourdig,
5160 { "4 digits", "ansi_map.originationtriggers.fourdig",
5161 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fourdig_bool_val),0x10,
5163 { &hf_ansi_map_originationtriggers_fivedig,
5164 { "5 digits", "ansi_map.originationtriggers.fivedig",
5165 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fivedig_bool_val),0x20,
5167 { &hf_ansi_map_originationtriggers_sixdig,
5168 { "6 digits", "ansi_map.originationtriggers.sixdig",
5169 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_sixdig_bool_val),0x40,
5171 { &hf_ansi_map_originationtriggers_sevendig,
5172 { "7 digits", "ansi_map.originationtriggers.sevendig",
5173 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_sevendig_bool_val),0x80,
5175 { &hf_ansi_map_originationtriggers_eightdig,
5176 { "8 digits", "ansi_map.originationtriggers.eight",
5177 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_eightdig_bool_val),0x01,
5179 { &hf_ansi_map_originationtriggers_ninedig,
5180 { "9 digits", "ansi_map.originationtriggers.nine",
5181 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_ninedig_bool_val),0x02,
5183 { &hf_ansi_map_originationtriggers_tendig,
5184 { "10 digits", "ansi_map.originationtriggers.ten",
5185 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_tendig_bool_val),0x04,
5187 { &hf_ansi_map_originationtriggers_elevendig,
5188 { "11 digits", "ansi_map.originationtriggers.eleven",
5189 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_elevendig_bool_val),0x08,
5191 { &hf_ansi_map_originationtriggers_twelvedig,
5192 { "12 digits", "ansi_map.originationtriggers.twelve",
5193 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_twelvedig_bool_val),0x10,
5195 { &hf_ansi_map_originationtriggers_thirteendig,
5196 { "13 digits", "ansi_map.originationtriggers.thirteen",
5197 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_thirteendig_bool_val),0x20,
5199 { &hf_ansi_map_originationtriggers_fourteendig,
5200 { "14 digits", "ansi_map.originationtriggers.fourteen",
5201 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fourteendig_bool_val),0x40,
5203 { &hf_ansi_map_originationtriggers_fifteendig,
5204 { "15 digits", "ansi_map.originationtriggers.fifteen",
5205 FT_BOOLEAN, 8, TFS(&ansi_map_originationtriggers_fifteendig_bool_val),0x80,
5208 { &hf_ansi_map_triggercapability_init,
5209 { "Introducing Star/Pound (INIT)", "ansi_map.triggercapability.init",
5210 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x01,
5212 { &hf_ansi_map_triggercapability_kdigit,
5213 { "K-digit (K-digit)", "ansi_map.triggercapability.kdigit",
5214 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x02,
5216 { &hf_ansi_map_triggercapability_all,
5217 { "All_Calls (All)", "ansi_map.triggercapability.all",
5218 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x04,
5220 { &hf_ansi_map_triggercapability_rvtc,
5221 { "Revertive_Call (RvtC)", "ansi_map.triggercapability.rvtc",
5222 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x08,
5224 { &hf_ansi_map_triggercapability_oaa,
5225 { "Origination_Attempt_Authorized (OAA)", "ansi_map.triggercapability.oaa",
5226 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x10,
5228 { &hf_ansi_map_triggercapability_oans,
5229 { "O_Answer (OANS)", "ansi_map.triggercapability.oans",
5230 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x20,
5232 { &hf_ansi_map_triggercapability_odisc,
5233 { "O_Disconnect (ODISC)", "ansi_map.triggercapability.odisc",
5234 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x40,
5236 { &hf_ansi_map_triggercapability_ona,
5237 { "O_No_Answer (ONA)", "ansi_map.triggercapability.ona",
5238 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x80,
5241 { &hf_ansi_map_triggercapability_ct ,
5242 { "Call Types (CT)", "ansi_map.triggercapability.ona",
5243 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x01,
5245 { &hf_ansi_map_triggercapability_unrec,
5246 { "Unrecognized_Number (Unrec)", "ansi_map.triggercapability.unrec",
5247 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x02,
5249 { &hf_ansi_map_triggercapability_pa,
5250 { "Prior_Agreement (PA)", "ansi_map.triggercapability.pa",
5251 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x04,
5253 { &hf_ansi_map_triggercapability_at,
5254 { "Advanced_Termination (AT)", "ansi_map.triggercapability.at",
5255 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x08,
5257 { &hf_ansi_map_triggercapability_cgraa,
5258 { "Calling_Routing_Address_Available (CgRAA)", "ansi_map.triggercapability.cgraa",
5259 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x10,
5261 { &hf_ansi_map_triggercapability_it,
5262 { "Initial_Termination (IT)", "ansi_map.triggercapability.it",
5263 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x20,
5265 { &hf_ansi_map_triggercapability_cdraa,
5266 { "Called_Routing_Address_Available (CdRAA)", "ansi_map.triggercapability.cdraa",
5267 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x40,
5269 { &hf_ansi_map_triggercapability_obsy,
5270 { "O_Called_Party_Busy (OBSY)", "ansi_map.triggercapability.ona",
5271 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x80,
5274 { &hf_ansi_map_triggercapability_tra ,
5275 { "Terminating_Resource_Available (TRA)", "ansi_map.triggercapability.tra",
5276 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x01,
5278 { &hf_ansi_map_triggercapability_tbusy,
5279 { "T_Busy (TBusy)", "ansi_map.triggercapability.tbusy",
5280 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x02,
5282 { &hf_ansi_map_triggercapability_tna,
5283 { "T_No_Answer (TNA)", "ansi_map.triggercapability.tna",
5284 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x04,
5286 { &hf_ansi_map_triggercapability_tans,
5287 { "T_Answer (TANS)", "ansi_map.triggercapability.tans",
5288 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x08,
5290 { &hf_ansi_map_triggercapability_tdisc,
5291 { "T_Disconnect (TDISC)", "ansi_map.triggercapability.tdisc",
5292 FT_BOOLEAN, 8, TFS(&ansi_map_triggercapability_bool_val),0x10,
5294 { &hf_ansi_map_winoperationscapability_conn,
5295 { "ConnectResource (CONN)", "ansi_map.winoperationscapability.conn",
5296 FT_BOOLEAN, 8, TFS(&ansi_map_winoperationscapability_conn_bool_val),0x01,
5298 { &hf_ansi_map_winoperationscapability_ccdir,
5299 { "CallControlDirective(CCDIR)", "ansi_map.winoperationscapability.ccdir",
5300 FT_BOOLEAN, 8, TFS(&ansi_map_winoperationscapability_ccdir_bool_val),0x02,
5302 { &hf_ansi_map_winoperationscapability_pos,
5303 { "PositionRequest (POS)", "ansi_map.winoperationscapability.pos",
5304 FT_BOOLEAN, 8, TFS(&ansi_map_winoperationscapability_pos_bool_val),0x04,
5306 { &hf_ansi_map_pacaindicator_pa,
5307 { "Permanent Activation (PA)", "ansi_map.pacaindicator_pa",
5308 FT_BOOLEAN, 8, TFS(&ansi_map_pacaindicator_pa_bool_val),0x01,
5310 { &hf_ansi_map_PACA_Level,
5311 { "PACA Level", "ansi_map.PACA_Level",
5312 FT_UINT8, BASE_DEC, VALS(ansi_map_PACA_Level_vals), 0x1e,
5315 #include "packet-ansi_map-hfarr.c"
5318 /* List of subtrees */
5319 static gint *ett[] = {
5324 &ett_sms_bearer_data,
5325 &ett_sms_teleserviceIdentifier,
5327 &ett_extendedsystemmytypecode,
5330 &ett_cdmachanneldata,
5331 &ett_cdmastationclassmark,
5333 &ett_confidentialitymodes,
5334 &ett_controlchanneldata,
5335 &ett_CDMA2000HandoffInvokeIOSData,
5336 &ett_CDMA2000HandoffResponseIOSData,
5337 &ett_originationtriggers,
5339 &ett_callingpartyname,
5340 &ett_triggercapability,
5341 &ett_winoperationscapability,
5342 &ett_win_trigger_list,
5343 &ett_controlnetworkid,
5344 &ett_transactioncapability,
5345 &ett_cdmaserviceoption,
5346 &ett_sms_originationrestrictions,
5347 &ett_systemcapabilities,
5348 #include "packet-ansi_map-ettarr.c"
5351 static enum_val_t ansi_map_response_matching_type_values[] = {
5352 {"Only Transaction ID will be used in Invoke/response matching", "Transaction ID only", 0},
5353 {"Transaction ID and Source will be used in Invoke/response matching", "Transaction ID and Source", 1},
5354 {"Transaction ID Source and Destination will be used in Invoke/response matching", "Transaction ID Source and Destination", 2},
5358 /* Register protocol */
5359 proto_ansi_map = proto_register_protocol(PNAME, PSNAME, PFNAME);
5360 /* Register fields and subtrees */
5361 proto_register_field_array(proto_ansi_map, hf, array_length(hf));
5362 proto_register_subtree_array(ett, array_length(ett));
5364 register_dissector("ansi_map", dissect_ansi_map, proto_ansi_map);
5366 is637_tele_id_dissector_table =
5367 register_dissector_table("ansi_map.tele_id", "IS-637 Teleservice ID",
5368 FT_UINT8, BASE_DEC);
5370 is683_dissector_table =
5371 register_dissector_table("ansi_map.ota", "IS-683-A (OTA)",
5372 FT_UINT8, BASE_DEC);
5374 is801_dissector_table =
5375 register_dissector_table("ansi_map.pld", "IS-801 (PLD)",
5376 FT_UINT8, BASE_DEC);
5378 ansi_map_tap = register_tap("ansi_map");
5381 range_convert_str(&global_ssn_range, "5-14", MAX_SSN);
5383 ansi_map_module = prefs_register_protocol(proto_ansi_map, proto_reg_handoff_ansi_map);
5386 prefs_register_range_preference(ansi_map_module, "map.ssn", "ANSI MAP SSNs",
5387 "ANSI MAP SSNs to decode as ANSI MAP",
5388 &global_ssn_range, MAX_SSN);
5390 prefs_register_enum_preference(ansi_map_module, "transaction.matchtype",
5391 "Type of matching invoke/response",
5392 "Type of matching invoke/response, risk of missmatch if loose matching choosen",
5393 &ansi_map_response_matching_type, ansi_map_response_matching_type_values, FALSE);
5395 register_init_routine(&ansi_map_init_protocol);