Loading LibCommon @ 22cc04e3 Original line number Diff line number Diff line Subproject commit 8f0b6280029f2b786f289ee6cf671553a4806b17 Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916 LibDiameter @ 0a2c2794 Original line number Diff line number Diff line Subproject commit b62f32c33a6306ba8fcdd214e7d97b103fdd47f0 Subproject commit 0a2c2794adaf00aa61ebda53e9b429a7ebd71b81 ttcn/DiameterShDh_Steps.ttcn3 +15 −8 Original line number Diff line number Diff line module DiameterShDh_Steps { //LibCommon import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all; import from LibCommon_BasicTypesAndValues {type UInt8;type UInt32;};//LibCommon import from LibCommon_DataStrings all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all ; import from LibCommon_VerdictControl all ; Loading @@ -14,6 +14,7 @@ module DiameterShDh_Steps { import from LibDiameter_Steps all; import from LibDiameter_PIXITS all; import from LibDiameter_Interface all; import from LibDiameter_Interface all; //DiameterRFRo import from DiameterShDh_PIXITS all; Loading Loading @@ -106,20 +107,26 @@ module DiameterShDh_Steps { altstep a_diameter_event() runs on DiameterShDh { [] DIAMP.receive (DIAMETER_MSG:{uDR_MSG := mdw_uDR mdw_uDR( ?, mdw_udrBodyAvps(?,?,?)) }) -> value vc_recvDiamMsgDefault { vc_recv_hopid:= vc_recvDiamMsgDefault.uDR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsgDefault.uDR_MSG.header.endid; vc_accountingRecordNumber := vc_recvDiamMsgDefault.uDR_MSG.uDR_Body.accounting_Record_Number; /* TODO f_send_UDA( f_send_UDA( md_uDA( vc_sessionId vc_sessionId, // containing a Session-ID AVP md_udaBodyAvps( m_resultCode( // containing a Result-Code AVP DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS ), vc_originHost, // containing an Origin-Host AVP vc_originRealm )) );*/ ); repeat; } }//end altstep a_diameter_event() Loading ttcn/DiameterShDh_TCFunctions.ttcn3 +23 −15 Original line number Diff line number Diff line Loading @@ -46,21 +46,29 @@ module DiameterShDh_TCFunctions { f_send_UDR( md_uDR( vc_sessionId vc_sessionId, md_udrBodyAvps( m_vendor_Specific_Appl_Id_Sh, vc_originHost, // containing an Origin-Host AVP vc_originRealm, // containing an Origin-Realm AVP vc_destinationRealm // containing a Destination-Realm AVP ) ) ); /* TODO f_awaiting_UDA( f_awaiting_UDA( mdw_uDA( vc_sessionId, // containing a Session-ID AVP mdw_udaBodyAvps( mw_resultCode( // containing a Result-Code AVP DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS mw_UDA_ResulFaile( mw_resultCode( DIAMETER_MISSING_AVP_E // containing a Result-Code AVP // indicating DIAMETER_MISSING_AVP ), vc_originHost_IUT, // containing an Origin-Host AVP vc_originRealm_IUT )) );*/ ))) ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); Loading ttcn/DiameterShDh_Templates.ttcn3 +163 −47 Original line number Diff line number Diff line Loading @@ -68,33 +68,24 @@ module DiameterShDh_Templates { } // End of group HeaderFieldTemplates // Even if template is defined in DiameterS9_Templates module we keep it here to have ShDh specific template (value) Subscription_Id_AVP m_subscription_Id( in template (value) Subscription_Id_Type_AVP p_typeAVP, in template (value) Subscription_Id_Data_AVP p_dataAVP ) := { aVP_Header := m_aVP_HeaderVid_Mbit1( c_subscription_Id_AVP_Code, f_getByteAlignedLength(p_typeAVP.aVP_Header.aVP_len) + f_getByteAlignedLength(p_dataAVP.aVP_Header.aVP_len), omit), subscription_Id_Type := p_typeAVP, subscription_Id_Data := p_dataAVP } // End of template m_subscription_Id template (value) Subscription_Id_Type_AVP m_subscription_Id_Type( in template (value) Subscription_Id_Ty_Type p_aVPData ):= { aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Type_AVP_Code, f_getEnumLength()), aVP_Data := p_aVPData } // End of template m_subscription_Id_Type template (value) Subscription_Id_Data_AVP m_subscription_Id_Data( in template (value) UTF8String p_aVPData ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Data_AVP_Code, f_getUTF8StringLength(valueof(p_aVPData))), aVP_Data := p_aVPData } // End of template m_subscription_Id_Data group HeaderFieldTemplates { group SpecificAVPHeaders { group sendingTemplatesForAVPs{ template Vendor_Specific_Appl_Id_AVP m_vendor_Specific_Appl_Id_Sh modifies m_vendor_Specific_Appl_Id_dummy := { aVP_Header := m_aVP_Header_Mbit1(c_vendor_Specific_Appl_Id_AVP_Code, 12+12), vendor_Id := {m_vendorId(c_vendId3gpp)}, auth_Application_Id := {m_authApplicationId(c_applIdSh)}, acct_Application_Id := omit } } } } group Sh_modified_message_templates { Loading @@ -103,39 +94,164 @@ module DiameterShDh_Templates { /** * @desc Send template for UDR * @param p_sessionId Session identifier * @param p_acrBody UDR message body * @param p_udrBody UDR message body */ template (value) UDR_MSG md_uDR( in template (value) Session_Id_AVP p_sessionId, in template (value) UDR_Body_AVP p_acrBody in template (value) UDR_Body_AVP p_udrBody ) modifies m_UDR_dummy := { header := m_diameterHeaderReq_dummy(UDR_E, c_applIdSh), session_Id := p_sessionId, uDR_Body := p_acrBody uDR_Body := p_udrBody } // End of template md_uDR /** * @desc Send template for UDR * @param p_sessionId Session identifier * @param p_udrBody UDR message body */ template (value) UDR_MSG md_uDR_TflagSet( in template (value) Session_Id_AVP p_sessionId, in template (value) UDR_Body_AVP p_udrBody ) modifies m_UDR_dummy := { header := m_diameterHeaderReqDuplicated_dummy(UDR_E, c_applIdRf), session_Id := p_sessionId, uDR_Body := p_udrBody } // End of template md_uDR /** * @desc Send template for UDR message body */ template (value) UDR_Body_AVP md_udrBodyAvps( template (value) Origin_Host_AVP p_origin_Host, template (value) Origin_Realm_AVP p_origin_Realm, template (value) Destination_Realm_AVP p_destination_Realm, template (value) User_Identity_AVP p_user_Identity := m_user_Identity_dummy, template (value) Data_Reference_AVP p_data_Reference := m_data_Reference_dummy ) modifies m_UDR_Body_dummy := { vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id_Sh, origin_Host := p_origin_Host, origin_Realm := p_origin_Realm, destination_Realm := p_destination_Realm, user_Identity := p_user_Identity, data_Reference := {p_data_Reference} } // End of template md_udrBodyAvps } // End of group Sh_request_message_templates_send group Sh_request_message_templates_receive { group UDR_MSG_{ /** * @desc Main receive message for CDF_Sh port * @param p_uDR_MSG AC-Request message * @desc Main receive message for HSS_Sh port * @param p_uDR_MSG UD-Request message */ template (present) UDR_MSG mdw_uDR( in template (present) Session_Id_AVP p_sessionId, in template (present) UDR_Body_AVP p_acrBody template (present) Session_Id_AVP p_sessionId, template (present) UDR_Body_AVP p_udrBody ) modifies mw_UDR_dummy := { header := mw_diameterHeaderReq_dummy(UDR_E, c_applIdSh), session_Id := p_sessionId, uDR_Body := p_acrBody uDR_Body := p_udrBody } // End of template mdw_uDR } /** * @desc Main receive message for HSS_Sh port * @param p_uDR_MSG UD-Request message */ template (present) UDR_MSG mdw_uDR_Header_UDRBody( template (present) DiameterHeader p_header, template (present) Session_Id_AVP p_sessionId, template (present) UDR_Body_AVP p_udrBody ) modifies mw_UDR_dummy := { header := p_header, session_Id := p_sessionId, uDR_Body := p_udrBody } // End of template mdw_uDR_Header_UDRBody } /** * @desc Receive template for UDR message body * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred * @param p_originHost Identifies the endpoint that originated the Diameter message * @param p_originRealm Realm of the originator * @param p_destinationRealm Destination realm */ template UDR_Body_AVP mdw_udrBodyAvps( template (present) Origin_Host_AVP p_originHost := ?, template (present) Origin_Realm_AVP p_originRealm := ?, template (present) Destination_Realm_AVP p_destinationRealm := ? ) modifies mw_UDR_Body_dummy := { origin_Host := p_originHost, origin_Realm := p_originRealm, destination_Realm := p_destinationRealm } // End of template mdw_udrBodyAvps } // End of group Sh_request_message_templates_receive group Sh_answer_message_templates_send { /** * @desc Send template for UDA * @param p_sessionId Session identifier * @param p_udaBody UDA message body */ template (value) UDA_MSG md_uDA( in template (value) Session_Id_AVP p_sessionId, in template (value) UDA_Body_AVP p_udaBody ) modifies m_UDA_dummy := { header := m_diameterHeaderAns_dummy(UDA_E, c_applIdRf), session_Id := p_sessionId, uDA_Body := p_udaBody } // End of template md_uDA template (omit) UDA_Body_AVP md_udaBodyAvps( in template (value) Result_Code_AVP p_resultCode, in template (value) Origin_Host_AVP p_originHost, in template (value) Origin_Realm_AVP p_originRealm ) modifies m_UDA_Body_dummy := { result_Code := p_resultCode, origin_Host := p_originHost, origin_Realm := p_originRealm } // End of template md_udaBodyAvps } // End of group Sh_answer_message_templates_send group Sh_answer_message_templates_receive { template UDA_Body_AVP mw_UDA_ResulFaile( template Result_Code_AVP p_resultCode, template (present) Origin_Host_AVP p_originHost, template (present) Origin_Realm_AVP p_originRealm, template UDA_Body_AVP.failed p_failed ) modifies mdw_udaBodyAvps := { result_Code := p_resultCode, // optional in TS 129 229 failed := p_failed // optional in TS 129 229 } // End of template mw_UDA_ResulFaile /** * @desc Send template for UDA * @param p_sessionId Session identifier * @param p_udaBody UDA message body */ template (present) UDA_MSG mdw_uDA( template (present) Session_Id_AVP p_sessionId, template (present) UDA_Body_AVP p_udaBody ) modifies mw_UDA_dummy := { header := mw_diameterHeaderAns_dummy(UDA_E, c_applIdRf), session_Id := p_sessionId, uDA_Body := p_udaBody } // End of template md_uDA template (present) UDA_Body_AVP mdw_udaBodyAvps( template (present) Result_Code_AVP p_resultCode, template (present) Origin_Host_AVP p_originHost, template (present) Origin_Realm_AVP p_originRealm ) modifies mw_UDA_Body_dummy := { result_Code := p_resultCode, origin_Host := p_originHost, origin_Realm := p_originRealm } // End of template mdw_udaBodyAvps } // End of group Sh_answer_message_templates_receive } // End of group Sh_modified_message_templates Loading Loading
LibCommon @ 22cc04e3 Original line number Diff line number Diff line Subproject commit 8f0b6280029f2b786f289ee6cf671553a4806b17 Subproject commit 22cc04e32b0e37f70a7df30df12727a6546e2916
LibDiameter @ 0a2c2794 Original line number Diff line number Diff line Subproject commit b62f32c33a6306ba8fcdd214e7d97b103fdd47f0 Subproject commit 0a2c2794adaf00aa61ebda53e9b429a7ebd71b81
ttcn/DiameterShDh_Steps.ttcn3 +15 −8 Original line number Diff line number Diff line module DiameterShDh_Steps { //LibCommon import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all; import from LibCommon_BasicTypesAndValues {type UInt8;type UInt32;};//LibCommon import from LibCommon_DataStrings all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all ; import from LibCommon_VerdictControl all ; Loading @@ -14,6 +14,7 @@ module DiameterShDh_Steps { import from LibDiameter_Steps all; import from LibDiameter_PIXITS all; import from LibDiameter_Interface all; import from LibDiameter_Interface all; //DiameterRFRo import from DiameterShDh_PIXITS all; Loading Loading @@ -106,20 +107,26 @@ module DiameterShDh_Steps { altstep a_diameter_event() runs on DiameterShDh { [] DIAMP.receive (DIAMETER_MSG:{uDR_MSG := mdw_uDR mdw_uDR( ?, mdw_udrBodyAvps(?,?,?)) }) -> value vc_recvDiamMsgDefault { vc_recv_hopid:= vc_recvDiamMsgDefault.uDR_MSG.header.hopid; vc_recv_endid:= vc_recvDiamMsgDefault.uDR_MSG.header.endid; vc_accountingRecordNumber := vc_recvDiamMsgDefault.uDR_MSG.uDR_Body.accounting_Record_Number; /* TODO f_send_UDA( f_send_UDA( md_uDA( vc_sessionId vc_sessionId, // containing a Session-ID AVP md_udaBodyAvps( m_resultCode( // containing a Result-Code AVP DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS ), vc_originHost, // containing an Origin-Host AVP vc_originRealm )) );*/ ); repeat; } }//end altstep a_diameter_event() Loading
ttcn/DiameterShDh_TCFunctions.ttcn3 +23 −15 Original line number Diff line number Diff line Loading @@ -46,21 +46,29 @@ module DiameterShDh_TCFunctions { f_send_UDR( md_uDR( vc_sessionId vc_sessionId, md_udrBodyAvps( m_vendor_Specific_Appl_Id_Sh, vc_originHost, // containing an Origin-Host AVP vc_originRealm, // containing an Origin-Realm AVP vc_destinationRealm // containing a Destination-Realm AVP ) ) ); /* TODO f_awaiting_UDA( f_awaiting_UDA( mdw_uDA( vc_sessionId, // containing a Session-ID AVP mdw_udaBodyAvps( mw_resultCode( // containing a Result-Code AVP DIAMETER_SUCCESS_E // indicating DIAMETER_SUCCESS mw_UDA_ResulFaile( mw_resultCode( DIAMETER_MISSING_AVP_E // containing a Result-Code AVP // indicating DIAMETER_MISSING_AVP ), vc_originHost_IUT, // containing an Origin-Host AVP vc_originRealm_IUT )) );*/ ))) ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); Loading
ttcn/DiameterShDh_Templates.ttcn3 +163 −47 Original line number Diff line number Diff line Loading @@ -68,33 +68,24 @@ module DiameterShDh_Templates { } // End of group HeaderFieldTemplates // Even if template is defined in DiameterS9_Templates module we keep it here to have ShDh specific template (value) Subscription_Id_AVP m_subscription_Id( in template (value) Subscription_Id_Type_AVP p_typeAVP, in template (value) Subscription_Id_Data_AVP p_dataAVP ) := { aVP_Header := m_aVP_HeaderVid_Mbit1( c_subscription_Id_AVP_Code, f_getByteAlignedLength(p_typeAVP.aVP_Header.aVP_len) + f_getByteAlignedLength(p_dataAVP.aVP_Header.aVP_len), omit), subscription_Id_Type := p_typeAVP, subscription_Id_Data := p_dataAVP } // End of template m_subscription_Id template (value) Subscription_Id_Type_AVP m_subscription_Id_Type( in template (value) Subscription_Id_Ty_Type p_aVPData ):= { aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Type_AVP_Code, f_getEnumLength()), aVP_Data := p_aVPData } // End of template m_subscription_Id_Type template (value) Subscription_Id_Data_AVP m_subscription_Id_Data( in template (value) UTF8String p_aVPData ) := { aVP_Header := m_aVP_HeaderVid_Mbit1(c_subscription_Id_Data_AVP_Code, f_getUTF8StringLength(valueof(p_aVPData))), aVP_Data := p_aVPData } // End of template m_subscription_Id_Data group HeaderFieldTemplates { group SpecificAVPHeaders { group sendingTemplatesForAVPs{ template Vendor_Specific_Appl_Id_AVP m_vendor_Specific_Appl_Id_Sh modifies m_vendor_Specific_Appl_Id_dummy := { aVP_Header := m_aVP_Header_Mbit1(c_vendor_Specific_Appl_Id_AVP_Code, 12+12), vendor_Id := {m_vendorId(c_vendId3gpp)}, auth_Application_Id := {m_authApplicationId(c_applIdSh)}, acct_Application_Id := omit } } } } group Sh_modified_message_templates { Loading @@ -103,39 +94,164 @@ module DiameterShDh_Templates { /** * @desc Send template for UDR * @param p_sessionId Session identifier * @param p_acrBody UDR message body * @param p_udrBody UDR message body */ template (value) UDR_MSG md_uDR( in template (value) Session_Id_AVP p_sessionId, in template (value) UDR_Body_AVP p_acrBody in template (value) UDR_Body_AVP p_udrBody ) modifies m_UDR_dummy := { header := m_diameterHeaderReq_dummy(UDR_E, c_applIdSh), session_Id := p_sessionId, uDR_Body := p_acrBody uDR_Body := p_udrBody } // End of template md_uDR /** * @desc Send template for UDR * @param p_sessionId Session identifier * @param p_udrBody UDR message body */ template (value) UDR_MSG md_uDR_TflagSet( in template (value) Session_Id_AVP p_sessionId, in template (value) UDR_Body_AVP p_udrBody ) modifies m_UDR_dummy := { header := m_diameterHeaderReqDuplicated_dummy(UDR_E, c_applIdRf), session_Id := p_sessionId, uDR_Body := p_udrBody } // End of template md_uDR /** * @desc Send template for UDR message body */ template (value) UDR_Body_AVP md_udrBodyAvps( template (value) Origin_Host_AVP p_origin_Host, template (value) Origin_Realm_AVP p_origin_Realm, template (value) Destination_Realm_AVP p_destination_Realm, template (value) User_Identity_AVP p_user_Identity := m_user_Identity_dummy, template (value) Data_Reference_AVP p_data_Reference := m_data_Reference_dummy ) modifies m_UDR_Body_dummy := { vendor_Specific_Application_Id := m_vendor_Specific_Appl_Id_Sh, origin_Host := p_origin_Host, origin_Realm := p_origin_Realm, destination_Realm := p_destination_Realm, user_Identity := p_user_Identity, data_Reference := {p_data_Reference} } // End of template md_udrBodyAvps } // End of group Sh_request_message_templates_send group Sh_request_message_templates_receive { group UDR_MSG_{ /** * @desc Main receive message for CDF_Sh port * @param p_uDR_MSG AC-Request message * @desc Main receive message for HSS_Sh port * @param p_uDR_MSG UD-Request message */ template (present) UDR_MSG mdw_uDR( in template (present) Session_Id_AVP p_sessionId, in template (present) UDR_Body_AVP p_acrBody template (present) Session_Id_AVP p_sessionId, template (present) UDR_Body_AVP p_udrBody ) modifies mw_UDR_dummy := { header := mw_diameterHeaderReq_dummy(UDR_E, c_applIdSh), session_Id := p_sessionId, uDR_Body := p_acrBody uDR_Body := p_udrBody } // End of template mdw_uDR } /** * @desc Main receive message for HSS_Sh port * @param p_uDR_MSG UD-Request message */ template (present) UDR_MSG mdw_uDR_Header_UDRBody( template (present) DiameterHeader p_header, template (present) Session_Id_AVP p_sessionId, template (present) UDR_Body_AVP p_udrBody ) modifies mw_UDR_dummy := { header := p_header, session_Id := p_sessionId, uDR_Body := p_udrBody } // End of template mdw_uDR_Header_UDRBody } /** * @desc Receive template for UDR message body * @param p_resultCode Indicates whether a particular request was completed successfully or an error occurred * @param p_originHost Identifies the endpoint that originated the Diameter message * @param p_originRealm Realm of the originator * @param p_destinationRealm Destination realm */ template UDR_Body_AVP mdw_udrBodyAvps( template (present) Origin_Host_AVP p_originHost := ?, template (present) Origin_Realm_AVP p_originRealm := ?, template (present) Destination_Realm_AVP p_destinationRealm := ? ) modifies mw_UDR_Body_dummy := { origin_Host := p_originHost, origin_Realm := p_originRealm, destination_Realm := p_destinationRealm } // End of template mdw_udrBodyAvps } // End of group Sh_request_message_templates_receive group Sh_answer_message_templates_send { /** * @desc Send template for UDA * @param p_sessionId Session identifier * @param p_udaBody UDA message body */ template (value) UDA_MSG md_uDA( in template (value) Session_Id_AVP p_sessionId, in template (value) UDA_Body_AVP p_udaBody ) modifies m_UDA_dummy := { header := m_diameterHeaderAns_dummy(UDA_E, c_applIdRf), session_Id := p_sessionId, uDA_Body := p_udaBody } // End of template md_uDA template (omit) UDA_Body_AVP md_udaBodyAvps( in template (value) Result_Code_AVP p_resultCode, in template (value) Origin_Host_AVP p_originHost, in template (value) Origin_Realm_AVP p_originRealm ) modifies m_UDA_Body_dummy := { result_Code := p_resultCode, origin_Host := p_originHost, origin_Realm := p_originRealm } // End of template md_udaBodyAvps } // End of group Sh_answer_message_templates_send group Sh_answer_message_templates_receive { template UDA_Body_AVP mw_UDA_ResulFaile( template Result_Code_AVP p_resultCode, template (present) Origin_Host_AVP p_originHost, template (present) Origin_Realm_AVP p_originRealm, template UDA_Body_AVP.failed p_failed ) modifies mdw_udaBodyAvps := { result_Code := p_resultCode, // optional in TS 129 229 failed := p_failed // optional in TS 129 229 } // End of template mw_UDA_ResulFaile /** * @desc Send template for UDA * @param p_sessionId Session identifier * @param p_udaBody UDA message body */ template (present) UDA_MSG mdw_uDA( template (present) Session_Id_AVP p_sessionId, template (present) UDA_Body_AVP p_udaBody ) modifies mw_UDA_dummy := { header := mw_diameterHeaderAns_dummy(UDA_E, c_applIdRf), session_Id := p_sessionId, uDA_Body := p_udaBody } // End of template md_uDA template (present) UDA_Body_AVP mdw_udaBodyAvps( template (present) Result_Code_AVP p_resultCode, template (present) Origin_Host_AVP p_originHost, template (present) Origin_Realm_AVP p_originRealm ) modifies mw_UDA_Body_dummy := { result_Code := p_resultCode, origin_Host := p_originHost, origin_Realm := p_originRealm } // End of template mdw_udaBodyAvps } // End of group Sh_answer_message_templates_receive } // End of group Sh_modified_message_templates Loading