Add some more V3 opcodes

svn path=/trunk/; revision=13397
This commit is contained in:
Anders Broman 2005-02-14 16:21:47 +00:00
parent f687d089de
commit cba5f271e6
3 changed files with 112 additions and 13 deletions

View File

@ -129,6 +129,7 @@ CancelLocationArg ::= [3] IMPLICIT SEQUENCE {
extensionContainer ExtensionContainer OPTIONAL,
... }
-- RESULT
CancelLocationRes ::= SEQUENCE {
extensionContainer ExtensionContainer OPTIONAL,
... }
@ -254,14 +255,51 @@ PrepareHandoverV3Arg ::= [3] IMPLICIT SEQUENCE {
PrepareHO-Res ::= SEQUENCE {
handoverNumber OCTET STRING ( SIZE( 1 .. 20 ) ) ( SIZE( 1 .. 9 ) ) OPTIONAL,
handoverNumber HandoverNumber OPTIONAL,
bss-APDU Bss-APDU OPTIONAL,
... }
HandoverNumber ::= OCTET STRING ( SIZE( 1 .. 20 ) ) ( SIZE( 1 .. 9 ) )
PrepareHandoverV3Res ::= [3] IMPLICIT SEQUENCE {
handoverNumber [0] IMPLICIT HandoverNumber OPTIONAL,
relocationNumberList [1] IMPLICIT SEQUENCE ( SIZE (1 .. 7 ) ) OF
SEQUENCE {
handoverNumber HandoverNumber,
rab-Id INTEGER ( 1 .. 255 ),
... } OPTIONAL,
an-APDU [2] IMPLICIT An-APDU OPTIONAL,
multicallBearerInfo [3] IMPLICIT INTEGER ( 1 .. 7 ) OPTIONAL,
multipleBearerNotSupported NULL OPTIONAL,
selectedUMTS-Algorithms [5] IMPLICIT SEQUENCE {
integrityProtectionAlgorithm [0] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL,
encryptionAlgorithm [1] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL,
extensionContainer [2] IMPLICIT ExtensionContainer OPTIONAL,
... } OPTIONAL,
chosenRadioResourceInformation [6] IMPLICIT SEQUENCE {
chosenChannelInfo [0] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL,
chosenSpeechVersion [1] IMPLICIT OCTET STRING ( SIZE (1 ) ) OPTIONAL,
... } OPTIONAL,
extensionContainer [4] IMPLICIT ExtensionContainer OPTIONAL,
... ,
iuSelectedCodec [7] IMPLICIT OCTET STRING ( SIZE (1 .. 4 ) ) OPTIONAL,
iuAvailableCodecsList [8] 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}
-- ERRORS {
-- systemFailure localValue : 34,
-- dataMissing localValue : 35,
-- unexpectedDataValue localValue : 36,
-- noHandoverNumberAvailable localValue : 25}
-- noAvailable localValue : 25}
-- ::= localValue : 68
-- Ethereal adaptation --
ProtocolId ::= ENUMERATED {
@ -343,6 +381,27 @@ SendAuthenticationInfoRes ::= SEQUENCE ( SIZE( 1 .. 5 ) ) OF
sres OCTET STRING ( SIZE( 4 ) ),
kc OCTET STRING ( SIZE( 8 ) ),
... }
-- RESULT [3] IMPLICIT SEQUENCE {
SendAuthenticationInfoV3Res ::= [3] IMPLICIT SEQUENCE {
authenticationSetList CHOICE {
tripletList [0] IMPLICIT SEQUENCE ( SIZE (1 .. 5 ) ) OF
SEQUENCE {
rand OCTET STRING ( SIZE (16 ) ),
sres OCTET STRING ( SIZE (4 ) ),
kc OCTET STRING ( SIZE (8 ) ),
... },
quintupletList [1] IMPLICIT SEQUENCE ( SIZE (1 .. 5 ) ) OF
SEQUENCE {
rand OCTET STRING ( SIZE (16 ) ),
xres OCTET STRING ( SIZE (4 .. 16 ) ),
ck OCTET STRING ( SIZE (16 ) ),
ik OCTET STRING ( SIZE (16 ) ),
autn OCTET STRING ( SIZE (16 ) ),
... }} OPTIONAL,
extensionContainer ExtensionContainer OPTIONAL,
... }
-- ERRORS {
-- systemFailure localValue : 34,
-- dataMissing localValue : 35,

View File

@ -18,12 +18,14 @@ InsertSubscriberDataRes/bearerServiceList bearerServiceList
InsertSubscriberDataRes/ss-List ss_List
DeleteSubscriberDataArg/ss-List ss_List
SendRoutingInfoRes/ss-List ss_List
SendIdentificationRes/authenticationSetList SendId_authenticationSetList
#.FIELD_RENAME
RequestedInfo/locationInformation locationInformationFlag
RequestedInfo/subscriberState subscriberStateFlag
AdditionalSignalInfo/signalInfo ext_signalInfo
ForwardingInfo/forwardingFeatureList forwardingFeatureList_1_32
SendIdentificationRes/authenticationSetList sendId_authenticationSetList
#----------------------------------------------------------------------------------------
#.FN_BODY Sm-RP-UI
@ -75,7 +77,7 @@ ForwardingInfo/forwardingFeatureList forwardingFeatureList_1_32
digit_str = unpack_digits(parameter_tvb, 1);
proto_tree_add_string(tree, hf_gsm_map_servicecentreaddress_digits, parameter_tvb, 1, -1, digit_str);
g_free(digit_str);
#.END
@ -98,7 +100,7 @@ ForwardingInfo/forwardingFeatureList forwardingFeatureList_1_32
digit_str = unpack_digits(parameter_tvb, 1);
proto_tree_add_string(tree, hf_gsm_map_misdn_digits, parameter_tvb, 1, -1, digit_str);
g_free(digit_str);
#.END
@ -121,7 +123,7 @@ ForwardingInfo/forwardingFeatureList forwardingFeatureList_1_32
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);
g_free(digit_str);
#.END
@ -144,7 +146,7 @@ ForwardingInfo/forwardingFeatureList forwardingFeatureList_1_32
digit_str = unpack_digits(parameter_tvb, 1);
proto_tree_add_string(tree, hf_gsm_map_map_hlr_number_digits, parameter_tvb, 1, -1, digit_str);
g_free(digit_str);
#.END
@ -167,11 +169,29 @@ ForwardingInfo/forwardingFeatureList forwardingFeatureList_1_32
digit_str = unpack_digits(parameter_tvb, 1);
proto_tree_add_string(tree, hf_gsm_map_map_RoamingNumber_digits, parameter_tvb, 1, -1, digit_str);
g_free(digit_str);
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY ForwardedToNumber
tvbuff_t *parameter_tvb;
char *digit_str;
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
&parameter_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);
#.END
#----------------------------------------------------------------------------------------
#.FN_BODY Ss-Status

View File

@ -75,6 +75,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;
@ -530,7 +531,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);
@ -576,6 +583,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);
@ -702,7 +711,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);
@ -961,9 +976,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);
*/
}
@ -1216,6 +1230,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,
@ -1266,9 +1284,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)" );
@ -1276,6 +1295,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)" );