diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index 9680275d453990c569aa1410e78710835f02f7f4..fe9060efec4bb23e4ef7c20031e53d62e8ba56b6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -21,7 +21,7 @@ module AtsImsIot_Diameter_Templates { import from LibDiameter_Types_Gx_AVPs all; import from LibDiameter_Types_Rx_AVPs all; import from LibDiameter_Types_CxDx_AVPs all; - import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code}; + import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code, Subscription_Data_AVP}; import from LibDiameter_Types_S9_AVPs all; group DiameterHeaderFields { @@ -387,6 +387,13 @@ module AtsImsIot_Diameter_Templates { final_unit_action := * } + template User_Equipment_Info_AVP mw_userEquipmentInfo_IMEI:= + { + aVP_Header := mw_aVP_Header_any_Code(458/*c_User_Equipment_Info_code*/), + user_Equipment_Info_Type := {aVP_Header := ?/*459*/, aVP_Data := IMEISV_E/*0*/ }, + user_Equipment_Info_Value := ? + } + } //end group GxHeaderFields group S6aHeaderFields{ @@ -396,6 +403,10 @@ module AtsImsIot_Diameter_Templates { cancellation_Type := p_cancellation_Type } // End of template m_cancellationType + template Subscription_Data_AVP mw_subscriptionData_emergencyInfo:= { + aVP_Header := mw_aVP_Header_any_Code(c_subscription_Data_AVP_Code), + emergency_Info := ? + } } //end group S6aHeaderFields @@ -1004,6 +1015,38 @@ module AtsImsIot_Diameter_Templates { } } + template CCR_MSG mw_CCR_SubscriberIMSI_qosInformation_class5_ES(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := { + cCR_Body :={ + cC_Request_Type := mw_cC_Request_Type(p_avpData), + subscription_Id := {*,mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))}, + iP_CAN_Type := ?, + rat_Type := ?, + called_Station_Id := ?, + pDN_Connection_ID := *, + framed_IP_Address := ?, + //framed_IPv6_Prefix := *, + //bearer_Usage := mw_bearer_Usage(IMS_SIGNALLING_E), + qoS_Information := mw_qoS_Information, + default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5 + } + } + template CCR_MSG mw_CCR_SubscriberIMEI_qosInformation_class5_ES(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := { + cCR_Body :={ + cC_Request_Type := mw_cC_Request_Type(p_avpData), + //subscription_Id := {*,mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))}, + user_Equipment_Info := mw_userEquipmentInfo_IMEI, + iP_CAN_Type := ?, + rat_Type := ?, + called_Station_Id := ?, + pDN_Connection_ID := *, + framed_IP_Address := ?, + //framed_IPv6_Prefix := *, + //bearer_Usage := mw_bearer_Usage(IMS_SIGNALLING_E), + qoS_Information := mw_qoS_Information, + default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5 + } + } + template RAR_MSG mw_RAR_ChargingRuleInstall(template Charging_Rule_Install_AVP p_Charging_Rule_Install) modifies mw_RAR_Gx_basic := { rAR_Body :={ charging_Rule_Install := {p_Charging_Rule_Install} @@ -1161,6 +1204,13 @@ module AtsImsIot_Diameter_Templates { ula_Flags := ? } } + template ULA_MSG mw_ULA_subsdata_flags modifies mw_ULA_resultCode_flags := { + uLA_Body :={ + //result_Code := mw_resultCode(mw_resultCode_diameterSuccess), + //ula_Flags := ? + subscription_Data :=mw_subscriptionData_emergencyInfo + } + } }// end group S6aRequestMessageTemplates }//end group S6aMessageTemplates diff --git a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn index b5f160e2ba24305b61e2682aca386699a6b706d1..03c8ec316ed1e0d3e35856bb42246fe03b04f627 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn @@ -79,8 +79,8 @@ module AtsImsIot_Emergency { // test body // Check that user A starts initial network attachment f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) - f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) - f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) + f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_ECO_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) // postamble f_mtc_userRadioEnabled ( v_ueA, false, true ); @@ -93,11 +93,55 @@ module AtsImsIot_Emergency { //log... setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } - } // End of TC TC_VxLTE_INT_ATT_01 + } // End of TC TC_VoLTE_ECO_INT_ATT_01 } // End of group UENetworkAttachmentWithUSIM group UENetworkAttachmentWithoutUSIM { + /** + * @desc Emergency Network Attachment and Establishment of the Emergency Bearer without USIM. + * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. + * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF + * and allowed forwarding towards E-CSCF + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; + * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) + * + */ + testcase TC_VoLTE_ECO_INT_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { + + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); + var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); + + f_setVxLteMonIterfacesAvailability(); + //Check required monitor interfaces due to TD + if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ + f_cf_createVxLteMonitor(); + // map/connect component ports + f_cf_adapter_up ( ); + f_cf_user_up ( v_ueA ); + f_cf_VxLteMonitor_Up(); + + // preamble + f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile + + // test body + // Check that user A starts initial network attachment + f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) + f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) + f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) + + // postamble + f_mtc_userRadioEnabled ( v_ueA, false, true ); + + //unmap/disconnect component ports + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_Down(); + f_cf_adapter_down ( ); + }else{ + //log... + setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") + } + } // End of TC TC_VoLTE_ECO_INT_ATT_02 } // End of group UENetworkAttachmentWithoutUSIM } // End of group NetworkAttachment diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index 7596bc0d4586027312dc4f03354d17bda475fb8c..779e6a0264892125058bcb0e6784d062b5f0263a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -463,7 +463,8 @@ group g_PGW { } } // End of function f_mtc_check_TP_GX_PGW_RAA_04 - + group ES{ + } //end group ES } // end group g_PGW group g_PCRF { @@ -1106,7 +1107,190 @@ group g_PCRF { } } // End of function f_mtc_check_TP_GX_PCRF_RAR_04 + group ES{ + /** + * Starts monitor component behavior for TP_GX_PCRF_ECO_CCA_01 + * @param p_monitorCompRef Reference to monitor component + * <pre> + Test objective "Verify that IUT when receives CC-Request for PCC Rules containing IMSI for emergency services sends a CC-Answer in case of attachment procedure." + + Reference + "TS 129 212 [9], clauses 4.5.15.2.1" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isNotAttachedTo the EPC_A and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PGW_A entity sends an CCR containing + CC_Request_Type_AVP indicating value INITIAL_REQUEST + Subscription_Id_AVP containing + Subscription_Id_Type_AVP + indicating value END_USER_IMSI;, + IP_CAN_Type_AVP indicating value RestrictedToEmergencyServices, + RAT_Type_AVP, + Called_Station_Id_AVP indicating value "Emergency_APN" + Framed_IP_Address_AVP + "or" Framed_IP6_IP_Address_AVP + QoS_Information_AVP + Default_EPS_Bearer_QoS_AVP containing + QoS_Class_Identifier_AVP + indicating value '5' + Allocation_Retention_Priority_AVP containing + Priority_Level_AVP + Pre_emption_Capablity_AVP + Pre_emption_Vulnerability_AVP;;; + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends the CCA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS; + to the EPC_PGW_A entity + } + } + * </pre> + * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_ECO_CCA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5_ES(INITIAL_REQUEST_E) } + }, + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + }, + {0, omit}, + "TP_RX_PCRF_ECO_CCA_01 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + }, + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + }, + {0, omit}, + "TP_RX_PCRF_ECO_CCA_01 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_01 + + /** + * Starts monitor component behavior for TP_GX_PCRF_ECO_CCA_02 + * @param p_monitorCompRef Reference to monitor component + * <pre> + Test objective "Verify that IUT when receives CC-Request for PCC Rules containing IMEI for emergency services sends a CC-Answer in case of attachment procedure." + + Reference + "TS 129 212 [9], clauses 4.5.15.2.1" + + Config Id CF_VxLTE_INT + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isNotAttachedTo the EPC_A and + the UE_A entity isNotRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the EPC_PGW_A entity sends an CCR containing + CC_Request_Type_AVP indicating value INITIAL_REQUEST, + User_Equipment_Info_AVP containing + User_Equipment_Info_Type_AVP indicating value IMEISV + User_Equipment_Info_Value_AVP;, + IP_CAN_Type_AVP indicating value RestrictedToEmergencyServices, + RAT_Type_AVP, + Called_Station_Id_AVP indicating value "Emergency_APN" + Framed_IP_Address_AVP + "or" Framed_IP6_IP_Address_AVP + QoS_Information_AVP + Default_EPS_Bearer_QoS_AVP containing + QoS_Class_Identifier_AVP + indicating value '5' + Allocation_Retention_Priority_AVP containing + Priority_Level_AVP + Pre_emption_Capablity_AVP + Pre_emption_Vulnerability_AVP;;; + to the EPC_PCRF_A entity + } + then { + the EPC_PCRF_A entity sends the CCA containing + Result_Code_AVP + indicating value DIAMETER_SUCCESS; + to the EPC_PGW_A entity + } + } + * </pre> + * @see TS 103 653-1 clause 7.7 + */ + function f_mtc_check_TP_GX_PCRF_ECO_CCA_02( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMEI_qosInformation_class5_ES(INITIAL_REQUEST_E) } + }, + { + DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + }, + {0, omit}, + "TP_RX_PCRF_ECO_CCA_02 - CCR", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + }, + { + DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + }, + {0, omit}, + "TP_RX_PCRF_ECO_CCA_02 - CCA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_02 + } //end group ES } // end group g_PCRF diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn index ebfc870fb79f194fc152f096f38f60e1d81dd008..f8a1a1af1352e94b12c0d9ec2adc1a75566257f4 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn @@ -97,6 +97,8 @@ group g_HSS { ); p_monitorCompRef.done; } + + } // End of function f_mtc_check_TP_S6A_HSS_AIA_01 /** @@ -371,7 +373,84 @@ group g_HSS { } } // End of function f_mtc_check_TP_S6A_HSS_ULA_02 - + group ES{ + /** + * Starts monitor component behavior for TP_S6A_HSS_ECO_ULA_01 + * @param p_monitorCompRef Reference to monitor component + * <pre> + *Test objective "Verify that IUT after receipt of UL-Request sends UL-Answer containing Emergency-Info AVP." + * + *Reference + * "TS 129 272 [10], clause 5.2.1.1.2" + + *Config Id CF_VxLTE_INT_ES + + *PICS Selection NONE + + *Initial conditions with { + * the UE_A entity isNotAttachedTo the EPC_A and + * the UE_A entity isNotRegisteredTo the IMS_A + *} + * + *Expected behaviour + * ensure that { + * when { + * the EPC_MME_A entity sends a ULR + * to the IMS_HSS_A entity + * } + * then { + * the IMS_HSS_A entity sends the ULA containing + * Subscription_Data_AVP containing + * Emergency_Info_AVP indicating value PDN_GW;, + * Result_Code_AVP + * indicating value DIAMETER_SUCCESS + * ULA_Flags_AVP; + * to the EPC_MME_A entity + * } + * } + * </pre> + */ + function f_mtc_check_TP_S6A_HSS_ECO_ULA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ +// p_monitorCompRef.start ( +// f_Iot_Diameter_receive( +// { +// DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } +// }, +// { +// DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic } +// }, +// {0, omit}, +// "TP_S6A_HSS_ULA_01 - ULR", +// p_forward_to_mtc, +// p_checkMessage +// ) +// ); +// p_monitorCompRef.done; + + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + DIAMETER_MSG:{ uLA_MSG := mw_ULA_subsdata_flags } + }, + { + DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic } + }, + {0, omit}, + "TP_S6A_HSS_ECO_ULA_01 - ULA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_S6A_HSS_ECO_ULA_01 + + }// end group ES } // end group g_HSS group g_MME { @@ -675,6 +754,9 @@ group g_MME { } } // End of function f_mtc_check_TP_S6A_MME_ULR_02 + group ES{ + + }// end group ES } // end group g_MME diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index 011bf0a9ef61cadf4c2604711af7d8b65532f126..41150fed1caf297158c11bd327378e649539dcbf 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -124,6 +124,7 @@ module AtsImsIot_TestSystem { SipInterfaceMonitor gmB optional, SipInterfaceMonitor mmB_PSAP optional,// MmMx interface at IBCF to PSAP SipInterfaceMonitor mwEB optional,// Mw interface at E-CSCF/IBCF + SipInterfaceMonitor mlE_LRF optional,// Ml interface at E-CSCF/LRF SipInterfaceMonitor mwS_PSAP optional,// MwMmMx interface at E,SCSCF to PSAP SipInterfaceMonitor ic optional, SipInterfaceMonitor mwPI optional,// Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used diff --git a/ttcn/LibIot/LibIot_TypesAndValues.ttcn b/ttcn/LibIot/LibIot_TypesAndValues.ttcn index f8a5c88963a2cbf0e558d8ba91a79e66e771ce01..6cb6f32821bab8c0daffcd8b12029b69552fbe2e 100644 --- a/ttcn/LibIot/LibIot_TypesAndValues.ttcn +++ b/ttcn/LibIot/LibIot_TypesAndValues.ttcn @@ -102,6 +102,7 @@ module LibIot_TypesAndValues { MonitorInterfaceInfo gmB optional, MonitorInterfaceInfo mmB_PSAP optional,// Mm interface at IBCF to PSAP MonitorInterfaceInfo mwEB optional,// Mw interface at ECSCF to IBCF + MonitorInterfaceInfo mlE_LRF optional, //Ml interface at ECSCF to LRF MonitorInterfaceInfo mwS_PSAP optional,// Mw interface at SCSCF to PSAP MonitorInterfaceInfo ic optional, MonitorInterfaceInfo mwPI optional,// Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn index 2de6b27bb88c24628bd72a7641efe37ae3d36ede..a785056424c5ab1f78350af020a8622820f5bc79 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn @@ -60,6 +60,9 @@ module LibIot_VxLTE_Functions { if (PX_SIP_MW_EB_MONITORENABLED == true){ vc_MonIntfList.mwEB := valueof(m_MonIntf_Sip_Mw_EB); } + if (PX_SIP_ML_E_LRF_MONITORENABLED == true){ + vc_MonIntfList.mlE_LRF := valueof(m_MonIntf_Sip_Ml_E_LRF); + } if (PX_SIP_MW_S_PSAP_MONITORENABLED == true){ vc_MonIntfList.mwS_PSAP := valueof(m_MonIntf_Sip_MwS_PSAP); } @@ -136,6 +139,9 @@ module LibIot_VxLTE_Functions { if (isvalue(vc_MonIntfList.mwEB)){ vc_vxlte_monitor_components.mwEB := f_cf_create_monitor_sip ( vc_MonIntfList.mwEB); } + if (isvalue(vc_MonIntfList.mlE_LRF)){ + vc_vxlte_monitor_components.mlE_LRF := f_cf_create_monitor_sip ( vc_MonIntfList.mlE_LRF); + } if (isvalue(vc_MonIntfList.mwS_PSAP)){ vc_vxlte_monitor_components.mwS_PSAP := f_cf_create_monitor_sip ( vc_MonIntfList.mwS_PSAP); } @@ -241,6 +247,15 @@ module LibIot_VxLTE_Functions { ) ))); } + if (isvalue(vc_MonIntfList.mlE_LRF)){ + f_cf_monitor_up_sip(vc_vxlte_monitor_components.mlE_LRF); + vc_vxlte_monitor_components.mlE_LRF.start(f_cf_setFilter( + valueof (m_SetFilterReq( + e_sip, + {vc_MonIntfList.mlE_LRF.interfaceInfo} + ) + ))); + } if (isvalue(vc_MonIntfList.mwS_PSAP)){ f_cf_monitor_up_sip(vc_vxlte_monitor_components.mwS_PSAP); vc_vxlte_monitor_components.mwS_PSAP.start(f_cf_setFilter( @@ -429,6 +444,9 @@ module LibIot_VxLTE_Functions { if (isvalue(vc_MonIntfList.mwEB)){ f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwEB); } + if (isvalue(vc_MonIntfList.mlE_LRF)){ + f_cf_monitor_down_sip(vc_vxlte_monitor_components.mlE_LRF); + } if (isvalue(vc_MonIntfList.mwS_PSAP)){ f_cf_monitor_down_sip(vc_vxlte_monitor_components.mwS_PSAP); } @@ -521,11 +539,12 @@ module LibIot_VxLTE_Functions { // if (vc_vxlte_monitor_components.gmA.vc_interfacename) {return true;} if ((isvalue(vc_MonIntfList.gmA)) and (vc_MonIntfList.gmA.interfaceName==p_interfaceName)){ return true;} - //if ((isvalue(vc_MonIntfList.gmB)) and (vc_MonIntfList.gmB.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.gmB)) and (vc_MonIntfList.gmB.interfaceName==p_interfaceName)){ return true;} if ((isvalue(vc_MonIntfList.mmB_PSAP)) and (vc_MonIntfList.mmB_PSAP.interfaceName==p_interfaceName)){ return true;} if ((isvalue(vc_MonIntfList.mwEB)) and (vc_MonIntfList.mwEB.interfaceName==p_interfaceName)){ return true;} - if ((isvalue(vc_MonIntfList.mwS_PSAP)) and (vc_MonIntfList.mwS_PSAP.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.mlE_LRF)) and (vc_MonIntfList.mlE_LRF.interfaceName==p_interfaceName)){ return true;} + if ((isvalue(vc_MonIntfList.mwS_PSAP)) and (vc_MonIntfList.mwS_PSAP.interfaceName==p_interfaceName)){ return true;} if ((isvalue(vc_MonIntfList.ic)) and (vc_MonIntfList.ic.interfaceName==p_interfaceName)){ return true;} if ((isvalue(vc_MonIntfList.mwPI)) and (vc_MonIntfList.mwPI.interfaceName==p_interfaceName)){ return true;} @@ -568,7 +587,7 @@ module LibIot_VxLTE_Functions { var InterfaceAvailableList v_VxLTE_MonIntf_Available; var InterfaceAvailable v_InterfaceAvailable; - var SipInterfaceMonitor v_gmA, v_gmB, v_mmBPSAP, v_mwEB, v_mwSPSAP, v_ic, v_mwPI, v_mwPS, v_mwPE, v_mwSI, v_mwPB, v_mwIB, v_mwIE, v_isc; + var SipInterfaceMonitor v_gmA, v_gmB, v_mmBPSAP, v_mwEB, v_mlE_LRF, v_mwSPSAP, v_ic, v_mwPI, v_mwPS, v_mwPE, v_mwSI, v_mwPB, v_mwIB, v_mwIE, v_isc; var DiameterInterfaceMonitor v_cxIH, v_cxSH, v_gx, v_rx, v_s6a, v_s9, v_sh; if (PX_SIP_GMA_MONITORENABLED == true){ @@ -601,6 +620,14 @@ module LibIot_VxLTE_Functions { v_mwEB := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Mw_EB)/*PX_SIP_MW_PI_INTERFACENAME*/ ); f_cf_monitor_up_sip(v_mwEB); } + if (PX_SIP_ML_E_LRF_MONITORENABLED == true){ + + v_InterfaceAvailable.interfaceName := PX_SIP_ML_E_LRF_INTERFACENAME; + v_InterfaceAvailable.available := PX_SIP_ML_E_LRF_MONITORENABLED; + v_VxLTE_MonIntf_Available := f_update_MonitorInterfaceList(v_VxLTE_MonIntf_Available,v_InterfaceAvailable); + v_mlE_LRF := f_cf_create_monitor_sip ( valueof(m_MonIntf_Sip_Ml_E_LRF)/*PX_SIP_MW_PI_INTERFACENAME*/ ); + f_cf_monitor_up_sip(v_mlE_LRF); + } if (PX_SIP_MW_S_PSAP_MONITORENABLED == true){ v_InterfaceAvailable.interfaceName := PX_SIP_MW_S_PSAP_INTERFACENAME; diff --git a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn index 934c366ac59e99f507eb0c14c8e344fc939afaab..f240415dc63edd5a7bce7fef69bdc8fe11817fe0 100644 --- a/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_PIXITS.ttcn @@ -54,6 +54,7 @@ module LibIot_VxLTE_PIXITS { group Mw{ modulepar charstring PX_SIP_MM_B_PSAP_INTERFACENAME := "Mm IBCF PSAP"; //Mm interface between IBCF and PSAP modulepar charstring PX_SIP_MW_EB_INTERFACENAME := "Mw ECSCF IBCF"; //Mw interface between ECSCF and IBCF + modulepar charstring PX_SIP_ML_E_LRF_INTERFACENAME := "Ml ECSCF LRF"; //Ml interface between ECSCF and LRF modulepar charstring PX_SIP_MW_S_PSAP_INTERFACENAME := "Mw SCSCF PSAP"; //Mw interface between S-CSCF and PSAP modulepar charstring PX_SIP_MW_PI_INTERFACENAME := "Mw PI"; //Mw interface between P-CSCF and I-CSCF modulepar charstring PX_SIP_MW_PS_INTERFACENAME := "Mw PS"; //Mw interface between P-CSCF and S-CSCF @@ -72,10 +73,13 @@ module LibIot_VxLTE_PIXITS { modulepar integer PX_SIP_MW_S_CSCF_PORT := 5090; //Mw Port number of S-CSCF modulepar charstring PX_SIP_MW_E_CSCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of E-CSCF modulepar integer PX_SIP_MW_E_CSCF_PORT := 5095; //Mw Port number of E-CSCF + modulepar charstring PX_SIP_ML_LRF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of E-CSCF + modulepar integer PX_SIP_ML_LRF_PORT := 5095; //Mw Port number of E-CSCF modulepar charstring PX_SIP_MW_IBCF_IPADDR := "fe80::21a:a0ff:fe07:98"; //Mw IP address of IBCF modulepar integer PX_SIP_MW_IBCF_PORT := 5050; //Mw Port number of IBCF modulepar boolean PX_SIP_MM_B_PSAP_MONITORENABLED := true; //true - Monitor enabled for PSAP connection only - modulepar boolean PX_SIP_MW_EB_MONITORENABLED := true; //true - Monitor enabled for PE connection only + modulepar boolean PX_SIP_MW_EB_MONITORENABLED := true; //true - Monitor enabled for EB connection only + modulepar boolean PX_SIP_ML_E_LRF_MONITORENABLED := true; //true - Monitor enabled for E-LRF connection only modulepar boolean PX_SIP_MW_S_PSAP_MONITORENABLED := true; //true - Monitor enabled for PSAP connection only modulepar boolean PX_SIP_MW_PI_MONITORENABLED := true; //true - Monitor enabled for PI connection only modulepar boolean PX_SIP_MW_PS_MONITORENABLED := true; //true - Monitor enabled for PS connection only diff --git a/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn b/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn index 12cc045fc916531f4d7754c8dc8b961eba5e8ec2..357cc67540409fddc75ce1da4b93571db84c9dca 100644 --- a/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn +++ b/ttcn/LibIot/LibIot_VxLTE_Templates.ttcn @@ -124,12 +124,12 @@ module LibIot_VxLTE_Templates { interfaceInfo := { IpInterfaceInfo := { { - domainName := "pcscf.ims.domain", + domainName := "ibcf.ims.domain", IpAddress := PX_SIP_MW_IBCF_IPADDR, portNumbers := {PX_SIP_MW_IBCF_PORT} }, { - domainName := "icscf.ims.domain", + domainName := "psap.ims.domain", IpAddress := PX_SIP_MW_PSAP_IPADDR, portNumbers := {PX_SIP_MW_PSAP_PORT} } @@ -143,18 +143,37 @@ module LibIot_VxLTE_Templates { interfaceInfo := { IpInterfaceInfo := { { - domainName := "pcscf.ims.domain", + domainName := "ecscf.ims.domain", IpAddress := PX_SIP_MW_E_CSCF_IPADDR, portNumbers := {PX_SIP_MW_E_CSCF_PORT} }, { - domainName := "icscf.ims.domain", + domainName := "ibcf.ims.domain", IpAddress := PX_SIP_MW_IBCF_IPADDR, portNumbers := {PX_SIP_MW_IBCF_PORT} } } } }; + + template MonitorInterfaceInfo m_MonIntf_Sip_Ml_E_LRF:= + { + interfaceName := PX_SIP_ML_E_LRF_INTERFACENAME, + interfaceInfo := { + IpInterfaceInfo := { + { + domainName := "ecscf.ims.domain", + IpAddress := PX_SIP_MW_E_CSCF_IPADDR, + portNumbers := {PX_SIP_MW_E_CSCF_PORT} + }, + { + domainName := "lrf.ims.domain", + IpAddress := PX_SIP_ML_LRF_IPADDR, + portNumbers := {PX_SIP_ML_LRF_PORT} + } + } + } + }; template MonitorInterfaceInfo m_MonIntf_Sip_MwS_PSAP:= { @@ -162,12 +181,12 @@ module LibIot_VxLTE_Templates { interfaceInfo := { IpInterfaceInfo := { { - domainName := "pcscf.ims.domain", + domainName := "scscf.ims.domain", IpAddress := PX_SIP_MW_S_CSCF_IPADDR, portNumbers := {PX_SIP_MW_S_CSCF_PORT} }, { - domainName := "icscf.ims.domain", + domainName := "psap.ims.domain", IpAddress := PX_SIP_MW_PSAP_IPADDR, portNumbers := {PX_SIP_MW_PSAP_PORT} }