diff options
author | Anders Broman <anders.broman@ericsson.com> | 2005-02-14 16:20:58 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2005-02-14 16:20:58 +0000 |
commit | f687d089de23237cfb3d5bfc8fb82f622bbf4431 (patch) | |
tree | 9e83d015dc6f76507fd06e8e6bf3f7c1cf0af537 /epan | |
parent | f19ce95547a51890d09ec3ae326774e4f7b2143d (diff) |
Add some more V3 opcodes
svn path=/trunk/; revision=13396
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-gsm_map.c | 487 |
1 files changed, 462 insertions, 25 deletions
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c index 8de2b43ab9..e7c14c159b 100644 --- a/epan/dissectors/packet-gsm_map.c +++ b/epan/dissectors/packet-gsm_map.c @@ -82,6 +82,7 @@ static int hf_gsm_map_imsi_digits = -1; static int hf_gsm_map_map_gmsc_address_digits = -1; static int hf_gsm_map_map_RoamingNumber_digits = -1; static int hf_gsm_map_map_hlr_number_digits = -1; +static int hf_gsm_map_map_ForwardedToNumber_digits = -1; static int hf_gsm_map_Ss_Status_unused = -1; static int hf_gsm_map_Ss_Status_q_bit = -1; static int hf_gsm_map_Ss_Status_p_bit = -1; @@ -126,7 +127,7 @@ static int hf_gsm_map_cancellationType = -1; /* CancellationType */ static int hf_gsm_map_sgsn_Number = -1; /* Sgsn_Number */ static int hf_gsm_map_freezeTMSI = -1; /* NULL */ static int hf_gsm_map_freezeP_TMSI = -1; /* NULL */ -static int hf_gsm_map_authenticationSetList = -1; /* T_authenticationSetList */ +static int hf_gsm_map_sendId_authenticationSetList = -1; /* SendId_authenticationSetList */ static int hf_gsm_map_authenticationSetList_item = -1; /* T_authenticationSetList_item */ static int hf_gsm_map_rand = -1; /* OCTET_STRING_SIZE_16 */ static int hf_gsm_map_sres = -1; /* OCTET_STRING_SIZE_4 */ @@ -169,7 +170,19 @@ static int hf_gsm_map_rab_ConfigurationIndicator = -1; /* NULL */ static int hf_gsm_map_uesbi_Iu = -1; /* T_uesbi_Iu */ static int hf_gsm_map_uesbi_IuA = -1; /* BIT_STRING_SIZE_1_128 */ static int hf_gsm_map_uesbi_IuB = -1; /* BIT_STRING_SIZE_1_128 */ -static int hf_gsm_map_handoverNumber = -1; /* T_handoverNumber */ +static int hf_gsm_map_handoverNumber = -1; /* HandoverNumber */ +static int hf_gsm_map_relocationNumberList = -1; /* T_relocationNumberList */ +static int hf_gsm_map_relocationNumberList_item = -1; /* T_relocationNumberList_item */ +static int hf_gsm_map_multicallBearerInfo = -1; /* INTEGER_1_7 */ +static int hf_gsm_map_multipleBearerNotSupported = -1; /* NULL */ +static int hf_gsm_map_selectedUMTS_Algorithms = -1; /* T_selectedUMTS_Algorithms */ +static int hf_gsm_map_integrityProtectionAlgorithm = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_map_encryptionAlgorithm = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_map_chosenRadioResourceInformation = -1; /* T_chosenRadioResourceInformation */ +static int hf_gsm_map_chosenChannelInfo = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_map_chosenSpeechVersion = -1; /* OCTET_STRING_SIZE_1 */ +static int hf_gsm_map_iuSelectedCodec = -1; /* OCTET_STRING_SIZE_1_4 */ +static int hf_gsm_map_iuAvailableCodecsList = -1; /* T_iuAvailableCodecsList */ static int hf_gsm_map_targetMSC_Number = -1; /* T_targetMSC_Number */ static int hf_gsm_map_numberOfRequestedVectors = -1; /* INTEGER_1_5 */ static int hf_gsm_map_segmentationProhibited = -1; /* NULL */ @@ -179,6 +192,15 @@ static int hf_gsm_map_auts = -1; /* OCTET_STRING_SIZE_14 */ static int hf_gsm_map_requestingNodeType = -1; /* T_requestingNodeType */ static int hf_gsm_map_requestingPLMN_Id = -1; /* OCTET_STRING_SIZE_3 */ static int hf_gsm_map_SendAuthenticationInfoRes_item = -1; /* SendAuthenticationInfoRes_item */ +static int hf_gsm_map_authenticationSetList = -1; /* T_authenticationSetList */ +static int hf_gsm_map_tripletList = -1; /* T_tripletList */ +static int hf_gsm_map_tripletList_item = -1; /* T_tripletList_item */ +static int hf_gsm_map_quintupletList = -1; /* T_quintupletList */ +static int hf_gsm_map_quintupletList_item = -1; /* T_quintupletList_item */ +static int hf_gsm_map_xres = -1; /* OCTET_STRING_SIZE_4_16 */ +static int hf_gsm_map_ck = -1; /* OCTET_STRING_SIZE_16 */ +static int hf_gsm_map_ik = -1; /* OCTET_STRING_SIZE_16 */ +static int hf_gsm_map_autn = -1; /* OCTET_STRING_SIZE_16 */ static int hf_gsm_map_bearerService = -1; /* OCTET_STRING */ static int hf_gsm_map_teleservice = -1; /* Teleservice */ static int hf_gsm_map_BasicServiceGroupList_item = -1; /* BasicService */ @@ -584,7 +606,7 @@ static gint ett_gsm_map_CancelLocationRes = -1; static gint ett_gsm_map_PurgeMS_Arg = -1; static gint ett_gsm_map_PurgeMS_Res = -1; static gint ett_gsm_map_SendIdentificationRes = -1; -static gint ett_gsm_map_T_authenticationSetList = -1; +static gint ett_gsm_map_SendId_authenticationSetList = -1; static gint ett_gsm_map_T_authenticationSetList_item = -1; static gint ett_gsm_map_PrepareHO_Arg = -1; static gint ett_gsm_map_PrepareHandoverV3Arg = -1; @@ -598,12 +620,24 @@ static gint ett_gsm_map_T_utranCodecList = -1; static gint ett_gsm_map_T_geranCodecList = -1; static gint ett_gsm_map_T_uesbi_Iu = -1; static gint ett_gsm_map_PrepareHO_Res = -1; +static gint ett_gsm_map_PrepareHandoverV3Res = -1; +static gint ett_gsm_map_T_relocationNumberList = -1; +static gint ett_gsm_map_T_relocationNumberList_item = -1; +static gint ett_gsm_map_T_selectedUMTS_Algorithms = -1; +static gint ett_gsm_map_T_chosenRadioResourceInformation = -1; +static gint ett_gsm_map_T_iuAvailableCodecsList = -1; static gint ett_gsm_map_SendEndSignalV9Arg = -1; static gint ett_gsm_map_PrepareSubsequentHO_Arg = -1; static gint ett_gsm_map_SendAuthenticationInfoArgV3 = -1; static gint ett_gsm_map_T_re_synchronisationInfo = -1; static gint ett_gsm_map_SendAuthenticationInfoRes = -1; static gint ett_gsm_map_SendAuthenticationInfoRes_item = -1; +static gint ett_gsm_map_SendAuthenticationInfoV3Res = -1; +static gint ett_gsm_map_T_authenticationSetList = -1; +static gint ett_gsm_map_T_tripletList = -1; +static gint ett_gsm_map_T_tripletList_item = -1; +static gint ett_gsm_map_T_quintupletList = -1; +static gint ett_gsm_map_T_quintupletList_item = -1; static gint ett_gsm_map_BasicService = -1; static gint ett_gsm_map_BasicServiceGroupList = -1; static gint ett_gsm_map_Odb_GeneralData = -1; @@ -1218,6 +1252,9 @@ static int dissect_multipleBearerRequested_impl(packet_info *pinfo, proto_tree * static int dissect_rab_ConfigurationIndicator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_NULL(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_rab_ConfigurationIndicator); } +static int dissect_multipleBearerNotSupported(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_multipleBearerNotSupported); +} static int dissect_segmentationProhibited(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_NULL(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_segmentationProhibited); } @@ -1684,6 +1721,7 @@ dissect_gsm_map_Hlr_Number(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, + return offset; } static int dissect_hlr_Number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1875,6 +1913,15 @@ dissect_gsm_map_OCTET_STRING_SIZE_16(gboolean implicit_tag _U_, tvbuff_t *tvb, i static int dissect_rand(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_rand); } +static int dissect_ck(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ck); +} +static int dissect_ik(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_ik); +} +static int dissect_autn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_autn); +} static int @@ -1909,24 +1956,24 @@ static int dissect_authenticationSetList_item(packet_info *pinfo, proto_tree *tr return dissect_gsm_map_T_authenticationSetList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList_item); } -static const ber_sequence_t T_authenticationSetList_sequence_of[1] = { +static const ber_sequence_t SendId_authenticationSetList_sequence_of[1] = { { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_authenticationSetList_item }, }; static int -dissect_gsm_map_T_authenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +dissect_gsm_map_SendId_authenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, - T_authenticationSetList_sequence_of, hf_index, ett_gsm_map_T_authenticationSetList); + SendId_authenticationSetList_sequence_of, hf_index, ett_gsm_map_SendId_authenticationSetList); return offset; } -static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_gsm_map_T_authenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList); +static int dissect_sendId_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_SendId_authenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_sendId_authenticationSetList); } static const ber_sequence_t SendIdentificationRes_sequence[] = { { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_imsi }, - { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_authenticationSetList }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_sendId_authenticationSetList }, { 0, 0, 0, NULL } }; @@ -2033,6 +2080,18 @@ static int dissect_bssmap_ServiceHandover_impl(packet_info *pinfo, proto_tree *t static int dissect_ranap_ServiceHandover_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_ranap_ServiceHandover); } +static int dissect_integrityProtectionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_integrityProtectionAlgorithm); +} +static int dissect_encryptionAlgorithm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_encryptionAlgorithm); +} +static int dissect_chosenChannelInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenChannelInfo); +} +static int dissect_chosenSpeechVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenSpeechVersion); +} static int dissect_category_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_OCTET_STRING_SIZE_1(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_category); } @@ -2256,6 +2315,9 @@ static int dissect_codec7_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *t static int dissect_codec8_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_codec8); } +static int dissect_iuSelectedCodec_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_1_4(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuSelectedCodec); +} static const ber_sequence_t T_geranCodecList_sequence[] = { { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl }, @@ -2393,14 +2455,17 @@ dissect_gsm_map_PrepareHandoverV3Arg(gboolean implicit_tag _U_, tvbuff_t *tvb, i static int -dissect_gsm_map_T_handoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +dissect_gsm_map_HandoverNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); return offset; } static int dissect_handoverNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_gsm_map_T_handoverNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber); + return dissect_gsm_map_HandoverNumber(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber); +} +static int dissect_handoverNumber_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_HandoverNumber(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_handoverNumber); } static const ber_sequence_t PrepareHO_Res_sequence[] = { @@ -2417,6 +2482,131 @@ dissect_gsm_map_PrepareHO_Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs return offset; } +static const ber_sequence_t T_relocationNumberList_item_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_handoverNumber }, + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_rab_Id }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_relocationNumberList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + T_relocationNumberList_item_sequence, hf_index, ett_gsm_map_T_relocationNumberList_item); + + return offset; +} +static int dissect_relocationNumberList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_relocationNumberList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList_item); +} + +static const ber_sequence_t T_relocationNumberList_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_relocationNumberList_item }, +}; + +static int +dissect_gsm_map_T_relocationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + T_relocationNumberList_sequence_of, hf_index, ett_gsm_map_T_relocationNumberList); + + return offset; +} +static int dissect_relocationNumberList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_relocationNumberList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_relocationNumberList); +} + + + +static int +dissect_gsm_map_INTEGER_1_7(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); + + return offset; +} +static int dissect_multicallBearerInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_INTEGER_1_7(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_multicallBearerInfo); +} + +static const ber_sequence_t T_selectedUMTS_Algorithms_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_integrityProtectionAlgorithm_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryptionAlgorithm_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_selectedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + T_selectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_T_selectedUMTS_Algorithms); + + return offset; +} +static int dissect_selectedUMTS_Algorithms_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_selectedUMTS_Algorithms(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_selectedUMTS_Algorithms); +} + +static const ber_sequence_t T_chosenRadioResourceInformation_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenChannelInfo_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenSpeechVersion_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_chosenRadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + T_chosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_T_chosenRadioResourceInformation); + + return offset; +} +static int dissect_chosenRadioResourceInformation_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_chosenRadioResourceInformation(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_chosenRadioResourceInformation); +} + +static const ber_sequence_t T_iuAvailableCodecsList_sequence[] = { + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_codec1_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec2_impl }, + { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec3_impl }, + { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec4_impl }, + { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec5_impl }, + { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec6_impl }, + { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec7_impl }, + { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_codec8_impl }, + { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_iuAvailableCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + T_iuAvailableCodecsList_sequence, hf_index, ett_gsm_map_T_iuAvailableCodecsList); + + return offset; +} +static int dissect_iuAvailableCodecsList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_iuAvailableCodecsList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_iuAvailableCodecsList); +} + +static const ber_sequence_t PrepareHandoverV3Res_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_handoverNumber_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_relocationNumberList_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_an_APDU_impl }, + { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_multicallBearerInfo_impl }, + { BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_multipleBearerNotSupported }, + { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectedUMTS_Algorithms_impl }, + { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_chosenRadioResourceInformation_impl }, + { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl }, + { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuSelectedCodec_impl }, + { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_iuAvailableCodecsList_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_PrepareHandoverV3Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + PrepareHandoverV3Res_sequence, hf_index, ett_gsm_map_PrepareHandoverV3Res); + + return offset; +} + static const ber_sequence_t SendEndSignalV9Arg_sequence[] = { { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_an_APDU }, { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extensionContainer_impl }, @@ -2611,6 +2801,124 @@ dissect_gsm_map_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *t return offset; } +static const ber_sequence_t T_tripletList_item_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_sres }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_kc }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_tripletList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + T_tripletList_item_sequence, hf_index, ett_gsm_map_T_tripletList_item); + + return offset; +} +static int dissect_tripletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_tripletList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList_item); +} + +static const ber_sequence_t T_tripletList_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tripletList_item }, +}; + +static int +dissect_gsm_map_T_tripletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + T_tripletList_sequence_of, hf_index, ett_gsm_map_T_tripletList); + + return offset; +} +static int dissect_tripletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_tripletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_tripletList); +} + + +static int +dissect_gsm_map_OCTET_STRING_SIZE_4_16(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_xres(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_OCTET_STRING_SIZE_4_16(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_xres); +} + +static const ber_sequence_t T_quintupletList_item_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_rand }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_xres }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ck }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_ik }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_autn }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_quintupletList_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + T_quintupletList_item_sequence, hf_index, ett_gsm_map_T_quintupletList_item); + + return offset; +} +static int dissect_quintupletList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_quintupletList_item(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList_item); +} + +static const ber_sequence_t T_quintupletList_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_quintupletList_item }, +}; + +static int +dissect_gsm_map_T_quintupletList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + T_quintupletList_sequence_of, hf_index, ett_gsm_map_T_quintupletList); + + return offset; +} +static int dissect_quintupletList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_quintupletList(TRUE, tvb, offset, pinfo, tree, hf_gsm_map_quintupletList); +} + + +static const value_string gsm_map_T_authenticationSetList_vals[] = { + { 0, "tripletList" }, + { 1, "quintupletList" }, + { 0, NULL } +}; + +static const ber_choice_t T_authenticationSetList_choice[] = { + { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_tripletList_impl }, + { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_quintupletList_impl }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_T_authenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + T_authenticationSetList_choice, hf_index, ett_gsm_map_T_authenticationSetList); + + return offset; +} +static int dissect_authenticationSetList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_gsm_map_T_authenticationSetList(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_authenticationSetList); +} + +static const ber_sequence_t SendAuthenticationInfoV3Res_sequence[] = { + { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationSetList }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extensionContainer }, + { 0, 0, 0, NULL } +}; + +static int +dissect_gsm_map_SendAuthenticationInfoV3Res(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + SendAuthenticationInfoV3Res_sequence, hf_index, ett_gsm_map_SendAuthenticationInfoV3Res); + + return offset; +} + static int dissect_gsm_map_Imei(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { @@ -2967,7 +3275,6 @@ dissect_gsm_map_Msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac digit_str = unpack_digits(parameter_tvb, 1); proto_tree_add_string(tree, hf_gsm_map_misdn_digits, parameter_tvb, 1, -1, digit_str); - @@ -3074,8 +3381,24 @@ static int dissect_ss_Status_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_gsm_map_ForwardedToNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { - offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, - NULL); + + tvbuff_t *parameter_tvb; + char *digit_str; + + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, + ¶meter_tvb); + + if (!parameter_tvb) + return offset; + + proto_tree_add_item(tree, hf_gsm_map_extension, parameter_tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_nature_of_number, parameter_tvb, 0,1,FALSE); + proto_tree_add_item(tree, hf_gsm_map_number_plan, parameter_tvb, 0,1,FALSE); + + digit_str = unpack_digits(parameter_tvb, 1); + + proto_tree_add_string(tree, hf_gsm_map_map_ForwardedToNumber_digits, parameter_tvb, 1, -1, digit_str); + return offset; } @@ -4719,7 +5042,7 @@ dissect_gsm_map_Gmsc_Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse digit_str = unpack_digits(parameter_tvb, 1); proto_tree_add_string(tree, hf_gsm_map_map_gmsc_address_digits, parameter_tvb, 1, -1, digit_str); - + @@ -4863,8 +5186,6 @@ dissect_gsm_map_RoamingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs digit_str = unpack_digits(parameter_tvb, 1); proto_tree_add_string(tree, hf_gsm_map_map_RoamingNumber_digits, parameter_tvb, 1, -1, digit_str); - - return offset; @@ -6033,6 +6354,7 @@ dissect_gsm_map_ServiceCentreAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, i + return offset; } static int dissect_serviceCentreAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -8439,7 +8761,13 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv offset=dissect_gsm_map_PurgeMS_Arg(FALSE, tvb, offset, pinfo, tree, -1); break; case 68: /*prepareHandover*/ - offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1); + octet = tvb_get_guint8(tvb,0) & 0xf; + if ( octet == 3){ /* This is a V9 message ??? */ + offset = offset +2; + offset=dissect_gsm_map_PrepareHandoverV3Arg(TRUE, tvb, offset, pinfo, tree, -1); + }else{ + offset=offset=dissect_gsm_map_PrepareHO_Arg(FALSE, tvb, offset, pinfo, tree, -1); + } break; case 69: /*prepareSubsequentHandover*/ offset=dissect_gsm_map_PrepareSubsequentHO_Arg(FALSE, tvb, offset, pinfo, tree, -1); @@ -8485,6 +8813,8 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + + guint8 octet; switch(opcode){ case 2: /*updateLocation*/ offset=dissect_gsm_map_UpdateLocationRes(FALSE, tvb, offset, pinfo, tree, -1); @@ -8611,7 +8941,13 @@ static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff offset=dissect_gsm_map_PurgeMS_Res(FALSE, tvb, offset, pinfo, tree, -1); break; case 68: /*prepareHandover*/ - offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1); + octet = tvb_get_guint8(tvb,0) & 0xf; + if ( octet == 3){ /* This is a V9 message ??? */ + offset = offset +2; + offset=dissect_gsm_map_PrepareHandoverV3Res(TRUE, tvb, offset, pinfo, tree, hf_gsm_mapSendEndSignal); + }else{ + offset=dissect_gsm_map_PrepareHO_Res(FALSE, tvb, offset, pinfo, tree, -1); + } break; case 69: /*prepareSubsequentHandover*/ offset=dissect_gsm_map_Bss_APDU(FALSE, tvb, offset, pinfo, tree, -1); @@ -8870,9 +9206,8 @@ dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) tap_rec.invoke = TRUE; tap_rec.opr_code_idx = op_idx; tap_rec.size = gsm_map_pdu_size; - /* + tap_queue_packet(gsm_map_tap, pinfo, &tap_rec); - */ } @@ -9125,6 +9460,10 @@ void proto_register_gsm_map(void) { { "Hlr-Number digits", "gsm_map.hlr_number_digits", FT_STRING, BASE_NONE, NULL, 0, "Hlr-Number digits", HFILL }}, + {&hf_gsm_map_map_ForwardedToNumber_digits, + { "Forwarded To Number digits", "gsm_map.forwardedtonumber_digits", + FT_STRING, BASE_NONE, NULL, 0, + "Forwarded To Number digits", HFILL }}, { &hf_gsm_map_Ss_Status_unused, { "Unused", "gsm_map.unused", FT_UINT8, BASE_HEX, NULL, 0xf0, @@ -9289,7 +9628,7 @@ void proto_register_gsm_map(void) { { "freezeP-TMSI", "gsm_map.freezeP_TMSI", FT_NONE, BASE_NONE, NULL, 0, "PurgeMS-Res/freezeP-TMSI", HFILL }}, - { &hf_gsm_map_authenticationSetList, + { &hf_gsm_map_sendId_authenticationSetList, { "authenticationSetList", "gsm_map.authenticationSetList", FT_NONE, BASE_NONE, NULL, 0, "SendIdentificationRes/authenticationSetList", HFILL }}, @@ -9464,7 +9803,55 @@ void proto_register_gsm_map(void) { { &hf_gsm_map_handoverNumber, { "handoverNumber", "gsm_map.handoverNumber", FT_BYTES, BASE_HEX, NULL, 0, - "PrepareHO-Res/handoverNumber", HFILL }}, + "", HFILL }}, + { &hf_gsm_map_relocationNumberList, + { "relocationNumberList", "gsm_map.relocationNumberList", + FT_NONE, BASE_NONE, NULL, 0, + "PrepareHandoverV3Res/relocationNumberList", HFILL }}, + { &hf_gsm_map_relocationNumberList_item, + { "Item", "gsm_map.relocationNumberList_item", + FT_NONE, BASE_NONE, NULL, 0, + "PrepareHandoverV3Res/relocationNumberList/_item", HFILL }}, + { &hf_gsm_map_multicallBearerInfo, + { "multicallBearerInfo", "gsm_map.multicallBearerInfo", + FT_UINT32, BASE_DEC, NULL, 0, + "PrepareHandoverV3Res/multicallBearerInfo", HFILL }}, + { &hf_gsm_map_multipleBearerNotSupported, + { "multipleBearerNotSupported", "gsm_map.multipleBearerNotSupported", + FT_NONE, BASE_NONE, NULL, 0, + "PrepareHandoverV3Res/multipleBearerNotSupported", HFILL }}, + { &hf_gsm_map_selectedUMTS_Algorithms, + { "selectedUMTS-Algorithms", "gsm_map.selectedUMTS_Algorithms", + FT_NONE, BASE_NONE, NULL, 0, + "PrepareHandoverV3Res/selectedUMTS-Algorithms", HFILL }}, + { &hf_gsm_map_integrityProtectionAlgorithm, + { "integrityProtectionAlgorithm", "gsm_map.integrityProtectionAlgorithm", + FT_BYTES, BASE_HEX, NULL, 0, + "PrepareHandoverV3Res/selectedUMTS-Algorithms/integrityProtectionAlgorithm", HFILL }}, + { &hf_gsm_map_encryptionAlgorithm, + { "encryptionAlgorithm", "gsm_map.encryptionAlgorithm", + FT_BYTES, BASE_HEX, NULL, 0, + "PrepareHandoverV3Res/selectedUMTS-Algorithms/encryptionAlgorithm", HFILL }}, + { &hf_gsm_map_chosenRadioResourceInformation, + { "chosenRadioResourceInformation", "gsm_map.chosenRadioResourceInformation", + FT_NONE, BASE_NONE, NULL, 0, + "PrepareHandoverV3Res/chosenRadioResourceInformation", HFILL }}, + { &hf_gsm_map_chosenChannelInfo, + { "chosenChannelInfo", "gsm_map.chosenChannelInfo", + FT_BYTES, BASE_HEX, NULL, 0, + "PrepareHandoverV3Res/chosenRadioResourceInformation/chosenChannelInfo", HFILL }}, + { &hf_gsm_map_chosenSpeechVersion, + { "chosenSpeechVersion", "gsm_map.chosenSpeechVersion", + FT_BYTES, BASE_HEX, NULL, 0, + "PrepareHandoverV3Res/chosenRadioResourceInformation/chosenSpeechVersion", HFILL }}, + { &hf_gsm_map_iuSelectedCodec, + { "iuSelectedCodec", "gsm_map.iuSelectedCodec", + FT_BYTES, BASE_HEX, NULL, 0, + "PrepareHandoverV3Res/iuSelectedCodec", HFILL }}, + { &hf_gsm_map_iuAvailableCodecsList, + { "iuAvailableCodecsList", "gsm_map.iuAvailableCodecsList", + FT_NONE, BASE_NONE, NULL, 0, + "PrepareHandoverV3Res/iuAvailableCodecsList", HFILL }}, { &hf_gsm_map_targetMSC_Number, { "targetMSC-Number", "gsm_map.targetMSC_Number", FT_BYTES, BASE_HEX, NULL, 0, @@ -9501,6 +9888,42 @@ void proto_register_gsm_map(void) { { "Item", "gsm_map.SendAuthenticationInfoRes_item", FT_NONE, BASE_NONE, NULL, 0, "SendAuthenticationInfoRes/_item", HFILL }}, + { &hf_gsm_map_authenticationSetList, + { "authenticationSetList", "gsm_map.authenticationSetList", + FT_UINT32, BASE_DEC, VALS(gsm_map_T_authenticationSetList_vals), 0, + "SendAuthenticationInfoV3Res/authenticationSetList", HFILL }}, + { &hf_gsm_map_tripletList, + { "tripletList", "gsm_map.tripletList", + FT_NONE, BASE_NONE, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/tripletList", HFILL }}, + { &hf_gsm_map_tripletList_item, + { "Item", "gsm_map.tripletList_item", + FT_NONE, BASE_NONE, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/tripletList/_item", HFILL }}, + { &hf_gsm_map_quintupletList, + { "quintupletList", "gsm_map.quintupletList", + FT_NONE, BASE_NONE, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList", HFILL }}, + { &hf_gsm_map_quintupletList_item, + { "Item", "gsm_map.quintupletList_item", + FT_NONE, BASE_NONE, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item", HFILL }}, + { &hf_gsm_map_xres, + { "xres", "gsm_map.xres", + FT_BYTES, BASE_HEX, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/xres", HFILL }}, + { &hf_gsm_map_ck, + { "ck", "gsm_map.ck", + FT_BYTES, BASE_HEX, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/ck", HFILL }}, + { &hf_gsm_map_ik, + { "ik", "gsm_map.ik", + FT_BYTES, BASE_HEX, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/ik", HFILL }}, + { &hf_gsm_map_autn, + { "autn", "gsm_map.autn", + FT_BYTES, BASE_HEX, NULL, 0, + "SendAuthenticationInfoV3Res/authenticationSetList/quintupletList/_item/autn", HFILL }}, { &hf_gsm_map_bearerService, { "bearerService", "gsm_map.bearerService", FT_BYTES, BASE_HEX, NULL, 0, @@ -11007,7 +11430,7 @@ void proto_register_gsm_map(void) { &ett_gsm_map_PurgeMS_Arg, &ett_gsm_map_PurgeMS_Res, &ett_gsm_map_SendIdentificationRes, - &ett_gsm_map_T_authenticationSetList, + &ett_gsm_map_SendId_authenticationSetList, &ett_gsm_map_T_authenticationSetList_item, &ett_gsm_map_PrepareHO_Arg, &ett_gsm_map_PrepareHandoverV3Arg, @@ -11021,12 +11444,24 @@ void proto_register_gsm_map(void) { &ett_gsm_map_T_geranCodecList, &ett_gsm_map_T_uesbi_Iu, &ett_gsm_map_PrepareHO_Res, + &ett_gsm_map_PrepareHandoverV3Res, + &ett_gsm_map_T_relocationNumberList, + &ett_gsm_map_T_relocationNumberList_item, + &ett_gsm_map_T_selectedUMTS_Algorithms, + &ett_gsm_map_T_chosenRadioResourceInformation, + &ett_gsm_map_T_iuAvailableCodecsList, &ett_gsm_map_SendEndSignalV9Arg, &ett_gsm_map_PrepareSubsequentHO_Arg, &ett_gsm_map_SendAuthenticationInfoArgV3, &ett_gsm_map_T_re_synchronisationInfo, &ett_gsm_map_SendAuthenticationInfoRes, &ett_gsm_map_SendAuthenticationInfoRes_item, + &ett_gsm_map_SendAuthenticationInfoV3Res, + &ett_gsm_map_T_authenticationSetList, + &ett_gsm_map_T_tripletList, + &ett_gsm_map_T_tripletList_item, + &ett_gsm_map_T_quintupletList, + &ett_gsm_map_T_quintupletList_item, &ett_gsm_map_BasicService, &ett_gsm_map_BasicServiceGroupList, &ett_gsm_map_Odb_GeneralData, @@ -11264,9 +11699,10 @@ void proto_register_gsm_map(void) { 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.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locationCancel(2) version3(3)" ); 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.3","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)" ); @@ -11274,6 +11710,7 @@ void proto_register_gsm_map(void) { register_ber_oid_name("0.4.0.0.1.0.5.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) locInfoRetrieval(5) version1(1)" ); register_ber_oid_name("0.4.0.0.1.0.10.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reset(10) version2(2)" ); register_ber_oid_name("0.4.0.0.1.0.10.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) reset(10) version1(1)" ); + register_ber_oid_name("0.4.0.0.1.0.11.3","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version3(3)" ); register_ber_oid_name("0.4.0.0.1.0.11.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version2(2)" ); register_ber_oid_name("0.4.0.0.1.0.11.1","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) handoverControl(11) version1(1)" ); register_ber_oid_name("0.4.0.0.1.0.26.2","itu-t(0) identified-organization(4) etsi(0) mobileDomain(0) gsm-Network(1) map-ac(0) imsiRetrieval(26) version2(2)" ); |