Commit bd42645b authored by pintar's avatar pintar
Browse files

SIP and DIAMETER part for RO_OCF_TC group finished.

parent 1551d27a
Loading
Loading
Loading
Loading
+552 −7

File changed.

Preview size limit exceeded, changes collapsed.

+47 −2
Original line number Diff line number Diff line
@@ -208,7 +208,7 @@
                
                /**
                 * @desc Function used to send CC-Request and receive CC-Answer
                 * @param p_cC_Request_Ty_Type      Request type - EVENT_REQUEST
                 * @param p_cC_Request_Ty_Type      Request type - eg.: EVENT_REQUEST
                 * @param p_cC_Request_Number acc   Request number
                 * @param p_service_Context_Id      Service context ID
                 * @verdict depend on receive message and its matching with template
@@ -253,7 +253,7 @@
                               mw_cC_Request_Type_AVP(
                                   p_cC_Request_Ty_Type
                               ),
                               mw_accounting_Record_Number_AVP(
                               mw_cC_Request_Number_AVP(
                                  p_cC_Request_Number
                               )
                           )
@@ -261,6 +261,51 @@
                   );
                }
                
                /**
                 * @desc Function used to await CC-Request and send CC-Answer
                 * @param p_cC_Request_Ty_Type      Request type - eg.: EVENT_REQUEST
                 * @param p_cC_Request_Number acc   Request number
                 * @param p_service_Context_Id      Service context ID
                 * @verdict depend on receive message and its matching with template
                 */
                function f_awaitCCR_sendCCA_(
                                             in CC_Request_Ty_Type                                      p_cC_Request_Ty_Type, 
                                             in UInt32                                                  p_cC_Request_Number,
                                             in template (omit) Requested_Action_AVP                    p_requested_Action := omit,
                                             in template (omit) CCR_Body_AVP.multiple_Services_Credit_Control    p_multiple_Services_Credit_Control := omit
                ) runs on DiameterComponent {
                    
                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
                            mdw_ccrBodyAvps(
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(p_cC_Request_Ty_Type),// containing a CC-Request-Type AVP
                                mw_cC_Request_Number_AVP(p_cC_Request_Number),// containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                p_requested_Action,                     // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
                                p_multiple_Services_Credit_Control      // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps_ReqNumber(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(p_cC_Request_Ty_Type),
                                m_cC_Request_Number(p_cC_Request_Number)// containing a CC-Request-Number AVP
                        ))
                    );
                }
                
            } // End of group TypeOfCharging
            
        } // End of group RO
+121 −48
Original line number Diff line number Diff line
@@ -5224,6 +5224,7 @@ module DiameterRfRo_TCFunctions {
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1
                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5276,6 +5277,8 @@ module DiameterRfRo_TCFunctions {
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                    
                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5326,6 +5329,8 @@ module DiameterRfRo_TCFunctions {
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5376,6 +5381,8 @@ module DiameterRfRo_TCFunctions {
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                    
                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5429,6 +5436,8 @@ module DiameterRfRo_TCFunctions {
                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1
                    
                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5478,6 +5487,19 @@ module DiameterRfRo_TCFunctions {

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync
                    
                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(EVENT_REQUEST_E)
                        ))
                    );

                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -5494,11 +5516,12 @@ module DiameterRfRo_TCFunctions {
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR,CCA [Event] with direct debiting  are exchanged
                    // FIXME Done by SIP exchanges?

                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5509,10 +5532,8 @@ module DiameterRfRo_TCFunctions {
                                mw_cC_Request_Type_AVP(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                                omit,                                   // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
                                {mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );
@@ -5532,7 +5553,7 @@ module DiameterRfRo_TCFunctions {
                        ))
                    );

                    f_sendCCR_awaitCCA_(
                    f_awaitCCR_sendCCA_(
                                        TERMINATION_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );
@@ -5552,11 +5573,18 @@ module DiameterRfRo_TCFunctions {
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR,CCA [Initial] are exchanged
                    // FIXME Done by SIP exchanges?

                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1
                    
                    // CCR,CCA [Initial] are exchanged 
                    f_awaitCCR_sendCCA_(
                                        INITIAL_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5567,7 +5595,7 @@ module DiameterRfRo_TCFunctions {
                                mw_cC_Request_Type_AVP(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                omit,                                   // containing a Requested Action AVP
                                {
                                    mdw_multiple_Services_Credit_Control_UsedServUnit_ServId(// containing a Multiple-Services-Credit-Control AVP
                                        {
@@ -5584,13 +5612,14 @@ module DiameterRfRo_TCFunctions {
                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                            md_ccaBodyAvps_ReqNumber(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(TERMINATION_REQUEST_E)
                                m_cC_Request_Type(TERMINATION_REQUEST_E),
                                m_cC_Request_Number(vc_recv_cC_Request_Number)
                        ))
                    );

@@ -5610,11 +5639,12 @@ module DiameterRfRo_TCFunctions {
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR,CCA [Initial] are exchanged
                    // FIXME Done by SIP exchanges?

                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5622,23 +5652,15 @@ module DiameterRfRo_TCFunctions {
                                vc_originHost,                          // containing an Origin-Host AVP
                                vc_originRealm,                         // containing an Origin-Realm AVP
                                vc_destinationRealm,                    // containing a Destination-Realm AVP
                                mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                mw_cC_Request_Type_AVP(INITIAL_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {
                                    mdw_multiple_Services_Credit_Control_UsedServUnit_ServId(// containing a Multiple-Services-Credit-Control AVP
                                        {
                                            mw_used_Service_Unit_AVP_dummy                   //     containing a Used-Service-Unit AVP
                                        }
                                    )
                                }
                                omit,                                   // not containing a Requested Action AVP due to Request-Type is not EVENT-REQUEST
                                {mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*)}  // containing a Multiple-Services-Credit-Control AVP
                            )
                        )
                    );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
@@ -5648,14 +5670,26 @@ module DiameterRfRo_TCFunctions {
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(UPDATE_REQUEST_E)
                                m_cC_Request_Type(INITIAL_REQUEST_E)
                        ))
                    );

                    f_sendCCR_awaitCCA_(
                    f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
                    
                    f_awaitCCR_sendCCA_(
                                        UPDATE_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_selfOrClientSyncAndVerdict(c_sync3, f_getVerdict());// sync point sync3

                    f_awaitCCR_sendCCA_(
                                        TERMINATION_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -5672,9 +5706,19 @@ module DiameterRfRo_TCFunctions {
                    
                    // Preamble
                    f_preamble_Ro_OCF();

                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaitCCR_sendCCA_(
                                        INITIAL_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
                    
                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5685,33 +5729,41 @@ module DiameterRfRo_TCFunctions {
                                mw_cC_Request_Type_AVP(UPDATE_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                                omit,                                   // containing a Requested Action AVP
                                {
                                    mdw_multiple_Services_Credit_Control_UsedServUnit_ServId(// containing a Multiple-Services-Credit-Control AVP
                                        {
                                            mw_used_Service_Unit_AVP_dummy                   //     containing a Used-Service-Unit AVP
                                        }
                                    )
                                }
                            )
                        )
                    );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                            md_ccaBodyAvps_ReqNumber(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(UPDATE_REQUEST_E)
                                m_cC_Request_Type(UPDATE_REQUEST_E),
                                m_cC_Request_Number(vc_recv_cC_Request_Number)
                        ))
                    );

                    f_sendCCR_awaitCCA_(
                    f_selfOrClientSyncAndVerdict(c_sync3, f_getVerdict());// sync point sync3

                    f_awaitCCR_sendCCA_(
                                        TERMINATION_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
@@ -5724,15 +5776,31 @@ module DiameterRfRo_TCFunctions {
                 * @verdict pass on success, fail on error or inconc on timeout only 
                 */
                function f_TC_RO_CTF_TC_10() runs on DiameterRfRo {
                    
                    // Local variables
                    
                    // Preamble
                    f_preamble_Ro_OCF();
                    // CCR,CCA [Initial] and CCR,CCA [Update] are exchanged
                    // FIXME Done by SIP exchanges?

                    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");

                    f_selfOrClientSyncAndVerdict(c_sync1, f_getVerdict());// sync point sync1

                    f_awaitCCR_sendCCA_(
                                        INITIAL_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_selfOrClientSyncAndVerdict(c_sync2, f_getVerdict());// sync point sync2
                    
                    f_awaitCCR_sendCCA_(
                                        UPDATE_REQUEST_E, 
                                        vc_recv_cC_Request_Number
                                        );

                    f_selfOrClientSyncAndVerdict(c_sync3, f_getVerdict());// sync point sync3

                    f_awaiting_CCR(
                        mdw_cCR(
                            ?, 
@@ -5743,29 +5811,34 @@ module DiameterRfRo_TCFunctions {
                                mw_cC_Request_Type_AVP(TERMINATION_REQUEST_E),// containing a CC-Request-Type AVP
                                ?,                                      // containing a CC-Request-Number AVP
                                ?,                                      // containing a Service-Context-Id AVP
                                mw_requested_Action(REFUND_ACCOUNT_E),  // containing a Requested Action AVP
                                {(mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,?),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(?,*),
                                mdw_multiple_Services_Credit_Control_ReqServUnit_ServId(*,?))}  // containing a Multiple-Services-Credit-Control AVP
                                omit,                                   // containing a Requested Action AVP
                                {
                                    mdw_multiple_Services_Credit_Control_UsedServUnit_ServId(// containing a Multiple-Services-Credit-Control AVP
                                        {
                                            mw_used_Service_Unit_AVP_dummy                   //     containing a Used-Service-Unit AVP
                                        }
                                    )
                                }
                            )
                        )
                    );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_send_CCA(
                        md_cCA( 
                            vc_sessionId,                       // containing a Session-ID AVP
                            md_ccaBodyAvps(
                            md_ccaBodyAvps_ReqNumber(
                                m_resultCode(                   // containing a Result-Code AVP
                                    DIAMETER_SUCCESS_E          //     indicating DIAMETER_SUCCESS
                                ),
                                vc_originHost,                  // containing an Origin-Host AVP
                                vc_originRealm,                 // containing an Origin-Realm AVP
                                m_cC_Request_Type(TERMINATION_REQUEST_E)
                                m_cC_Request_Type(TERMINATION_REQUEST_E),
                                m_cC_Request_Number(vc_recv_cC_Request_Number)
                        ))
                    );

                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync

                    f_postamble_Ro_OCF();
                    f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
                    log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
+2 −2
Original line number Diff line number Diff line
@@ -5281,7 +5281,7 @@ module DiameterRfRo_Templates {
                cC_Request_Number   := m_cC_Request_Number(0)
            } // End of template md_ccaBodyAvps 
            
            template (value) CCA_Body_AVP md_ccaBodyAvps_Update(
            template (value) CCA_Body_AVP md_ccaBodyAvps_ReqNumber(
                                                                in template (value) Result_Code_AVP              p_resultCode,
                                                                in template (value) Origin_Host_AVP              p_originHost,
                                                                in template (value) Origin_Realm_AVP             p_originRealm,
@@ -5289,7 +5289,7 @@ module DiameterRfRo_Templates {
                                                                in template (value) CC_Request_Number_AVP        p_cC_Request_Number
            ) modifies md_ccaBodyAvps := {
                cC_Request_Number           := p_cC_Request_Number
            } // End of template md_ccaBodyAvps_Update
            } // End of template md_ccaBodyAvps_ReqNumber
            
            template (omit) CCA_Body_AVP md_ccaBodyAvps_MultipleServiceCreditControl(
                                                                                     in template (value) Result_Code_AVP              p_resultCode,
+99 −39

File changed.

Preview size limit exceeded, changes collapsed.