Commit d8d0cc15 authored by pintar's avatar pintar
Browse files

Updates due to AVP flags V and M for sending and awaiting templates

parent cf36643a
Loading
Loading
Loading
Loading
+103 −107
Original line number Diff line number Diff line
@@ -32,20 +32,20 @@ module DiameterRx_Templates {
        template Media_Component_Number_AVP m_mediaComponentNr(UInt32 p_avpData) := 
        {
            aVP_Header :=
     			m_aVP_HeaderVid(c_media_Component_Number_AVP_Code,4, omit),
     			m_aVP_HeaderVid_Mbit1(c_media_Component_Number_AVP_Code,4, c_vendId3gpp),
            aVP_Data := p_avpData
        }
            
        template Media_Component_Number_AVP mw_mediaComponentNr(template (present) UInt32 p_avpData) := 
        {
            aVP_Header := mw_aVP_Header(c_media_Component_Number_AVP_Code),
            aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Number_AVP_Code),
            aVP_Data := p_avpData
        }
        
        template Media_Sub_Component_AVP mw_mediaSubComponent_basic(template(present) Flow_Number_AVP p_flowNumber, template Media_Sub_Component_AVP.flow_Description p_flowDescription, template Flow_Status_AVP p_flowStatus, template Flow_Usage_AVP p_flowUsage,
        			template Max_Requested_Bandwidth_UL_AVP p_RequestedBandwidthUL, template Max_Requested_Bandwidth_DL_AVP p_requestedBandwidthDL, template AF_Signalling_Protocol_AVP p_afSignallingProtocol, template Media_Sub_Component_AVP.aVP_Type p_avpType) := 
        {
            aVP_Header := mw_aVP_Header(c_media_Sub_Component_AVP_Code),
            aVP_Header := mw_aVP_Header_VMbit1(c_media_Sub_Component_AVP_Code),
            flow_Number := p_flowNumber,
            flow_Description := p_flowDescription,
            flow_Status := p_flowStatus,
@@ -59,50 +59,50 @@ module DiameterRx_Templates {

        template Flow_Status_AVP mw_flowStatus(template (present) Flow_Status_Type p_avpData) := 
        {
    		aVP_Header := mw_aVP_Header(c_flow_Status_AVP_Code),
    		aVP_Header := mw_aVP_Header_VMbit1(c_flow_Status_AVP_Code),
    		aVP_Data := p_avpData
    	}
    	
        template Flow_Usage_AVP mw_flowUsage(template (present) Flow_Usage_Type p_avpData) := 
        {
            aVP_Header := mw_aVP_Header(c_flow_Usage_AVP_Code),
            aVP_Header := mw_aVP_Header_VMbit1(c_flow_Usage_AVP_Code),
            aVP_Data := p_avpData
        }
        
        template Flow_Number_AVP mw_flowNumber(template (present) UInt32 p_avpData) := 
        {
            aVP_Header := mw_aVP_Header(c_flow_Number_AVP_Code),
            aVP_Header := mw_aVP_Header_VMbit1(c_flow_Number_AVP_Code),
            aVP_Data := p_avpData
        }		

        template Flow_Status_AVP m_flowStatus (template(value) Flow_Status_Type p_avpData) := {
            //Ref: ETSI TS 129 214 Flow_Status AVP
            aVP_Header := m_aVP_HeaderVid(c_flow_Status_AVP_Code, 4, omit),
            aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Status_AVP_Code, 4, c_vendId3gpp),
            aVP_Data := p_avpData
            };

        template AF_Signalling_Protocol_AVP m_afSignallingProtocolSIP := {
          //Ref: ETSI TS 129 214 AF_Signalling_Protocol AVP
             aVP_Header := m_aVP_HeaderVid(c_aF_Signalling_Protocol_AVP_Code, 4, omit),
             aVP_Header := m_aVP_HeaderVid_Mbit0(c_aF_Signalling_Protocol_AVP_Code, 4, c_vendId3gpp),
             aVP_Data := SIP_E
          };


        template AF_Signalling_Protocol_AVP mw_afSignallingProtocolSIP := {
          //Ref: ETSI TS 129 214 AF_Signalling_Protocol AVP
             aVP_Header := mw_aVP_Header(c_aF_Signalling_Protocol_AVP_Code),
             aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_aF_Signalling_Protocol_AVP_Code),
             aVP_Data := SIP_E
          };
    
        template Media_Sub_Component_AVP m_mediaSubComponentUN (template UInt32 p_flowNumber, template Flow_Usage_Type p_flowUsageType ) := {
             aVP_Header := m_aVP_HeaderVid(c_media_Sub_Component_AVP_Code,
             aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Sub_Component_AVP_Code,
                                            12 // flow_Number
                                            + 12, // flow_Usage
               								omit),
             flow_Number := {aVP_Header := m_aVP_HeaderVid(c_flow_Number_AVP_Code,4, omit), aVP_Data := p_flowNumber},
                                            c_vendId3gpp),
             flow_Number := {aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Number_AVP_Code,4, c_vendId3gpp), aVP_Data := p_flowNumber},
             flow_Description := omit,
             flow_Status := omit,
             flow_Usage := {aVP_Header := m_aVP_HeaderVid(c_flow_Usage_AVP_Code,4, omit), aVP_Data := p_flowUsageType},
             flow_Usage := {aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Usage_AVP_Code,4, c_vendId3gpp), aVP_Data := p_flowUsageType},
             max_Requested_Bw_Ul := omit,
             max_Requested_Bw_Dl := omit,
             af_Signalling_Protocol := omit,
@@ -116,18 +116,18 @@ module DiameterRx_Templates {
                 template(value) Flow_Description_AVP p_flowDescription2,
                 template(value) Flow_Status_AVP p_FlowStatus,
                 template(value) AF_Signalling_Protocol_AVP p_afSignallingProtocol) := {
             aVP_Header := m_aVP_HeaderVid(c_media_Sub_Component_AVP_Code,
             aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Sub_Component_AVP_Code,
                                12 // flow_Number
                                + f_getByteAlignedLength(p_flowDescription1.aVP_Header.aVP_len)
                                + f_getByteAlignedLength(p_flowDescription2.aVP_Header.aVP_len)
                                + 12 // flow_Usage
                                + f_getByteAlignedLength(p_FlowStatus.aVP_Header.aVP_len)
                                + f_getByteAlignedLength(p_afSignallingProtocol.aVP_Header.aVP_len),
               					omit),
             flow_Number := {aVP_Header := m_aVP_HeaderVid(c_flow_Number_AVP_Code,4, omit), aVP_Data := p_flowNumber},
                                c_vendId3gpp),
             flow_Number := {aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Number_AVP_Code,4, c_vendId3gpp), aVP_Data := p_flowNumber},
             flow_Description := {p_flowDescription1, p_flowDescription2},
             flow_Status := p_FlowStatus,
             flow_Usage := {aVP_Header := m_aVP_HeaderVid(c_flow_Usage_AVP_Code,4, omit), aVP_Data := p_flowUsageType},
             flow_Usage := {aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Usage_AVP_Code,4, c_vendId3gpp), aVP_Data := p_flowUsageType},
             max_Requested_Bw_Ul := omit,
             max_Requested_Bw_Dl := omit,
             af_Signalling_Protocol := p_afSignallingProtocol,
@@ -135,10 +135,10 @@ module DiameterRx_Templates {
        }
			
        template Media_Sub_Component_AVP m_mediaSubComponentN (template UInt32 p_flowNumber) := {
             aVP_Header := m_aVP_HeaderVid(c_media_Sub_Component_AVP_Code,
             aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Sub_Component_AVP_Code,
                                            12, // flow_Number
               								omit),
             flow_Number := {aVP_Header := m_aVP_HeaderVid(c_flow_Number_AVP_Code,4, omit), aVP_Data := p_flowNumber},
                                            c_vendId3gpp),
             flow_Number := {aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Number_AVP_Code,4, c_vendId3gpp), aVP_Data := p_flowNumber},
             flow_Description := omit,
             flow_Status := omit,
             flow_Usage := omit,
@@ -151,7 +151,7 @@ module DiameterRx_Templates {
    	   
	   template Flow_Description_AVP m_flowDescription (UTF8String p_action, UTF8String p_direction, UTF8String p_proto,
                               IP_AddressMask p_src, IP_AddressMask p_dst, /*UTF8String p_ports, */ UTF8String p_options) := {
           aVP_Header := m_aVP_HeaderVid(c_flow_Description_AVP_Code,
           aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Description_AVP_Code,
                                lengthof(p_action)
                                + 1
                                + lengthof(p_direction)
@@ -164,7 +164,7 @@ module DiameterRx_Templates {
                                //+ lengthof(p_ports)
                                + 1
                                + lengthof(p_options),
           						omit),
                                c_vendId3gpp),
           aVP_Data := {
           action_ := p_action,
           direction := p_direction,
@@ -176,32 +176,28 @@ module DiameterRx_Templates {
           }
       }


    	template Experimental_Result_AVP mw_experimentalResult(template(present) Experimental_Result_Code_AVP p_ExperimentalResultCode) := {
    			aVP_Header := mw_aVP_Header(c_experimental_Result_AVP_Code),
            aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_experimental_Result_AVP_Code),
            vendor_Id := ?,
            experimental_Result_Code := p_ExperimentalResultCode
        }

    	                
        template Experimental_Result_Code_AVP mw_expResultCode(Experimental_Result_Type p_avpData) :=
        {
            aVP_Header := mw_aVP_Header(c_experimental_Result_Code_AVP_Code),
            aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_experimental_Result_Code_AVP_Code),
            aVP_Data := p_avpData
        }


    		                                
        template Sponsor_Identity_AVP m_sponsorIdentity(template(value) UTF8String p_aVP_Data) := {
         //Ref: ETSI TS 129 214 Sponsor_Identity AVP
			 aVP_Header := m_aVP_HeaderVid(c_sponsor_Identity_AVP_Code,lengthof(p_aVP_Data), omit),
			 aVP_Header := m_aVP_HeaderVid_Mbit0(c_sponsor_Identity_AVP_Code,lengthof(p_aVP_Data), c_vendId3gpp),
             aVP_Data := p_aVP_Data
         };     
             

        template Granted_Service_Unit_AVP m_grantedServiceUnit := {
			//	Ref: RFC4006 8.17.  Granted-Service-Unit AVP
             	aVP_Header := m_aVP_HeaderVid(c_granted_Service_Unit_AVP_Code,0, omit),
             	aVP_Header := m_aVP_HeaderVid_Mbit1(c_granted_Service_Unit_AVP_Code,0, omit),
            	tariff_Time_Change  := omit,
				cC_Time  := omit,
				cC_Money  := omit,
@@ -222,9 +218,9 @@ module DiameterRx_Templates {
            
            template Media_Component_Description_AVP m_mediaComponentDescription_dummy :=
    		{
                aVP_Header := m_aVP_HeaderVid(c_media_Component_Description_AVP_Code, 12, omit), // considers lengths: media_Component_Nr
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Component_Description_AVP_Code, 12, c_vendId3gpp), // considers lengths: media_Component_Nr
    			media_Component_Nr := {
    			    aVP_Header := m_aVP_HeaderVid(c_media_Component_Number_AVP_Code, 4, omit),
    			    aVP_Header := m_aVP_HeaderVid_Mbit1(c_media_Component_Number_AVP_Code, 4, c_vendId3gpp),
    				aVP_Data := PX_MediaComponentNr
    			},  
    			media_Sub_component := omit,
@@ -242,7 +238,7 @@ module DiameterRx_Templates {
				
           template Flow_Description_AVP m_flowDescription_dummy := {
               //TODO length
               aVP_Header := m_aVP_HeaderVid(c_flow_Description_AVP_Code,37, omit),
               aVP_Header := m_aVP_HeaderVid_Mbit1(c_flow_Description_AVP_Code,37, c_vendId3gpp),
    		   aVP_Data := {
    			   action_ := "permit",
    			   direction := "out",
@@ -261,116 +257,116 @@ module DiameterRx_Templates {
    
            template (value) Access_Network_Charging_Address_AVP m_accessNetworkChargingAddress(template (value) Address p_avpData) := 
            {
                aVP_Header := m_aVP_HeaderVid(c_access_Network_Charging_Address_AVP_Code, f_IPAdressLength(), omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_access_Network_Charging_Address_AVP_Code, f_IPAdressLength(), c_vendId3gpp),
                aVP_Data := p_avpData
            };
    
            template Destination_Host_AVP m_destinationHost(charstring p_avpData) := 
            {
                aVP_Header := m_aVP_HeaderVid(c_destination_Host_AVP_Code, lengthof(p_avpData), omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_destination_Host_AVP_Code, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }
            
            template Destination_Realm_AVP m_destinationRealm(charstring p_avpData) := 
            {
                aVP_Header := m_aVP_HeaderVid(c_destination_Realm_AVP_Code, lengthof(p_avpData), omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_destination_Realm_AVP_Code, lengthof(p_avpData), omit),
    			aVP_Data := p_avpData
    		}
            
            template Session_Id_AVP m_sessionId(UTF8String p_avpData) := 
            {
    			aVP_Header := m_aVP_HeaderVid(c_session_Id_AVP_Code, lengthof(p_avpData), omit),
    			aVP_Header := m_aVP_HeaderVid_Mbit1(c_session_Id_AVP_Code, lengthof(p_avpData), omit),
    			aVP_Data := p_avpData
    		}
                        
            template Auth_Application_Id_AVP m_authApplicationId(UInt32 p_avpData):= 
            {
                aVP_Header := m_aVP_HeaderVid(c_auth_Application_Id_AVP_Code, 4, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_auth_Application_Id_AVP_Code, 4, omit),
    			aVP_Data := p_avpData
    		} 
    		
    		template AF_Application_Identifier_AVP m_afApplicationIdentifier :=
    		{
                //Ref: ETSI TS 129 214 AF_Application_Identifier AVP
                aVP_Header := m_aVP_HeaderVid(c_aF_Application_Identifier_AVP_Code, 37, c_vendId3gpp),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_aF_Application_Identifier_AVP_Code, 37, c_vendId3gpp),
                aVP_Data := '75726e3a75726e2d373a336770702d736572766963652e696d732e696373692e6d6d74656c'O
                            //urn:urn-7:3gpp -service.ims.ics i.mmtel
            }
            
            template AF_Charging_Identifier_AVP m_afChargingIdentifier := {
            //Ref: ETSI TS 129 214 AF_Charging_Identifier AVP
                aVP_Header := m_aVP_HeaderVid(c_aF_Charging_Identifier_AVP_Code, 4, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_aF_Charging_Identifier_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := '00000000'O
            }; 	  
            
            template Service_URN_AVP m_serviceURN := {
                //Ref: ETSI TS 129 214 Service_URN AVP
                aVP_Header := m_aVP_HeaderVid(c_service_URN_AVP_Code, 8, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_URN_AVP_Code, 8, c_vendId3gpp),
                aVP_Data := '736F732E66697265'O //sos.fire
            };
            
            template MPS_Identifier_AVP m_mspIdentifier := {
                //Ref: ETSI TS 129 214 MPS_Identifier AVP
                aVP_Header := m_aVP_HeaderVid(c_mPS_Identifier_AVP_Code, 8, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit0(c_mPS_Identifier_AVP_Code, 8, c_vendId3gpp),
                aVP_Data := '4E474E2047455453'O //NGN GETS
                };
                
            template Service_Info_Status_AVP m_serviceInfoStatus(Service_Info_Type p_avpData) := {
             //Ref: ETSI TS 129 214 Service_Info AVP
                aVP_Header := m_aVP_HeaderVid(c_service_Info_Status_AVP_Code, 4, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_service_Info_Status_AVP_Code, 4, c_vendId3gpp),
                aVP_Data := p_avpData
             };    
    
    		template Framed_IP_Address_AVP mw_framedIpAddress(template (present) octetstring p_avpData) :=
    		{ 
    			aVP_Header := mw_aVP_Header(c_framed_IP_Address_AVP_Code),
    			aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_framed_IP_Address_AVP_Code),
    			aVP_Data := p_avpData
    		}
    		
            template Framed_IPv6_Prefix_AVP mw_framedIp6Address(template (present) octetstring p_avpData) :=
            {
                aVP_Header := mw_aVP_Header(c_framed_IPv6_Prefix_AVP_Code),
                aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_framed_IPv6_Prefix_AVP_Code),
                aVP_Data := p_avpData
            }
            
            template Framed_IP_Address_AVP m_framedIpAddress(template (value) octetstring p_avpData) :=
            { 
                aVP_Header := m_aVP_HeaderVid(c_framed_IP_Address_AVP_Code, lengthof(p_avpData), omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_framed_IP_Address_AVP_Code, lengthof(p_avpData), c_vendId3gpp),
                aVP_Data := p_avpData
            }
    		
            template Framed_IPv6_Prefix_AVP m_framedIp6Address(template (value) octetstring p_avpData) :=
            {
                aVP_Header := m_aVP_HeaderVid(c_framed_IPv6_Prefix_AVP_Code, lengthof(p_avpData), omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_framed_IPv6_Prefix_AVP_Code, lengthof(p_avpData), omit),
                aVP_Data := p_avpData
            }
    
    		template Termination_Cause_AVP m_terminationCause(template (value) Termination_Cause_Type p_terminationCauseData):= 
    		{
                aVP_Header := m_aVP_HeaderVid(c_termination_Cause_AVP_Code, 4, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit1(c_termination_Cause_AVP_Code, 4, omit),
    			aVP_Data := p_terminationCauseData //DIAMETER_LOGOUT_E
    		}
    
            template Specific_Action_AVP mw_specificAction(template Specific_Action_Type p_avpData) := 
            {
                aVP_Header := mw_aVP_Header(c_specific_Action_AVP_Code),
                aVP_Header := mw_aVP_Header_VMbit1(c_specific_Action_AVP_Code),
                aVP_Data := p_avpData
            }
            
            template Specific_Action_AVP m_specificAction(template Specific_Action_Type p_avpData) := {
    			aVP_Header := m_aVP_HeaderVid(c_specific_Action_AVP_Code, 4, omit),
    			aVP_Header := m_aVP_HeaderVid_Mbit1(c_specific_Action_AVP_Code, 4, c_vendId3gpp),
    			aVP_Data := p_avpData
    		}
            
            template Abort_Cause_AVP mw_abortCause(template Abort_Cause_Type p_avpData) := 
            {
                aVP_Header := mw_aVP_Header(c_abort_Cause_AVP_Code),
                aVP_Header := mw_aVP_Header_VMbit1(c_abort_Cause_AVP_Code),
                aVP_Data := p_avpData
            };
    
            template Media_Component_Description_AVP mw_mediaComponentDescription := 
            {
                aVP_Header := mw_aVP_Header(c_media_Component_Description_AVP_Code),
                aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Description_AVP_Code),
                media_Component_Nr := {aVP_Header := ?, aVP_Data := ?},
                media_Sub_component := *,
                af_Application_Id := *,
@@ -399,7 +395,7 @@ module DiameterRx_Templates {
                template Media_Component_Description_AVP.codec_data		p_codecData
            ):= 
            {
                aVP_Header := mw_aVP_Header(c_media_Component_Description_AVP_Code),
                aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Description_AVP_Code),
                media_Component_Nr := p_media_Component_Nr,
                media_Sub_component := p_media_Sub_component,
                af_Application_Id := p_af_Application_Id,
@@ -423,7 +419,7 @@ module DiameterRx_Templates {
                modifies mw_mediaComponentDescription := 
            {
                media_Component_Nr := {
                    aVP_Header := mw_aVP_Header(c_media_Component_Number_AVP_Code), 
                    aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Number_AVP_Code), 
                    aVP_Data := 0
                },
                media_Sub_component := superset(p_mediaSubComponent)
@@ -433,7 +429,7 @@ module DiameterRx_Templates {
                modifies mw_mediaComponentDescription := 
            {
                media_Component_Nr := {
                    aVP_Header := mw_aVP_Header(c_media_Component_Number_AVP_Code),
                    aVP_Header := mw_aVP_Header_VMbit1(c_media_Component_Number_AVP_Code),
                    aVP_Data := 0
                },
                media_Sub_component := {p_mediaSubComponent}
@@ -468,11 +464,11 @@ module DiameterRx_Templates {
    		   template(value) Application_Service_Provider_Identity_AVP p_applicationServiceProviderId,
    		   template(value) Granted_Service_Unit_AVP p_grantedServiceUnit) := 
    		   {
    			  aVP_Header := m_aVP_HeaderVid(c_sponsored_Connectivity_Data_AVP_Code,
    			  aVP_Header := m_aVP_HeaderVid_Mbit0(c_sponsored_Connectivity_Data_AVP_Code,
    			                f_getByteAlignedLength(p_sponsorIdentity.aVP_Header.aVP_len) // len of 1st subfield
    			  				+f_getByteAlignedLength(p_applicationServiceProviderId.aVP_Header.aVP_len) // len of 2nd subfield
    			  				+f_getByteAlignedLength(p_grantedServiceUnit.aVP_Header.aVP_len), // len of 3rd subfield
    			  				omit),
                                c_vendId3gpp),
    			  sponsor_Identity := p_sponsorIdentity,
    			  application_service_provider_Id := p_applicationServiceProviderId,
    			  granted_Service_Unit := p_grantedServiceUnit,
@@ -484,10 +480,10 @@ module DiameterRx_Templates {
    		  (template(value) Sponsor_Identity_AVP p_sponsorIdentity,
    		   template(value) Application_Service_Provider_Identity_AVP p_applicationServiceProviderId) := 
    		   {
    			  aVP_Header := m_aVP_HeaderVid(c_sponsored_Connectivity_Data_AVP_Code,
    			  aVP_Header := m_aVP_HeaderVid_Mbit0(c_sponsored_Connectivity_Data_AVP_Code,
                                                f_getByteAlignedLength(p_sponsorIdentity.aVP_Header.aVP_len) // len of 1st subfield
                                                + f_getByteAlignedLength(p_applicationServiceProviderId.aVP_Header.aVP_len), // len of 2nd subfield
    			  				omit),
                                                c_vendId3gpp),
    			  sponsor_Identity := p_sponsorIdentity,
    			  application_service_provider_Id := p_applicationServiceProviderId,
    			  granted_Service_Unit := omit,
@@ -498,7 +494,7 @@ module DiameterRx_Templates {
             
            template Application_Service_Provider_Identity_AVP m_applicationServiceProviderIdentity(template UTF8String p_aVP_Data) := {
                //Ref: ETSI TS 129 214 Application_Service_Provider_Identity AVP
                 aVP_Header := m_aVP_HeaderVid(c_application_Service_Provider_Identity_AVP_Code,lengthof(p_aVP_Data), omit),
                 aVP_Header := m_aVP_HeaderVid_Mbit0(c_application_Service_Provider_Identity_AVP_Code,lengthof(p_aVP_Data), c_vendId3gpp),
                 aVP_Data := p_aVP_Data
            };   
            
@@ -510,7 +506,7 @@ module DiameterRx_Templates {
    		   template Granted_Service_Unit_AVP p_grantedServiceUnit,
    		   template Used_Service_Unit_AVP p_usedServiceUnit) := 
    		   {
    			  aVP_Header := mw_aVP_Header(c_sponsored_Connectivity_Data_AVP_Code),
    			  aVP_Header := mw_aVP_Header_Vbit1Mbit0(c_sponsored_Connectivity_Data_AVP_Code),
    			  sponsor_Identity := p_sponsorIdentity,
    			  application_service_provider_Id := p_applicationServiceProviderId,
    			  granted_Service_Unit := p_grantedServiceUnit,
@@ -527,18 +523,18 @@ module DiameterRx_Templates {
          	
          	template Experimental_Result_Code_AVP mw_experimentalResultCode(template Experimental_Result_Type p_aVP_Data) := {
				//	Ref: 3GPP TS 29.229	6.2 Result-Code AVP values
					aVP_Header := mw_aVP_Header(c_experimental_Result_Code_AVP_Code),
					aVP_Header := mw_aVP_Header_Vbit0Mbit1(c_experimental_Result_Code_AVP_Code),
					aVP_Data := p_aVP_Data
				}

            template Reservation_Priority_AVP m_reservationPriority (Reservation_Priority_Type p_reservationPriorityType):= {
                aVP_Header := m_aVP_HeaderVid(c_reservation_Priority_AVP_Code, 4, omit),
                aVP_Header := m_aVP_HeaderVid_Mbit0(c_reservation_Priority_AVP_Code, 4, c_vendId3gpp),
            	aVP_Data := p_reservationPriorityType
            }
            
            
            template MPS_Identifier_AVP m_mpsIdentifier (octetstring p_mpsIdentifier):= {
                aVP_Header := m_aVP_HeaderVid(c_mPS_Identifier_AVP_Code, lengthof(p_mpsIdentifier), omit),
                aVP_Header := m_aVP_HeaderVid_Mbit0(c_mPS_Identifier_AVP_Code, lengthof(p_mpsIdentifier), c_vendId3gpp),
            	aVP_Data := p_mpsIdentifier
            }