diff options
author | Anders Broman <anders.broman@ericsson.com> | 2005-02-11 22:43:24 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2005-02-11 22:43:24 +0000 |
commit | 4e77084bf9757fa2962126ac3931cb2977121b00 (patch) | |
tree | 3d81b7d6a24c798cf7f877cc14ce0b4ec784ee6e /asn1 | |
parent | f152359ac3725c419f80b2ff239cdbd2f283df3f (diff) |
Dissect Return error and some more operationcodes.
svn path=/trunk/; revision=13383
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/gsmmap/GSMMAP.asn | 124 | ||||
-rw-r--r-- | asn1/gsmmap/packet-gsm_map-template.c | 130 |
2 files changed, 227 insertions, 27 deletions
diff --git a/asn1/gsmmap/GSMMAP.asn b/asn1/gsmmap/GSMMAP.asn index 645338e304..bfcabce88d 100644 --- a/asn1/gsmmap/GSMMAP.asn +++ b/asn1/gsmmap/GSMMAP.asn @@ -27,7 +27,9 @@ SignalInfo2 ::= OCTET STRING ( SIZE (1 .. 2560 ) ) SupportedCamelPhases ::= BIT STRING { phase1 (0 ), - phase2 (1 )} + phase2 (1 ), + phase3 (2 ), + phase4 (3 )} SignalInfo ::= OCTET STRING ( SIZE( 1 .. 200 ) ) @@ -35,7 +37,28 @@ Vlr-Capability ::= SEQUENCE { supportedCamelPhases [0] IMPLICIT SupportedCamelPhases OPTIONAL, extensionContainer ExtensionContainer OPTIONAL, ... , - solsaSupportIndicator [2] IMPLICIT NULL OPTIONAL} + solsaSupportIndicator [2] IMPLICIT NULL OPTIONAL, + istSupportIndicator [1] IMPLICIT ENUMERATED { + basicISTSupported (0 ), + istCommandSupported (1 ), + ... } OPTIONAL, + superChargerSupportedInServingNetworkEntity [3] CHOICE { + sendSubscriberData [0] IMPLICIT NULL, + subscriberDataStored [1] IMPLICIT OCTET STRING ( SIZE (1 .. 6 ) )} OPTIONAL, + longFTN-Supported [4] IMPLICIT NULL OPTIONAL, + supportedLCS-CapabilitySets [5] IMPLICIT BIT STRING { + lcsCapabilitySet1 (0 ), + lcsCapabilitySet2 (1 ), + lcsCapabilitySet3 (2 ), + lcsCapabilitySet4 (3 )} ( SIZE (2 .. 16 ) ) OPTIONAL, + offeredCamel4CSIs [6] IMPLICIT BIT STRING { + ocsi (0 ), + dcsi (1 ), + vtcsi (2 ), + tcsi (3 ), + mtsmscsi (4 ), + mgcsi (5 ), + psienhancements (6 )} ( SIZE (7 .. 16 ) ) OPTIONAL} Imsi ::= OCTET STRING Lmsi ::= OCTET STRING ( SIZE( 4 ) ) @@ -48,7 +71,16 @@ UpdateLocationArg ::= SEQUENCE { lmsi [10] IMPLICIT Lmsi OPTIONAL, extensionContainer ExtensionContainer OPTIONAL, ... , - vlr-Capability [6] IMPLICIT Vlr-Capability OPTIONAL} + vlr-Capability [6] IMPLICIT Vlr-Capability OPTIONAL, + + informPreviousNetworkEntity [11] IMPLICIT NULL OPTIONAL, + cs-LCS-NotSupportedByUE [12] IMPLICIT NULL OPTIONAL, + v-gmlc-Address [2] IMPLICIT OCTET STRING ( SIZE (5 .. 17 ) ) OPTIONAL, + add-info [13] IMPLICIT SEQUENCE { + imeisv [0] IMPLICIT OCTET STRING ( SIZE (8 ) ), + skipSubscriberDataUpdate [1] IMPLICIT NULL OPTIONAL, + ... } OPTIONAL} + -- RESULT UpdateLocationRes ::= SEQUENCE { hlr-Number Hlr-Number, @@ -151,6 +183,76 @@ PrepareHO-Arg ::= SEQUENCE { bss-APDU Bss-APDU OPTIONAL, ... } -- RESULT +-- V3 def: ? +-- prepareHandover OPERATION ::= { +-- ARGUMENT [3] IMPLICIT SEQUENCE { + +PrepareHandoverV3Arg ::= [3] IMPLICIT SEQUENCE { + targetCellId [0] IMPLICIT OCTET STRING ( SIZE (5 .. 7 ) ) OPTIONAL, + ho-NumberNotRequired NULL OPTIONAL, + targetRNCId [1] IMPLICIT OCTET STRING ( SIZE (7 ) ) OPTIONAL, + an-APDU [2] IMPLICIT An-APDU OPTIONAL, + multipleBearerRequested [3] IMPLICIT NULL OPTIONAL, + imsi [4] IMPLICIT Imsi OPTIONAL, + integrityProtectionInfo [5] IMPLICIT OCTET STRING ( SIZE (18 .. 100 ) ) OPTIONAL, + encryptionInfo [6] IMPLICIT OCTET STRING ( SIZE (18 .. 100 ) ) OPTIONAL, + radioResourceInformation [7] IMPLICIT OCTET STRING ( SIZE (3 .. 13 ) ) OPTIONAL, + allowedGSM-Algorithms [9] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL, + allowedUMTS-Algorithms [10] IMPLICIT SEQUENCE { + integrityProtectionAlgorithms [0] IMPLICIT OCTET STRING ( SIZE (1 .. 9 ) ) OPTIONAL, + encryptionAlgorithms [1] IMPLICIT OCTET STRING ( SIZE (1 .. 9 ) ) OPTIONAL, + extensionContainer [2] IMPLICIT ExtensionContainer OPTIONAL, + ... } OPTIONAL, + radioResourceList [11] IMPLICIT SEQUENCE ( SIZE (1 .. 7 ) ) OF + SEQUENCE { + radioResourceInformation OCTET STRING ( SIZE (3 .. 13 ) ), + rab-Id INTEGER ( 1 .. 255 ), + ... } OPTIONAL, + extensionContainer [8] IMPLICIT ExtensionContainer OPTIONAL, + ... , + rab-Id [12] IMPLICIT INTEGER ( 1 .. 255 ) OPTIONAL, + bssmap-ServiceHandover [13] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL, + ranap-ServiceHandover [14] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL, + bssmap-ServiceHandoverList [15] IMPLICIT SEQUENCE ( SIZE (1 .. 7 ) ) OF + SEQUENCE { + bssmap-ServiceHandover OCTET STRING ( SIZE (1 ) ), + rab-Id INTEGER ( 1 .. 255 ), + ... } OPTIONAL, + asciCallReference [20] IMPLICIT OCTET STRING ( SIZE (1 .. 8 ) ) OPTIONAL, + geran-classmark [16] IMPLICIT OCTET STRING ( SIZE (2 .. 87 ) ) OPTIONAL, + iuCurrentlyUsedCodec [17] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + iuSupportedCodecsList [18] IMPLICIT SEQUENCE { + utranCodecList [0] IMPLICIT SEQUENCE { + codec1 [1] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ), + codec2 [2] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec3 [3] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec4 [4] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec5 [5] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec6 [6] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec7 [7] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec8 [8] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + extensionContainer [9] IMPLICIT ExtensionContainer OPTIONAL, + geranCodecList [1] IMPLICIT SEQUENCE { + codec1 [1] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ), + codec2 [2] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec3 [3] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec4 [4] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec5 [5] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec6 [6] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec7 [7] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + codec8 [8] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL, + extensionContainer [9] IMPLICIT ExtensionContainer } OPTIONAL, + ... } OPTIONAL, + extensionContainer [2] IMPLICIT ExtensionContainer OPTIONAL, + ... } OPTIONAL, + rab-ConfigurationIndicator [19] IMPLICIT NULL OPTIONAL, + uesbi-Iu [21] IMPLICIT SEQUENCE { + uesbi-IuA [0] IMPLICIT BIT STRING ( SIZE (1 .. 128 ) ) OPTIONAL, + uesbi-IuB [1] IMPLICIT BIT STRING ( SIZE (1 .. 128 ) ) OPTIONAL, + ... } OPTIONAL} + + + PrepareHO-Res ::= SEQUENCE { handoverNumber OCTET STRING ( SIZE( 1 .. 20 ) ) ( SIZE( 1 .. 9 ) ) OPTIONAL, bss-APDU Bss-APDU OPTIONAL, @@ -343,7 +445,7 @@ Msisdn ::= OCTET STRING --insertSubscriberData OPERATION -- ARGUMENT InsertSubscriberDataArg ::= SEQUENCE { - imsi [0] IMPLICIT Imsi OPTIONAL, + imsi [0] IMPLICIT Imsi OPTIONAL, msisdn [1] IMPLICIT Msisdn OPTIONAL, category [2] IMPLICIT OCTET STRING ( SIZE( 1 ) ) OPTIONAL, subscriberStatus [3] IMPLICIT SubscriberStatus OPTIONAL, @@ -373,13 +475,7 @@ InsertSubscriberDataArg ::= SEQUENCE { ... } OPTIONAL, extensionContainer [0] IMPLICIT ExtensionContainer OPTIONAL, ... }, - ss-Data2 [3] IMPLICIT SEQUENCE { - ss-Code Ss-Code, - ss-Status [4] IMPLICIT Ss-Status, - ss-SubscriptionOption Ss-SubscriptionOption OPTIONAL, - basicServiceGroupList BasicServiceGroupList OPTIONAL, - extensionContainer [5] IMPLICIT ExtensionContainer OPTIONAL, - ... }, + ss-Data [3] IMPLICIT Ss-Data, emlpp-Info [4] IMPLICIT SEQUENCE { maximumentitledPriority INTEGER ( 0 .. 15 ), defaultPriority INTEGER ( 0 .. 15 ), @@ -1079,9 +1175,9 @@ Ss-Data ::= SEQUENCE { ss-Status [4] IMPLICIT Ss-Status OPTIONAL, ss-SubscriptionOption Ss-SubscriptionOption OPTIONAL, basicServiceGroupList BasicServiceGroupList OPTIONAL, - ... , - defaultPriority INTEGER ( 0 .. 15 ) OPTIONAL} - + defaultPriority INTEGER ( 0 .. 15 ) OPTIONAL, + extensionContainer [5] IMPLICIT ExtensionContainer OPTIONAL, + ... } --registerSS OPERATION -- ARGUMENT diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c index 3c4921e8a2..515a5532b8 100644 --- a/asn1/gsmmap/packet-gsm_map-template.c +++ b/asn1/gsmmap/packet-gsm_map-template.c @@ -57,7 +57,11 @@ static int hf_gsm_map_invokeId = -1; /* InvokeId */ static int hf_gsm_map_invoke = -1; /* InvokePDU */ static int hf_gsm_map_returnResult = -1; /* InvokePDU */ static int hf_gsm_map_returnResult_result = -1; +static int hf_gsm_map_returnError_result = -1; static int hf_gsm_map_returnError = -1; +static int hf_gsm_map_local_errorCode = -1; +static int hf_gsm_map_global_errorCode_oid = -1; +static int hf_gsm_map_global_errorCode = -1; static int hf_gsm_map_SendAuthenticationInfoArg = -1; static int hf_gsm_mapSendEndSignal = -1; static int hf_gsm_map_getPassword = -1; @@ -241,7 +245,72 @@ const value_string gsm_map_opr_code_strings[] = { { 86, "subscriberLocationReport" }, { 0, NULL } }; - +static const value_string gsm_map_err_code_string_vals[] = { + { 1, "Unknown Subscriber" }, + { 3, "Unknown MSC" }, + { 5, "Unidentified Subscriber" }, + { 6, "Absent Subscriber SM" }, + { 7, "Unknown Equipment" }, + { 8, "Roaming Not Allowed" }, + { 9, "Illegal Subscriber" }, + { 10, "Bearer Service Not Provisioned" }, + { 11, "Teleservice Not Provisioned" }, + { 12, "Illegal Equipment" }, + { 13, "Call Barred" }, + { 14, "Forwarding Violation" }, + { 15, "CUG Reject" }, + { 16, "Illegal SS Operation" }, + { 17, "SS Error Status" }, + { 18, "SS Not Available" }, + { 19, "SS Subscription Violation" }, + { 20, "SS Incompatibility" }, + { 21, "Facility Not Supported" }, + { 25, "No Handover Number Available" }, + { 26, "Subsequent Handover Failure" }, + { 27, "Absent Subscriber" }, + { 28, "Incompatible Terminal" }, + { 29, "Short Term Denial" }, + { 30, "Long Term Denial" }, + { 31, "Subscriber Busy For MT SMS" }, + { 32, "SM Delivery Failure" }, + { 33, "Message Waiting List Full" }, + { 34, "System Failure" }, + { 35, "Data Missing" }, + { 36, "Unexpected Data Value" }, + { 37, "PW Registration Failure" }, + { 38, "Negative PW Check" }, + { 39, "No Roaming Number Available" }, + { 40, "Tracing Buffer Full" }, + { 42, "Target Cell Outside Group Call Area" }, + { 43, "Number Of PW Attempts Violation" }, + { 44, "Number Changed" }, + { 45, "Busy Subscriber" }, + { 46, "No Subscriber Reply" }, + { 47, "Forwarding Failed" }, + { 48, "OR Not Allowed" }, + { 49, "ATI Not Allowed" }, + { 50, "No Group Call Number Available" }, + { 51, "Resource Limitation" }, + { 52, "Unauthorized Requesting Network" }, + { 53, "Unauthorized LCS Client" }, + { 54, "Position Method Failure" }, + { 58, "Unknown Or Unreachable LCS Client" }, + { 59, "MM Event Not Supported" }, + { 60, "ATSI Not Allowed" }, + { 61, "ATM Not Allowed" }, + { 62, "Information Not Available" }, + { 71, "Unknown Alphabet" }, + { 72, "USSD Busy" }, + { 120, "Nbr Sb Exceeded" }, + { 121, "Rejected By User" }, + { 122, "Rejected By Network" }, + { 123, "Deflection To Served Subscriber" }, + { 124, "Special Service Code" }, + { 125, "Invalid Deflected To Number" }, + { 126, "Max Number Of MPTY Participants Exceeded" }, + { 127, "Resources Not Available" }, + { 0, NULL } +}; static const true_false_string gsm_map_extension_value = { "No Extension", "Extension" @@ -608,6 +677,8 @@ static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff case 55: /*sendIdentification*/ offset=dissect_gsm_map_SendIdentificationRes(FALSE, tvb, offset, pinfo, tree, -1); break; + case 56: + offset = dissect_gsm_map_SendAuthenticationInfoRes(FALSE, tvb, offset, pinfo, tree, -1); case 57: /*restoreData*/ offset=dissect_gsm_map_RestoreDataRes(FALSE, tvb, offset, pinfo, tree, -1); break; @@ -760,26 +831,37 @@ dissect_gsm_map_returnResultPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int of static int dissect_returnResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_returnResultPDU(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_returnResult); } -/* TODO code this part -static const ber_sequence_t ReturnError_result_sequence[] = { - { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_errorCode }, - { BER_CLASS_UNI, -1 depends on Cmd, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_errorCodeparam }, + +static int +dissect_local_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_local_errorCode, NULL); +} + +static int +dissect_global_errorCode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset, + hf_gsm_map_global_errorCode_oid, NULL); + return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_gsm_map_global_errorCode, NULL); +} +static const ber_choice_t ReturnError_result_choice[] = { + { 0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_local_errorCode }, + { 1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_global_errorCode }, { 0, 0, 0, NULL } }; -*/ + + static int dissect_ReturnError_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return tvb_length_remaining(tvb,offset); - /* - offset = dissect_ber_sequence(FALSE, pinfo, tree, tvb, offset, - ReturnError_result_sequence, hf_gsm_map_returnResult_result, ett_gsm_map_ReturnError_result); -*/ + + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + ReturnError_result_choice, hf_gsm_map_returnError_result, ett_gsm_map_ReturnError_result); + return offset; } static const ber_sequence_t ReturnErrorPDU_sequence[] = { { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId }, - { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ReturnError_result }, + { BER_CLASS_UNI, -1/*choice*/,BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ReturnError_result }, { 0, 0, 0, NULL } }; @@ -806,8 +888,8 @@ static const value_string GSMMAPPDU_vals[] = { static const ber_choice_t GSMMAPPDU_choice[] = { { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl }, { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResult_impl }, -#ifdef REMOVED { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl }, +#ifdef REMOVED { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl }, #endif { 0, 0, 0, 0, NULL } @@ -1069,10 +1151,30 @@ void proto_register_gsm_map(void) { { "returnResult", "gsm_map.returnResult", FT_NONE, BASE_NONE, NULL, 0, "GSMMAPPDU/returnResult", HFILL }}, + {&hf_gsm_map_returnResult_result, + { "returnResult_result", "gsm_map.returnresultresult", + FT_BYTES, BASE_NONE, NULL, 0, + "returnResult_result", HFILL }}, + {&hf_gsm_map_returnError_result, + { "returnError_result", "gsm_map.returnerrorresult", + FT_UINT32, BASE_DEC, NULL, 0, + "returnError_result", HFILL }}, {&hf_gsm_map_returnError, { "returnError", "gsm_map.returnError", FT_NONE, BASE_NONE, NULL, 0, "GSMMAPPDU/returnError", HFILL }}, + {&hf_gsm_map_local_errorCode, + { "Local Error Code", "gsm_map.localerrorCode", + FT_UINT32, BASE_DEC, VALS(gsm_map_err_code_string_vals), 0, + "localerrorCode", HFILL }}, + {&hf_gsm_map_global_errorCode_oid, + { "Global Error Code OID", "gsm_map.hlobalerrorCodeoid", + FT_BYTES, BASE_NONE, NULL, 0, + "globalerrorCodeoid", HFILL }}, + {&hf_gsm_map_global_errorCode, + { "Global Error Code", "gsm_map.globalerrorCode", + FT_UINT32, BASE_DEC, NULL, 0, + "globalerrorCode", HFILL }}, { &hf_gsm_map_getPassword, { "Password", "gsm_map.password", FT_UINT8, BASE_DEC, VALS(gsm_map_GetPasswordArg_vals), 0, @@ -1161,9 +1263,11 @@ void proto_register_gsm_map(void) { "GSM SMS TPDU",FT_UINT8, BASE_DEC); gsm_map_tap = register_tap("gsm_map"); + register_ber_oid_name("0.4.0.0.1.0.1.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version3(3)" ); register_ber_oid_name("0.4.0.0.1.0.1.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) networkLocUp(1) version2(2)" ); register_ber_oid_name("0.4.0.0.1.0.2.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version2(2)" ); register_ber_oid_name("0.4.0.0.1.0.2.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version1(1)" ); + register_ber_oid_name("0.4.0.0.1.0.3.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version3(3)" ); register_ber_oid_name("0.4.0.0.1.0.3.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version2(2)" ); register_ber_oid_name("0.4.0.0.1.0.3.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) roamingNbEnquiry(3) version1(1)" ); register_ber_oid_name("0.4.0.0.1.0.5.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version3(3)" ); |