Commit 36e10e5b authored by pintar's avatar pintar
Browse files

S9 modules adopted to LibDiameter V2.0.0

parent efa79803
Loading
Loading
Loading
Loading
+391 −0
Original line number Original line Diff line number Diff line
/**
 *	@author 	STF 466
 *      @version        $Id: DiameterS9_PIXITS.ttcn 120 2013-08-30 12:55:35Z pintar $
 *	@desc		This module provides the PIXIT used for the  S9 DIAMETER tests.
 */

module DiameterS9_PIXITS
{
    import from LibDiameter_Types_Base_AVPs {type UTF8String, Subscription_Id_Ty_Type;};
    import from LibDiameter_Types_Gx_AVPs {type IP_CAN_Type, RAT_Type;};

    group Port_and_addresses{
        
        /** @desc	charstring, PIXIT item A-7/1
         * IP address of the test system
         */
        modulepar charstring PX_DIAMETER_S9_ETS_IPADDR := "1.1.1.1";

        /** @desc	charstring,  PIXIT item A-7/2
         * IP address of the system under test
         */
        modulepar charstring PX_DIAMETER_S9_SUT_IPADDR := "1.1.1.2";

        /** @desc	charstring, PIXIT item A-7/3
         * Port number of the test system
         */
        modulepar integer PX_DIAMETER_S9_ETS_PORT := 3868;

        /** @desc	charstring, PIXIT item A-7/4
         * Port number of the system under test
         */
        modulepar integer PX_DIAMETER_S9_SUT_PORT := 3868;
    
    }

// SUT specific implementation variants 
    group DiameterCommonS9Data{

       /** @desc	UTF8String, PIXIT item A-7/5
                     
       The Session-Id AVP (AVP Code 263) is of type UTF8String and is used
       to identify a specific session (see Section 8);  All messages
       pertaining to a specific session MUST include only one Session-Id AVP
       and the same value MUST be used throughout the life of a session;
       When present, the Session-Id SHOULD appear immediately following the
       Diameter Header (see Section 3);
    
                    Ref: RFC 3588 section 8-8
        */
        modulepar UTF8String PX_SessionID := "pcscf.etsi.org;1317059245;52;21823490";
   		
    	
        /** @desc	charstring, PIXIT item A-7/6
                     
       The Origin-Host AVP (AVP Code 264) is of type DiameterIdentity, and
       MUST be present in all Diameter messages;  This AVP identifies the
       endpoint that originated the Diameter message;  Relay agents MUST NOT
       modify this AVP;
    
       The value of the Origin-Host AVP is guaranteed to be unique within a
       single host;
    
                    Ref: RFC 3588 section 6-3.
                    NOTE: could be AF or PCRF role:
                        pcscf.example.com
                        pcrf.example.com
        */
        modulepar charstring PX_OriginHost := "origin.etsi.org";
    
    
    	
        /** @desc	charstring, PIXIT item A-7/7
                     
       The Origin-Realm AVP (AVP Code 296) is of type DiameterIdentity;
       This AVP contains the Realm of the originator of any Diameter message
       and MUST be present in all messages;
    
                    Ref: RFC 3588 section 6-4
        */
        modulepar charstring PX_OriginRealm := "etsi.org";
    
    
    	
        /** @desc	charstring, PIXIT item A-7/8 
                     
       The Destination-Host AVP (AVP Code 293) is of type DiameterIdentity;
       This AVP MUST be present in all unsolicited agent initiated messages,
       MAY be present in request messages, and MUST NOT be present in Answer
       messages;
    
                    Ref: RFC 3588 section 6-5.
                    NOTE: could be AF or PCRF role:
                        pcscf.example.com
                        pcrf.example.com
        */
        modulepar charstring PX_DestinationHost := "destination.etsi.org";
    
    
    	
        /** @desc	charstring, PIXIT item A-7/9 
                     
       The Destination-Realm AVP (AVP Code 283) is of type DiameterIdentity,
       and contains the realm the message is to be routed to;  The
       Destination-Realm AVP MUST NOT be present in Answer messages.
       Diameter Clients insert the realm portion of the User-Name AVP;
       Diameter servers initiating a request message use the value of the
       Origin-Realm AVP from a previous message received from the intended
       target host (unless it is known a priori);  When present, the
       Destination-Realm AVP is used to perform message routing decisions;
    
                    Ref: RFC 3588 section 6-6
        */
        modulepar charstring PX_DestinationRealm := "myalupcrf.etsi.org";
	
        /** @desc	octetstring, PIXIT item A-7/10  
                     
       A logical circuit-ID for the Logical-Access-ID AVP in case of xDSL IP CAN type
    
        */
//        modulepar octetstring PX_Logical_Access_ID := '01020304'O;
    


        /** @desc	UTF8String, PIXIT item A-7/11  
                     
       A physical access ID for the Physical-Access-ID AVP in case of xDSL IP-CAN type
    
        */
//        modulepar UTF8String PX_Physical_Access_ID := "pcscf.etsi.org;1317059245;52;21823490";
    
       /** @desc	octetstring, PIXIT item A-7/12
                      
                       The Framed-IP-Address AVP (AVP Code 8) [RADIUS] is of type
       OctetString and contains an IPv4 address of the type specified in the
       attribute value to be configured for the user;  It MAY be used in an
       authorization request as a hint to the server that a specific address
       is desired, but the server is not required to honor the hint in the
       corresponding response;
    
       Two values have special significance: 0xFFFFFFFF and 0xFFFFFFFE;  The
       value 0xFFFFFFFF indicates that the NAS should allow the user to
       select an address (ie, negotiated);  The value 0xFFFFFFFE indicates
       that the NAS should select an address for the user (eg, assigned
       from a pool of addresses kept by the NAS);
    
    
                    Ref: TS 129 214 5-4, table 5-4-1
        */
        modulepar octetstring PX_UE1_framedIpAddress := '0a0a0a0a'O;
    	
        /** @desc	octetstring, PIXIT item A-7/13 

       The Framed-IPv6-Prefix AVP (AVP Code 97) is of type OctetString and
       contains the IPv6 prefix to be configured for the user;  One or more
       AVPs MAY be used in authorization requests as a hint to the server
       that specific IPv6 prefixes are desired, but the server is not
       required to honor the hint in the corresponding response;
    
    
                    Ref: TS 129 214 5-4, table 5-4-1
        */
        modulepar octetstring PX_UE1_framedIp6Address := '0a0a0a0a'O;
        
        /** @desc	enumerated type Subscription_Id_Ty_Type, PIXIT item A-7/14 
         * A subscription ID type for the Subscription-Id-Type AVP in Subscription-Id AVPs
           Available values: END_USER_E164, END_USER_IMSI, END_USER_SIP_URI, END_USER_NAI 
        */
        modulepar Subscription_Id_Ty_Type PX_SUBSCRIPTION_ID_TYPE := END_USER_IMSI_E;
        
        /** @desc	UTF8String, PIXIT item A-7/15
         * Subscription data for the Subscription-Id-Data AVP in Subscription-Id AVPs
        */
        modulepar UTF8String PX_SUBSCRIPTION_ID_DATA := "SUBS_DATA";
        
        /** @desc	enumerated type IP_CAN_Type, PIXIT item A-7/16 
         * A connectivity access type for the IP-CAN-Type AVP in CCR messages
           Available values: 3GPP-GPRS, DCOSIS, xDSL, WiMAX, 3GPP2, 3GPP-EPS, Non-3GPP-EPS
        */
        modulepar IP_CAN_Type PX_IP_CAN_TYPE := ThreeGPP_GPRS_E;
        
        /** @desc	enumerated type RAT_Type, PIXIT item A-7/17 
         * A radio access technology for the IP-RAT-Type AVP in CCR messages
           Available values: WLAN, VIRTUAL, UTRAN, GERAN, GAN, HSPA_EVOLUTION, EUTRAN, CDMA2000, HRPD, UMB, EHRPD
        */
        modulepar RAT_Type PX_RAT_TYPE := WLAN_E;
        
        
        //TODO check if following PIXITS will be used in S9
//        /** @desc	UInt32, PIXIT item A-7/18
//         *  Maximum aggregate bite rate in bits per second for the uplink direction for the APN-Aggregate-Max-Bitrate-UL AVP
//        */
//        modulepar UInt32  PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA := 100;
//        
//        /** @desc	octetstring, PIXIT item A-7/19
//         *  The offset between universal time and local time in steps of 15 minutes for the 3GPP-MS-TimeZone AVP for CCR messages
//        */
//        modulepar octetstring  PX_3GPP_MS_TIMEZONE_DATA := '08'O;
//        
//        /** @desc	UTF8String, PIXIT item A-7/20
//         * An Emergency APN for the Called-Station-Id AVP
//        */
//        modulepar UTF8String PX_CALLED_STATION_ID_EMERGENCY_APN := "EmergencyAPN_A";
//        
//        /** @desc	UTF8String, PIXIT item A-7/21 
//         * An Emergency address for the Called-Station-Id AVP
//        */
//        modulepar UTF8String PX_CALLED_STATION_ID_EMERGENCY := "Emergency";
//        
//        /** @desc	octetstring, PIXIT item A-7/22
//         * An identity for the PDN connection for the PDN-Connection-ID AVP
//        */
//        modulepar octetstring PX_PDN_CONNECTION_ID_DATA := '08'O;
//        
//        /** @desc	octetstring, PIXIT item A-7/23
//         * avp_Data within Bearer_Identifier_AVP is of octetstring type
//        */
//        modulepar octetstring PX_BEARER_IDENTIFIER := '01020304'O;
//
//        /** @desc	enumerated type Bearer_Usage, PIXIT item A-7/24 
//         * A bearer usage value for the Bearer-Usage AVP
//           Available values: GENERAL, IMS_SIGNALLING
//        */
//        modulepar Bearer_Usage PX_BEARER_USAGE_DATA := IMS_SIGNALLING_E;
//        
//        /** @desc	 
//                     
//       The ANCA (Access-Network-Charging-Address) in IPv4 format, PIXIT item A-7/25
//    
//        */
//        modulepar IPv4Addr PX_ANCA_ipv4 := {1,2,3,4};
//        /** @desc	
//                     
//       The ANCA (Access-Network-Charging-Address) in type IPv6 format, PIXIT item A-7/26
//    
//        */
//        modulepar IPv6Addr PX_ANCA_ipv6 := {1,2,3,4,5,6,7,8};
//
//        /** @desc	 
//                     
//       The SGW/AGW in IPv4Addr format (3GPP-EPS and 3GPP2 accesses), PIXIT item A-7/27
//    
//        */
//        modulepar IPv4Addr PX_SGW_AGW_ipv4 := {1,2,3,4};
//        /** @desc	
//                     
//       The SGW/AGW in type IPv6Addr format (3GPP-EPS and 3GPP2 accesses), PIXIT item A-7/28
//    
//        */
//        modulepar IPv6Addr PX_SGW_AGW_ipv6 := {1,2,3,4,5,6,7,8};
//
//        
//        /** @desc	octetstring, PIXIT item A-7/29
//         * A charging identifier for the Access-Network-Charging-Identifier-Value AVP in Access-Network-Charging-Identifier AVPs
//        */
//        modulepar octetstring PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE := '08'O;
//        
//        /** @desc	octetstring, PIXIT item A-7/30
//         * An IP flow mobility routing rule for the Routing-Rule-Identifier AVP in Routing-Rule-Definition AVPs
//        */
//        modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O;
//        
//        /** @desc	UInt32, PIXIT item A-7/31
//         *  Unknown charging key for the Rating_-Group_ AVP
//        */
//        modulepar UInt32  PX_UNKNOWN_RATING_GROUP := 100;
//        
//        /** @desc	enumerated type Network_Request_Support, PIXIT item A-7/32
//         * Value indicating the access network support for network initiated procedures for the Network_Request-Support AVP
//           Available values: NETWORK_REQUEST NOT SUPPORTED, NETWORK_REQUEST SUPPORTED
//        */
//        modulepar Network_Request_Support PX_NETWORK_REQUEST_SUPPORT := NETWORK_REQUEST_SUPPORTED_E;
//        
//        /** @desc	octetstring, PIXIT item A-7/33
//         * First charging rule name for the Charging-Rule-Name AVP
//        */
//        modulepar octetstring PX_CHARGING_RULE_NAME_DATA := '08'O;
//                        
//        /** @desc	octetstring, PIXIT item A-7/34
//         * Second charging rule name for the Charging-Rule-Name AVP
//        */
//        modulepar octetstring PX_CHARGING_RULE_NAME_DATA2 := '09'O;
//                                
//        /** @desc	octetstring, PIXIT item A-7/35
//         * Third charging rule name for the Charging-Rule-Name AVP
//        *
//        modulepar octetstring PX_CHARGING_RULE_NAME_DATA3 := '0A'O;
//        
//        /** @desc	octetstring, PIXIT item A-7/36
//         * Non-existant charging rule name for the Charging-Rule-Name AVP
//        */
//        modulepar octetstring PX_CHARGING_RULE_NAME_DATA_NONEXIST := 'FF'O;
//                        
//        /** @desc	octetstring, PIXIT item A-7/37
//         * Charging rule base name for the Charging-Rule-Base-Name AVP
//        */
//        modulepar UTF8String PX_CHARGING_RULE_BASE_NAME_DATA := "data";
//        
//        
//        /** @desc	enumerated type PCC_Rule_Status, PIXIT item A-7/38
//         * A status value of PCC rule(s) for the PCC-Rule-Status AVP
//           Available values: ACTIVE,  INACTIVE, TEMPORARILY INACTIVE
//        */
//        modulepar PCC_Rule_Status PX_PCC_RULE_STATUS := ACTIVE_E;
//        
//        /** @desc	UInt32, PIXIT item A-7/39
//         *  A precedence value for a PCC rule for the Precedence AVP in CCR messages
//        */
//        modulepar UInt32  PX_PRECEDENCE_DATA := 100; 
//        
//        /** @desc	octetstring, PIXIT item A-7/40
//         * A packet filter identity for the Packet-Filter-Identifier AVP
//        */
//        modulepar octetstring PX_PACKET_FILTER_IDENTIFIER_DATA := '08'O; 
//        
//        /** @desc	enumerated type PCC_Rule_Status, PIXIT item A-7/41
//         * A reason for a PCC rule to be reported for the Rule-Failure-Code AVP in Charging-Rule-Report AVPs
//           Available values: UNKNOWN_RULE-NAME, RATING_GROUP_ERROR, SERVICE_IDENTIFIER_ERROR, GW/PCEF_MALFUNCTION,
//           RESOURCES_LIMITATION, MAX_NR_BEARERS_REACHED, UNKNOWN_BEARER_ID, MISSING_BEARER_ID, MISSING_FLOW_INFORMATION,
//           RESOURCE_ALLOCATION_FAILURE, UNSUCCESSFUL_QOS_INFORMATION, PS_TO_CS_HANDOVER, NO_BEARER_BOUND
//        */
//        modulepar Rule_Failure_Code PX_RULE_FAILURE_CODE := UNKNOWN_RULE_NAME_E;  
//        
//        /** @desc	enumerated type PCC_Rule_Status, PIXIT item A-7/42
//         * Status of the offline charging interface for the Offline AVP in Charging-Rule-Definition AVPs
//           Available values: DISABLE_OFFLINE, ENABLE_OFFLINE
//        */
//        modulepar Offline PX_OFFLINE_DATA := DISABLE_OFFLINE_E;  
//        
//        
//        /** @desc	enumerated type PCC_Rule_Status, PIXIT item A-7/43
//         * Status of the online charging interface for the Online AVP in Charging-Rule-Definition AVPs
//           Available values: DISABLE_ONLINE, ENABLE_ONLINE
//        */
//        modulepar Online PX_ONLINE_DATA := ENABLE_ONLINE_E; 
//
//        /** @desc	octectstring, PIXIT item A-7/44
//         * Name of a national variant of the MPS service name for the MPS-Identifier AVP
//         * (parameter is part of AAR message)
//        */
//        modulepar octetstring PX_MPS_IDENTIFIER := '01020304050607'O;        
//                
//        /** @desc	octectstring, PIXIT item A-7/45
//         * First monitoring key for the  Monitoring-Key AVP in RAR and CCR messages
//        */
//        modulepar octetstring PX_MONITORING_KEY := '01020304050607'O;       
//                        
//        /** @desc	octectstring, PIXIT item A-7/46
//         * Second monitoring key for the  Monitoring-Key AVP in RAR and CCR messages
//        */
//        modulepar octetstring PX_MONITORING_KEY2 := '01020304050677'O;      
//                        
//        /** @desc	UInt32, PIXIT item A-7/47
//         * NTP time before which the PCEF will re-request PPC rules dor the Revalidation-Time AVP in RAR messages
//        */
//        modulepar UInt32 PX_REVALIDATION_TIME := 7;  
//                                
//        /** @desc	UInt32, PIXIT item A-7/48
//         * NTP time at which a PCC rule will be enforced for Rule-Activation-Time AVP in Charging-Rule-Install AVPs
//        */
//        modulepar UInt32 PX_ACTIVATION_TIME := 0;        
//                                        
//        /** @desc	UInt32, PIXIT item A-7/49
//         * NTP time at which a PCC rule enforcement will be stopped for Rule-Deactivation-Time AVP in Charging-Rule-Install AVPs
//        */
//        modulepar UInt32 PX_DEACTIVATION_TIME := 0; 
//
//        /** @desc	charstring, PIXIT item A-7/50               
//         * A sponsor identity for the Sponsor-Identity AVP in Sponsored-Connectivity AVPs
//        */        
//        modulepar charstring PX_SPONSOR_ID := "Google";
//        
//        /** @desc	charstring, PIXIT item A-7/51      
//         * An application service provider identity for the Application_Service_Provider AVP in Sponsored-Connectivity AVPs
//    
//        */        
//        modulepar charstring PX_APPLICATION_SERVICE_PROVIDER_ID := "GoogleCall";
//        
//                                                
//        /** @desc	boolean indicator, PIXIT item A-7/52
//         * TRUE if the GTP interface is accessible to triggert Diameter events
//        */
//        modulepar boolean PX_GTPsupport := false;           
//                                                
//        /** @desc	boolean indicator, PIXIT item A-7/53
//         * TRUE if the Rx interface is accessible to trigger Diameter events at the Gx interface
//        */
//        modulepar boolean PX_Rxsupport := false;           
//        
    } //end group DiameterCommonGxData

} // end module DiameterS9_PIXITS
 No newline at end of file
+35 −11
Original line number Original line Diff line number Diff line
@@ -13,22 +13,16 @@
    import from LibCommon_VerdictControl all ;
    import from LibCommon_VerdictControl all ;


    //LibDiameter
    //LibDiameter
    import from LibDiameter_Types_Base_AVPs all;
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Templates all;
    import from LibDiameter_Templates all;
    import from LibDiameter_Steps  all;
    import from LibDiameter_Steps  all;
    import from LibDiameter_PIXITS all;
    import from LibDiameter_PIXITS all;
    import from LibDiameter_Interface all;
    import from LibDiameter_Interface all;
    
    
    //DiameterGx
    //DiameterS9
    import from DiameterGx_Templates all;
    import from DiameterS9_PIXITS all;
    import from DiameterGx_PIXITS all;
    import from DiameterS9_Templates all;
    import from DiameterGx_Gx_TCFunctions all;
    import from DiameterGx_TestConfiguration all;
    import from DiameterGx_Steps all;

    // GPRS tunneling protocol
    // import from LibGtp_TypesAndValues all;
//    import from LibGtp_Interface all;


    group GlobalSteps {
    group GlobalSteps {


@@ -63,7 +57,37 @@


    group AVPOperations {
    group AVPOperations {


        function f_framedIpAddress4 (template octetstring p_framedIpAddress)
            return template Framed_IP_Address_AVP
        {
            if (PX_IPv6)
                {return(omit)}
            else {return(mw_framedIpAddress(p_framedIpAddress))}
        }

        function f_framedIpAddress6 (template octetstring p_framedIpAddress)
            return template Framed_IPv6_Prefix_AVP
        {
            if (PX_IPv6)
                {return(mw_framedIp6Address(p_framedIpAddress))}
            else {return(omit)}
        }


        function f_framedIpAddress4_send (octetstring p_framedIpAddress)
             return template Framed_IP_Address_AVP
        {
            if (PX_IPv6)
                 {return(omit)}
            else {return(m_framedIpAddress(p_framedIpAddress))}
        }

        function f_framedIpAddress6_send (octetstring p_framedIpAddress)
             return template Framed_IPv6_Prefix_AVP
        {
            if (PX_IPv6)
                {return(m_framedIp6Address(p_framedIpAddress))}
            else {return(omit)}
        }
    }//end group AVPOperations
    }//end group AVPOperations


    group CheckFunctions {
    group CheckFunctions {
+10 −14
Original line number Original line Diff line number Diff line
@@ -16,14 +16,10 @@ module DiameterS9_TCFunctions {
    import from LibDiameter_Interface all;
    import from LibDiameter_Interface all;
    import from LibDiameter_Steps all;
    import from LibDiameter_Steps all;


    //DiameterGx
    import from DiameterGx_PIXITS all;
    import from DiameterGx_Steps all;
    import from DiameterGx_Templates all;

    //DiameterS9
    //DiameterS9
    import from DiameterS9_Templates all;
    import from DiameterS9_Templates all;
    import from DiameterS9_Steps all;
    import from DiameterS9_Steps all;
    import from DiameterS9_PIXITS all;




    group TP_HPCRFRole{ // §5.2.1
    group TP_HPCRFRole{ // §5.2.1
@@ -36,11 +32,11 @@ module DiameterS9_TCFunctions {
            function TC_PCRF_HA_01()
            function TC_PCRF_HA_01()
            runs on DiameterComponent {
            runs on DiameterComponent {


                f_preamble_PCEF();
                //TODO: function have to be declared in S9_steps: f_preamble_PCEF();


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


                f_send_CCR(m_CCR_S9_InitialRequest(vc_sessionId,
                f_send_CCR(m_CCR_InitialRequest(vc_sessionId,
                                                vc_originHost,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                vc_destinationRealm,
@@ -52,9 +48,9 @@ module DiameterS9_TCFunctions {
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync


                //session termination
                //session termination
                f_terminate_session_PCEF();
                //TODO: function have to be declared in S9_steps: f_terminate_session_PCEF();


                f_postamble_PCEF();
                //TODO: function have to be declared in S9_steps: f_postamble_PCEF();


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


@@ -71,13 +67,13 @@ module DiameterS9_TCFunctions {
            function TC_PCRF_HSE_01()
            function TC_PCRF_HSE_01()
            runs on DiameterComponent {
            runs on DiameterComponent {


                f_preamble_PCEF();
                //TODO: function have to be declared in S9_steps: f_preamble_PCEF();
                
                
                //f_initiate_session_HPCRF();
                //f_initiate_session_HPCRF();


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


                f_send_CCR(m_CCR_S9_InitialRequest_SubID_AnGw_BBERFatt(vc_sessionId,
                f_send_CCR(m_CCR_InitialRequest_SubID_AnGw_BBERFatt(vc_sessionId,
                                                vc_originHost,
                                                vc_originHost,
                                                vc_originRealm,
                                                vc_originRealm,
                                                vc_destinationRealm,
                                                vc_destinationRealm,
@@ -91,14 +87,14 @@ module DiameterS9_TCFunctions {
                                                );
                                                );


				// TODO: p_qosRuleInstall:=? 
				// TODO: p_qosRuleInstall:=? 
                f_awaiting_CCA(mw_CCA_S9_ResultCode_BearerControlMode(vc_sessionId, vc_originHost_IUT, vc_originRealm_IUT, mw_resultCode(mw_resultCode_diameterSuccess)));
                f_awaiting_CCA(mw_CCA_ResultCode_BearerControlMode(vc_sessionId, vc_originHost_IUT, vc_originRealm_IUT, mw_resultCode(mw_resultCode_diameterSuccess)));


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


                //session termination
                //session termination
                f_terminate_session_PCEF();
                //TODO: function have to be declared in S9_steps: f_terminate_session_PCEF();


                f_postamble_PCEF();
                //TODO: function have to be declared in S9_steps: f_postamble_PCEF();


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


+392 −544

File changed.

Preview size limit exceeded, changes collapsed.

+32 −32

File changed.

Preview size limit exceeded, changes collapsed.