Commit e7627675 authored by pintar's avatar pintar
Browse files

New templates are created

parent 95443802
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ module DiameterGx_Gx_TCFunctions {
		
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
		
                //f_send_CCR(m_CCR_basic(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
                f_send_CCR(m_CCR_InitialRequest_allReqAVPs(vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(),f_framedIpAddress6_send()));
        
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //     sync
		
+63 −11
Original line number Diff line number Diff line
@@ -150,32 +150,84 @@ module DiameterGx_PIXITS
        */
        modulepar octetstring PX_UE_framedIp6Address := 'ffffffff'O;
        

        /** @desc	
         * 	avp_Data within CC_Request_Type_AVP is of enumerated type CC_Request_Ty_Type , 
        */
        modulepar CC_Request_Ty_Type PX_CC_REQUEST_TYPE := INITIAL_REQUEST_E;
        
        /** @desc	charstring, PIXIT item A.1/
        /** @desc	UInt32, PIXIT item A.1/
         *  avp_Data within CC_Request_Number_AVP is of UInt32 type
        */
        modulepar UInt32 PX_CC_REQUEST_NUMBER := 1;
        
        /** @desc	charstring, PIXIT item A.1/
        /** @desc	enumerated type Subscription_Id_Ty_Type, PIXIT item A.1/
         * avp_Data within Subscription_Id_Type_AVP is of enumerated type Subscription_Id_Ty_Type 
        */
        modulepar Subscription_Id_Ty_Type PX_SUBSCRIPTION_ID_TYPE := END_USER_IMSI_E;
        
        /** @desc	charstring, PIXIT item A.1/
        /** @desc	UTF8String, PIXIT item A.1/
         * avp_Data within Subscription_Id_AVP is of UTF8String type
        */
        modulepar UTF8String PX_SUBSCRIPTION_ID_DATA := "SUBS_DATA";
        
        /** @desc	charstring, PIXIT item A.1/
        /** @desc	enumerated type IP_CAN_Type, PIXIT item A.1/
         * avp_Data within IP_CAN_Type_AVP is of enumerated type IP_CAN_Type
        */
        modulepar IP_CAN_Type PX_IP_CAN_TYPE := ThreeGPP_GPRS_E;
        
        /** @desc	charstring, PIXIT item A.1/
        /** @desc	enumerated type RAT_Type, PIXIT item A.1/
         * avp_Data within RAT_Type_AVP is of enumerated type RAT_Type
        */
        modulepar RAT_Type PX_RAT_TYPE := WLAN_E;
        
        /** @desc	UInt32, PIXIT item A.1/
         *  avp_Data within APN_Aggregate_Max_Bitrate_UL_AVP is of UInt32 type
        */
        modulepar UInt32  PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA := 100;
        
        /** @desc	octetstring, PIXIT item A.1/
         *  avp_Data within ThreeGPP_MS_TimeZone_DATA is of octetstring type
        */
        modulepar octetstring  PX_3GPP_MS_TIMEZONE_DATA := '08'O;
        
        /** @desc	UTF8String, PIXIT item A.1/
         * avp_Data within Called_Station_Id_AVP is of UTF8String type
        */
        modulepar UTF8String PX_CALLED_STATION_ID_DATA := "CALLED_STATION_ID_DATA";
        
        /** @desc	octetstring, PIXIT item A.1/
         * avp_Data within PDN_Connection_ID_AVP is of octetstring type
        */
        modulepar octetstring PX_PDN_CONNECTION_ID_DATA := '08'O;
        
        /** @desc	enumerated type Bearer_Usage, PIXIT item A.1/
         * avp_Data within Bearer_Usage_AVP is of enumerated type Bearer_Usage
        */
        modulepar Bearer_Usage PX_BEARER_USAGE_DATA := IMS_SIGNALLING_E;
        
        /** @desc	charstring, PIXIT item A.1/14 
                     
       The ANCA (Access-Network-Charging-Address) in IPv4Addr format
    
        */
        modulepar IPv4Addr PX_ANCA_ipv4 := {1,2,3,4};
        /** @desc	charstring, PIXIT item A.1/15 
                     
       The ANCA (Access-Network-Charging-Address) in type IPv6Addr format
    
        */
        modulepar IPv6Addr PX_ANCA_ipv6 := {1,2,3,4,5,6,7,8};
        
        /** @desc	octetstring, PIXIT item A.1/
         * avp_Data within Access_Network_Charging_Identifier_Value_AVP is of octetstring type
        */
        modulepar octetstring PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE := '08'O;
        
        /** @desc	octetstring, PIXIT item A.1/
         * avp_Data within Routing_Rule_Identifier_AVP is of octetstring type
        */
        modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O;
        
        /** @desc	UInt32, PIXIT item A.1/
         *  avp_Data within Flow_Number_AVP is of UInt32 type
        */
        modulepar UInt32  PX_FLOW_NUMBER_DATA := 100;
        
	} //end group DiameterCommonGxData

} // end module DiameterGx_PIXITS
 No newline at end of file
+124 −13
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ module DiameterGx_Templates {
    //LibDiameter
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Templates all;
    import from LibDiameter_Steps all;
    
    //DiameterGx
    import from DiameterGx_PIXITS all;
@@ -135,17 +136,127 @@ module DiameterGx_Templates {
                guaranteed_Bitrate_DL := omit,
                bearer_Identifier := omit,
                allocation_Retention_Priority := omit,
                aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL,
                aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL(PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA),
                aPN_Aggregate_Max_Bitrate_DL := omit,
                aVP_Type := omit
            }  			    
                
            template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL:=
            template APN_Aggregate_Max_Bitrate_UL_AVP m_APN_Aggregate_Max_Bitrate_UL(UInt32 p_avpData):=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdAPN_Aggregate_Max_Bitrate_UL_AVP, 4, omit),
                aVP_Data := 100//PX_APN_Aggregate_Max_Bitrate_UL_AVP_DATA
                aVP_Data := p_avpData
            }; 
                
            template ThreeGPP_MS_TimeZone_AVP m_threeGPP_MS_TimeZone(octetstring p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdThreeGPP_MS_TimeZone_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }; 
                
            template Called_Station_Id_AVP m_called_Station_Id(UTF8String p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdCalled_Station_Id_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }; 
                
            template PDN_Connection_ID_AVP m_pDN_Connection_ID(octetstring p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPDN_Connection_ID_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            };    
                
            template Bearer_Usage_AVP m_bearer_Usage(Bearer_Usage p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdBearer_Usage_AVP, 4, omit),
                aVP_Data := p_avpData
            }
                
            template (value) Access_Network_Charging_Address_AVP m_accessNetworkChargingAddress(template (value) Address p_avpData) := 
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Address_AVP, f_IPAdressLength(), omit),
                aVP_Data := p_avpData
            };    
                
            template Access_Network_Charging_Identifier_Gx_AVP m_aNCI_Gx(Access_Network_Charging_Identifier_Value_AVP p_nciv) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Identifier_Gx_AVP, lengthof(encvalue(p_nciv)), omit),
                acc_Net_Charging_Id_Val := p_nciv,
                charging_Rule_Base_Name := omit,
                charging_Rule_Name := omit
            }  
                
            template Access_Network_Charging_Identifier_Value_AVP m_aNCI_Value(octetstring p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdAccess_Network_Charging_Identifier_Value_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }; 	    
                
            template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Install_AVP, lengthof(encvalue(p_rrd)), omit),
                routing_Rule_Definition := {p_rrd},
                aVP_Type := omit
            }
                
            template Routing_Rule_Definition_AVP m_routing_Rule_Definition(Routing_Rule_Identifier_AVP p_rri, Routing_Filter_AVP p_rf) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Definition_AVP, (lengthof(encvalue(p_rri))+lengthof(encvalue(p_rf))), omit),
                routing_Rule_Identifier := p_rri,
                routing_Filter := {p_rf},
                precedence := omit,
                routing_IP_Address := omit,
                aVP_Type := omit
            } 	   
                
            template Routing_Rule_Identifier_AVP m_routing_Rule_Identifier(octetstring p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Rule_Identifier_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            };  	    
                
            template Routing_Filter_AVP m_routing_Filter :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdRouting_Filter_AVP, 12/*12-flow_direction*/+ lengthof(encvalue(m_flow_Description(m_iPFilterRule))), omit),
                flow_Description := m_flow_Description(m_iPFilterRule),
                flow_Direction := m_flow_Direction,
                toS_Traffic_Class := omit,
                security_Parameter_Index := omit,
                flow_Label := omit,
                aVP_Type := omit 
            } 			    

            template Flow_Description_AVP m_flow_Description(IPFilterRule_Type p_IPftr) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Description_AVP, lengthof(encvalue(p_IPftr)), omit),
                aVP_Data := p_IPftr
            }      
                
            template Flow_Direction_AVP m_flow_Direction :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Direction_AVP, 4, omit),
                aVP_Data := BIDIRECTIONAL_E
            }       
            
            //TODO: Check have to be done during validation if IPFilterRule_Type is valid(it is not clear from RFC3588 if type structure is sufficient)    
            template IPFilterRule_Type m_iPFilterRule :=
            {
                action_ := "permit",
                direction := "out",
                proto := "ip",
                src := 	{
                    ipno := 4,
                    addr := "1.1.1.1",
                    mask := omit
                	},
                dst := 	{
                    ipno := 4,
                    addr := "10.10.10.1",
                    mask := omit                    
                	},
                ports := omit,
                options := omit
            }
            
     	  }//end group sendingTemplatesForAVPs
     	  group awaitingTemplatesForAVPs{
    
@@ -251,7 +362,7 @@ module DiameterGx_Templates {
                origin_Realm := p_originRealm,
                destination_Realm := p_destinationRealm,
                auth_Application_Id := m_authApplicationId(c_applIdGx),
                cC_Request_Type := m_cC_Request_Type(PX_CC_REQUEST_TYPE),
                cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E),
                cC_Request_Number := m_cC_Request_Number(PX_CC_REQUEST_NUMBER),
                subscription_Id := {m_subscription_Id(m_subscription_Id_Type(PX_SUBSCRIPTION_ID_TYPE),m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA))},
                framed_IP_Address := p_framedIpAddress,
@@ -291,7 +402,7 @@ module DiameterGx_Templates {
                origin_Host := p_originHost,
                origin_Realm := p_originRealm,
                auth_Application_Id := m_authApplicationId(c_applIdGx),
                cC_Request_Type := m_cC_Request_Type(PX_CC_REQUEST_TYPE),
                cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E),
                cC_Request_Number := m_cC_Request_Number(PX_CC_REQUEST_NUMBER)
            }
            
@@ -316,7 +427,7 @@ module DiameterGx_Templates {
          
          group Gxmodified_request_templates_send {
            
            template CCR_MSG m_CCR_allRequiredAVPs(template Session_Id_AVP p_sessionId,
            template CCR_MSG m_CCR_InitialRequest_allReqAVPs(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,
@@ -324,13 +435,13 @@ module DiameterGx_Templates {
            							template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_basic := {
				network_Request_Support := m_network_Request_Support(NETWORK_REQUEST_SUPPORTED_E),
				qoS_Information := m_qoS_Information_APN_AMBR_UL,
				threeGPP_MS_TimeZone := omit,
				called_Station_Id := omit,
				pDN_Connection_ID := omit,
				bearer_Usage := omit,
				access_Network_Charging_Address := omit,
				access_Network_Charging_Identifier_Gx := omit,
				routing_Rule_Install := omit
				threeGPP_MS_TimeZone := m_threeGPP_MS_TimeZone(PX_3GPP_MS_TIMEZONE_DATA),
				called_Station_Id := m_called_Station_Id(PX_CALLED_STATION_ID_DATA),
				pDN_Connection_ID := m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA),
				bearer_Usage := m_bearer_Usage(PX_BEARER_USAGE_DATA),
				access_Network_Charging_Address := m_accessNetworkChargingAddress(f_IPAdress(PX_ANCA_ipv4, PX_ANCA_ipv6)),
				access_Network_Charging_Identifier_Gx := {m_aNCI_Gx(m_aNCI_Value(PX_ACCESS_NETWORK_CHARGING_IDENTIFIER_VALUE))},
				routing_Rule_Install := m_routing_Rule_Install(m_routing_Rule_Definition(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE),m_routing_Filter))
 
            }