Loading DiameterCxDx/ttcn/DiameterCxDx_Cx_TCFunctions.ttcn3 +484 −800 File changed.Preview size limit exceeded, changes collapsed. Show changes DiameterCxDx/ttcn/DiameterCxDx_Dx_TCFunctions.ttcn3 +3 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,9 @@ module DiameterCxDx_Dx_TCFunctions { vc_userName, vc_publicIdentity, m_sIPNumberAuthItems(1), DiameterCxDx_Templates.m_sIPAuthDataItem_dummy, //TODO: Set real data here m_sIPAuthDataItem_authScheme(// containing a SIP-Auth-Data-Item AVP m_sIPAuthenticationScheme("DIGEST") // indicating “Digest-AKAv1-MD5” ), vc_serverName ) )); Loading DiameterCxDx/ttcn/DiameterCxDx_PIXITS.ttcn +5 −5 Original line number Diff line number Diff line Loading @@ -237,7 +237,7 @@ module DiameterCxDx_PIXITS * form, as described in 3GPP TS 23.003 [13]. * @see 3GPP TS 29.229 6.3.2 Public-Identity AVP */ modulepar charstring PX_PublicIdentity := "public_identity@etsi.org"; modulepar UTF8String PX_PublicIdentity := "public_identity@etsi.org"; /** @desc UTF8String, * the Public-Identity value shall be different to PX_PublicIdentity. Loading Loading @@ -314,10 +314,10 @@ module DiameterCxDx_PIXITS */ modulepar DiameterURI PX_DiameterUri := { scheme := "aaa", diameterId_FQDN := "FQDN", portField := 6666, transport := "tcp", protocol := "diameter" diameterId_FQDN := "host.etsi.org", portField := omit, transport := omit, protocol := omit }; /** @desc Integer SIP-Item-Number AVP Loading DiameterCxDx/ttcn/DiameterCxDx_Steps.ttcn +47 −43 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ vc_SUT_port := PX_DIAMETER_CX_SUT_HSS_PORT; vc_sessionId := m_sessionId(PX_SessionID); vc_sessionId2 := m_sessionId(PX_SessionID&"1"); vc_originHost := m_originHost(PX_OriginHost); vc_originRealm := m_originRealm(PX_OriginRealm); // realm of the originator (TS) Loading Loading @@ -415,7 +416,7 @@ f_cscfInitialRegistrationCx(); f_w_MAR_MAA(DIAMETER_SUCCESS_E); f_cscfSecondRegistratonCx(); f_w_SAR_SAA(DIAMETER_SUCCESS_E); f_w_SAR_SAA(DIAMETER_SUCCESS_E,-,m_serverAssignmentType(REGISTRATION_E)); } // End of function f_cscfRegistrationCx /** Loading Loading @@ -447,7 +448,7 @@ f_w_UAR_UAA( -, omit, DIAMETER_FIRST_REGISTRATION_E DIAMETER_SUBSEQUENT_REGISTRATION_E ); } // End of function f_cscfSecondRegistratonCx Loading @@ -459,13 +460,13 @@ * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.1 Registration– user not registered */ function f_cscfDeregistrationCx() runs on DiameterCx { f_w_UAR_UAA(mw_UAR_Body_dummy, DIAMETER_SUCCESS_E); f_w_SAR_SAA(DIAMETER_SUCCESS_E); f_w_UAR_UAA(mw_UAR, DIAMETER_SUCCESS_E); f_w_SAR_SAA(DIAMETER_SUCCESS_E,-,m_serverAssignmentType(USER_DEREGISTRATION_E)); } // End of function f_cscfRegistrationCx function f_s_MAR_MAA () runs on DiameterCx { function f_s_MAR_MAA (in Session_Id_AVP p_sessionId) runs on DiameterCx { f_send_MAR(m_MAR_Msg( vc_sessionId, p_sessionId, m_MAR_withServerName( vc_originHost, vc_originRealm, Loading @@ -477,14 +478,14 @@ vc_serverName ) )); f_awaiting_MAA(mw_MAA_Msg(vc_sessionId, mw_MAA_basic)) f_awaiting_MAA(mw_MAA_Msg(p_sessionId, mw_MAA_basic)) } function f_s_SAR_SAA ( function f_s_SAR_SAA (in Session_Id_AVP p_sessionId, in Srv_Assgmt_Type_Code p_serverAssignmentType := UNREGISTERED_USER_E ) runs on DiameterCx { f_send_SAR(m_SAR_Msg( vc_sessionId, p_sessionId, m_SAR_withUserNameAndPID( vc_originHost, vc_originRealm, Loading @@ -496,7 +497,7 @@ valueof(vc_publicIdentity) ) )); f_awaiting_SAA(mw_SAA_Msg(vc_sessionId, mw_SAA_basic)) f_awaiting_SAA(mw_SAA_Msg(p_sessionId, mw_SAA_basic)) } /** Loading @@ -505,11 +506,11 @@ * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.3 Registration– user not registered */ function f_s_UAR_UAA_deRegistration() runs on DiameterCx { function f_s_UAR_UAA_deRegistration(in Session_Id_AVP p_sessionId) runs on DiameterCx { f_send_UAR( m_UAR_Msg( vc_sessionId, p_sessionId, m_UAR_UauthDhostFlags( vc_originHost, vc_originRealm, Loading @@ -524,7 +525,7 @@ f_awaiting_UAA( mw_UAA_Msg( vc_sessionId, p_sessionId, mw_UAA_ResulExpreSernaSerca( mw_resultCode( DIAMETER_SUCCESS_E Loading @@ -538,13 +539,14 @@ /** * @desc Initiate an SAR/SAA de-registration * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.3 Registration– user not registered */ function f_s_SAR_SAA_deRegistration() runs on DiameterCx { function f_s_SAR_SAA_deRegistration(in Session_Id_AVP p_sessionId) runs on DiameterCx { f_s_SAR_SAA(USER_DEREGISTRATION_E); // SAR de-registration f_s_SAR_SAA(p_sessionId, USER_DEREGISTRATION_E); // SAR de-registration } // End of function f_s_SAR_SAA_deRegistration Loading @@ -556,19 +558,20 @@ * @param p_userName * @param p_publicIdentity * @param p_uar_Flags_Cx * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.1 Registration– user not registered */ function f_hssRegistrationCx( in charstring p_userName := PX_UserName, in charstring p_publicIdentity := PX_PublicIdentity, function f_hssRegistrationCx(in Session_Id_AVP p_sessionId, in UTF8String p_userName := PX_UserName, in UTF8String p_publicIdentity := PX_PublicIdentity, in template (omit) UAR_Flags_AVP p_uar_Flags_Cx := omit ) runs on DiameterCx { f_hssInitialRegistrationCx(p_userName, p_publicIdentity, p_uar_Flags_Cx); // With DIAMETER_FIRST_REGISTRATION f_s_MAR_MAA(); f_hssSecondRegistratonCx(p_uar_Flags_Cx); // With SUBEQUENT_REGISTRATION f_s_SAR_SAA(UNREGISTERED_USER_E); // SAR registration f_hssInitialRegistrationCx(p_sessionId, p_userName, p_publicIdentity, p_uar_Flags_Cx); // With DIAMETER_FIRST_REGISTRATION f_s_MAR_MAA(p_sessionId); f_hssSecondRegistratonCx(p_sessionId, p_uar_Flags_Cx); // With SUBEQUENT_REGISTRATION f_s_SAR_SAA(p_sessionId, REGISTRATION_E); // SAR registration } // End of function f_hssRegistrationCx /** Loading @@ -576,13 +579,14 @@ * @param p_userName * @param p_publicIdentity * @param p_uar_Flags_Cx * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.1 Registration– user not registered */ function f_hssInitialRegistrationCx( in charstring p_userName := PX_UserName, in charstring p_publicIdentity := PX_PublicIdentity, function f_hssInitialRegistrationCx(in Session_Id_AVP p_sessionId, in UTF8String p_userName := PX_UserName, in UTF8String p_publicIdentity := PX_PublicIdentity, in template (omit) UAR_Flags_AVP p_uar_Flags_Cx := omit ) runs on DiameterCx { vc_userName := m_userName(p_userName); Loading @@ -591,11 +595,11 @@ } else { vc_publicIdentity := m_publicIdentity(p_publicIdentity); } vc_visitedNetworkId := m_visitedNetworkId(PX_VisitedNetworkId); //vc_visitedNetworkId := m_visitedNetworkId(PX_VisitedNetworkId); f_send_UAR( m_UAR_Msg( vc_sessionId, p_sessionId, m_UAR_UauthDhostFlags( vc_originHost, vc_originRealm, Loading @@ -610,7 +614,7 @@ f_awaiting_UAA( mw_UAA_Msg( vc_sessionId, p_sessionId, mw_UAA_ResulExpre( omit, mw_experimentalResult( Loading @@ -624,15 +628,16 @@ /** * @desc Initiate the second registration with SUBEQUENT_REGISTRATION experimental result * @param p_uar_Flags_Cx * @param p_sessionId * @verdict pass on success, fail otherwise */ function f_hssSecondRegistratonCx( function f_hssSecondRegistratonCx(in Session_Id_AVP p_sessionId, in template (omit) UAR_Flags_AVP p_uar_Flags_Cx := omit ) runs on DiameterCx { f_send_UAR( m_UAR_Msg( vc_sessionId, p_sessionId, m_UAR_UauthDhostFlags( vc_originHost, vc_originRealm, Loading @@ -647,7 +652,7 @@ f_awaiting_UAA( mw_UAA_Msg( vc_sessionId, p_sessionId, mw_UAA_ResulExpre( omit, mw_experimentalResult( Loading @@ -660,15 +665,16 @@ /** * @desc Initiate a full HSS de-registration * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.3 Registration– user not registered */ function f_hssDeregistrationCx() runs on DiameterCx { function f_hssDeregistrationCx(in Session_Id_AVP p_sessionId) runs on DiameterCx { f_s_UAR_UAA_deRegistration(); f_s_UAR_UAA_deRegistration(p_sessionId); f_s_SAR_SAA_deRegistration(); f_s_SAR_SAA_deRegistration(p_sessionId); } // End of function f_hssRegistrationCx Loading @@ -691,6 +697,7 @@ v_resultCodeAvp, v_expResultAvp); f_awaiting_UAR(mw_UAR_Msg(?, p_uAR)); vc_userName:= vc_recvDiamMsg.uAR_MSG.uAR_Body.user_Name; f_send_UAA(m_UAA_Msg(vc_sessionId, v_UAA)); } Loading @@ -715,11 +722,11 @@ } function f_w_SAR_SAA (in template (omit) Result_Code_Type p_resultCode, in template (omit) Experimental_Result_Type p_expResultCode := omit ) in template (omit) Experimental_Result_Type p_expResultCode := omit, in template Server_Assignment_Type_AVP p_server_Assignment_Type:=? ) runs on DiameterCx { var template (omit) Result_Code_AVP v_resultCodeAvp := omit; var template (omit) Experimental_Result_AVP v_expResultAvp := omit; var template (value) MAA_Body_AVP v_MAA; if(ispresent(p_resultCode)){ v_resultCodeAvp := m_resultCode(valueof(p_resultCode)); Loading @@ -727,10 +734,7 @@ v_expResultAvp := m_experimentalResult(valueof(p_expResultCode)); } v_MAA := m_MAA_basic(vc_originHost, vc_originRealm, v_resultCodeAvp, v_expResultAvp); f_awaiting_SAR(mw_SAR_Msg(?, mw_SAR)); // TODO To be refined a little beat f_awaiting_SAR(mw_SAR_Msg(?, mw_SAR(-,-,-,omit,-,-,-,p_server_Assignment_Type))); f_send_SAA(m_SAA_Msg(vc_sessionId, m_SAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_SUCCESS_E)))); } Loading DiameterCxDx/ttcn/DiameterCxDx_Templates.ttcn +122 −31 Original line number Diff line number Diff line Loading @@ -7,13 +7,18 @@ * may be overwritten by future releases of this library * End users are encouraged to contact the distributers of this * module regarding their modifications or additions * Note that usage of encvalue command (codec function) returns bitstring * length of the message or AVP with padding bytes. Therefore this function * is not used on the first level where length of one single AVP can be * calculated with lengthof function. It shall be used only on message level * or in case where one AVP is group of other AVPs. * @remark Any additions to the templates shall follow the design rules * and always modify base templates only; */ module DiameterCxDx_Templates { import from LibDiameter_Interface {} import from LibDiameter_Interface all; import from LibCommon_BasicTypesAndValues {type UInt32, UInt24;} Loading Loading @@ -127,14 +132,14 @@ module DiameterCxDx_Templates { template (value) Redirect_Host_AVP m_redirectHost(template (value) Diameter_Identity p_avpData) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Host_AVP_Code, lengthof(p_avpData), omit), aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Host_AVP_Code, f_getCharStringLength(p_avpData), omit), aVP_Data := p_avpData } template Deregistration_Reason_AVP m_deregistrationReason(in template (value) Reason_Code_AVP p_reasonCode ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_reason_Code_AVP_Code, f_lengthof_AVP(p_reasonCode.aVP_Header), aVP_Header := m_aVP_HeaderVid_Mbit1(c_deregistration_Reason_AVP_Code, valueof(p_reasonCode.aVP_Header.aVP_len), c_vendId3gpp), reason_Code := p_reasonCode, reason_Info := omit, Loading @@ -149,7 +154,9 @@ module DiameterCxDx_Templates { template (value) Charging_Information_AVP m_chargingInformation(in template (omit) Primary_Event_Charging_Function_Name_AVP p_primary_Event_Charging_Function_Name ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Information_AVP_Code, 4, c_vendId3gpp), //<AVP header: 618 ....> aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Information_AVP_Code, f_getEncvalueLength(encvalue(p_primary_Event_Charging_Function_Name)),//p_primary_Event_Charging_Function_Name.aVP_Header.aVP_len, c_vendId3gpp), //<AVP header: 618 ....> primary_Event_Charging_Function_Name := p_primary_Event_Charging_Function_Name, secondary_Event_Charging_Function_Name := omit, primary_Charging_Collection_Function_Name := omit, Loading @@ -157,12 +164,23 @@ module DiameterCxDx_Templates { aVP_Type := omit } template (value) Primary_Event_Charging_Function_Name_AVP m_primary_event_charging_function_name(in template (value) DiameterURI p_aVP_Data template (value) Primary_Event_Charging_Function_Name_AVP m_primary_event_charging_function_name(in template (value) UTF8String p_aVP_Data ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_primary_Event_Charging_Function_Name_AVP_Code, 4, c_vendId3gpp), //<AVP header: 619 ....> aVP_Header := m_aVP_HeaderVid_Mbit1(c_primary_Event_Charging_Function_Name_AVP_Code, f_getUTF8StringLength(p_aVP_Data), c_vendId3gpp), //<AVP header: 619 ....> aVP_Data := p_aVP_Data } template (value) DiameterURI m_diameterURI := { scheme := "aaa", diameterId_FQDN := "host.etsi.org", portField := omit, transport:= omit, protocol:= omit } template (value) SIP_Authentication_Context_AVP m_sIP_Authentication_Context_digest( in template (value) octetstring p_aVP_Data ) := { Loading Loading @@ -200,10 +218,10 @@ module DiameterCxDx_Templates { aVP_Data := p_aVP_Data } template (value) User_Data_AVP m_userData(template (value) octetstring p_aVpData) := { template (value) User_Data_AVP m_userData(in octetstring p_aVpData) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_user_Data_AVP_Code, 4+f_getOctetStringLength(p_aVpData), f_getOctetStringLength(p_aVpData), c_vendId3gpp), aVP_Data := p_aVpData } Loading Loading @@ -243,30 +261,76 @@ module DiameterCxDx_Templates { } } template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (omit) SIP_Item_Number_AVP p_sIP_Item_Number := omit, template (omit) SIP_Authenticate_AVP p_sIP_Authenticate := omit, template (omit) SIP_Authorization_AVP p_sIP_Authorization := omit, template (omit) SIP_Authentication_Context_AVP p_sIP_Authentication_Context := omit, template (omit) Confidentiality_Key_AVP p_confidentiality_Key := omit, template (omit) Integrity_Key_AVP p_integrity_Key := omit, template (omit) SIP_Digest_Authenticate_AVP p_sIP_Digest_Authenticate := omit, template (omit) Line_Identifier_AVP p_line_Identifier := omit template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem_authScheme_sipAuthorization (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (value) SIP_Authorization_AVP p_sIP_Authorization ) modifies m_sIPAuthDataItem_dummy := { sIP_Auth_Data_Item_3GPP_AVP :={ aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, 1/*correct length calculation needed*/, c_vendId3gpp), aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + f_addPaddedBytes2Length(p_sIP_Authorization.sIP_Authorization_3GPP_AVP.aVP_Header.aVP_len), c_vendId3gpp), sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, sIP_Item_Number := p_sIP_Item_Number, sIP_Authenticate := p_sIP_Authenticate, sIP_Authorization := p_sIP_Authorization, sIP_Authentication_Context := p_sIP_Authentication_Context, confidentiality_Key := p_confidentiality_Key, integrity_Key := p_integrity_Key, sIP_Digest_Authenticate := p_sIP_Digest_Authenticate, line_Identifier := p_line_Identifier sIP_Authorization := p_sIP_Authorization } } template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem_authScheme_sipAuthContext (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (value) SIP_Authentication_Context_AVP p_sIP_Authentication_Context ) modifies m_sIPAuthDataItem_dummy := { sIP_Auth_Data_Item_3GPP_AVP :={ aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + f_addPaddedBytes2Length(p_sIP_Authentication_Context.aVP_Header.aVP_len), c_vendId3gpp), sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, sIP_Authentication_Context := p_sIP_Authentication_Context } } template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem_authScheme_itemNo_sipAuthContext (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (value) SIP_Item_Number_AVP p_sIP_Item_Number, template (value) SIP_Authentication_Context_AVP p_sIP_Authentication_Context ) modifies m_sIPAuthDataItem_dummy := { sIP_Auth_Data_Item_3GPP_AVP :={ aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + p_sIP_Item_Number.aVP_Header.aVP_len + f_addPaddedBytes2Length(p_sIP_Authentication_Context.aVP_Header.aVP_len), c_vendId3gpp), sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, sIP_Item_Number := p_sIP_Item_Number, sIP_Authentication_Context := p_sIP_Authentication_Context } } // // template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, // template (omit) SIP_Item_Number_AVP p_sIP_Item_Number := omit, // template (omit) SIP_Authenticate_AVP p_sIP_Authenticate := omit, // template (omit) SIP_Authorization_AVP p_sIP_Authorization := omit, // template (omit) SIP_Authentication_Context_AVP p_sIP_Authentication_Context := omit, // template (omit) Confidentiality_Key_AVP p_confidentiality_Key := omit, // template (omit) Integrity_Key_AVP p_integrity_Key := omit, // template (omit) SIP_Digest_Authenticate_AVP p_sIP_Digest_Authenticate := omit, // template (omit) Line_Identifier_AVP p_line_Identifier := omit // ) modifies m_sIPAuthDataItem_dummy := { // sIP_Auth_Data_Item_3GPP_AVP :={ // aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, // f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + // p_sIP_Item_Number.aVP_Header.aVP_len + // f_addPaddedBytes2Length(p_sIP_Authentication_Context.aVP_Header.aVP_len), // c_vendId3gpp), // sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, // sIP_Item_Number := p_sIP_Item_Number, // sIP_Authenticate := p_sIP_Authenticate, // sIP_Authorization := p_sIP_Authorization, // sIP_Authentication_Context := p_sIP_Authentication_Context, // confidentiality_Key := p_confidentiality_Key, // integrity_Key := p_integrity_Key, // sIP_Digest_Authenticate := p_sIP_Digest_Authenticate, // line_Identifier := p_line_Identifier // } // } }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading @@ -451,6 +515,7 @@ module DiameterCxDx_Templates { in template SIP_Authenticate_AVP p_sIP_Authenticate := *, in template SIP_Authorization_AVP p_sIP_Authorization := *, in template SIP_Authentication_Context_AVP p_sIP_Authentication_Context := *, in template SIP_Digest_Authenticate_AVP p_sIP_Digest_Authenticate := *, in template Integrity_Key_AVP p_integrity_Key := *, in template Line_Identifier_AVP p_line_Identifier := *, in template Framed_IP_Address_AVP p_framed_IP_Address := * Loading @@ -460,6 +525,7 @@ module DiameterCxDx_Templates { sIP_Authenticate := p_sIP_Authenticate, sIP_Authorization := p_sIP_Authorization, sIP_Authentication_Context := p_sIP_Authentication_Context, sIP_Digest_Authenticate := p_sIP_Digest_Authenticate, integrity_Key := p_integrity_Key, line_Identifier := p_line_Identifier, framed_IP_Address := p_framed_IP_Address Loading @@ -468,13 +534,13 @@ module DiameterCxDx_Templates { template (present) SIP_Authentication_Scheme_AVP mw_sIPAuthenticationScheme(template (present) UTF8String p_aVP_Data) := { sIP_Authentication_Scheme_3GPP_AVP := { aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sIP_Authentication_Scheme_AVP_Code, 4, c_vendId3gpp), aVP_Header := mw_aVP_Header_VMbit1(c_sIP_Authentication_Scheme_AVP_Code), aVP_Data := p_aVP_Data } } template Line_Identifier_AVP mw_line_Identifier_dummy := { aVP_Header := mw_aVP_HeaderVid_Mbit1(c_line_Identifier_AVP_Code, ?, c_vendId3gpp), aVP_Header := mw_aVP_HeaderVid_Mbit1(c_line_Identifier_AVP_Code, ?, c_vendIdETSI), aVP_Data := ? } Loading @@ -496,6 +562,28 @@ module DiameterCxDx_Templates { aVP_Data := ? } } template SIP_Digest_Authenticate_AVP mw_IP_Digest_Authenticate_Relm_Qop_HA1 := { aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_sIP_Digest_Authenticate_AVP_Code), digest_Realm := ?, digest_Algorithm := *, digest_QoP := ?, digest_HA1 := ?, aVP_Type := * } template SIP_Number_Auth_Items_AVP mw_sIPNumberAuthItems (template (present) UInt32 p_avpData := ?) := { aVP_Header := mw_aVP_Header_VMbit1(c_sIP_Number_Auth_Items_AVP_Code), aVP_Data := p_avpData } template Identity_with_Emergency_Registration_AVP mw_IdentityWithEmergencyReg := { aVP_Header := mw_aVP_Header_VMbit1(c_identity_with_Emergency_Registration_AVP_Code), user_Name := ?, public_Identity := ?, aVP_Type := * } }//end group awaitingTemplatesForAVPs } //end group SpecificAVPHeaders Loading Loading @@ -832,7 +920,8 @@ module DiameterCxDx_Templates { template (value) LIR_Body_AVP m_LIR_basic (template (value) Origin_Host_AVP p_originHost, template (value) Origin_Realm_AVP p_originRealm, template (value) Destination_Realm_AVP p_destinationRealm, template (omit) Public_Identity_AVP p_public_Identity) template (omit) Public_Identity_AVP p_public_Identity, template (omit) Destination_Host_AVP p_destinationHost := omit) modifies m_LIR_Body_dummy := { vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id_Cx, //mandatory in TS 129 229 auth_Application_Id := omit, //not in TS 129 229 Loading @@ -841,7 +930,7 @@ module DiameterCxDx_Templates { origin_Realm := p_originRealm, destination_Realm := p_destinationRealm, sIP_AOR := omit, //not in TS129 229 destination_Host := omit, destination_Host := p_destinationHost, originating_Request := omit, //only TS129 229 supported_Features := omit, //only TS129 229 public_Identity := p_public_Identity, //required in TS129 229 Loading @@ -856,6 +945,7 @@ module DiameterCxDx_Templates { template (value) Origin_Realm_AVP p_originRealm, template (value) Destination_Realm_AVP p_destinationRealm, template (omit) Public_Identity_AVP p_public_Identity, template (omit) Destination_Host_AVP p_destinationHost := omit, template (omit) User_Authorization_Type_AVP p_user_Authorization_Type) modifies m_LIR_basic := { user_Authorization_Type := p_user_Authorization_Type //only TS129 229 Loading @@ -865,6 +955,7 @@ module DiameterCxDx_Templates { template (value) Origin_Realm_AVP p_originRealm, template (value) Destination_Realm_AVP p_destinationRealm, template (omit) Public_Identity_AVP p_public_Identity, template (omit) Destination_Host_AVP p_destinationHost := omit, template (omit) Originating_Request_AVP p_originating_Request_AVP) modifies m_LIR_basic := { originating_Request := p_originating_Request_AVP //only TS129 229 Loading Loading @@ -1478,7 +1569,7 @@ module DiameterCxDx_Templates { template (present) Origin_Host_AVP p_originHost:=?, template (present) Origin_Realm_AVP p_originRealm:=?, template (present) Destination_Realm_AVP p_destinationRealm:=?, template User_Name_AVP p_userName:=?, template User_Name_AVP p_userName:=*, template (present) Auth_Session_State_AVP p_auth_Session_State:=?, template SAR_Body_AVP.public_Identity p_public_Identity:=*, template Server_Name_AVP p_server_Name:=?, Loading Loading
DiameterCxDx/ttcn/DiameterCxDx_Cx_TCFunctions.ttcn3 +484 −800 File changed.Preview size limit exceeded, changes collapsed. Show changes
DiameterCxDx/ttcn/DiameterCxDx_Dx_TCFunctions.ttcn3 +3 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,9 @@ module DiameterCxDx_Dx_TCFunctions { vc_userName, vc_publicIdentity, m_sIPNumberAuthItems(1), DiameterCxDx_Templates.m_sIPAuthDataItem_dummy, //TODO: Set real data here m_sIPAuthDataItem_authScheme(// containing a SIP-Auth-Data-Item AVP m_sIPAuthenticationScheme("DIGEST") // indicating “Digest-AKAv1-MD5” ), vc_serverName ) )); Loading
DiameterCxDx/ttcn/DiameterCxDx_PIXITS.ttcn +5 −5 Original line number Diff line number Diff line Loading @@ -237,7 +237,7 @@ module DiameterCxDx_PIXITS * form, as described in 3GPP TS 23.003 [13]. * @see 3GPP TS 29.229 6.3.2 Public-Identity AVP */ modulepar charstring PX_PublicIdentity := "public_identity@etsi.org"; modulepar UTF8String PX_PublicIdentity := "public_identity@etsi.org"; /** @desc UTF8String, * the Public-Identity value shall be different to PX_PublicIdentity. Loading Loading @@ -314,10 +314,10 @@ module DiameterCxDx_PIXITS */ modulepar DiameterURI PX_DiameterUri := { scheme := "aaa", diameterId_FQDN := "FQDN", portField := 6666, transport := "tcp", protocol := "diameter" diameterId_FQDN := "host.etsi.org", portField := omit, transport := omit, protocol := omit }; /** @desc Integer SIP-Item-Number AVP Loading
DiameterCxDx/ttcn/DiameterCxDx_Steps.ttcn +47 −43 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ vc_SUT_port := PX_DIAMETER_CX_SUT_HSS_PORT; vc_sessionId := m_sessionId(PX_SessionID); vc_sessionId2 := m_sessionId(PX_SessionID&"1"); vc_originHost := m_originHost(PX_OriginHost); vc_originRealm := m_originRealm(PX_OriginRealm); // realm of the originator (TS) Loading Loading @@ -415,7 +416,7 @@ f_cscfInitialRegistrationCx(); f_w_MAR_MAA(DIAMETER_SUCCESS_E); f_cscfSecondRegistratonCx(); f_w_SAR_SAA(DIAMETER_SUCCESS_E); f_w_SAR_SAA(DIAMETER_SUCCESS_E,-,m_serverAssignmentType(REGISTRATION_E)); } // End of function f_cscfRegistrationCx /** Loading Loading @@ -447,7 +448,7 @@ f_w_UAR_UAA( -, omit, DIAMETER_FIRST_REGISTRATION_E DIAMETER_SUBSEQUENT_REGISTRATION_E ); } // End of function f_cscfSecondRegistratonCx Loading @@ -459,13 +460,13 @@ * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.1 Registration– user not registered */ function f_cscfDeregistrationCx() runs on DiameterCx { f_w_UAR_UAA(mw_UAR_Body_dummy, DIAMETER_SUCCESS_E); f_w_SAR_SAA(DIAMETER_SUCCESS_E); f_w_UAR_UAA(mw_UAR, DIAMETER_SUCCESS_E); f_w_SAR_SAA(DIAMETER_SUCCESS_E,-,m_serverAssignmentType(USER_DEREGISTRATION_E)); } // End of function f_cscfRegistrationCx function f_s_MAR_MAA () runs on DiameterCx { function f_s_MAR_MAA (in Session_Id_AVP p_sessionId) runs on DiameterCx { f_send_MAR(m_MAR_Msg( vc_sessionId, p_sessionId, m_MAR_withServerName( vc_originHost, vc_originRealm, Loading @@ -477,14 +478,14 @@ vc_serverName ) )); f_awaiting_MAA(mw_MAA_Msg(vc_sessionId, mw_MAA_basic)) f_awaiting_MAA(mw_MAA_Msg(p_sessionId, mw_MAA_basic)) } function f_s_SAR_SAA ( function f_s_SAR_SAA (in Session_Id_AVP p_sessionId, in Srv_Assgmt_Type_Code p_serverAssignmentType := UNREGISTERED_USER_E ) runs on DiameterCx { f_send_SAR(m_SAR_Msg( vc_sessionId, p_sessionId, m_SAR_withUserNameAndPID( vc_originHost, vc_originRealm, Loading @@ -496,7 +497,7 @@ valueof(vc_publicIdentity) ) )); f_awaiting_SAA(mw_SAA_Msg(vc_sessionId, mw_SAA_basic)) f_awaiting_SAA(mw_SAA_Msg(p_sessionId, mw_SAA_basic)) } /** Loading @@ -505,11 +506,11 @@ * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.3 Registration– user not registered */ function f_s_UAR_UAA_deRegistration() runs on DiameterCx { function f_s_UAR_UAA_deRegistration(in Session_Id_AVP p_sessionId) runs on DiameterCx { f_send_UAR( m_UAR_Msg( vc_sessionId, p_sessionId, m_UAR_UauthDhostFlags( vc_originHost, vc_originRealm, Loading @@ -524,7 +525,7 @@ f_awaiting_UAA( mw_UAA_Msg( vc_sessionId, p_sessionId, mw_UAA_ResulExpreSernaSerca( mw_resultCode( DIAMETER_SUCCESS_E Loading @@ -538,13 +539,14 @@ /** * @desc Initiate an SAR/SAA de-registration * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.3 Registration– user not registered */ function f_s_SAR_SAA_deRegistration() runs on DiameterCx { function f_s_SAR_SAA_deRegistration(in Session_Id_AVP p_sessionId) runs on DiameterCx { f_s_SAR_SAA(USER_DEREGISTRATION_E); // SAR de-registration f_s_SAR_SAA(p_sessionId, USER_DEREGISTRATION_E); // SAR de-registration } // End of function f_s_SAR_SAA_deRegistration Loading @@ -556,19 +558,20 @@ * @param p_userName * @param p_publicIdentity * @param p_uar_Flags_Cx * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.1 Registration– user not registered */ function f_hssRegistrationCx( in charstring p_userName := PX_UserName, in charstring p_publicIdentity := PX_PublicIdentity, function f_hssRegistrationCx(in Session_Id_AVP p_sessionId, in UTF8String p_userName := PX_UserName, in UTF8String p_publicIdentity := PX_PublicIdentity, in template (omit) UAR_Flags_AVP p_uar_Flags_Cx := omit ) runs on DiameterCx { f_hssInitialRegistrationCx(p_userName, p_publicIdentity, p_uar_Flags_Cx); // With DIAMETER_FIRST_REGISTRATION f_s_MAR_MAA(); f_hssSecondRegistratonCx(p_uar_Flags_Cx); // With SUBEQUENT_REGISTRATION f_s_SAR_SAA(UNREGISTERED_USER_E); // SAR registration f_hssInitialRegistrationCx(p_sessionId, p_userName, p_publicIdentity, p_uar_Flags_Cx); // With DIAMETER_FIRST_REGISTRATION f_s_MAR_MAA(p_sessionId); f_hssSecondRegistratonCx(p_sessionId, p_uar_Flags_Cx); // With SUBEQUENT_REGISTRATION f_s_SAR_SAA(p_sessionId, REGISTRATION_E); // SAR registration } // End of function f_hssRegistrationCx /** Loading @@ -576,13 +579,14 @@ * @param p_userName * @param p_publicIdentity * @param p_uar_Flags_Cx * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.1 Registration– user not registered */ function f_hssInitialRegistrationCx( in charstring p_userName := PX_UserName, in charstring p_publicIdentity := PX_PublicIdentity, function f_hssInitialRegistrationCx(in Session_Id_AVP p_sessionId, in UTF8String p_userName := PX_UserName, in UTF8String p_publicIdentity := PX_PublicIdentity, in template (omit) UAR_Flags_AVP p_uar_Flags_Cx := omit ) runs on DiameterCx { vc_userName := m_userName(p_userName); Loading @@ -591,11 +595,11 @@ } else { vc_publicIdentity := m_publicIdentity(p_publicIdentity); } vc_visitedNetworkId := m_visitedNetworkId(PX_VisitedNetworkId); //vc_visitedNetworkId := m_visitedNetworkId(PX_VisitedNetworkId); f_send_UAR( m_UAR_Msg( vc_sessionId, p_sessionId, m_UAR_UauthDhostFlags( vc_originHost, vc_originRealm, Loading @@ -610,7 +614,7 @@ f_awaiting_UAA( mw_UAA_Msg( vc_sessionId, p_sessionId, mw_UAA_ResulExpre( omit, mw_experimentalResult( Loading @@ -624,15 +628,16 @@ /** * @desc Initiate the second registration with SUBEQUENT_REGISTRATION experimental result * @param p_uar_Flags_Cx * @param p_sessionId * @verdict pass on success, fail otherwise */ function f_hssSecondRegistratonCx( function f_hssSecondRegistratonCx(in Session_Id_AVP p_sessionId, in template (omit) UAR_Flags_AVP p_uar_Flags_Cx := omit ) runs on DiameterCx { f_send_UAR( m_UAR_Msg( vc_sessionId, p_sessionId, m_UAR_UauthDhostFlags( vc_originHost, vc_originRealm, Loading @@ -647,7 +652,7 @@ f_awaiting_UAA( mw_UAA_Msg( vc_sessionId, p_sessionId, mw_UAA_ResulExpre( omit, mw_experimentalResult( Loading @@ -660,15 +665,16 @@ /** * @desc Initiate a full HSS de-registration * @param p_sessionId * @verdict pass on success, fail otherwise * * @see ETSI TS 129 228 V12.7.0 (2015-10) Clause A.4.3 Registration– user not registered */ function f_hssDeregistrationCx() runs on DiameterCx { function f_hssDeregistrationCx(in Session_Id_AVP p_sessionId) runs on DiameterCx { f_s_UAR_UAA_deRegistration(); f_s_UAR_UAA_deRegistration(p_sessionId); f_s_SAR_SAA_deRegistration(); f_s_SAR_SAA_deRegistration(p_sessionId); } // End of function f_hssRegistrationCx Loading @@ -691,6 +697,7 @@ v_resultCodeAvp, v_expResultAvp); f_awaiting_UAR(mw_UAR_Msg(?, p_uAR)); vc_userName:= vc_recvDiamMsg.uAR_MSG.uAR_Body.user_Name; f_send_UAA(m_UAA_Msg(vc_sessionId, v_UAA)); } Loading @@ -715,11 +722,11 @@ } function f_w_SAR_SAA (in template (omit) Result_Code_Type p_resultCode, in template (omit) Experimental_Result_Type p_expResultCode := omit ) in template (omit) Experimental_Result_Type p_expResultCode := omit, in template Server_Assignment_Type_AVP p_server_Assignment_Type:=? ) runs on DiameterCx { var template (omit) Result_Code_AVP v_resultCodeAvp := omit; var template (omit) Experimental_Result_AVP v_expResultAvp := omit; var template (value) MAA_Body_AVP v_MAA; if(ispresent(p_resultCode)){ v_resultCodeAvp := m_resultCode(valueof(p_resultCode)); Loading @@ -727,10 +734,7 @@ v_expResultAvp := m_experimentalResult(valueof(p_expResultCode)); } v_MAA := m_MAA_basic(vc_originHost, vc_originRealm, v_resultCodeAvp, v_expResultAvp); f_awaiting_SAR(mw_SAR_Msg(?, mw_SAR)); // TODO To be refined a little beat f_awaiting_SAR(mw_SAR_Msg(?, mw_SAR(-,-,-,omit,-,-,-,p_server_Assignment_Type))); f_send_SAA(m_SAA_Msg(vc_sessionId, m_SAA_basic(vc_originHost, vc_originRealm, m_resultCode(DIAMETER_SUCCESS_E)))); } Loading
DiameterCxDx/ttcn/DiameterCxDx_Templates.ttcn +122 −31 Original line number Diff line number Diff line Loading @@ -7,13 +7,18 @@ * may be overwritten by future releases of this library * End users are encouraged to contact the distributers of this * module regarding their modifications or additions * Note that usage of encvalue command (codec function) returns bitstring * length of the message or AVP with padding bytes. Therefore this function * is not used on the first level where length of one single AVP can be * calculated with lengthof function. It shall be used only on message level * or in case where one AVP is group of other AVPs. * @remark Any additions to the templates shall follow the design rules * and always modify base templates only; */ module DiameterCxDx_Templates { import from LibDiameter_Interface {} import from LibDiameter_Interface all; import from LibCommon_BasicTypesAndValues {type UInt32, UInt24;} Loading Loading @@ -127,14 +132,14 @@ module DiameterCxDx_Templates { template (value) Redirect_Host_AVP m_redirectHost(template (value) Diameter_Identity p_avpData) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Host_AVP_Code, lengthof(p_avpData), omit), aVP_Header := m_aVP_HeaderVid_Mbit1(c_redirect_Host_AVP_Code, f_getCharStringLength(p_avpData), omit), aVP_Data := p_avpData } template Deregistration_Reason_AVP m_deregistrationReason(in template (value) Reason_Code_AVP p_reasonCode ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_reason_Code_AVP_Code, f_lengthof_AVP(p_reasonCode.aVP_Header), aVP_Header := m_aVP_HeaderVid_Mbit1(c_deregistration_Reason_AVP_Code, valueof(p_reasonCode.aVP_Header.aVP_len), c_vendId3gpp), reason_Code := p_reasonCode, reason_Info := omit, Loading @@ -149,7 +154,9 @@ module DiameterCxDx_Templates { template (value) Charging_Information_AVP m_chargingInformation(in template (omit) Primary_Event_Charging_Function_Name_AVP p_primary_Event_Charging_Function_Name ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Information_AVP_Code, 4, c_vendId3gpp), //<AVP header: 618 ....> aVP_Header := m_aVP_HeaderVid_Mbit1(c_charging_Information_AVP_Code, f_getEncvalueLength(encvalue(p_primary_Event_Charging_Function_Name)),//p_primary_Event_Charging_Function_Name.aVP_Header.aVP_len, c_vendId3gpp), //<AVP header: 618 ....> primary_Event_Charging_Function_Name := p_primary_Event_Charging_Function_Name, secondary_Event_Charging_Function_Name := omit, primary_Charging_Collection_Function_Name := omit, Loading @@ -157,12 +164,23 @@ module DiameterCxDx_Templates { aVP_Type := omit } template (value) Primary_Event_Charging_Function_Name_AVP m_primary_event_charging_function_name(in template (value) DiameterURI p_aVP_Data template (value) Primary_Event_Charging_Function_Name_AVP m_primary_event_charging_function_name(in template (value) UTF8String p_aVP_Data ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_primary_Event_Charging_Function_Name_AVP_Code, 4, c_vendId3gpp), //<AVP header: 619 ....> aVP_Header := m_aVP_HeaderVid_Mbit1(c_primary_Event_Charging_Function_Name_AVP_Code, f_getUTF8StringLength(p_aVP_Data), c_vendId3gpp), //<AVP header: 619 ....> aVP_Data := p_aVP_Data } template (value) DiameterURI m_diameterURI := { scheme := "aaa", diameterId_FQDN := "host.etsi.org", portField := omit, transport:= omit, protocol:= omit } template (value) SIP_Authentication_Context_AVP m_sIP_Authentication_Context_digest( in template (value) octetstring p_aVP_Data ) := { Loading Loading @@ -200,10 +218,10 @@ module DiameterCxDx_Templates { aVP_Data := p_aVP_Data } template (value) User_Data_AVP m_userData(template (value) octetstring p_aVpData) := { template (value) User_Data_AVP m_userData(in octetstring p_aVpData) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_user_Data_AVP_Code, 4+f_getOctetStringLength(p_aVpData), f_getOctetStringLength(p_aVpData), c_vendId3gpp), aVP_Data := p_aVpData } Loading Loading @@ -243,30 +261,76 @@ module DiameterCxDx_Templates { } } template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (omit) SIP_Item_Number_AVP p_sIP_Item_Number := omit, template (omit) SIP_Authenticate_AVP p_sIP_Authenticate := omit, template (omit) SIP_Authorization_AVP p_sIP_Authorization := omit, template (omit) SIP_Authentication_Context_AVP p_sIP_Authentication_Context := omit, template (omit) Confidentiality_Key_AVP p_confidentiality_Key := omit, template (omit) Integrity_Key_AVP p_integrity_Key := omit, template (omit) SIP_Digest_Authenticate_AVP p_sIP_Digest_Authenticate := omit, template (omit) Line_Identifier_AVP p_line_Identifier := omit template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem_authScheme_sipAuthorization (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (value) SIP_Authorization_AVP p_sIP_Authorization ) modifies m_sIPAuthDataItem_dummy := { sIP_Auth_Data_Item_3GPP_AVP :={ aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, 1/*correct length calculation needed*/, c_vendId3gpp), aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + f_addPaddedBytes2Length(p_sIP_Authorization.sIP_Authorization_3GPP_AVP.aVP_Header.aVP_len), c_vendId3gpp), sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, sIP_Item_Number := p_sIP_Item_Number, sIP_Authenticate := p_sIP_Authenticate, sIP_Authorization := p_sIP_Authorization, sIP_Authentication_Context := p_sIP_Authentication_Context, confidentiality_Key := p_confidentiality_Key, integrity_Key := p_integrity_Key, sIP_Digest_Authenticate := p_sIP_Digest_Authenticate, line_Identifier := p_line_Identifier sIP_Authorization := p_sIP_Authorization } } template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem_authScheme_sipAuthContext (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (value) SIP_Authentication_Context_AVP p_sIP_Authentication_Context ) modifies m_sIPAuthDataItem_dummy := { sIP_Auth_Data_Item_3GPP_AVP :={ aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + f_addPaddedBytes2Length(p_sIP_Authentication_Context.aVP_Header.aVP_len), c_vendId3gpp), sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, sIP_Authentication_Context := p_sIP_Authentication_Context } } template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem_authScheme_itemNo_sipAuthContext (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, template (value) SIP_Item_Number_AVP p_sIP_Item_Number, template (value) SIP_Authentication_Context_AVP p_sIP_Authentication_Context ) modifies m_sIPAuthDataItem_dummy := { sIP_Auth_Data_Item_3GPP_AVP :={ aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + p_sIP_Item_Number.aVP_Header.aVP_len + f_addPaddedBytes2Length(p_sIP_Authentication_Context.aVP_Header.aVP_len), c_vendId3gpp), sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, sIP_Item_Number := p_sIP_Item_Number, sIP_Authentication_Context := p_sIP_Authentication_Context } } // // template SIP_Auth_Data_Item_AVP m_sIPAuthDataItem (template (value) SIP_Authentication_Scheme_AVP p_sIP_Authentication_Scheme, // template (omit) SIP_Item_Number_AVP p_sIP_Item_Number := omit, // template (omit) SIP_Authenticate_AVP p_sIP_Authenticate := omit, // template (omit) SIP_Authorization_AVP p_sIP_Authorization := omit, // template (omit) SIP_Authentication_Context_AVP p_sIP_Authentication_Context := omit, // template (omit) Confidentiality_Key_AVP p_confidentiality_Key := omit, // template (omit) Integrity_Key_AVP p_integrity_Key := omit, // template (omit) SIP_Digest_Authenticate_AVP p_sIP_Digest_Authenticate := omit, // template (omit) Line_Identifier_AVP p_line_Identifier := omit // ) modifies m_sIPAuthDataItem_dummy := { // sIP_Auth_Data_Item_3GPP_AVP :={ // aVP_Header := m_aVP_HeaderVid_Mbit1(c_sIP_Auth_Data_Item_AVP_Code, // f_addPaddedBytes2Length(p_sIP_Authentication_Scheme.sIP_Authentication_Scheme_3GPP_AVP.aVP_Header.aVP_len) + // p_sIP_Item_Number.aVP_Header.aVP_len + // f_addPaddedBytes2Length(p_sIP_Authentication_Context.aVP_Header.aVP_len), // c_vendId3gpp), // sIP_Authentication_Scheme := p_sIP_Authentication_Scheme, // sIP_Item_Number := p_sIP_Item_Number, // sIP_Authenticate := p_sIP_Authenticate, // sIP_Authorization := p_sIP_Authorization, // sIP_Authentication_Context := p_sIP_Authentication_Context, // confidentiality_Key := p_confidentiality_Key, // integrity_Key := p_integrity_Key, // sIP_Digest_Authenticate := p_sIP_Digest_Authenticate, // line_Identifier := p_line_Identifier // } // } }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading @@ -451,6 +515,7 @@ module DiameterCxDx_Templates { in template SIP_Authenticate_AVP p_sIP_Authenticate := *, in template SIP_Authorization_AVP p_sIP_Authorization := *, in template SIP_Authentication_Context_AVP p_sIP_Authentication_Context := *, in template SIP_Digest_Authenticate_AVP p_sIP_Digest_Authenticate := *, in template Integrity_Key_AVP p_integrity_Key := *, in template Line_Identifier_AVP p_line_Identifier := *, in template Framed_IP_Address_AVP p_framed_IP_Address := * Loading @@ -460,6 +525,7 @@ module DiameterCxDx_Templates { sIP_Authenticate := p_sIP_Authenticate, sIP_Authorization := p_sIP_Authorization, sIP_Authentication_Context := p_sIP_Authentication_Context, sIP_Digest_Authenticate := p_sIP_Digest_Authenticate, integrity_Key := p_integrity_Key, line_Identifier := p_line_Identifier, framed_IP_Address := p_framed_IP_Address Loading @@ -468,13 +534,13 @@ module DiameterCxDx_Templates { template (present) SIP_Authentication_Scheme_AVP mw_sIPAuthenticationScheme(template (present) UTF8String p_aVP_Data) := { sIP_Authentication_Scheme_3GPP_AVP := { aVP_Header := mw_aVP_HeaderVid_Mbit1(c_sIP_Authentication_Scheme_AVP_Code, 4, c_vendId3gpp), aVP_Header := mw_aVP_Header_VMbit1(c_sIP_Authentication_Scheme_AVP_Code), aVP_Data := p_aVP_Data } } template Line_Identifier_AVP mw_line_Identifier_dummy := { aVP_Header := mw_aVP_HeaderVid_Mbit1(c_line_Identifier_AVP_Code, ?, c_vendId3gpp), aVP_Header := mw_aVP_HeaderVid_Mbit1(c_line_Identifier_AVP_Code, ?, c_vendIdETSI), aVP_Data := ? } Loading @@ -496,6 +562,28 @@ module DiameterCxDx_Templates { aVP_Data := ? } } template SIP_Digest_Authenticate_AVP mw_IP_Digest_Authenticate_Relm_Qop_HA1 := { aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_sIP_Digest_Authenticate_AVP_Code), digest_Realm := ?, digest_Algorithm := *, digest_QoP := ?, digest_HA1 := ?, aVP_Type := * } template SIP_Number_Auth_Items_AVP mw_sIPNumberAuthItems (template (present) UInt32 p_avpData := ?) := { aVP_Header := mw_aVP_Header_VMbit1(c_sIP_Number_Auth_Items_AVP_Code), aVP_Data := p_avpData } template Identity_with_Emergency_Registration_AVP mw_IdentityWithEmergencyReg := { aVP_Header := mw_aVP_Header_VMbit1(c_identity_with_Emergency_Registration_AVP_Code), user_Name := ?, public_Identity := ?, aVP_Type := * } }//end group awaitingTemplatesForAVPs } //end group SpecificAVPHeaders Loading Loading @@ -832,7 +920,8 @@ module DiameterCxDx_Templates { template (value) LIR_Body_AVP m_LIR_basic (template (value) Origin_Host_AVP p_originHost, template (value) Origin_Realm_AVP p_originRealm, template (value) Destination_Realm_AVP p_destinationRealm, template (omit) Public_Identity_AVP p_public_Identity) template (omit) Public_Identity_AVP p_public_Identity, template (omit) Destination_Host_AVP p_destinationHost := omit) modifies m_LIR_Body_dummy := { vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id_Cx, //mandatory in TS 129 229 auth_Application_Id := omit, //not in TS 129 229 Loading @@ -841,7 +930,7 @@ module DiameterCxDx_Templates { origin_Realm := p_originRealm, destination_Realm := p_destinationRealm, sIP_AOR := omit, //not in TS129 229 destination_Host := omit, destination_Host := p_destinationHost, originating_Request := omit, //only TS129 229 supported_Features := omit, //only TS129 229 public_Identity := p_public_Identity, //required in TS129 229 Loading @@ -856,6 +945,7 @@ module DiameterCxDx_Templates { template (value) Origin_Realm_AVP p_originRealm, template (value) Destination_Realm_AVP p_destinationRealm, template (omit) Public_Identity_AVP p_public_Identity, template (omit) Destination_Host_AVP p_destinationHost := omit, template (omit) User_Authorization_Type_AVP p_user_Authorization_Type) modifies m_LIR_basic := { user_Authorization_Type := p_user_Authorization_Type //only TS129 229 Loading @@ -865,6 +955,7 @@ module DiameterCxDx_Templates { template (value) Origin_Realm_AVP p_originRealm, template (value) Destination_Realm_AVP p_destinationRealm, template (omit) Public_Identity_AVP p_public_Identity, template (omit) Destination_Host_AVP p_destinationHost := omit, template (omit) Originating_Request_AVP p_originating_Request_AVP) modifies m_LIR_basic := { originating_Request := p_originating_Request_AVP //only TS129 229 Loading Loading @@ -1478,7 +1569,7 @@ module DiameterCxDx_Templates { template (present) Origin_Host_AVP p_originHost:=?, template (present) Origin_Realm_AVP p_originRealm:=?, template (present) Destination_Realm_AVP p_destinationRealm:=?, template User_Name_AVP p_userName:=?, template User_Name_AVP p_userName:=*, template (present) Auth_Session_State_AVP p_auth_Session_State:=?, template SAR_Body_AVP.public_Identity p_public_Identity:=*, template Server_Name_AVP p_server_Name:=?, Loading