diff options
author | Anders Broman <anders.broman@ericsson.com> | 2011-09-29 15:23:23 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2011-09-29 15:23:23 +0000 |
commit | 00077754649517487c25e97e9c662810e12c938a (patch) | |
tree | 68036ec46fdaa48299fcc3dc8a47a6ef26885c26 | |
parent | d406b805a16e28fe566ed9c1349ded1de724df91 (diff) |
Make it possible to dissect proprietarry Opcodes.
svn path=/trunk/; revision=39183
-rw-r--r-- | asn1/gsm_map/GSMMAP.asn | 24 | ||||
-rw-r--r-- | asn1/gsm_map/gsm_map.cnf | 6 | ||||
-rw-r--r-- | asn1/gsm_map/packet-gsm_map-template.c | 44 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_map.c | 180 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_map.h | 9 |
5 files changed, 180 insertions, 83 deletions
diff --git a/asn1/gsm_map/GSMMAP.asn b/asn1/gsm_map/GSMMAP.asn index 6599ec4fa9..47e7399a2a 100644 --- a/asn1/gsm_map/GSMMAP.asn +++ b/asn1/gsm_map/GSMMAP.asn @@ -137,6 +137,7 @@ GSMMAPOperationLocalvalue ::= INTEGER{ sendRoutingInfoForGprs (24), failureReport (25), noteMsPresentForGprs (26), + unAllocated (27), performHandover (28), sendEndSignal (29), performSubsequentHandover (30), @@ -145,6 +146,7 @@ GSMMAPOperationLocalvalue ::= INTEGER{ processAccessSignalling (33), forwardAccessSignalling (34), noteInternalHandover (35), + unAllocated (36), reset (37), forwardCheckSS (38), prepareGroupCall (39), @@ -161,6 +163,7 @@ GSMMAPOperationLocalvalue ::= INTEGER{ activateTraceMode (50), deactivateTraceMode (51), traceSubscriberActivity (52), + unAllocated (53), beginSubscriberActivity (54), sendIdentification (55), sendAuthenticationInfo (56), @@ -189,6 +192,7 @@ GSMMAPOperationLocalvalue ::= INTEGER{ secureTransportClass2 (79), secureTransportClass3 (80), secureTransportClass4 (81), + unAllocated (82), provideSubscriberLocation (83), sendGroupCallInfo (84), sendRoutingInfoForLCS (85), @@ -196,6 +200,26 @@ GSMMAPOperationLocalvalue ::= INTEGER{ ist-Alert (87), ist-Command (88), noteMM-Event (89), + unAllocated (90), + unAllocated (91), + unAllocated (92), + unAllocated (93), + unAllocated (94), + unAllocated (95), + unAllocated (96), + unAllocated (97), + unAllocated (98), + unAllocated (99), + unAllocated (100), + unAllocated (101), + unAllocated (102), + unAllocated (103), + unAllocated (104), + unAllocated (105), + unAllocated (106), + unAllocated (107), + unAllocated (108), + unAllocated (109), lcs-PeriodicLocationCancellation (109), lcs-LocationUpdate (110), lcs-PeriodicLocationRequest (111), diff --git a/asn1/gsm_map/gsm_map.cnf b/asn1/gsm_map/gsm_map.cnf index 35dac7fe00..dfc1b3a6cd 100644 --- a/asn1/gsm_map/gsm_map.cnf +++ b/asn1/gsm_map/gsm_map.cnf @@ -52,6 +52,9 @@ SS-InfoList LCS-ClientID ISDN-AddressString +#.USE_VALS_EXT +GSMMAPOperationLocalvalue + #.EXPORTS AddressString Add-GeographicalInformation @@ -111,6 +114,7 @@ LocationMethod LocationType LSAIdentity MS-Classmark2 +NetworkResource NewPassword NotificationToMSUser O-CSI @@ -122,6 +126,8 @@ QoS-Subscribed RAIdentity RegisterCC-EntryRes RegisterSS-Arg +SM-RP-DA +SM-RP-OA SubscriberState SecurityHeader ServiceKey diff --git a/asn1/gsm_map/packet-gsm_map-template.c b/asn1/gsm_map/packet-gsm_map-template.c index 5eeb817ed2..79963bbaa5 100644 --- a/asn1/gsm_map/packet-gsm_map-template.c +++ b/asn1/gsm_map/packet-gsm_map-template.c @@ -175,7 +175,9 @@ static dissector_handle_t data_handle; static dissector_handle_t ranap_handle; static dissector_handle_t dtap_handle; static dissector_handle_t map_handle; - +static dissector_table_t map_prop_arg_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_res_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_err_opcode_table; /* prorietary operation codes */ /* Preferenc settings default */ #define MAX_SSN 254 static range_t *global_ssn_range; @@ -838,11 +840,11 @@ const gchar* gsm_map_opr_code(guint32 val) { case 46: /*mo-forwardSM*/ /* FALLTHRU */ if (application_context_version < 3) { - return val_to_str(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP (%u)"); + return val_to_str_const(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP opcode"); } /* Else use the default map operation translation */ default: - return val_to_str(val, gsm_old_GSMMAPOperationLocalvalue_vals, "Unknown GSM-MAP opcode (%u)"); + return val_to_str_ext_const(val, &gsm_old_GSMMAPOperationLocalvalue_vals_ext, "Unknown GSM-MAP opcode"); break; } } @@ -1264,9 +1266,13 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ case 126: /*SS-protocol explicitCT no Argument*/ break; default: - cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob"); - proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); - expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + if(!dissector_try_uint(map_prop_arg_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){ + cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + } + offset+= tvb_length_remaining(tvb,offset); + break; } return offset; } @@ -1568,9 +1574,13 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, break; default: - cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob"); - proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); - expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + if(!dissector_try_uint(map_prop_res_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){ + cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + } + offset+= tvb_length_remaining(tvb,offset); + break; } return offset; } @@ -1729,9 +1739,12 @@ static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, offset=dissect_gsm_map_er_InformationNotAvailableParam(FALSE, tvb, offset, actx, tree, -1); break; default: - cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob"); - proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); - expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",errorCode); + if(!dissector_try_uint(map_prop_err_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){ + cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",errorCode); + } + offset+= tvb_length_remaining(tvb,offset); break; } return offset; @@ -1777,7 +1790,7 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, /* Get the length and add 2 */ gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2; - col_add_str(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)")); + col_add_str(actx->pinfo->cinfo, COL_INFO, val_to_str_const(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP Component")); col_append_fstr(actx->pinfo->cinfo, COL_INFO, " "); offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU); /* @@ -1800,7 +1813,6 @@ dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); - col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP"); top_tree = parent_tree; @@ -2512,6 +2524,10 @@ void proto_register_gsm_map(void) { "GSM SMS TPDU", FT_UINT8, BASE_DEC); + map_prop_arg_opcode_table = register_dissector_table("gsm_map.prop.arg.opcode", "Proprietary Opcodes", FT_UINT8, BASE_DEC); + map_prop_res_opcode_table = register_dissector_table("gsm_map.prop.res.opcode", "Proprietary Opcodes", FT_UINT8, BASE_DEC); + map_prop_err_opcode_table = register_dissector_table("gsm_map.prop.err.opcode", "Proprietary Opcodes", FT_UINT8, BASE_DEC); + gsm_map_tap = register_tap("gsm_map"); #include "packet-gsm_map-dis-tab.c" */ diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c index 542eebf78c..426a45807d 100644 --- a/epan/dissectors/packet-gsm_map.c +++ b/epan/dissectors/packet-gsm_map.c @@ -2189,7 +2189,9 @@ static dissector_handle_t data_handle; static dissector_handle_t ranap_handle; static dissector_handle_t dtap_handle; static dissector_handle_t map_handle; - +static dissector_table_t map_prop_arg_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_res_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_err_opcode_table; /* prorietary operation codes */ /* Preferenc settings default */ #define MAX_SSN 254 static range_t *global_ssn_range; @@ -2851,7 +2853,7 @@ dissect_gsm_map_T_extId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_gsm_map_T_extType(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 188 "../../asn1/gsm_map/gsm_map.cnf" +#line 194 "../../asn1/gsm_map/gsm_map.cnf" proto_tree_add_text(tree, tvb, offset, -1, "Extension Data"); if (obj_id){ offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree); @@ -2966,7 +2968,7 @@ dissect_gsm_map_SLR_ArgExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *t static int dissect_gsm_map_TBCD_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 214 "../../asn1/gsm_map/gsm_map.cnf" +#line 220 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; const char *digit_str; @@ -2999,7 +3001,7 @@ dissect_gsm_map_DiameterIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i int dissect_gsm_map_AddressString(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 201 "../../asn1/gsm_map/gsm_map.cnf" +#line 207 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -3069,7 +3071,7 @@ 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 295 "../../asn1/gsm_map/gsm_map.cnf" +#line 301 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, @@ -3093,7 +3095,7 @@ static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = { static 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 717 "../../asn1/gsm_map/gsm_map.cnf" +#line 723 "../../asn1/gsm_map/gsm_map.cnf" /* -- Information about the internal structure is given in -- clause 7.6.9. @@ -3232,7 +3234,7 @@ dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb static int dissect_gsm_map_LongSignalInfo(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 233 "../../asn1/gsm_map/gsm_map.cnf" +#line 239 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; guint8 octet; @@ -3313,7 +3315,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 541 "../../asn1/gsm_map/gsm_map.cnf" +#line 547 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; guint8 octet; @@ -3454,7 +3456,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 798 "../../asn1/gsm_map/gsm_map.cnf" +#line 804 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -3474,7 +3476,7 @@ dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o } -static const value_string gsm_map_NetworkResource_vals[] = { +const value_string gsm_map_NetworkResource_vals[] = { { 0, "plmn" }, { 1, "hlr" }, { 2, "vlr" }, @@ -3487,7 +3489,7 @@ static const value_string gsm_map_NetworkResource_vals[] = { }; -static int +int dissect_gsm_map_NetworkResource(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_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -3721,7 +3723,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 577 "../../asn1/gsm_map/gsm_map.cnf" +#line 583 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -3847,7 +3849,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 393 "../../asn1/gsm_map/gsm_map.cnf" +#line 399 "../../asn1/gsm_map/gsm_map.cnf" /* Note Ext-SS-Status can have more than one byte */ tvbuff_t *parameter_tvb; @@ -3980,7 +3982,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 373 "../../asn1/gsm_map/gsm_map.cnf" +#line 379 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; guint8 octet; @@ -4014,7 +4016,7 @@ 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 484 "../../asn1/gsm_map/gsm_map.cnf" +#line 490 "../../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); @@ -4333,7 +4335,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 416 "../../asn1/gsm_map/gsm_map.cnf" +#line 422 "../../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 @@ -4359,7 +4361,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 431 "../../asn1/gsm_map/gsm_map.cnf" +#line 437 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; int length; @@ -4846,7 +4848,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 302 "../../asn1/gsm_map/gsm_map.cnf" +#line 308 "../../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); @@ -5711,7 +5713,7 @@ dissect_gsm_map_sm_RoutingInfoForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb } -static const value_string gsm_map_sm_SM_RP_DA_vals[] = { +const value_string gsm_map_sm_SM_RP_DA_vals[] = { { 0, "imsi" }, { 1, "lmsi" }, { 4, "serviceCentreAddressDA" }, @@ -5727,7 +5729,7 @@ static const ber_choice_t gsm_map_sm_SM_RP_DA_choice[] = { { 0, NULL, 0, 0, 0, NULL } }; -static int +int dissect_gsm_map_sm_SM_RP_DA(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_ber_choice(actx, tree, tvb, offset, gsm_map_sm_SM_RP_DA_choice, hf_index, ett_gsm_map_sm_SM_RP_DA, @@ -5740,7 +5742,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 291 "../../asn1/gsm_map/gsm_map.cnf" +#line 297 "../../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); @@ -5754,7 +5756,7 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV; static int dissect_gsm_map_sm_T_serviceCentreAddressOA(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 283 "../../asn1/gsm_map/gsm_map.cnf" +#line 289 "../../asn1/gsm_map/gsm_map.cnf" actx->pinfo->p2p_dir = P2P_DIR_SENT; offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -5765,7 +5767,7 @@ dissect_gsm_map_sm_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t } -static const value_string gsm_map_sm_SM_RP_OA_vals[] = { +const value_string gsm_map_sm_SM_RP_OA_vals[] = { { 2, "msisdn" }, { 4, "serviceCentreAddressOA" }, { 5, "noSM-RP-OA" }, @@ -5779,7 +5781,7 @@ static const ber_choice_t gsm_map_sm_SM_RP_OA_choice[] = { { 0, NULL, 0, 0, 0, NULL } }; -static int +int dissect_gsm_map_sm_SM_RP_OA(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_ber_choice(actx, tree, tvb, offset, gsm_map_sm_SM_RP_OA_choice, hf_index, ett_gsm_map_sm_SM_RP_OA, @@ -5800,7 +5802,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 319 "../../asn1/gsm_map/gsm_map.cnf" +#line 325 "../../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, @@ -5825,7 +5827,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 328 "../../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, @@ -5853,7 +5855,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 337 "../../asn1/gsm_map/gsm_map.cnf" +#line 343 "../../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, @@ -5878,7 +5880,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 346 "../../asn1/gsm_map/gsm_map.cnf" +#line 352 "../../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, @@ -6061,7 +6063,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 355 "../../asn1/gsm_map/gsm_map.cnf" +#line 361 "../../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, @@ -6101,7 +6103,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 364 "../../asn1/gsm_map/gsm_map.cnf" +#line 370 "../../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, @@ -7539,7 +7541,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 832 "../../asn1/gsm_map/gsm_map.cnf" +#line 838 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; int length, name_len, tmp; @@ -7746,7 +7748,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 613 "../../asn1/gsm_map/gsm_map.cnf" +#line 619 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; asn1_ctx_t asn1_ctx; @@ -7769,7 +7771,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 625 "../../asn1/gsm_map/gsm_map.cnf" +#line 631 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; asn1_ctx_t asn1_ctx; @@ -7854,7 +7856,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 589 "../../asn1/gsm_map/gsm_map.cnf" +#line 595 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -7925,7 +7927,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 601 "../../asn1/gsm_map/gsm_map.cnf" +#line 607 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; asn1_ctx_t asn1_ctx; @@ -8744,7 +8746,7 @@ 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 490 "../../asn1/gsm_map/gsm_map.cnf" +#line 496 "../../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); @@ -9930,7 +9932,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 498 "../../asn1/gsm_map/gsm_map.cnf" +#line 504 "../../asn1/gsm_map/gsm_map.cnf" guint8 pdp_type_org; tvbuff_t *parameter_tvb; @@ -9963,7 +9965,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 520 "../../asn1/gsm_map/gsm_map.cnf" +#line 526 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; @@ -9985,7 +9987,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 531 "../../asn1/gsm_map/gsm_map.cnf" +#line 537 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; @@ -11582,7 +11584,7 @@ dissect_gsm_map_ms_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int dissect_gsm_map_ms_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 565 "../../asn1/gsm_map/gsm_map.cnf" +#line 571 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -13962,7 +13964,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 810 "../../asn1/gsm_map/gsm_map.cnf" +#line 816 "../../asn1/gsm_map/gsm_map.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -14838,6 +14840,7 @@ static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { { 24, "sendRoutingInfoForGprs" }, { 25, "failureReport" }, { 26, "noteMsPresentForGprs" }, + { 27, "unAllocated" }, { 28, "performHandover" }, { 29, "sendEndSignal" }, { 30, "performSubsequentHandover" }, @@ -14846,6 +14849,7 @@ static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { { 33, "processAccessSignalling" }, { 34, "forwardAccessSignalling" }, { 35, "noteInternalHandover" }, + { 36, "unAllocated" }, { 37, "reset" }, { 38, "forwardCheckSS" }, { 39, "prepareGroupCall" }, @@ -14862,6 +14866,7 @@ static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { { 50, "activateTraceMode" }, { 51, "deactivateTraceMode" }, { 52, "traceSubscriberActivity" }, + { 53, "unAllocated" }, { 54, "beginSubscriberActivity" }, { 55, "sendIdentification" }, { 56, "sendAuthenticationInfo" }, @@ -14890,6 +14895,7 @@ static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { { 79, "secureTransportClass2" }, { 80, "secureTransportClass3" }, { 81, "secureTransportClass4" }, + { 82, "unAllocated" }, { 83, "provideSubscriberLocation" }, { 84, "sendGroupCallInfo" }, { 85, "sendRoutingInfoForLCS" }, @@ -14897,6 +14903,26 @@ static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { { 87, "ist-Alert" }, { 88, "ist-Command" }, { 89, "noteMM-Event" }, + { 90, "unAllocated" }, + { 91, "unAllocated" }, + { 92, "unAllocated" }, + { 93, "unAllocated" }, + { 94, "unAllocated" }, + { 95, "unAllocated" }, + { 96, "unAllocated" }, + { 97, "unAllocated" }, + { 98, "unAllocated" }, + { 99, "unAllocated" }, + { 100, "unAllocated" }, + { 101, "unAllocated" }, + { 102, "unAllocated" }, + { 103, "unAllocated" }, + { 104, "unAllocated" }, + { 105, "unAllocated" }, + { 106, "unAllocated" }, + { 107, "unAllocated" }, + { 108, "unAllocated" }, + { 109, "unAllocated" }, { 109, "lcs-PeriodicLocationCancellation" }, { 110, "lcs-LocationUpdate" }, { 111, "lcs-PeriodicLocationRequest" }, @@ -14918,10 +14944,12 @@ static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = { { 0, NULL } }; +static value_string_ext gsm_old_GSMMAPOperationLocalvalue_vals_ext = VALUE_STRING_EXT_INIT(gsm_old_GSMMAPOperationLocalvalue_vals); + static int dissect_gsm_old_GSMMAPOperationLocalvalue(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 174 "../../asn1/gsm_map/gsm_map.cnf" +#line 180 "../../asn1/gsm_map/gsm_map.cnf" offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, &opcode); @@ -14978,7 +15006,7 @@ dissect_gsm_old_MAP_OPERATION(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int dissect_gsm_old_InvokeParameter(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 161 "../../asn1/gsm_map/gsm_map.cnf" +#line 167 "../../asn1/gsm_map/gsm_map.cnf" offset = dissect_invokeData(tree, tvb, offset, actx); @@ -15007,7 +15035,7 @@ dissect_gsm_old_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_gsm_old_ReturnResultParameter(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 164 "../../asn1/gsm_map/gsm_map.cnf" +#line 170 "../../asn1/gsm_map/gsm_map.cnf" offset = dissect_returnResultData(tree, tvb, offset, actx); @@ -15154,7 +15182,7 @@ dissect_gsm_old_MAP_ERROR(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs static int dissect_gsm_old_ReturnErrorParameter(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 167 "../../asn1/gsm_map/gsm_map.cnf" +#line 173 "../../asn1/gsm_map/gsm_map.cnf" offset = dissect_returnErrorData(tree, tvb, offset, actx); @@ -15363,7 +15391,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 638 "../../asn1/gsm_map/gsm_map.cnf" +#line 644 "../../asn1/gsm_map/gsm_map.cnf" guint8 octet; guint8 length; tvbuff_t *next_tvb; @@ -15973,7 +16001,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 287 "../../asn1/gsm_map/gsm_map.cnf" +#line 293 "../../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); @@ -15987,7 +16015,7 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV; static int dissect_gsm_old_T_serviceCentreAddressOA(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 279 "../../asn1/gsm_map/gsm_map.cnf" +#line 285 "../../asn1/gsm_map/gsm_map.cnf" actx->pinfo->p2p_dir = P2P_DIR_SENT; offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -16032,7 +16060,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 310 "../../asn1/gsm_map/gsm_map.cnf" +#line 316 "../../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, @@ -16864,7 +16892,7 @@ dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(gboolean implicit_tag _U_, tv /*--- End of included file: packet-gsm_map-fn.c ---*/ -#line 763 "../../asn1/gsm_map/packet-gsm_map-template.c" +#line 765 "../../asn1/gsm_map/packet-gsm_map-template.c" /* Specific translation for MAP V3 */ const value_string gsm_map_V1V2_opr_code_strings[] = { @@ -17076,7 +17104,7 @@ const value_string gsm_map_opr_code_strings[] = { { 109, "lcs_PeriodicLocationCancellation" }, /*--- End of included file: packet-gsm_map-table.c ---*/ -#line 774 "../../asn1/gsm_map/packet-gsm_map-template.c" +#line 776 "../../asn1/gsm_map/packet-gsm_map-template.c" { 0, NULL } }; static const value_string gsm_map_err_code_string_vals[] = { @@ -17281,7 +17309,7 @@ static const value_string gsm_map_err_code_string_vals[] = { { 109, "lcs_PeriodicLocationCancellation" }, /*--- End of included file: packet-gsm_map-table.c ---*/ -#line 778 "../../asn1/gsm_map/packet-gsm_map-template.c" +#line 780 "../../asn1/gsm_map/packet-gsm_map-template.c" { 0, NULL } }; static const true_false_string gsm_map_extension_value = { @@ -17345,11 +17373,11 @@ const gchar* gsm_map_opr_code(guint32 val) { case 46: /*mo-forwardSM*/ /* FALLTHRU */ if (application_context_version < 3) { - return val_to_str(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP (%u)"); + return val_to_str_const(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP opcode"); } /* Else use the default map operation translation */ default: - return val_to_str(val, gsm_old_GSMMAPOperationLocalvalue_vals, "Unknown GSM-MAP opcode (%u)"); + return val_to_str_ext_const(val, &gsm_old_GSMMAPOperationLocalvalue_vals_ext, "Unknown GSM-MAP opcode"); break; } } @@ -17771,9 +17799,13 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ case 126: /*SS-protocol explicitCT no Argument*/ break; default: - cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob"); - proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); - expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + if(!dissector_try_uint(map_prop_arg_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){ + cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + } + offset+= tvb_length_remaining(tvb,offset); + break; } return offset; } @@ -18075,9 +18107,13 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, break; default: - cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob"); - proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); - expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + if(!dissector_try_uint(map_prop_res_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){ + cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode); + } + offset+= tvb_length_remaining(tvb,offset); + break; } return offset; } @@ -18236,9 +18272,12 @@ static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, offset=dissect_gsm_map_er_InformationNotAvailableParam(FALSE, tvb, offset, actx, tree, -1); break; default: - cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob"); - proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); - expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",errorCode); + if(!dissector_try_uint(map_prop_err_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree)){ + cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob"); + proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN); + expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",errorCode); + } + offset+= tvb_length_remaining(tvb,offset); break; } return offset; @@ -18284,7 +18323,7 @@ dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, /* Get the length and add 2 */ gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2; - col_add_str(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)")); + col_add_str(actx->pinfo->cinfo, COL_INFO, val_to_str_const(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP Component")); col_append_fstr(actx->pinfo->cinfo, COL_INFO, " "); offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU); /* @@ -18307,7 +18346,6 @@ dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); - col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP"); top_tree = parent_tree; @@ -24003,7 +24041,7 @@ void proto_register_gsm_map(void) { NULL, HFILL }}, { &hf_gsm_old_localValue, { "localValue", "gsm_old.localValue", - FT_INT32, BASE_DEC, VALS(gsm_old_GSMMAPOperationLocalvalue_vals), 0, + FT_INT32, BASE_DEC, &gsm_old_GSMMAPOperationLocalvalue_vals_ext, 0, "OperationLocalvalue", HFILL }}, { &hf_gsm_old_globalValue, { "globalValue", "gsm_old.globalValue", @@ -24538,7 +24576,7 @@ void proto_register_gsm_map(void) { "LCS_QoS", HFILL }}, /*--- End of included file: packet-gsm_map-hfarr.c ---*/ -#line 2471 "../../asn1/gsm_map/packet-gsm_map-template.c" +#line 2483 "../../asn1/gsm_map/packet-gsm_map-template.c" }; /* List of subtrees */ @@ -25143,7 +25181,7 @@ void proto_register_gsm_map(void) { /*--- End of included file: packet-gsm_map-ettarr.c ---*/ -#line 2500 "../../asn1/gsm_map/packet-gsm_map-template.c" +#line 2512 "../../asn1/gsm_map/packet-gsm_map-template.c" }; /* Register protocol */ @@ -25159,6 +25197,10 @@ void proto_register_gsm_map(void) { "GSM SMS TPDU", FT_UINT8, BASE_DEC); + map_prop_arg_opcode_table = register_dissector_table("gsm_map.prop.arg.opcode", "Proprietary Opcodes", FT_UINT8, BASE_DEC); + map_prop_res_opcode_table = register_dissector_table("gsm_map.prop.res.opcode", "Proprietary Opcodes", FT_UINT8, BASE_DEC); + map_prop_err_opcode_table = register_dissector_table("gsm_map.prop.err.opcode", "Proprietary Opcodes", FT_UINT8, BASE_DEC); + gsm_map_tap = register_tap("gsm_map"); @@ -25219,7 +25261,7 @@ void proto_register_gsm_map(void) { /*--- End of included file: packet-gsm_map-dis-tab.c ---*/ -#line 2518 "../../asn1/gsm_map/packet-gsm_map-template.c" +#line 2534 "../../asn1/gsm_map/packet-gsm_map-template.c" oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" ); oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2"); /*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" ); diff --git a/epan/dissectors/packet-gsm_map.h b/epan/dissectors/packet-gsm_map.h index d66d65cb55..71327e8f26 100644 --- a/epan/dissectors/packet-gsm_map.h +++ b/epan/dissectors/packet-gsm_map.h @@ -76,6 +76,7 @@ int dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb /* --- Module MAP-CommonDataTypes --- --- --- */ +extern const value_string gsm_map_NetworkResource_vals[]; extern const value_string gsm_map_LCSClientInternalID_vals[]; extern const value_string gsm_map_LCSServiceTypeID_vals[]; extern const value_string gsm_map_Ext_BasicServiceCode_vals[]; @@ -87,6 +88,7 @@ int dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in int dissect_gsm_map_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_); int dissect_gsm_map_IMEI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); 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_); +int dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_gsm_map_LCSClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_gsm_map_LCSClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_gsm_map_LCSServiceTypeID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -121,6 +123,13 @@ extern const value_string gsm_map_er_PositionMethodFailure_Diagnostic_vals[]; int dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_gsm_map_er_PositionMethodFailure_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +/* --- Module MAP-SM-DataTypes --- --- --- */ + +extern const value_string gsm_map_sm_SM_RP_DA_vals[]; +extern const value_string gsm_map_sm_SM_RP_OA_vals[]; +int dissect_gsm_map_sm_SM_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +int dissect_gsm_map_sm_SM_RP_OA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* --- Module MAP-MS-DataTypes --- --- --- */ extern const value_string gsm_map_ms_DefaultGPRS_Handling_vals[]; |