diff options
Diffstat (limited to 'epan/dissectors/packet-gsm_map.c')
-rw-r--r-- | epan/dissectors/packet-gsm_map.c | 319 |
1 files changed, 209 insertions, 110 deletions
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c index 46d491259e..85befa1cda 100644 --- a/epan/dissectors/packet-gsm_map.c +++ b/epan/dissectors/packet-gsm_map.c @@ -314,7 +314,9 @@ static int hf_gsm_map_sm_sm_RP_UI = -1; /* SignalInfo */ static int hf_gsm_map_sm_moreMessagesToSend = -1; /* NULL */ static int hf_gsm_map_sm_smDeliveryTimer = -1; /* SM_DeliveryTimerValue */ static int hf_gsm_map_sm_smDeliveryStartTime = -1; /* Time */ -static int hf_gsm_map_sm_serviceCentreAddressDA = -1; /* AddressString */ +static int hf_gsm_map_sm_imsi_01 = -1; /* T_imsi */ +static int hf_gsm_map_sm_lmsi_01 = -1; /* T_lmsi */ +static int hf_gsm_map_sm_serviceCentreAddressDA = -1; /* T_serviceCentreAddressDA */ static int hf_gsm_map_sm_noSM_RP_DA = -1; /* NULL */ static int hf_gsm_map_sm_msisdn_01 = -1; /* T_msisdn */ static int hf_gsm_map_sm_serviceCentreAddressOA = -1; /* T_serviceCentreAddressOA */ @@ -1568,8 +1570,9 @@ static int hf_gsm_old_sm_RP_DA = -1; /* SM_RP_DAold */ static int hf_gsm_old_sm_RP_OA = -1; /* SM_RP_OAold */ static int hf_gsm_old_sm_RP_UI = -1; /* SignalInfo */ static int hf_gsm_old_moreMessagesToSend = -1; /* NULL */ -static int hf_gsm_old_lmsi = -1; /* LMSI */ -static int hf_gsm_old_serviceCentreAddressDA = -1; /* AddressString */ +static int hf_gsm_old_imsi_01 = -1; /* T_imsi */ +static int hf_gsm_old_lmsi = -1; /* T_lmsi */ +static int hf_gsm_old_serviceCentreAddressDA = -1; /* T_serviceCentreAddressDA */ static int hf_gsm_old_noSM_RP_DA = -1; /* NULL */ static int hf_gsm_old_msisdn_01 = -1; /* T_msisdn */ static int hf_gsm_old_serviceCentreAddressOA = -1; /* T_serviceCentreAddressOA */ @@ -3227,13 +3230,13 @@ dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 303 "../../asn1/gsm_map/gsm_map.cnf" +#line 327 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); - actx->value_ptr = parameter_tvb; + actx->value_ptr = (void*)parameter_tvb; @@ -3251,7 +3254,7 @@ static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = { int dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 724 "../../asn1/gsm_map/gsm_map.cnf" +#line 748 "../../asn1/gsm_map/gsm_map.cnf" /* -- Information about the internal structure is given in -- clause 7.6.9. @@ -3280,54 +3283,54 @@ if (!actx->value_ptr) * function */ /* Get tag */ - octet = tvb_get_guint8(actx->value_ptr,0); - proto_tree_add_item(subtree, hf_gsm_map_ie_tag, actx->value_ptr, 0,1,FALSE); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); + proto_tree_add_item(subtree, hf_gsm_map_ie_tag, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN); /* get length */ - length = tvb_get_guint8(actx->value_ptr,1); - proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE); + length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1); + proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN); /* Branch on tag */ switch(octet){ case 4: /* Dissect the data part */ - de_bearer_cap(actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0); + de_bearer_cap((tvbuff_t*)actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0); /* TODO: There may be more than one IE */ break; default: - proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev"); + proto_tree_add_text(subtree, (tvbuff_t*)actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev"); break; }/* switch(octet) */ break; case 2: /* gsm-0806 */ - octet = tvb_get_guint8(actx->value_ptr,0); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); /* Discrimination parameter */ - proto_tree_add_item(subtree, hf_gsm_map_disc_par, actx->value_ptr, 0,1,FALSE); + proto_tree_add_item(subtree, hf_gsm_map_disc_par, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN); if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ /* Strip off discrimination and length */ - proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE); - next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2); + proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2); dissect_bssmap(next_tvb, actx->pinfo, subtree); }else if(octet==1){ - proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE); - proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE); - next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3); + proto_tree_add_item(subtree, hf_gsm_map_dlci, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 3); call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); } break; case 3: /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/ - octet = tvb_get_guint8(actx->value_ptr,0); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ - next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2); + next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2); dissect_bssmap(next_tvb, actx->pinfo, subtree); } break; /* ets-300102-1 (~Q.931 ) */ case 4: - octet = tvb_get_guint8(actx->value_ptr,0); - length = tvb_get_guint8(actx->value_ptr,1); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); + length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1); if ( octet == 4 ) - dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree); + dissect_q931_bearer_capability_ie((tvbuff_t*)actx->value_ptr, 2, length, subtree); break; default: break; @@ -3411,15 +3414,15 @@ dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int case 1: octet = tvb_get_guint8(parameter_tvb,0); /* Discrimination parameter */ - proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,FALSE); + proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,ENC_BIG_ENDIAN); if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ /* Strip off discrimination and length */ - proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,FALSE); + proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,ENC_BIG_ENDIAN); next_tvb = tvb_new_subset_remaining(parameter_tvb, 2); dissect_bssmap(next_tvb, actx->pinfo, subtree); }else if(octet==1){ - proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,FALSE); - proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,FALSE); + proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,ENC_BIG_ENDIAN); next_tvb = tvb_new_subset_remaining(parameter_tvb, 3); call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); } @@ -3467,7 +3470,7 @@ dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in int dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 549 "../../asn1/gsm_map/gsm_map.cnf" +#line 573 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; guint8 octet; @@ -3484,10 +3487,10 @@ dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of octet = tvb_get_guint8(parameter_tvb,0); switch(octet){ case 0x04: /* IPv4 */ - proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE); + proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), ENC_BIG_ENDIAN); break; case 0x50: /* IPv4 */ - proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE); + proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), ENC_BIG_ENDIAN); break; default: break; @@ -3618,7 +3621,7 @@ dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse int dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 804 "../../asn1/gsm_map/gsm_map.cnf" +#line 828 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -3895,7 +3898,7 @@ dissect_gsm_map_TA_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _ int dissect_gsm_map_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 573 "../../asn1/gsm_map/gsm_map.cnf" +#line 597 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -3928,7 +3931,7 @@ dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_ int dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 585 "../../asn1/gsm_map/gsm_map.cnf" +#line 609 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -4054,7 +4057,7 @@ dissect_gsm_map_EMLPP_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int dissect_gsm_map_Ext_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 401 "../../asn1/gsm_map/gsm_map.cnf" +#line 425 "../../asn1/gsm_map/gsm_map.cnf" /* Note Ext-SS-Status can have more than one byte */ tvbuff_t *parameter_tvb; @@ -4187,7 +4190,7 @@ dissect_gsm_map_ss_RegisterSS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int dissect_gsm_map_ss_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 381 "../../asn1/gsm_map/gsm_map.cnf" +#line 405 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; guint8 octet; @@ -4221,12 +4224,12 @@ dissect_gsm_map_ss_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); -#line 492 "../../asn1/gsm_map/gsm_map.cnf" +#line 516 "../../asn1/gsm_map/gsm_map.cnf" - proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE); - proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE); - proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE); - proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN); return offset; } @@ -4540,7 +4543,7 @@ dissect_gsm_map_ss_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U int dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 424 "../../asn1/gsm_map/gsm_map.cnf" +#line 448 "../../asn1/gsm_map/gsm_map.cnf" /*The structure of the USSD-DataCodingScheme is defined by * the Cell Broadcast Data Coding Scheme as described in * TS 3GPP TS 23.038 @@ -4566,7 +4569,7 @@ dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tv int dissect_gsm_map_ss_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 439 "../../asn1/gsm_map/gsm_map.cnf" +#line 463 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; int length; @@ -5053,7 +5056,7 @@ static const ber_sequence_t gsm_map_er_SM_DeliveryFailureCause_sequence[] = { static int dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 310 "../../asn1/gsm_map/gsm_map.cnf" +#line 334 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, gsm_map_er_SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_er_SM_DeliveryFailureCause); @@ -5061,7 +5064,7 @@ dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t * if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -5946,6 +5949,48 @@ dissect_gsm_map_sm_RoutingInfoForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb } + +static int +dissect_gsm_map_sm_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 303 "../../asn1/gsm_map/gsm_map.cnf" + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 307 "../../asn1/gsm_map/gsm_map.cnf" + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + + + + return offset; +} + + + +static int +dissect_gsm_map_sm_T_serviceCentreAddressDA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 323 "../../asn1/gsm_map/gsm_map.cnf" + actx->pinfo->p2p_dir = P2P_DIR_RECV; + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + + + + return offset; +} + + const value_string gsm_map_sm_SM_RP_DA_vals[] = { { 0, "imsi" }, { 1, "lmsi" }, @@ -5955,9 +6000,9 @@ const value_string gsm_map_sm_SM_RP_DA_vals[] = { }; static const ber_choice_t gsm_map_sm_SM_RP_DA_choice[] = { - { 0, &hf_gsm_map_sm_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, - { 1, &hf_gsm_map_sm_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, - { 4, &hf_gsm_map_sm_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { 0, &hf_gsm_map_sm_imsi_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_imsi }, + { 1, &hf_gsm_map_sm_lmsi_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_lmsi }, + { 4, &hf_gsm_map_sm_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_serviceCentreAddressDA }, { 5, &hf_gsm_map_sm_noSM_RP_DA, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL }, { 0, NULL, 0, 0, 0, NULL } }; @@ -5975,7 +6020,7 @@ dissect_gsm_map_sm_SM_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_gsm_map_sm_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 299 "../../asn1/gsm_map/gsm_map.cnf" +#line 315 "../../asn1/gsm_map/gsm_map.cnf" actx->pinfo->p2p_dir = P2P_DIR_RECV; offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -6035,7 +6080,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = { static int dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 327 "../../asn1/gsm_map/gsm_map.cnf" +#line 351 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -6044,7 +6089,7 @@ dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -6060,7 +6105,7 @@ static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Res_sequence[] = { static int dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 336 "../../asn1/gsm_map/gsm_map.cnf" +#line 360 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -6069,7 +6114,7 @@ dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -6090,7 +6135,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = { static int dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 345 "../../asn1/gsm_map/gsm_map.cnf" +#line 369 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -6099,7 +6144,7 @@ dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -6115,7 +6160,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Res_sequence[] = { static int dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 354 "../../asn1/gsm_map/gsm_map.cnf" +#line 378 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -6124,7 +6169,7 @@ dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -6298,7 +6343,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence[] = { static int dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 363 "../../asn1/gsm_map/gsm_map.cnf" +#line 387 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -6307,7 +6352,7 @@ dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tv if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -6338,7 +6383,7 @@ static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence[] = { static int dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 372 "../../asn1/gsm_map/gsm_map.cnf" +#line 396 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -6347,7 +6392,7 @@ dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tv if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -8058,7 +8103,7 @@ dissect_gsm_map_ms_SGSN_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static int dissect_gsm_map_ms_APN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 838 "../../asn1/gsm_map/gsm_map.cnf" +#line 862 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; int length, name_len, tmp; @@ -8283,7 +8328,7 @@ dissect_gsm_map_ms_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tv static int dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 621 "../../asn1/gsm_map/gsm_map.cnf" +#line 645 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; asn1_ctx_t asn1_ctx; @@ -8306,7 +8351,7 @@ dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvb static int dissect_gsm_map_ms_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 633 "../../asn1/gsm_map/gsm_map.cnf" +#line 657 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; asn1_ctx_t asn1_ctx; @@ -8391,7 +8436,7 @@ dissect_gsm_map_ms_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *t static int dissect_gsm_map_ms_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 597 "../../asn1/gsm_map/gsm_map.cnf" +#line 621 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -8462,7 +8507,7 @@ dissect_gsm_map_ms_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *t static int dissect_gsm_map_ms_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 609 "../../asn1/gsm_map/gsm_map.cnf" +#line 633 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; asn1_ctx_t asn1_ctx; @@ -9336,12 +9381,12 @@ static int dissect_gsm_map_ms_T_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_gsm_map_ms_Ext_ForwOptions(implicit_tag, tvb, offset, actx, tree, hf_index); -#line 498 "../../asn1/gsm_map/gsm_map.cnf" +#line 522 "../../asn1/gsm_map/gsm_map.cnf" - proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE); - proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE); - proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE); - proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN); @@ -10499,7 +10544,7 @@ dissect_gsm_map_ms_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t static int dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 506 "../../asn1/gsm_map/gsm_map.cnf" +#line 530 "../../asn1/gsm_map/gsm_map.cnf" guint8 pdp_type_org; tvbuff_t *parameter_tvb; @@ -10510,14 +10555,14 @@ dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of if (!parameter_tvb) return offset; - proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,ENC_BIG_ENDIAN); pdp_type_org = tvb_get_guint8(parameter_tvb,1); switch (pdp_type_org){ case 0: /* ETSI */ - proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN); break; case 1: /* IETF */ - proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN); break; default: break; @@ -10532,7 +10577,7 @@ dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of int dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 528 "../../asn1/gsm_map/gsm_map.cnf" +#line 552 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; @@ -10554,7 +10599,7 @@ dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int dissect_gsm_map_ms_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 539 "../../asn1/gsm_map/gsm_map.cnf" +#line 563 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; @@ -12063,7 +12108,7 @@ dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t * static int dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 865 "../../asn1/gsm_map/gsm_map.cnf" +#line 889 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; const char *digit_str; @@ -14822,7 +14867,7 @@ dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvb int dissect_gsm_map_lcs_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 816 "../../asn1/gsm_map/gsm_map.cnf" +#line 840 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -16248,7 +16293,7 @@ static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = { static int dissect_gsm_old_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 646 "../../asn1/gsm_map/gsm_map.cnf" +#line 670 "../../asn1/gsm_map/gsm_map.cnf" guint8 octet; guint8 length; tvbuff_t *next_tvb; @@ -16275,54 +16320,54 @@ if (!actx->value_ptr) * function */ /* Get tag */ - octet = tvb_get_guint8(actx->value_ptr,0); - proto_tree_add_item(subtree, hf_gsm_map_ie_tag, actx->value_ptr, 0,1,FALSE); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); + proto_tree_add_item(subtree, hf_gsm_map_ie_tag, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN); /* get length */ - length = tvb_get_guint8(actx->value_ptr,1); - proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE); + length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1); + proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN); /* Branch on tag */ switch(octet){ case 4: /* Dissect the data part */ - de_bearer_cap(actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0); + de_bearer_cap((tvbuff_t*)actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0); /* TODO: There may be more than one IE */ break; default: - proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev"); + proto_tree_add_text(subtree, (tvbuff_t*)actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev"); break; }/* switch(octet) */ break; case 2: /* gsm-0806 */ - octet = tvb_get_guint8(actx->value_ptr,0); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); /* Discrimination parameter */ - proto_tree_add_item(subtree, hf_gsm_map_disc_par, actx->value_ptr, 0,1,FALSE); + proto_tree_add_item(subtree, hf_gsm_map_disc_par, (tvbuff_t*)actx->value_ptr, 0,1,ENC_BIG_ENDIAN); if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ /* Strip off discrimination and length */ - proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE); - next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2); + proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2); dissect_bssmap(next_tvb, actx->pinfo, subtree); }else if(octet==1){ - proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE); - proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE); - next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3); + proto_tree_add_item(subtree, hf_gsm_map_dlci, (tvbuff_t*)actx->value_ptr, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, (tvbuff_t*)actx->value_ptr, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 3); call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); } break; case 3: /* gsm-BSSMAP -- Value 3 is reserved and must not be used*/ - octet = tvb_get_guint8(actx->value_ptr,0); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ - next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2); + next_tvb = tvb_new_subset_remaining((tvbuff_t*)actx->value_ptr, 2); dissect_bssmap(next_tvb, actx->pinfo, subtree); } break; /* ets-300102-1 (~Q.931 ) */ case 4: - octet = tvb_get_guint8(actx->value_ptr,0); - length = tvb_get_guint8(actx->value_ptr,1); + octet = tvb_get_guint8((tvbuff_t*)actx->value_ptr,0); + length = tvb_get_guint8((tvbuff_t*)actx->value_ptr,1); if ( octet == 4 ) - dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree); + dissect_q931_bearer_capability_ie((tvbuff_t*)actx->value_ptr, 2, length, subtree); break; default: break; @@ -16828,6 +16873,48 @@ dissect_gsm_old_PlmnContainer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int } + +static int +dissect_gsm_old_T_imsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 295 "../../asn1/gsm_map/gsm_map.cnf" + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + + + + return offset; +} + + + +static int +dissect_gsm_old_T_lmsi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 299 "../../asn1/gsm_map/gsm_map.cnf" + actx->pinfo->p2p_dir = P2P_DIR_SENT; + offset = dissect_gsm_map_LMSI(implicit_tag, tvb, offset, actx, tree, hf_index); + + + + + return offset; +} + + + +static int +dissect_gsm_old_T_serviceCentreAddressDA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 319 "../../asn1/gsm_map/gsm_map.cnf" + actx->pinfo->p2p_dir = P2P_DIR_RECV; + offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); + + + + + return offset; +} + + static const value_string gsm_old_SM_RP_DAold_vals[] = { { 0, "imsi" }, { 1, "lmsi" }, @@ -16837,9 +16924,9 @@ static const value_string gsm_old_SM_RP_DAold_vals[] = { }; static const ber_choice_t gsm_old_SM_RP_DAold_choice[] = { - { 0, &hf_gsm_old_imsi , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, - { 1, &hf_gsm_old_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI }, - { 4, &hf_gsm_old_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { 0, &hf_gsm_old_imsi_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_imsi }, + { 1, &hf_gsm_old_lmsi , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_lmsi }, + { 4, &hf_gsm_old_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_serviceCentreAddressDA }, { 5, &hf_gsm_old_noSM_RP_DA , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_old_NULL }, { 0, NULL, 0, 0, 0, NULL } }; @@ -16857,7 +16944,7 @@ dissect_gsm_old_SM_RP_DAold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_gsm_old_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 295 "../../asn1/gsm_map/gsm_map.cnf" +#line 311 "../../asn1/gsm_map/gsm_map.cnf" actx->pinfo->p2p_dir = P2P_DIR_RECV; offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -16916,7 +17003,7 @@ static const ber_sequence_t gsm_old_ForwardSM_Arg_sequence[] = { static int dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 318 "../../asn1/gsm_map/gsm_map.cnf" +#line 342 "../../asn1/gsm_map/gsm_map.cnf" /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, @@ -16925,7 +17012,7 @@ dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int if (!actx->value_ptr) return offset; - dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree); + dissector_try_uint(sms_dissector_table, 0, (tvbuff_t*)actx->value_ptr, actx->pinfo, top_tree); @@ -19166,9 +19253,9 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, opcode = 0; application_context_version = 0; if (actx->pinfo->private_data != NULL){ - p_private_tcap=actx->pinfo->private_data; + p_private_tcap = (struct tcap_private_t *)actx->pinfo->private_data; if (p_private_tcap->acv==TRUE ){ - version_ptr = strrchr(p_private_tcap->oid,'.'); + version_ptr = strrchr((const char*)p_private_tcap->oid,'.'); if (version_ptr){ application_context_version = atoi(version_ptr+1); } @@ -19208,7 +19295,7 @@ dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) /* create display subtree for the protocol */ if(parent_tree){ - item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE); + item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_gsm_map); } @@ -19873,7 +19960,7 @@ void proto_register_gsm_map(void) { NULL, HFILL }}, { &hf_gsm_map_locationnumber_nai, { "Nature of address indicator", "gsm_map.locationnumber.nai", - FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(&gsm_map_na_vals), 0x3f, + FT_UINT8, BASE_RANGE_STRING | BASE_DEC, RVALS(gsm_map_na_vals), 0x3f, NULL, HFILL }}, { &hf_gsm_map_locationnumber_inn, { "Internal Network Number indicator (INN)", "gsm_map.locationnumber.inn", @@ -20470,10 +20557,18 @@ void proto_register_gsm_map(void) { { "smDeliveryStartTime", "gsm_map.sm.smDeliveryStartTime", FT_BYTES, BASE_NONE, NULL, 0, "Time", HFILL }}, + { &hf_gsm_map_sm_imsi_01, + { "imsi", "gsm_map.sm.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_sm_lmsi_01, + { "lmsi", "gsm_map.sm.lmsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_gsm_map_sm_serviceCentreAddressDA, { "serviceCentreAddressDA", "gsm_map.sm.serviceCentreAddressDA", FT_BYTES, BASE_NONE, NULL, 0, - "AddressString", HFILL }}, + NULL, HFILL }}, { &hf_gsm_map_sm_noSM_RP_DA, { "noSM-RP-DA", "gsm_map.sm.noSM_RP_DA", FT_NONE, BASE_NONE, NULL, 0, @@ -25403,6 +25498,10 @@ void proto_register_gsm_map(void) { { "moreMessagesToSend", "gsm_old.moreMessagesToSend", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gsm_old_imsi_01, + { "imsi", "gsm_old.imsi", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_gsm_old_lmsi, { "lmsi", "gsm_old.lmsi", FT_BYTES, BASE_NONE, NULL, 0, @@ -25410,7 +25509,7 @@ void proto_register_gsm_map(void) { { &hf_gsm_old_serviceCentreAddressDA, { "serviceCentreAddressDA", "gsm_old.serviceCentreAddressDA", FT_BYTES, BASE_NONE, NULL, 0, - "AddressString", HFILL }}, + NULL, HFILL }}, { &hf_gsm_old_noSM_RP_DA, { "noSM-RP-DA", "gsm_old.noSM_RP_DA", FT_NONE, BASE_NONE, NULL, 0, |