Loading DiameterS9/ttcn/DiameterS9_Gxx_TCFunctions.ttcn3 +115 −0 Original line number Diff line number Diff line Loading @@ -1621,10 +1621,125 @@ module DiameterS9_Gxx_TCFunctions { group TP_VPCRFRole_VSL { /* * @desc This is the test case function f_TC_VPCRF_VSL_01_PCEF * @param */ function f_TC_VPCRF_VSL_01_PCEF() runs on DiameterComponent { f_preamble_PCEF(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(PX_UE1_framedIpAddress), f_framedIpAddress6_send(PX_UE1_framedIp6Address), {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)), valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, omit, //{m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}, m_called_Station_Id(PX_CALLED_STATION_ID_PDN), m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA),//PDN_Connection omit //m_sessionLinkingIndicator_dummy(SESSION_LINKING_DEFERRED_E) ) ); f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_terminate_session_PCEF(); // postamble f_postamble_PCEF(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_VPCRF_VSL_01_PCEF } //end group TP_VPCRFRole_VSL group TP_VPCRFRole_VIF { /* * @desc This is the test case function f_TC_VPCRF_VIF_01_PCEF * @param */ function f_TC_VPCRF_VIF_01_PCEF() runs on DiameterComponent { f_preamble_PCEF(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_CCR(m_CCR_Gxx_InitialRequest_routingRule_EvTri (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(PX_UE1_framedIpAddress), f_framedIpAddress6_send(PX_UE1_framedIp6Address), {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)), valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, omit, // event_Trigger m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))), omit // routing_Rule_Remove ) ); f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_terminate_session_PCEF(); // postamble f_postamble_PCEF(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_VPCRF_VIF_01_PCEF /* * @desc This is the test case function f_TC_VPCRF_VIF_02_PCEF * @param */ function f_TC_VPCRF_VIF_02_PCEF() runs on DiameterComponent { f_preamble_PCEF(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_CCR(m_CCR_Gxx_InitialRequest_routingRule_EvTri (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(PX_UE1_framedIpAddress), f_framedIpAddress6_send(PX_UE1_framedIp6Address), {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)), valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, {m_event_Trigger(ROUTING_RULE_CHANGE_E)}, omit, // m_routing_Rule_Install m_routing_Rule_Remove(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)) // routing_Rule_Remove ) ); f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_terminate_session_PCEF(); // postamble f_postamble_PCEF(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_VPCRF_VIF_02_PCEF } //end group TP_VPCRFRole_VIF } // group TP_VPCRFRole Loading DiameterS9/ttcn/DiameterS9_Gxx_Templates.ttcn +24 −1 Original line number Diff line number Diff line Loading @@ -431,6 +431,29 @@ module DiameterS9_Gxx_Templates { } } template CCR_MSG m_CCR_Gxx_InitialRequest_routingRule_EvTri (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, template CCR_MSG.cCR_Body.subscription_Id p_subscriptionId, template CCR_MSG.cCR_Body.event_Trigger p_eventTrigger, template CCR_MSG.cCR_Body.routing_Rule_Install p_routingRuleInstall, template CCR_MSG.cCR_Body.routing_Rule_Remove p_routingRuleRemove) modifies m_CCR_Gxx_basic := { cCR_Body := { 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), subscription_Id := p_subscriptionId, event_Trigger := p_eventTrigger, routing_Rule_Install := p_routingRuleInstall, routing_Rule_Remove := p_routingRuleRemove } } template CCR_MSG m_CCR_Gxx_InitialRequest_qosRuleReport (template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, Loading DiameterS9/ttcn/DiameterS9_PIXITS.ttcn +6 −0 Original line number Diff line number Diff line Loading @@ -646,6 +646,12 @@ module DiameterS9_PIXITS Ref: RFC 3588 section 6-6 */ modulepar charstring PX_GXX_DestinationRealm := "myalupcrf.etsi.org"; /** @desc octetstring, PIXIT item A-7/30 * An IP flow mobility routing rule for the Routing-Rule-Identifier AVP in Routing-Rule-Definition AVPs */ modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O; }//end group DiameterCommonGxxData } // end module DiameterS9_PIXITS No newline at end of file DiameterS9/ttcn/DiameterS9_Templates.ttcn +71 −0 Original line number Diff line number Diff line Loading @@ -770,6 +770,77 @@ module DiameterS9_Templates { aVP_Data := p_avpData } template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) := { aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Install_AVP_Code, lengthof(encvalue(p_rrd))/8, c_vendId3gpp), 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_Mbit0(c_routing_Rule_Definition_AVP_Code, (lengthof(encvalue(p_rri))/8+lengthof(encvalue(p_rf))/8), c_vendId3gpp), 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_Mbit0(c_routing_Rule_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), aVP_Data := p_avpData } template Routing_Filter_AVP m_routing_Filter := { aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Filter_AVP_Code, 16/*flow_direction: 12+4 for vendId*/+ lengthof(encvalue(m_flow_Description(valueof(m_iPFilterRule))))/8, c_vendId3gpp), flow_Description := m_flow_Description(valueof(m_iPFilterRule)), flow_Direction := m_flowDirection_Bidirectional, 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_Mbit1(c_flow_Description_AVP_Code, lengthof(encvalue(p_IPftr))/8, c_vendId3gpp), aVP_Data := p_IPftr } template Flow_Direction_AVP m_flowDirection_Bidirectional := { aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Direction_AVP_Code, 4, c_vendId3gpp), aVP_Data := BIDIRECTIONAL_E } template IPFilterRule_Type m_iPFilterRule := { action_ := "permit", direction := "out", proto := "ip", src := { addr := "1.1.1.1", mask := omit, ports := omit }, dst := { addr := "10.10.10.1", mask := omit, ports := omit }, options := omit } template Routing_Rule_Remove_AVP m_routing_Rule_Remove (Routing_Rule_Identifier_AVP p_rri):= { aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Remove_AVP_Code, lengthof(encvalue(p_rri))/8, c_vendId3gpp), routing_Rule_Identifier := {p_rri}, aVP_Type := omit } }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading Loading
DiameterS9/ttcn/DiameterS9_Gxx_TCFunctions.ttcn3 +115 −0 Original line number Diff line number Diff line Loading @@ -1621,10 +1621,125 @@ module DiameterS9_Gxx_TCFunctions { group TP_VPCRFRole_VSL { /* * @desc This is the test case function f_TC_VPCRF_VSL_01_PCEF * @param */ function f_TC_VPCRF_VSL_01_PCEF() runs on DiameterComponent { f_preamble_PCEF(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_CCR(m_CCR_Gxx_InitialRequest_SessLink_PDNConn (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(PX_UE1_framedIpAddress), f_framedIpAddress6_send(PX_UE1_framedIp6Address), {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)), valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, omit, //{m_anGwAddress(f_IPAdress(PX_SGW_AGW_ipv4,PX_SGW_AGW_ipv6))}, m_called_Station_Id(PX_CALLED_STATION_ID_PDN), m_pDN_Connection_ID(PX_PDN_CONNECTION_ID_DATA),//PDN_Connection omit //m_sessionLinkingIndicator_dummy(SESSION_LINKING_DEFERRED_E) ) ); f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_terminate_session_PCEF(); // postamble f_postamble_PCEF(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_VPCRF_VSL_01_PCEF } //end group TP_VPCRFRole_VSL group TP_VPCRFRole_VIF { /* * @desc This is the test case function f_TC_VPCRF_VIF_01_PCEF * @param */ function f_TC_VPCRF_VIF_01_PCEF() runs on DiameterComponent { f_preamble_PCEF(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_CCR(m_CCR_Gxx_InitialRequest_routingRule_EvTri (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(PX_UE1_framedIpAddress), f_framedIpAddress6_send(PX_UE1_framedIp6Address), {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)), valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, omit, // event_Trigger m_routing_Rule_Install(valueof(m_routing_Rule_Definition(valueof(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)),valueof(m_routing_Filter)))), omit // routing_Rule_Remove ) ); f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_terminate_session_PCEF(); // postamble f_postamble_PCEF(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_VPCRF_VIF_01_PCEF /* * @desc This is the test case function f_TC_VPCRF_VIF_02_PCEF * @param */ function f_TC_VPCRF_VIF_02_PCEF() runs on DiameterComponent { f_preamble_PCEF(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync f_send_CCR(m_CCR_Gxx_InitialRequest_routingRule_EvTri (vc_sessionId, vc_originHost, vc_originRealm, vc_destinationRealm, f_framedIpAddress4_send(PX_UE1_framedIpAddress), f_framedIpAddress6_send(PX_UE1_framedIp6Address), {m_subscription_Id(valueof(m_subscription_Id_Type(END_USER_IMSI_E)), valueof(m_subscription_Id_Data(PX_SUBSCRIPTION_ID_DATA)))}, {m_event_Trigger(ROUTING_RULE_CHANGE_E)}, omit, // m_routing_Rule_Install m_routing_Rule_Remove(m_routing_Rule_Identifier(PX_ROUTING_RULE_IDENTIFIER_VALUE)) // routing_Rule_Remove ) ); f_awaiting_CCA(mw_CCA_Gx_basic(vc_sessionId, vc_originHost, vc_originRealm)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // sync f_terminate_session_PCEF(); // postamble f_postamble_PCEF(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync } // end function f_TC_VPCRF_VIF_02_PCEF } //end group TP_VPCRFRole_VIF } // group TP_VPCRFRole Loading
DiameterS9/ttcn/DiameterS9_Gxx_Templates.ttcn +24 −1 Original line number Diff line number Diff line Loading @@ -431,6 +431,29 @@ module DiameterS9_Gxx_Templates { } } template CCR_MSG m_CCR_Gxx_InitialRequest_routingRule_EvTri (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, template CCR_MSG.cCR_Body.subscription_Id p_subscriptionId, template CCR_MSG.cCR_Body.event_Trigger p_eventTrigger, template CCR_MSG.cCR_Body.routing_Rule_Install p_routingRuleInstall, template CCR_MSG.cCR_Body.routing_Rule_Remove p_routingRuleRemove) modifies m_CCR_Gxx_basic := { cCR_Body := { 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), subscription_Id := p_subscriptionId, event_Trigger := p_eventTrigger, routing_Rule_Install := p_routingRuleInstall, routing_Rule_Remove := p_routingRuleRemove } } template CCR_MSG m_CCR_Gxx_InitialRequest_qosRuleReport (template Session_Id_AVP p_sessionId, template Origin_Host_AVP p_originHost, template Origin_Realm_AVP p_originRealm, Loading
DiameterS9/ttcn/DiameterS9_PIXITS.ttcn +6 −0 Original line number Diff line number Diff line Loading @@ -646,6 +646,12 @@ module DiameterS9_PIXITS Ref: RFC 3588 section 6-6 */ modulepar charstring PX_GXX_DestinationRealm := "myalupcrf.etsi.org"; /** @desc octetstring, PIXIT item A-7/30 * An IP flow mobility routing rule for the Routing-Rule-Identifier AVP in Routing-Rule-Definition AVPs */ modulepar octetstring PX_ROUTING_RULE_IDENTIFIER_VALUE := '08'O; }//end group DiameterCommonGxxData } // end module DiameterS9_PIXITS No newline at end of file
DiameterS9/ttcn/DiameterS9_Templates.ttcn +71 −0 Original line number Diff line number Diff line Loading @@ -770,6 +770,77 @@ module DiameterS9_Templates { aVP_Data := p_avpData } template Routing_Rule_Install_AVP m_routing_Rule_Install(Routing_Rule_Definition_AVP p_rrd) := { aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Install_AVP_Code, lengthof(encvalue(p_rrd))/8, c_vendId3gpp), 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_Mbit0(c_routing_Rule_Definition_AVP_Code, (lengthof(encvalue(p_rri))/8+lengthof(encvalue(p_rf))/8), c_vendId3gpp), 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_Mbit0(c_routing_Rule_Identifier_AVP_Code, lengthof(p_avpData), c_vendId3gpp), aVP_Data := p_avpData } template Routing_Filter_AVP m_routing_Filter := { aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Filter_AVP_Code, 16/*flow_direction: 12+4 for vendId*/+ lengthof(encvalue(m_flow_Description(valueof(m_iPFilterRule))))/8, c_vendId3gpp), flow_Description := m_flow_Description(valueof(m_iPFilterRule)), flow_Direction := m_flowDirection_Bidirectional, 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_Mbit1(c_flow_Description_AVP_Code, lengthof(encvalue(p_IPftr))/8, c_vendId3gpp), aVP_Data := p_IPftr } template Flow_Direction_AVP m_flowDirection_Bidirectional := { aVP_Header := m_aVP_HeaderVid_Mbit0(c_flow_Direction_AVP_Code, 4, c_vendId3gpp), aVP_Data := BIDIRECTIONAL_E } template IPFilterRule_Type m_iPFilterRule := { action_ := "permit", direction := "out", proto := "ip", src := { addr := "1.1.1.1", mask := omit, ports := omit }, dst := { addr := "10.10.10.1", mask := omit, ports := omit }, options := omit } template Routing_Rule_Remove_AVP m_routing_Rule_Remove (Routing_Rule_Identifier_AVP p_rri):= { aVP_Header := m_aVP_HeaderVid_Mbit0(c_routing_Rule_Remove_AVP_Code, lengthof(encvalue(p_rri))/8, c_vendId3gpp), routing_Rule_Identifier := {p_rri}, aVP_Type := omit } }//end group sendingTemplatesForAVPs group awaitingTemplatesForAVPs{ Loading