Commit bdd96fc7 authored by pintar's avatar pintar
Browse files

New PIXITs and templates added

parent 993a30f2
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -238,6 +238,16 @@ module DiameterGx_PIXITS
        */
        modulepar PCC_Rule_Status PX_PCC_RULE_STATUS := ACTIVE_E;
        
        /** @desc	UInt32, PIXIT item A.1/
         *  avp_Data within Precedence_AVP is of UInt32 type
        */
        modulepar UInt32  PX_PRECEDENCE_DATA := 100; 
        
        /** @desc	octetstring, PIXIT item A.1/
         * avp_Data within Packet_Filter_Identifier_AVP is of octetstring type
        */
        modulepar octetstring PX_PACKET_FILTER_IDENTIFIER_DATA := '08'O;
        
	} //end group DiameterCommonGxData

} // end module DiameterGx_PIXITS
 No newline at end of file
+153 −48
Original line number Diff line number Diff line
@@ -36,6 +36,34 @@ module DiameterGx_Templates {
            
        group DummyAVPHeaders{    
                
            template QoS_Information_AVP m_qoS_Information_dummy :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdQoS_Information_AVP, 0, omit),
                qoS_Class_Identifier := omit,
                max_Requested_Bandwidth_UL := omit,
                max_Requested_Bandwidth_DL := omit,
                guaranteed_Bitrate_UL := omit,
                guaranteed_Bitrate_DL := omit,
                bearer_Identifier := omit,
                allocation_Retention_Priority := omit,
                aPN_Aggregate_Max_Bitrate_UL := omit,
                aPN_Aggregate_Max_Bitrate_DL := omit,
                aVP_Type := omit
            }     
                
            template Packet_Filter_Information_AVP m_packet_Filter_Information_dummy :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Information_AVP, 0, omit),
                packet_Filter_Identifier := omit,
                precedence := omit,
                packet_Filter_Content := omit,
                toS_Traffic_Class := omit,
                security_Parameter_Index := omit,
                flow_Label := omit,
                flow_Direction := omit,
                aVP_Type := omit
            } 
            
        } //end group DummyAVPHeaders
    
     	group SpecificAVPHeaders {
@@ -126,44 +154,47 @@ module DiameterGx_Templates {
                aVP_Data := p_avpData
            }    
                
            template QoS_Information_AVP m_qoS_Information_APN_AMBR_UL :=
            template QoS_Information_AVP m_qoS_Information_APN_AMBR_UL modifies m_qoS_Information_dummy:=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdQoS_Information_AVP, 12/*length aPN_Aggregate_Max_Bitrate_UL*/, omit),
                qoS_Class_Identifier := omit,
                max_Requested_Bandwidth_UL := omit,
                max_Requested_Bandwidth_DL := omit,
                guaranteed_Bitrate_UL := omit,
                guaranteed_Bitrate_DL := omit,
                bearer_Identifier := omit,
                allocation_Retention_Priority := omit,
                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
                aPN_Aggregate_Max_Bitrate_UL := m_APN_Aggregate_Max_Bitrate_UL(PX_APN_AGGREGATE_MAX_BITRATE_UL_AVP_DATA)
            }      
                
            template QoS_Information_AVP m_qoS_Information_ClassIdentifier(QoS_Class_Identifier p_avpData) modifies m_qoS_Information_dummy :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdQoS_Information_AVP, 12/*length qoS_Class_Identifier*/, omit),
                qoS_Class_Identifier := m_qoS_Class_Identifier(p_avpData)
            } 			    
                
            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 := p_avpData
            }; 
            }    
                
            template QoS_Class_Identifier_AVP m_qoS_Class_Identifier(QoS_Class_Identifier p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdQoS_Class_Identifier_AVP, 4, omit),
                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) :=
            {
@@ -175,7 +206,7 @@ module DiameterGx_Templates {
            {
                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) :=
            {
@@ -189,7 +220,7 @@ module DiameterGx_Templates {
            {
                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) :=
            {
@@ -212,13 +243,13 @@ module DiameterGx_Templates {
            {
                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,
                flow_Direction := m_flowDirection_Bidirectional,
                toS_Traffic_Class := omit,
                security_Parameter_Index := omit,
                flow_Label := omit,
@@ -231,7 +262,7 @@ module DiameterGx_Templates {
                aVP_Data := p_IPftr
            }      
                
            template Flow_Direction_AVP m_flow_Direction :=
            template Flow_Direction_AVP m_flowDirection_Bidirectional :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdFlow_Direction_AVP, 4, omit),
                aVP_Data := BIDIRECTIONAL_E
@@ -279,14 +310,58 @@ module DiameterGx_Templates {
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdCharging_Rule_Name_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }; 	    
            } 	    
                
            template PCC_Rule_Status_AVP m_pCC_Rule_Status_AVP(PCC_Rule_Status p_avpData) :=
            template PCC_Rule_Status_AVP m_pCC_Rule_Status(PCC_Rule_Status p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPCC_Rule_Status_AVP, 4, omit),
                aVP_Data := p_avpData
            }     
                
            template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId(Packet_Filter_Identifier_AVP p_pfId) modifies m_packet_Filter_Information_dummy :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Information_AVP, lengthof(encvalue(p_pfId)), omit),
                packet_Filter_Identifier := p_pfId
            }      
                
            template Packet_Filter_Information_AVP m_pFInfo_PacketFilterId_FlowDirection(Packet_Filter_Identifier_AVP p_pfId) modifies m_packet_Filter_Information_dummy :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Information_AVP,  lengthof(encvalue(p_pfId))+12/*12-flow_direction*/, omit),
                packet_Filter_Identifier := p_pfId,
                flow_Direction := m_flowDirection_Bidirectional
            }      
                
            template Packet_Filter_Information_AVP m_pFInfo_Precedence_pFContent(Precedence_AVP p_precedence, Packet_Filter_Content_AVP p_pfc) modifies m_packet_Filter_Information_dummy :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Information_AVP, lengthof(encvalue(p_precedence)) +lengthof(encvalue(p_pfc)), omit),
                precedence := p_precedence,
                packet_Filter_Content := p_pfc
            } 			    

            template Packet_Filter_Content_AVP m_packet_Filter_Content(IPFilterRule_Type p_IPftr) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Content_AVP, lengthof(encvalue(p_IPftr)), omit),
                aVP_Data := p_IPftr
            }
                
            template Packet_Filter_Identifier_AVP m_packet_Filter_Identifier(octetstring p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Identifier_AVP, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }  			    
                
            template Precedence_AVP m_precedence(UInt32 p_avpData):=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPrecedence_AVP, 4, omit),
                aVP_Data := p_avpData
            }  
                
            template Packet_Filter_Operation_AVP m_packet_Filter_Operation(Packet_Filter_Operation p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_vendIdPacket_Filter_Operation_AVP, 4, omit),
                aVP_Data := p_avpData
            }
            
     	  }//end group sendingTemplatesForAVPs
     	  group awaitingTemplatesForAVPs{
    
@@ -344,7 +419,7 @@ module DiameterGx_Templates {
                aVP_Header := mw_aVP_Header_any,
                routing_Rule_Definition := {mw_routing_Rule_Definition},
                aVP_Type := *
            };
            }
            
            template Routing_Rule_Definition_AVP mw_routing_Rule_Definition :=
            {            
@@ -354,7 +429,7 @@ module DiameterGx_Templates {
                precedence := *,
                routing_IP_Address := *,
                aVP_Type := *
            };
            }
     	  }//end group awaitingTemplatesForAVPs
        } //end group SpecificAVPHeaders
    } //end group HeaderFieldTemplates
@@ -383,9 +458,7 @@ module DiameterGx_Templates {
            template CCR_MSG m_CCR_basic(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,
            							template Framed_IP_Address_AVP p_framedIpAddress,
            							template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_dummy := {
                                        template Destination_Realm_AVP p_destinationRealm) modifies m_CCR_dummy := {
                header := m_diameterHeaderReq_dummy(CCR_E, c_applIdGx),
                session_Id := p_sessionId,
                origin_Host := p_originHost,
@@ -393,12 +466,7 @@ module DiameterGx_Templates {
                destination_Realm := p_destinationRealm,
                auth_Application_Id := m_authApplicationId(c_applIdGx),
                cC_Request_Type := m_cC_Request_Type(INITIAL_REQUEST_E),
                cC_Request_Number := m_cC_Request_Number(0),
                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,
                framed_IPv6_Prefix := p_framedIp6Address,
                iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE),
                rAT_Type := m_rAT_Type(PX_RAT_TYPE)
                cC_Request_Number := m_cC_Request_Number(0)
            }
                    
        } // end group Gxbasic_request_templates_send
@@ -457,12 +525,25 @@ module DiameterGx_Templates {
          
          group Gxmodified_request_templates_send {
            
            template CCR_MSG m_CCR_InitialRequest_allReqAVPs(template Session_Id_AVP p_sessionId,
            template CCR_MSG m_CCR_InitialRequest(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,
            							template Framed_IP_Address_AVP p_framedIpAddress,
            							template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_basic := {
                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,
                framed_IPv6_Prefix := p_framedIp6Address,
                iP_CAN_Type := m_iP_CAN_Type(PX_IP_CAN_TYPE),
                rAT_Type := m_rAT_Type(PX_RAT_TYPE)
            }
            
            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,
            							template Framed_IP_Address_AVP p_framedIpAddress,
            							template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_InitialRequest := {
				network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT),
				qoS_Information := m_qoS_Information_APN_AMBR_UL,
				threeGPP_MS_TimeZone := m_threeGPP_MS_TimeZone(PX_3GPP_MS_TIMEZONE_DATA),
@@ -474,35 +555,59 @@ module DiameterGx_Templates {
				routing_Rule_Install := m_routing_Rule_Install(m_routing_Rule_Definition(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE),m_routing_Filter))
 			}
 			
 			template CCR_MSG m_CCR_NetworkRequestSupport(template Session_Id_AVP p_sessionId,
 			template CCR_MSG m_CCR_InitialRequest_NetworkRequestSupport(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,
            							template Framed_IP_Address_AVP p_framedIpAddress,
            							template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_basic := {
                                        template Destination_Realm_AVP p_destinationRealm) modifies m_CCR_basic := {
				network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT)
 			}
            
            template CCR_MSG m_CCR_UpdateRequest(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,
            							template Framed_IP_Address_AVP p_framedIpAddress,
            							template Framed_IPv6_Prefix_AVP p_framedIp6Address) modifies m_CCR_basic := {
                                        template Destination_Realm_AVP p_destinationRealm) modifies m_CCR_basic := {
                cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E),
                cC_Request_Number := m_cC_Request_Number(1),
                subscription_Id := omit,
                iP_CAN_Type := omit,
                rAT_Type := omit,
                charging_Rule_Report := {m_charging_Rule_Report(m_charging_Rule_Name(PX_CHARGING_RULE_NAME_DATA),m_pCC_Rule_Status_AVP(PX_PCC_RULE_STATUS))}, 
                charging_Rule_Report := {m_charging_Rule_Report(m_charging_Rule_Name(PX_CHARGING_RULE_NAME_DATA),m_pCC_Rule_Status(PX_PCC_RULE_STATUS))}, 
                event_Trigger := {m_event_Trigger(IP_CAN_CHANGE_E)}
            }
            
            template CCR_MSG m_CCR_UpdateRequest_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) modifies m_CCR_UpdateRequest := {
				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))
 			}
            
            template CCR_MSG m_CCR_UpdateRequest_UERequestForAllocResources(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,
                                        template Packet_Filter_Information_AVP p_packetFilterInfo,
                                        template Packet_Filter_Operation_AVP p_packetFilterOperation,
                                        template QoS_Information_AVP p_qosInformation) modifies m_CCR_UpdateRequest := {
				packet_Filter_Information := {p_packetFilterInfo},
				packet_Filter_Operation := p_packetFilterOperation,
				qoS_Information := p_qosInformation,
                event_Trigger := {m_event_Trigger(RESOURCE_MODIFICATION_REQUEST_E)}
 			}
 			
 			template CCR_MSG m_CCR_UpdateRequest_NetworkRequestSupport(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm) modifies m_CCR_basic := {
                cC_Request_Type := m_cC_Request_Type(UPDATE_REQUEST_E),
                cC_Request_Number := m_cC_Request_Number(1),
				network_Request_Support := m_network_Request_Support(PX_NETWORK_REQUEST_SUPPORT)
 			}

          } //     end group Gxmodified_request_templates_send

		  group Gxmodified_request_templates_receive {
            
            template CCR_MSG mw_CCR_sessionRequest(template Session_Id_AVP p_sessionId,
            template CCR_MSG mw_CCR_InitialRequest(template Session_Id_AVP p_sessionId,
                                        template Origin_Host_AVP p_originHost,
                                        template Origin_Realm_AVP p_originRealm,
                                        template Destination_Realm_AVP p_destinationRealm,