Loading DiameterRx/ttcn/DiameterRx_Templates.ttcn +103 −107 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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) Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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", Loading @@ -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 := *, Loading Loading @@ -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, Loading @@ -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) Loading @@ -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} Loading Loading @@ -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, Loading @@ -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, Loading @@ -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 }; Loading @@ -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, Loading @@ -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 } Loading Loading
DiameterRx/ttcn/DiameterRx_Templates.ttcn +103 −107 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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) Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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", Loading @@ -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 := *, Loading Loading @@ -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, Loading @@ -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) Loading @@ -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} Loading Loading @@ -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, Loading @@ -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, Loading @@ -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 }; Loading @@ -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, Loading @@ -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 } Loading