diff options
author | Anders Broman <anders.broman@ericsson.com> | 2007-01-15 10:19:50 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2007-01-15 10:19:50 +0000 |
commit | de009c280a6eef701f1cb83a943f48d483bced50 (patch) | |
tree | 0b49070cbdf25fdfd095e3b5e65fc85b7128ad8c /epan | |
parent | d48fdc737581892a10cd68b921b018eca532fe30 (diff) |
Dissect sms-BearerData also in responce messages if service code seen in Invoke.
Pretify a bunch of DigitsType parameters.
svn path=/trunk/; revision=20439
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-ansi_map.c | 214 |
1 files changed, 125 insertions, 89 deletions
diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c index 3c5c6331ba..db5db672c6 100644 --- a/epan/dissectors/packet-ansi_map.c +++ b/epan/dissectors/packet-ansi_map.c @@ -1086,6 +1086,14 @@ static gboolean is683_ota; static gboolean is801_pld; static gboolean ansi_map_is_invoke; static guint32 OperationCode; +static guint8 ServiceIndicator; + + +struct amsi_map_invokedata_t { + guint32 opcode; + guint8 ServiceIndicator; +}; + /* Transaction table */ static GHashTable *TransactionId_table=NULL; @@ -1093,14 +1101,14 @@ static GHashTable *TransactionId_table=NULL; static void TransactionId_table_cleanup(gpointer key , gpointer value, gpointer user_data _U_){ - guint8 *opcode = value; + struct amsi_map_invokedata_t *ansi_map_saved_invokedata = value; gchar *TransactionId_str = key; if ( TransactionId_str ){ g_free(TransactionId_str); } - if (opcode){ - g_free(opcode); + if (ansi_map_saved_invokedata){ + g_free(ansi_map_saved_invokedata); } } @@ -1123,6 +1131,28 @@ ansi_map_init_protocol(void) { ansi_map_init_transaction_table(); } + +/* Store Invoke information needed for the corresponding reply */ +static void +update_saved_invokedata(packet_info *pinfo){ + struct amsi_map_invokedata_t *ansi_map_saved_invokedata; + struct tcap_private_t *p_private_tcap; + + /* Data from the TCAP dissector */ + if (pinfo->private_data != NULL){ + p_private_tcap=pinfo->private_data; + ansi_map_saved_invokedata = g_malloc(sizeof(ansi_map_saved_invokedata)); + ansi_map_saved_invokedata->opcode = OperationCode; + ansi_map_saved_invokedata->ServiceIndicator = ServiceIndicator; + if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){ + /* Only do this once XXX I hope its the right thing to do */ + g_hash_table_insert(TransactionId_table, + g_strdup(p_private_tcap->TransactionID_str), + ansi_map_saved_invokedata); + } + } + +} /* value strings */ const value_string ansi_map_opr_code_strings[] = { { 1, "Handoff Measurement Request" }, @@ -1408,7 +1438,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree case 2: /* IA5 Coding */ proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE); - proto_item_append_text(item, " - %s", tvb_get_string(tvb,offset,-1)); + proto_item_append_text(item, " - %s", tvb_get_string(tvb,offset,tvb_length_remaining(tvb,offset))); break; case 3: /* Octet string */ @@ -1438,7 +1468,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree case 2: /* IA5 Coding */ proto_tree_add_item(subtree, hf_ansi_map_ia5_digits, tvb, offset, -1, FALSE); - proto_item_append_text(item, " - %s", tvb_get_string(tvb,offset,-1)); + proto_item_append_text(item, " - %s", tvb_get_string(tvb,offset,tvb_length_remaining(tvb,offset))); break; case 3: /* Octet string */ @@ -4207,7 +4237,7 @@ static int dissect_nationaler_impl(packet_info *pinfo, proto_tree *tree, tvbuff_ static int dissect_ansi_map_PrivateOperationCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 85 "ansi_map.cnf" +#line 79 "ansi_map.cnf" offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, &OperationCode); @@ -4252,31 +4282,23 @@ static int dissect_operationCode(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_ansi_map_InvokeParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { #line 23 "ansi_map.cnf" - gint *opcode; - struct tcap_private_t *p_private_tcap; - /* Data from the TCAP dissector */ - if (pinfo->private_data != NULL){ - p_private_tcap=pinfo->private_data; - opcode = g_malloc(sizeof(gint)); - OperationCode = OperationCode&0x00ff; - *opcode = OperationCode; - if ((!pinfo->fd->flags.visited)&&(p_private_tcap->TransactionID_str)){ - /* Only do this once XXX I hope its the right thing to do */ - g_hash_table_insert(TransactionId_table, g_strdup(p_private_tcap->TransactionID_str), opcode); - } - } + ServiceIndicator = 0; + OperationCode = OperationCode&0x00ff; + ansi_map_is_invoke = TRUE; if (check_col(pinfo->cinfo, COL_INFO)){ col_set_str(pinfo->cinfo, COL_INFO, val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown ANSI-MAP PDU (%u)")); } /* No Data */ if(tvb_length_remaining(tvb, offset)<=0){ + update_saved_invokedata(pinfo); return offset; } offset = dissect_invokeData(pinfo, tree, tvb, offset); + update_saved_invokedata(pinfo); @@ -4325,17 +4347,18 @@ static int dissect_componentID(packet_info *pinfo, proto_tree *tree, tvbuff_t *t static int dissect_ansi_map_ReturnParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 50 "ansi_map.cnf" - gint *opcode; +#line 42 "ansi_map.cnf" + struct amsi_map_invokedata_t *ansi_map_saved_invokedata; struct tcap_private_t *p_private_tcap; proto_item *item; /* Data from the TCAP dissector */ if (pinfo->private_data != NULL){ p_private_tcap=pinfo->private_data; - opcode = g_hash_table_lookup(TransactionId_table, p_private_tcap->TransactionID_str); - if(opcode){ - OperationCode = *opcode; + ansi_map_saved_invokedata = g_hash_table_lookup(TransactionId_table, p_private_tcap->TransactionID_str); + if(ansi_map_saved_invokedata){ + OperationCode = ansi_map_saved_invokedata->opcode; + ServiceIndicator = ansi_map_saved_invokedata->ServiceIndicator; }else{ OperationCode = OperationCode & 0x00ff; } @@ -4354,6 +4377,7 @@ dissect_ansi_map_ReturnParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int item = proto_tree_add_text(tree, tvb, 0, -1, "OperationCode %s",val_to_str(OperationCode, ansi_map_opr_code_strings, "Unknown %u")); PROTO_ITEM_SET_GENERATED(item); + ansi_map_is_invoke = FALSE; offset = dissect_returnData(pinfo, tree, tvb, offset); @@ -4427,7 +4451,7 @@ static int dissect_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb static int dissect_ansi_map_RejectParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 83 "ansi_map.cnf" +#line 77 "ansi_map.cnf" @@ -4532,7 +4556,7 @@ dissect_ansi_map_ComponentPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs static int dissect_ansi_map_ErrorParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 81 "ansi_map.cnf" +#line 75 "ansi_map.cnf" @@ -4559,7 +4583,7 @@ static int dissect_lectronicSerialNumber_impl(packet_info *pinfo, proto_tree *tr static int dissect_ansi_map_MINType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 90 "ansi_map.cnf" +#line 84 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -4679,7 +4703,7 @@ static int dissect_cdmaPrivateLongCodeMask_impl(packet_info *pinfo, proto_tree * static int dissect_ansi_map_DigitsType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 97 "ansi_map.cnf" +#line 91 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -4787,7 +4811,7 @@ static int dissect_mobileStationMIN_impl(packet_info *pinfo, proto_tree *tree, t static int dissect_ansi_map_MSCID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 247 "ansi_map.cnf" +#line 241 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -4980,7 +5004,7 @@ static int dissect_authenticationDirectiveRes(packet_info *pinfo, proto_tree *tr static int dissect_ansi_map_InterMSCCircuitID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 222 "ansi_map.cnf" +#line 216 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5130,7 +5154,7 @@ static int dissect_systemAccessType_impl(packet_info *pinfo, proto_tree *tree, t static int dissect_ansi_map_SystemCapabilities(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 368 "ansi_map.cnf" +#line 375 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5296,7 +5320,7 @@ static int dissect_cdmaNetworkIdentification_impl(packet_info *pinfo, proto_tree static int dissect_ansi_map_ConfidentialityModes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 183 "ansi_map.cnf" +#line 177 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5354,7 +5378,7 @@ static int dissect_digits_Carrier_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_ansi_map_PC_SSN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 303 "ansi_map.cnf" +#line 297 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5424,7 +5448,7 @@ static int dissect_suspiciousAccess_impl(packet_info *pinfo, proto_tree *tree, t static int dissect_ansi_map_TransactionCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 385 "ansi_map.cnf" +#line 392 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5696,9 +5720,8 @@ static int dissect_reauthenticationReport_impl(packet_info *pinfo, proto_tree *t static int dissect_ansi_map_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 462 "ansi_map.cnf" +#line 469 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; - guint8 ServiceIndicator; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5958,7 +5981,7 @@ static int dissect_countRequestRes(packet_info *pinfo, proto_tree *tree, tvbuff_ static int dissect_ansi_map_BillingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 137 "ansi_map.cnf" +#line 131 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -5979,7 +6002,7 @@ static int dissect_billingID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_ansi_map_ChannelData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 175 "ansi_map.cnf" +#line 169 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6077,7 +6100,7 @@ static int dissect_handoffReason_impl(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_ansi_map_HandoffState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 214 "ansi_map.cnf" +#line 208 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6203,7 +6226,7 @@ static int dissect_baseStationManufacturerCode_impl(packet_info *pinfo, proto_tr static int dissect_ansi_map_AlertCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 112 "ansi_map.cnf" +#line 106 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6224,7 +6247,7 @@ static int dissect_alertCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_ansi_map_CDMA2000HandoffInvokeIOSData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 436 "ansi_map.cnf" +#line 443 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; proto_item *item; proto_tree *subtree; @@ -6250,7 +6273,7 @@ static int dissect_cdma2000HandoffInvokeIOSData_impl(packet_info *pinfo, proto_t static int dissect_ansi_map_CDMACallMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 152 "ansi_map.cnf" +#line 146 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6270,7 +6293,7 @@ static int dissect_cdmaCallMode_impl(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_ansi_map_CDMAChannelData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 159 "ansi_map.cnf" +#line 153 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6304,7 +6327,7 @@ static int dissect_cdmaConnectionReference_impl(packet_info *pinfo, proto_tree * static int dissect_ansi_map_CDMAServiceOption(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 393 "ansi_map.cnf" +#line 400 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6494,7 +6517,7 @@ static int dissect_cdmaServingOneWayDelay_impl(packet_info *pinfo, proto_tree *t static int dissect_ansi_map_CDMAStationClassMark(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 167 "ansi_map.cnf" +#line 161 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6650,7 +6673,7 @@ static int dissect_ilspInformation_impl(packet_info *pinfo, proto_tree *tree, tv static int dissect_ansi_map_MSLocation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 255 "ansi_map.cnf" +#line 249 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6671,7 +6694,7 @@ static int dissect_msLocation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_ static int dissect_ansi_map_NAMPSCallMode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 263 "ansi_map.cnf" +#line 257 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6692,7 +6715,7 @@ static int dissect_nampsCallMode_impl(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_ansi_map_NAMPSChannelData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 271 "ansi_map.cnf" +#line 265 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -6926,7 +6949,7 @@ static int dissect_bsmcstatus_impl(packet_info *pinfo, proto_tree *tree, tvbuff_ static int dissect_ansi_map_CDMA2000HandoffResponseIOSData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 449 "ansi_map.cnf" +#line 456 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; proto_item *item; proto_tree *subtree; @@ -7181,7 +7204,7 @@ static int dissect_acgencountered_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_ansi_map_CallingPartyName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 404 "ansi_map.cnf" +#line 411 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7226,7 +7249,7 @@ static int dissect_callingPartyNumberDigits2_impl(packet_info *pinfo, proto_tree static int dissect_ansi_map_Subaddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 104 "ansi_map.cnf" +#line 98 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7293,7 +7316,7 @@ static int dissect_mSCIdentificationNumber_impl(packet_info *pinfo, proto_tree * static int dissect_ansi_map_OneTimeFeatureIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 279 "ansi_map.cnf" +#line 273 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7436,7 +7459,7 @@ static int dissect_ctionCode_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_ansi_map_AnnouncementCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 120 "ansi_map.cnf" +#line 114 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7635,7 +7658,7 @@ static int dissect_noAnswerTime_impl(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_ansi_map_PACAIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 295 "ansi_map.cnf" +#line 289 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -7771,7 +7794,7 @@ static int dissect_legInformation_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_ansi_map_TerminationTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 377 "ansi_map.cnf" +#line 384 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -8778,7 +8801,7 @@ dissect_ansi_map_InformationDirectiveRes(gboolean implicit_tag _U_, tvbuff_t *tv static int dissect_ansi_map_MessageWaitingNotificationCount(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 230 "ansi_map.cnf" +#line 224 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -8799,7 +8822,7 @@ static int dissect_messageWaitingNotificationCount_impl(packet_info *pinfo, prot static int dissect_ansi_map_MessageWaitingNotificationType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 238 "ansi_map.cnf" +#line 232 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -8900,7 +8923,7 @@ static int dissect_cdmaSlotCycleIndex_impl(packet_info *pinfo, proto_tree *tree, static int dissect_ansi_map_ExtendedMSCID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 199 "ansi_map.cnf" +#line 193 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -8921,7 +8944,7 @@ static int dissect_extendedMSCID_impl(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_ansi_map_ExtendedSystemMyTypeCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 207 "ansi_map.cnf" +#line 201 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9005,7 +9028,7 @@ static int dissect_pageResponseTime_impl(packet_info *pinfo, proto_tree *tree, t static int dissect_ansi_map_PilotBillingID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 311 "ansi_map.cnf" +#line 305 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, @@ -9465,7 +9488,7 @@ static int dissect_terminationAccessType_impl(packet_info *pinfo, proto_tree *tr static int dissect_ansi_map_TriggerCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 412 "ansi_map.cnf" +#line 419 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9486,7 +9509,7 @@ static int dissect_triggerCapability_impl(packet_info *pinfo, proto_tree *tree, static int dissect_ansi_map_WINOperationsCapability(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 420 "ansi_map.cnf" +#line 427 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9575,7 +9598,7 @@ static int dissect_locationRequest(packet_info *pinfo, proto_tree *tree, tvbuff_ static int dissect_ansi_map_ControlNetworkID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 428 "ansi_map.cnf" +#line 435 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9728,7 +9751,7 @@ static int dissect_mSInactive(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv static int dissect_ansi_map_OriginationTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 287 "ansi_map.cnf" +#line 281 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9921,7 +9944,7 @@ static int dissect_authorizationDenied_impl(packet_info *pinfo, proto_tree *tree static int dissect_ansi_map_AuthorizationPeriod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 128 "ansi_map.cnf" +#line 122 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -9943,7 +9966,7 @@ static int dissect_authorizationPeriod_impl(packet_info *pinfo, proto_tree *tree static int dissect_ansi_map_DeniedAuthorizationPeriod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 191 "ansi_map.cnf" +#line 185 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -10163,7 +10186,7 @@ static int dissect_redirectionReason_impl(packet_info *pinfo, proto_tree *tree, static const ber_sequence_t RedirectionRequest_set[] = { { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_billingID_impl }, { BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_electronicSerialNumber_impl }, - { BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mobileIdentificationNumber_impl }, + { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_msid }, { BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_redirectionReason_impl }, { BER_CLASS_CON, 175, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cdmaServiceOption_impl }, { BER_CLASS_CON, 288, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_legInformation_impl }, @@ -10415,7 +10438,7 @@ static int dissect_authenticationCapability_impl(packet_info *pinfo, proto_tree static int dissect_ansi_map_CallingFeaturesIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 145 "ansi_map.cnf" +#line 139 "ansi_map.cnf" tvbuff_t *parameter_tvb = NULL; offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, ¶meter_tvb); @@ -10750,7 +10773,7 @@ static const ber_sequence_t RoutingRequest_set[] = { { BER_CLASS_CON, 288, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_legInformation_impl }, { BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_locationAreaID_impl }, { BER_CLASS_CON, 93, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mobileDirectoryNumber_impl }, - { BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mobileIdentificationNumber_impl }, + { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_msid }, { BER_CLASS_CON, 94, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mSCIdentificationNumber_impl }, { BER_CLASS_CON, 96, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_noAnswerTime_impl }, { BER_CLASS_CON, 97, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_oneTimeFeatureIndicator_impl }, @@ -10813,7 +10836,7 @@ static int dissect_routingRequestRes(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_ansi_map_SMS_BearerData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 320 "ansi_map.cnf" +#line 314 "ansi_map.cnf" int length; proto_item *item; proto_tree *subtree; @@ -10832,6 +10855,19 @@ dissect_ansi_map_SMS_BearerData(gboolean implicit_tag _U_, tvbuff_t *tvb, int of SMS_BearerData_tvb = NULL; return offset; } + if(!ansi_map_is_invoke){ + switch(ServiceIndicator){ + case 1: /* CDMA OTASP Service */ + case 3: /* CDMA OTAPA Service */ + dissector_try_port(is683_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree); + break; + case 4: /* CDMA Position Determination Service */ + dissector_try_port(is801_dissector_table, ansi_map_is_invoke ? 0 : 1, SMS_BearerData_tvb, g_pinfo, g_tree); + break; + default: + break; + } + } } @@ -10846,7 +10882,7 @@ static int dissect_sms_BearerData_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_ansi_map_SMS_TeleserviceIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 341 "ansi_map.cnf" +#line 348 "ansi_map.cnf" int length; proto_item *item; @@ -14305,7 +14341,7 @@ static void dissect_OriginationRequestRes_PDU(tvbuff_t *tvb, packet_info *pinfo, /*--- End of included file: packet-ansi_map-fn.c ---*/ -#line 3439 "packet-ansi_map-template.c" +#line 3469 "packet-ansi_map-template.c" static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -15832,7 +15868,7 @@ void proto_register_ansi_map(void) { "ansi_map.RoutingDigits", HFILL }}, { &hf_ansi_map_senderIdentificationNumber, { "senderIdentificationNumber", "ansi_map.senderIdentificationNumber", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.SenderIdentificationNumber", HFILL }}, { &hf_ansi_map_sharedSecretData, { "sharedSecretData", "ansi_map.sharedSecretData", @@ -15912,7 +15948,7 @@ void proto_register_ansi_map(void) { "ansi_map.ControlChannelMode", HFILL }}, { &hf_ansi_map_digits, { "digits", "ansi_map.digits", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.Digits", HFILL }}, { &hf_ansi_map_pc_ssn, { "pc-ssn", "ansi_map.pc_ssn", @@ -16204,11 +16240,11 @@ void proto_register_ansi_map(void) { "ansi_map.ConferenceCallingIndicator", HFILL }}, { &hf_ansi_map_mobileDirectoryNumber, { "mobileDirectoryNumber", "ansi_map.mobileDirectoryNumber", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.MobileDirectoryNumber", HFILL }}, { &hf_ansi_map_mSCIdentificationNumber, { "mSCIdentificationNumber", "ansi_map.mSCIdentificationNumber", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.MSCIdentificationNumber", HFILL }}, { &hf_ansi_map_oneTimeFeatureIndicator, { "oneTimeFeatureIndicator", "ansi_map.oneTimeFeatureIndicator", @@ -16232,15 +16268,15 @@ void proto_register_ansi_map(void) { "ansi_map.AnnouncementList", HFILL }}, { &hf_ansi_map_callingPartyNumberString1, { "callingPartyNumberString1", "ansi_map.callingPartyNumberString1", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.CallingPartyNumberString1", HFILL }}, { &hf_ansi_map_callingPartyNumberString2, { "callingPartyNumberString2", "ansi_map.callingPartyNumberString2", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.CallingPartyNumberString2", HFILL }}, { &hf_ansi_map_digits_Destination, { "digits-Destination", "ansi_map.digits_Destination", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.Digits", HFILL }}, { &hf_ansi_map_displayText, { "displayText", "ansi_map.displayText", @@ -16460,11 +16496,11 @@ void proto_register_ansi_map(void) { "ansi_map.ControlNetworkID", HFILL }}, { &hf_ansi_map_digits_carrier, { "digits-carrier", "ansi_map.digits_carrier", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.Digits", HFILL }}, { &hf_ansi_map_digits_dest, { "digits-dest", "ansi_map.digits_dest", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.Digits", HFILL }}, { &hf_ansi_map_dmh_ServiceID, { "dmh-ServiceID", "ansi_map.dmh_ServiceID", @@ -16560,11 +16596,11 @@ void proto_register_ansi_map(void) { "ansi_map.MSC_Address", HFILL }}, { &hf_ansi_map_sms_Address, { "sms-Address", "ansi_map.sms_Address", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.SMS_Address", HFILL }}, { &hf_ansi_map_digits_Carrier, { "digits-Carrier", "ansi_map.digits_Carrier", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.Digits", HFILL }}, { &hf_ansi_map_authenticationCapability, { "authenticationCapability", "ansi_map.authenticationCapability", @@ -16640,11 +16676,11 @@ void proto_register_ansi_map(void) { "ansi_map.SMS_ChargeIndicator", HFILL }}, { &hf_ansi_map_sms_DestinationAddress, { "sms-DestinationAddress", "ansi_map.sms_DestinationAddress", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.SMS_DestinationAddress", HFILL }}, { &hf_ansi_map_sms_OriginalDestinationAddress, { "sms-OriginalDestinationAddress", "ansi_map.sms_OriginalDestinationAddress", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.SMS_OriginalDestinationAddress", HFILL }}, { &hf_ansi_map_sms_OriginalDestinationSubaddress, { "sms-OriginalDestinationSubaddress", "ansi_map.sms_OriginalDestinationSubaddress", @@ -16652,7 +16688,7 @@ void proto_register_ansi_map(void) { "ansi_map.SMS_OriginalDestinationSubaddress", HFILL }}, { &hf_ansi_map_sms_OriginalOriginatingAddress, { "sms-OriginalOriginatingAddress", "ansi_map.sms_OriginalOriginatingAddress", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.SMS_OriginalOriginatingAddress", HFILL }}, { &hf_ansi_map_sms_OriginalOriginatingSubaddress, { "sms-OriginalOriginatingSubaddress", "ansi_map.sms_OriginalOriginatingSubaddress", @@ -16660,7 +16696,7 @@ void proto_register_ansi_map(void) { "ansi_map.SMS_OriginalOriginatingSubaddress", HFILL }}, { &hf_ansi_map_sms_OriginatingAddress, { "sms-OriginatingAddress", "ansi_map.sms_OriginatingAddress", - FT_BYTES, BASE_HEX, NULL, 0, + FT_NONE, BASE_DEC, NULL, 0, "ansi_map.SMS_OriginatingAddress", HFILL }}, { &hf_ansi_map_sms_CauseCode, { "sms-CauseCode", "ansi_map.sms_CauseCode", @@ -17688,7 +17724,7 @@ void proto_register_ansi_map(void) { "ansi_map.DropServiceRes", HFILL }}, /*--- End of included file: packet-ansi_map-hfarr.c ---*/ -#line 4801 "packet-ansi_map-template.c" +#line 4831 "packet-ansi_map-template.c" }; /* List of subtrees */ @@ -17931,7 +17967,7 @@ void proto_register_ansi_map(void) { &ett_ansi_map_ReturnData, /*--- End of included file: packet-ansi_map-ettarr.c ---*/ -#line 4831 "packet-ansi_map-template.c" +#line 4861 "packet-ansi_map-template.c" }; |