22
22
#.FN_BODY InvokeParameters
23
proto_tree_add_item(tree, hf_ansi_map_invokeParameters, tvb, offset,-1,FALSE);
25
OperationCode = OperationCode&0x00ff;
27
ansi_map_is_invoke = TRUE;
28
if (check_col(pinfo->cinfo, COL_INFO)){
29
col_set_str(pinfo->cinfo, COL_INFO, val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
32
if(tvb_length_remaining(tvb, offset)<=0){
33
update_saved_invokedata(pinfo, tree, tvb);
24
38
offset = dissect_invokeData(pinfo, tree, tvb, offset);
39
update_saved_invokedata(pinfo, tree, tvb);
26
41
#.FN_BODY ReturnParameters
27
proto_tree_add_item(tree, hf_ansi_map_returnResult, tvb, offset,-1,FALSE);
28
offset = dissect_returnData(pinfo, tree, tvb, offset);
42
struct amsi_map_invokedata_t *ansi_map_saved_invokedata;
43
struct tcap_private_t *p_private_tcap;
45
address* src = &(pinfo->src);
46
address* dst = &(pinfo->dst);
52
src_str = address_to_str(src);
53
dst_str = address_to_str(dst);
55
/* Data from the TCAP dissector */
56
if (pinfo->private_data != NULL){
57
p_private_tcap=pinfo->private_data;
58
/* The hash string needs to contain src and dest to distiguish differnt flows */
59
src_str = address_to_str(src);
60
dst_str = address_to_str(dst);
61
buf = p_private_tcap->TransactionID_str;
62
/* Reverse order to invoke */
66
ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table, p_private_tcap->TransactionID_str);
67
if(ansi_map_saved_invokedata){
68
OperationCode = ansi_map_saved_invokedata->opcode;
69
ServiceIndicator = ansi_map_saved_invokedata->ServiceIndicator;
71
OperationCode = OperationCode & 0x00ff;
74
OperationCode = OperationCode & 0x00ff;
76
if (check_col(pinfo->cinfo, COL_INFO)){
77
col_clear(pinfo->cinfo, COL_INFO);
78
col_add_fstr(pinfo->cinfo, COL_INFO,"%s Response", val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)"));
81
if(tvb_length_remaining(tvb, offset)<=0){
85
item = proto_tree_add_text(tree, tvb, 0, -1, "OperationCode %s",val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown %u"));
86
PROTO_ITEM_SET_GENERATED(item);
88
ansi_map_is_invoke = FALSE;
89
offset = dissect_returnData(pinfo, tree, tvb, offset);
30
91
#.FN_BODY ErrorParameters
32
93
#.FN_BODY RejectParameters
34
#.FN_PARS PrivateOperationCode
36
VAL_PTR = &OperationCode
38
#.FN_BODY PrivateOperationCode
95
#.FN_BODY PrivateOperationCode VAL_PTR = &OperationCode
40
97
proto_tree_add_item(tree, hf_ansi_map_op_code_fam, tvb, offset-2,1,FALSE);
41
98
proto_tree_add_item(tree, hf_ansi_map_op_code, tvb, offset-1,1,FALSE);
45
VAL_PTR = ¶meter_tvb
100
#.FN_BODY MINType VAL_PTR = ¶meter_tvb
48
101
tvbuff_t *parameter_tvb = NULL;
50
103
if (parameter_tvb){
51
104
dissect_ansi_map_min_type(parameter_tvb,pinfo,tree);
56
VAL_PTR = ¶meter_tvb
107
#.FN_BODY DigitsType VAL_PTR = ¶meter_tvb
59
108
tvbuff_t *parameter_tvb = NULL;
61
110
if (parameter_tvb){
62
111
dissect_ansi_map_digits_type(parameter_tvb,pinfo,tree);
67
VAL_PTR = ¶meter_tvb
114
#.FN_BODY Subaddress VAL_PTR = ¶meter_tvb
70
115
tvbuff_t *parameter_tvb = NULL;
72
117
if (parameter_tvb){
121
154
# 6.5.2.20 CallingFeaturesIndicator
122
#.FN_PARS CallingFeaturesIndicator
123
VAL_PTR = ¶meter_tvb
125
#.FN_BODY CallingFeaturesIndicator
155
#.FN_BODY CallingFeaturesIndicator VAL_PTR = ¶meter_tvb
126
156
tvbuff_t *parameter_tvb = NULL;
128
158
if (parameter_tvb){
129
159
dissect_ansi_map_callingfeaturesindicator(parameter_tvb,pinfo,tree);
131
161
# 6.5.2.29 CDMACallMode
132
#.FN_PARS CDMACallMode
133
VAL_PTR = ¶meter_tvb
135
#.FN_BODY CDMACallMode
162
#.FN_BODY CDMACallMode VAL_PTR = ¶meter_tvb
136
163
tvbuff_t *parameter_tvb = NULL;
138
165
if (parameter_tvb){
139
166
dissect_ansi_map_cdmacallmode(parameter_tvb,pinfo,tree);
168
# 6.5.2.30 CDMAChannelData
169
#.FN_BODY CDMAChannelData VAL_PTR = ¶meter_tvb
170
tvbuff_t *parameter_tvb = NULL;
173
dissect_ansi_map_cdmachanneldata(parameter_tvb,pinfo,tree);
141
176
# 6.5.2.41 CDMAStationClassMark
142
#.FN_PARS CDMAStationClassMark
143
VAL_PTR = ¶meter_tvb
145
#.FN_BODY CDMAStationClassMark
177
#.FN_BODY CDMAStationClassMark VAL_PTR = ¶meter_tvb
146
178
tvbuff_t *parameter_tvb = NULL;
148
180
if (parameter_tvb){
163
192
# 6.5.2.50 ConfidentialityModes
164
#.FN_PARS ConfidentialityModes
165
VAL_PTR = ¶meter_tvb
167
#.FN_BODY ConfidentialityModes
193
#.FN_BODY ConfidentialityModes VAL_PTR = ¶meter_tvb
168
194
tvbuff_t *parameter_tvb = NULL;
170
196
if (parameter_tvb){
171
197
dissect_ansi_map_confidentialitymodes(parameter_tvb,pinfo,tree);
199
# 6.5.2.51 ControlChannelData
200
#.FN_BODY ControlChannelData VAL_PTR = ¶meter_tvb
201
tvbuff_t *parameter_tvb = NULL;
204
dissect_ansi_map_controlchanneldata(parameter_tvb,pinfo,tree);
174
207
# 6.5.2.53 DeniedAuthorizationPeriod
175
#.FN_PARS DeniedAuthorizationPeriod
176
VAL_PTR = ¶meter_tvb
178
#.FN_BODY DeniedAuthorizationPeriod
208
#.FN_BODY DeniedAuthorizationPeriod VAL_PTR = ¶meter_tvb
179
209
tvbuff_t *parameter_tvb = NULL;
181
211
if (parameter_tvb){
338
327
# 6.5.2.94 PilotBillingID
339
#.FN_PARS PilotBillingID
340
VAL_PTR = ¶meter_tvb
328
#.FN_BODY PilotBillingID VAL_PTR = ¶meter_tvb
342
#.FN_BODY PilotBillingID
343
330
tvbuff_t *parameter_tvb = NULL;
345
332
if (parameter_tvb){
346
333
dissect_ansi_map_pilotbillingid(parameter_tvb,pinfo,tree);
350
# 6.5.2.158 TerminationTreatment
351
#.FN_PARS TerminationTreatment
352
VAL_PTR = ¶meter_tvb
354
#.FN_BODY TerminationTreatment
355
tvbuff_t *parameter_tvb = NULL;
358
dissect_ansi_map_terminationtreatment(parameter_tvb,pinfo,tree);
337
#.FN_BODY SMS-BearerData VAL_PTR = &SMS_BearerData_tvb
341
SMS_BearerData_tvb = NULL;
344
if (SMS_BearerData_tvb){
345
/* A zero length OCTET STRING will return a zero length tvb */
346
length = tvb_length_remaining(SMS_BearerData_tvb,0);
348
item = get_ber_last_created_item();
349
subtree = proto_item_add_subtree(item, ett_sms_bearer_data);
350
proto_item_append_text(item," length %%u",length);
351
SMS_BearerData_tvb = NULL;
354
if(!ansi_map_is_invoke){
355
switch(ServiceIndicator){
356
case 1: /* CDMA OTASP Service */
357
case 3: /* CDMA OTAPA Service */
358
dissector_try_port(is683_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree);
360
case 4: /* CDMA Position Determination Service */
361
dissector_try_port(is801_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree);
369
# 6.5.2.136 SMS-OriginationRestrictions
370
#.FN_BODY SMS-OriginationRestrictions VAL_PTR = ¶meter_tvb
371
tvbuff_t *parameter_tvb = NULL;
374
dissect_ansi_map_sms_originationrestrictions(parameter_tvb,pinfo,tree);
379
#.FN_BODY SMS-TeleserviceIdentifier VAL_PTR = ¶meter_tvb
384
tvbuff_t *parameter_tvb = NULL;
385
static gint32 ansi_map_sms_tele_id = -1;
389
/* A zero length OCTET STRING will return a zero length tvb */
390
length = tvb_length_remaining(parameter_tvb,0);
392
item = get_ber_last_created_item();
393
subtree = proto_item_add_subtree(item, ett_sms_teleserviceIdentifier);
394
proto_item_append_text(item, " length %%u",length);
397
ansi_map_sms_tele_id = tvb_get_ntohs(tvb,0);
398
if ((ansi_map_sms_tele_id != -1)&&(SMS_BearerData_tvb !=NULL))
400
dissector_try_port(is637_tele_id_dissector_table, ansi_map_sms_tele_id, SMS_BearerData_tvb, g_pinfo, g_tree);
404
# 6.5.2.146 SystemCapabilities */
405
# Updated in N.S0008-0 v 1.0 */
406
#.FN_BODY SystemCapabilities VAL_PTR = ¶meter_tvb
407
tvbuff_t *parameter_tvb = NULL;
410
dissect_ansi_map_systemcapabilities(parameter_tvb,pinfo,tree);
414
# 6.5.2.159 TerminationTriggers
415
#.FN_BODY TerminationTriggers VAL_PTR = ¶meter_tvb
416
tvbuff_t *parameter_tvb = NULL;
419
dissect_ansi_map_terminationtriggers(parameter_tvb,pinfo,tree);
361
422
# 6.5.2.160 TransactionCapability
362
#.FN_PARS TransactionCapability
363
VAL_PTR = ¶meter_tvb
365
#.FN_BODY TransactionCapability
423
#.FN_BODY TransactionCapability VAL_PTR = ¶meter_tvb
366
424
tvbuff_t *parameter_tvb = NULL;
368
426
if (parameter_tvb){
369
427
dissect_ansi_map_transactioncapability(parameter_tvb,pinfo,tree);
430
# 6.5.2.f (TSB76) CDMAServiceOption N.S0010-0 v 1.0
431
#.FN_BODY CDMAServiceOption VAL_PTR = ¶meter_tvb
432
tvbuff_t *parameter_tvb = NULL;
435
dissect_ansi_map_cdmaserviceoption(parameter_tvb,pinfo,tree);
372
438
# 6.5.2.aj SecondInterMSCCircuitID
373
439
# -- XXX Same code as ISLPinformation???
375
441
# 6.5.2.bw CallingPartyName N.S0012-0 v 1.0
376
#.FN_PARS CallingPartyName
377
VAL_PTR = ¶meter_tvb
379
#.FN_BODY CallingPartyName
442
#.FN_BODY CallingPartyName VAL_PTR = ¶meter_tvb
380
443
tvbuff_t *parameter_tvb = NULL;
382
445
if (parameter_tvb){
408
465
# 6.5.2.ek ControlNetworkID
409
#.FN_PARS ControlNetworkID
410
VAL_PTR = ¶meter_tvb
412
#.FN_BODY ControlNetworkID
466
#.FN_BODY ControlNetworkID VAL_PTR = ¶meter_tvb
413
467
tvbuff_t *parameter_tvb = NULL;
415
469
if (parameter_tvb){
416
470
dissect_ansi_map_controlnetworkid(parameter_tvb,pinfo,tree);
473
#6.5.2.gm CDMA2000HandoffInvokeIOSData
474
#.FN_BODY CDMA2000HandoffInvokeIOSData VAL_PTR = ¶meter_tvb
475
tvbuff_t *parameter_tvb = NULL;
481
item = get_ber_last_created_item();
482
subtree = proto_item_add_subtree(item, ett_CDMA2000HandoffInvokeIOSData);
483
dissect_cdma2000_a1_elements(parameter_tvb, pinfo, subtree,
484
0, tvb_length_remaining(parameter_tvb,0));
486
#6.5.2.gn CDMA2000HandoffResponseIOSData
487
#.FN_BODY CDMA2000HandoffResponseIOSData VAL_PTR = ¶meter_tvb
488
tvbuff_t *parameter_tvb = NULL;
494
item = get_ber_last_created_item();
495
subtree = proto_item_add_subtree(item, ett_CDMA2000HandoffResponseIOSData);
496
dissect_cdma2000_a1_elements(parameter_tvb, pinfo, subtree,
497
0, tvb_length_remaining(parameter_tvb,0));
499
#6.5.2.wB ServiceIndicator N.S0011-0 v 1.0
500
#.FN_BODY ServiceIndicator VAL_PTR = ¶meter_tvb
501
tvbuff_t *parameter_tvb = NULL;
504
if (SMS_BearerData_tvb !=NULL)
506
ServiceIndicator = tvb_get_guint8(parameter_tvb,0);
507
switch(ServiceIndicator){
508
case 1: /* CDMA OTASP Service */
509
case 3: /* CDMA OTAPA Service */
510
dissector_try_port(is683_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree);
512
case 4: /* CDMA Position Determination Service */
513
dissector_try_port(is801_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree);
522
# Dont't put the bytes after the name in the display
523
InterMSCCircuitID TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
524
MobileIdentificationNumber TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
525
MobileStationMIN TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
526
CallingPartyNumberString1 TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
527
CallingPartyNumberString2 TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
528
SMS-Address TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
529
SMS-DestinationAddress TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
530
SMS-OriginatingAddress TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
531
SMS-OriginalOriginatingAddress TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
532
SMS-OriginalDestinationAddress TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
533
SenderIdentificationNumber TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
534
MobileDirectoryNumber TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
535
Digits TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
536
MSCIdentificationNumber TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
537
NewlyAssignedMIN TYPE = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
538
RedirectingNumberDigits = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
539
RedirectingNumberString = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
540
CallingPartyNumberDigits1 = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
541
CallingPartyNumberDigits2 = FT_NONE DISPLAY = BASE_DEC STRINGS = NULL
421
543
ActionCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_ActionCode_vals)
422
544
AuthenticationCapability TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_AuthenticationCapability_vals)
423
545
AlertResult TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_AlertResult_result_vals)
424
546
AvailabilityType TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_AvailabilityType_vals)
425
547
CancellationType TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_CancellationType_vals)
426
548
GeographicAuthorization TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_GeographicAuthorization_vals)
428
549
CountUpdateReport TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_CountUpdateReport_vals)
429
550
ControlChannelMode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_ControlChannelMode_vals)
430
551
PageIndicator TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ansi_map_PageIndicator_vals)