From ae932282121e01ee468518579b9f52841ce63ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Bj=C3=B8rlykke?= Date: Thu, 17 Apr 2008 07:47:02 +0000 Subject: [PATCH] From Vasil Velichkov (bug 2471): Add ASN definition of MAP BeginSubscriberActivity operation. Add call to dissect function in packet template. svn path=/trunk/; revision=25094 --- asn1/gsmmap/SS-DataTypes.asn | 8 +++++ asn1/gsmmap/SS-Operations.asn | 7 ++++- asn1/gsmmap/packet-gsmmap-template.c | 4 ++- epan/dissectors/packet-gsm_map.c | 45 +++++++++++++++++++++++++--- 4 files changed, 58 insertions(+), 6 deletions(-) diff --git a/asn1/gsmmap/SS-DataTypes.asn b/asn1/gsmmap/SS-DataTypes.asn index 6ff5b79ef9..03c8198dc0 100644 --- a/asn1/gsmmap/SS-DataTypes.asn +++ b/asn1/gsmmap/SS-DataTypes.asn @@ -38,6 +38,7 @@ maxSignalInfoLength, ISDN-AddressString, ISDN-SubaddressString, AlertingPattern, +IMSI, LCSClientExternalID, AddressString, LCSServiceTypeID, @@ -90,6 +91,13 @@ NotifySS-Arg ::= SEQUENCE{ alertingPattern [22] AlertingPattern OPTIONAL, multicall-Indicator [23] Multicall-Indicator OPTIONAL} + +BeginSubscriberActivityArg ::= SEQUENCE { + imsi IMSI, + originatingEntityNumber ISDN-AddressString, + msisdn [PRIVATE 28] AddressString OPTIONAL, + ... } + -- The nameIndicator is defined because of CNAP. Multicall-Indicator ::= ENUMERATED { diff --git a/asn1/gsmmap/SS-Operations.asn b/asn1/gsmmap/SS-Operations.asn index a7921c99f2..0150c2cdae 100644 --- a/asn1/gsmmap/SS-Operations.asn +++ b/asn1/gsmmap/SS-Operations.asn @@ -14,7 +14,7 @@ EXPORTS -- exports operations -- operations defined in this specification -processUnstructuredSS-Data, notifySS, forwardChargeAdvice, forwardCUG-Info, buildMPTY, holdMPTY, retrieveMPTY, splitMPTY, explicitCT, accessRegisterCCEntry, callDeflection, userUserService, +processUnstructuredSS-Data, beginSubscriberActivity, notifySS, forwardChargeAdvice, forwardCUG-Info, buildMPTY, holdMPTY, retrieveMPTY, splitMPTY, explicitCT, accessRegisterCCEntry, callDeflection, userUserService, lcs-LocationNotification, lcs-MOLR, lcs-AreaEventRequest, lcs-AreaEventReport, lcs-AreaEventCancellation, lcs-PeriodicLocationRequest, lcs-LocationUpdate, lcs-PeriodicLocationCancellation; IMPORTS @@ -32,6 +32,7 @@ Remote-Operations-Information-Objects { -- imports SS-data types NotifySS-Arg, +BeginSubscriberActivityArg, ForwardChargeAdviceArg, ForwardCUG-InfoArg, SS-UserData, @@ -87,6 +88,10 @@ processUnstructuredSS-Data OPERATION ::= { -- Timer T(PUSSD)= 15s to 30s unexpectedDataValue} CODE local:19 } +beginSubscriberActivity OPERATION ::= { + ARGUMENT BeginSubscriberActivityArg + CODE local:54 } + notifySS OPERATION ::= { ARGUMENT NotifySS-Arg CODE local:16 } diff --git a/asn1/gsmmap/packet-gsmmap-template.c b/asn1/gsmmap/packet-gsmmap-template.c index 985bef405f..781054e5cb 100644 --- a/asn1/gsmmap/packet-gsmmap-template.c +++ b/asn1/gsmmap/packet-gsmmap-template.c @@ -1201,7 +1201,9 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ break; /* reserved traceSubscriberActivity (52) */ /* undefined 53 */ - /* reserved beginSubscriberActivity (54) */ + case 54: /*beginSubscriberActivity*/ + offset=dissect_gsm_ss_BeginSubscriberActivityArg(FALSE, tvb, offset, actx, tree, -1); + break; case 55: /*sendIdentification*/ offset=dissect_mc_message(tvb, offset, actx, tree, FALSE, dissect_gsm_map_TMSI, hf_gsm_map_tmsi, diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c index c16e83e205..f14518aa4c 100644 --- a/epan/dissectors/packet-gsm_map.c +++ b/epan/dissectors/packet-gsm_map.c @@ -1327,6 +1327,9 @@ static int hf_gsm_ss_nameIndicator = -1; /* NameIndicator */ static int hf_gsm_ss_ccbs_Feature = -1; /* CCBS_Feature */ static int hf_gsm_ss_alertingPattern = -1; /* AlertingPattern */ static int hf_gsm_ss_multicall_Indicator = -1; /* Multicall_Indicator */ +static int hf_gsm_ss_imsi = -1; /* IMSI */ +static int hf_gsm_ss_originatingEntityNumber = -1; /* ISDN_AddressString */ +static int hf_gsm_ss_msisdn = -1; /* AddressString */ static int hf_gsm_ss_chargingInformation = -1; /* ChargingInformation */ static int hf_gsm_ss_e1 = -1; /* E1 */ static int hf_gsm_ss_e2 = -1; /* E2 */ @@ -1947,6 +1950,7 @@ static gint ett_gsm_old_SendRoutingInfoResV2 = -1; /* --- Module SS-DataTypes --- --- --- */ static gint ett_gsm_ss_NotifySS_Arg = -1; +static gint ett_gsm_ss_BeginSubscriberActivityArg = -1; static gint ett_gsm_ss_ForwardChargeAdviceArg = -1; static gint ett_gsm_ss_ChargingInformation = -1; static gint ett_gsm_ss_ForwardCUG_InfoArg = -1; @@ -15094,6 +15098,22 @@ dissect_gsm_ss_NotifySS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of } +static const ber_sequence_t gsm_ss_BeginSubscriberActivityArg_sequence[] = { + { &hf_gsm_ss_imsi , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI }, + { &hf_gsm_ss_originatingEntityNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString }, + { &hf_gsm_ss_msisdn , BER_CLASS_PRI, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_ss_BeginSubscriberActivityArg(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_sequence(implicit_tag, actx, tree, tvb, offset, + gsm_ss_BeginSubscriberActivityArg_sequence, hf_index, ett_gsm_ss_BeginSubscriberActivityArg); + + return offset; +} + + static int dissect_gsm_ss_E1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -15798,6 +15818,7 @@ const value_string gsm_map_opr_code_strings[] = { /* --- Module SS-Operations --- --- --- */ { 19, "processUnstructuredSS_Data" }, + { 54, "beginSubscriberActivity" }, { 16, "notifySS" }, { 125, "forwardChargeAdvice" }, { 120, "forwardCUG_Info" }, @@ -16003,6 +16024,7 @@ static const value_string gsm_map_err_code_string_vals[] = { /* --- Module SS-Operations --- --- --- */ { 19, "processUnstructuredSS_Data" }, + { 54, "beginSubscriberActivity" }, { 16, "notifySS" }, { 125, "forwardChargeAdvice" }, { 120, "forwardCUG_Info" }, @@ -16343,7 +16365,9 @@ static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ break; /* reserved traceSubscriberActivity (52) */ /* undefined 53 */ - /* reserved beginSubscriberActivity (54) */ + case 54: /*beginSubscriberActivity*/ + offset=dissect_gsm_ss_BeginSubscriberActivityArg(FALSE, tvb, offset, actx, tree, -1); + break; case 55: /*sendIdentification*/ offset=dissect_mc_message(tvb, offset, actx, tree, FALSE, dissect_gsm_map_TMSI, hf_gsm_map_tmsi, @@ -22258,6 +22282,18 @@ void proto_register_gsm_map(void) { { "multicall-Indicator", "gsm_ss.multicall_Indicator", FT_UINT32, BASE_DEC, VALS(gsm_ss_Multicall_Indicator_vals), 0, "gsm_ss.Multicall_Indicator", HFILL }}, + { &hf_gsm_ss_imsi, + { "imsi", "gsm_ss.imsi", + FT_BYTES, BASE_HEX, NULL, 0, + "gsm_map.IMSI", HFILL }}, + { &hf_gsm_ss_originatingEntityNumber, + { "originatingEntityNumber", "gsm_ss.originatingEntityNumber", + FT_BYTES, BASE_HEX, NULL, 0, + "gsm_map.ISDN_AddressString", HFILL }}, + { &hf_gsm_ss_msisdn, + { "msisdn", "gsm_ss.msisdn", + FT_BYTES, BASE_HEX, NULL, 0, + "gsm_map.AddressString", HFILL }}, { &hf_gsm_ss_chargingInformation, { "chargingInformation", "gsm_ss.chargingInformation", FT_NONE, BASE_NONE, NULL, 0, @@ -22504,7 +22540,7 @@ void proto_register_gsm_map(void) { "gsm_map_lcs.LCS_QoS", HFILL }}, /*--- End of included file: packet-gsm_map-hfarr.c ---*/ -#line 2623 "packet-gsmmap-template.c" +#line 2625 "packet-gsmmap-template.c" }; /* List of subtrees */ @@ -23063,6 +23099,7 @@ void proto_register_gsm_map(void) { /* --- Module SS-DataTypes --- --- --- */ &ett_gsm_ss_NotifySS_Arg, + &ett_gsm_ss_BeginSubscriberActivityArg, &ett_gsm_ss_ForwardChargeAdviceArg, &ett_gsm_ss_ChargingInformation, &ett_gsm_ss_ForwardCUG_InfoArg, @@ -23092,7 +23129,7 @@ void proto_register_gsm_map(void) { /*--- End of included file: packet-gsm_map-ettarr.c ---*/ -#line 2651 "packet-gsmmap-template.c" +#line 2653 "packet-gsmmap-template.c" }; /* Register protocol */ @@ -23168,7 +23205,7 @@ void proto_register_gsm_map(void) { /*--- End of included file: packet-gsm_map-dis-tab.c ---*/ -#line 2669 "packet-gsmmap-template.c" +#line 2671 "packet-gsmmap-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" );