Loading DiameterS6a/ttcn/DiameterS6a_HSS_TCFunctions.ttcn3 +177 −11 Original line number Diff line number Diff line Loading @@ -549,7 +549,7 @@ module DiameterS6a_HSS_TCFunctions { m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_IND_SET), md_visitedPLMNId( // from new MME PX_OTHER_VISITED_PLMN_ID PX_NEW_VISITED_PLMN_ID ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs Loading Loading @@ -631,10 +631,10 @@ module DiameterS6a_HSS_TCFunctions { vc_destinationRealm, m_user_Name(PX_USR_NAME), m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_IND_SET), // containing a ULR-Flags AVP m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_SINGLE_REG), // containing a ULR-Flags AVP // with Single-Registration-Indication bit set md_visitedPLMNId( PX_OTHER_VISITED_PLMN_ID // from new MME PX_NEW_VISITED_PLMN_ID // from new MME ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs Loading Loading @@ -689,9 +689,15 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_09 /** * @desc Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN */ function f_TC_HSS_UL_10() runs on TestAdapter { // Local variables var integer v_recvSteps := 0; // Initial state : await for first CL-Answer message // Final state : the IUT sends a UL-Answer to new MME var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); Loading @@ -699,9 +705,67 @@ module DiameterS6a_HSS_TCFunctions { log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' // Clause 'when': the IUT receives a UL-Request from new MME f_triggerUlrMessage( md_ULR_TCs( vc_sessionId, md_ulrBodyAvps_TC_01( m_auth_Session_State_noStateMaintained, vc_originHost, vc_originRealm, vc_destinationRealm, m_user_Name(PX_USR_NAME), m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_INITIAL_ATTACH), // containing a ULR-Flags AVP // with Initial-Attach-Indicator bit set md_visitedPLMNId( PX_NEW_VISITED_PLMN_ID // from new MME ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs ); // Clause 'then' tc_ac.start; alt { [v_recvSteps == 0] MME_S6a.receive( // the IUT sends a CL-Request to previous MME mw_mmeCancelLocationRequest( mdw_CLR_TCs( ?, mdw_clrBodyAvps_TC_08( mw_cancellationType( // containing a Cancellation-Type AVP SGSN_UPDATE_PROCEDURE_E // indicating SGSN_UPDATE_PROCEDURE ))))) -> value v_result { // Expected CL-Request message log("*** " & __SCOPE__ & ": INFO: Expected CL-Request was received. ***"); v_recvSteps := v_recvSteps + 1; // and, the IUT receives a CL-Answer from previous SGSN log("*** " & __SCOPE__ & ": INFO: Trigger CL-Answer. ***"); f_triggerClaMessage( md_CLA_TCs( vc_sessionId, md_claBodyAvps_TC_08 ) // End of md_CLA_TCs ); repeat } [v_recvSteps == 1] MME_S6a.receive( // and, the IUT sends a UL-Answer to new MME mw_mmeUpdateLocationAnswer( mdw_ULA_TCs( ?, mdw_ulaBodyAvps_TC_08 ))) -> value v_result { // Expected UL-Answer message f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer was received. ***"); } [] MME_S6a.receive { // Unxpected message f_selfOrClientSyncAndVerdict(c_tbDone, e_error); log("*** " & __SCOPE__ & ": INCONC: Unxpected message received. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); } } // End of 'altstep' statement // Postamble f_postamble_HSS(); Loading @@ -710,9 +774,15 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_10 /** * @desc Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN */ function f_TC_HSS_UL_11() runs on TestAdapter { // Local variables var integer v_recvSteps := 0; // Initial state : await for first CL-Answer message // Final state : the IUT sends a UL-Answer to new MME var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); Loading @@ -720,9 +790,67 @@ module DiameterS6a_HSS_TCFunctions { log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' // Clause 'when': the IUT receives a UL-Request from new MME f_triggerUlrMessage( md_ULR_TCs( vc_sessionId, md_ulrBodyAvps_TC_01( m_auth_Session_State_noStateMaintained, vc_originHost, vc_originRealm, vc_destinationRealm, m_user_Name(PX_USR_NAME), m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_INITIAL_ATTACH), // containing a ULR-Flags AVP // with Initial-Attach-Indicator bit set md_visitedPLMNId( PX_NEW_VISITED_PLMN_ID // from new MME ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs ); // Clause 'then' tc_ac.start; alt { [v_recvSteps == 0] MME_S6a.receive( // the IUT sends a CL-Request to previous MME mw_mmeCancelLocationRequest( mdw_CLR_TCs( ?, mdw_clrBodyAvps_TC_08( mw_cancellationType( // containing a Cancellation-Type AVP SGSN_UPDATE_PROCEDURE_E // indicating SGSN_UPDATE_PROCEDURE ))))) -> value v_result { // Expected CL-Request message log("*** " & __SCOPE__ & ": INFO: Expected CL-Request was received. ***"); v_recvSteps := v_recvSteps + 1; // and, the IUT receives a CL-Answer from previous SGSN log("*** " & __SCOPE__ & ": INFO: Trigger CL-Answer. ***"); f_triggerClaMessage( md_CLA_TCs( vc_sessionId, md_claBodyAvps_TC_08 ) // End of md_CLA_TCs ); repeat } [v_recvSteps == 1] MME_S6a.receive( // and, the IUT sends a UL-Answer to new MME mw_mmeUpdateLocationAnswer( mdw_ULA_TCs( ?, mdw_ulaBodyAvps_TC_08 ))) -> value v_result { // Expected UL-Answer message f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer was received. ***"); } [] MME_S6a.receive { // Unxpected message f_selfOrClientSyncAndVerdict(c_tbDone, e_error); log("*** " & __SCOPE__ & ": INCONC: Unxpected message received. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); } } // End of 'altstep' statement // Postamble f_postamble_HSS(); Loading @@ -731,9 +859,12 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_11 /** * @desc Verify that the IUT can successfully process all required AVPs in a UL-Answer when the APN-Configuration-Profile AVP is present in the Subscription-Data AVP */ function f_TC_HSS_UL_12() runs on TestAdapter { // Local variables var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); Loading @@ -741,9 +872,38 @@ module DiameterS6a_HSS_TCFunctions { log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' // Clause 'when': the IUT receives a UL-Request f_triggerUlrMessage( md_ULR_TCs( vc_sessionId, md_ulrBodyAvps_TC_12 ) // End of md_ULR_TCs ); // Clause 'then' // Clause 'then': the IUT sends a UL-Answer tc_ac.start; alt { [] MME_S6a.receive( mw_mmeUpdateLocationAnswer( mdw_ULA_TCs( ?, mdw_ulaBodyAvps_TC_12( mdw_subscriptionData_aPN_Configuration_Profile( // containing a Subscription-Data AVP mw_operator_Determined_Barring( // indicating OPERATOR_DETERMINED_BARRING ? // (containing an Operator-Determined-Barring AVP or ), mw_hplmn_ODB( ? // or containing an HPLMN-ODB AVP) ) ))))) -> value v_result { // Expected UL-Answer message f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer message was received. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); } } // End of 'altstep' statement // Postamble f_postamble_HSS(); Loading @@ -753,10 +913,13 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_12 function f_TC_HSS_UL_13() runs on TestAdapter { // Local variables var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' Loading @@ -764,6 +927,9 @@ module DiameterS6a_HSS_TCFunctions { // Clause 'then' // Postamble f_postamble_HSS(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of TC function f_TC_HSS_UL_13 Loading DiameterS6a/ttcn/DiameterS6a_Steps.ttcn3 +10 −1 Original line number Diff line number Diff line Loading @@ -19,12 +19,17 @@ // LibDiameter import from LibDiameter_TypesAndValues { type DIAMETER_MSG type DIAMETER_MSG; const c_applIdS6a }; import from LibDiameter_Types_S6a_AVPs { type ULR_MSG, CLA_MSG }; import from LibDiameter_Steps { function f_preambleDiameterBaseClient, f_preambleDiameterBaseServer }; // DiameterS6a import from DiameterS6a_PIXITS { Loading Loading @@ -110,6 +115,8 @@ // Activate defaults activate( a_mme_default( ) ); // f_preambleDiameterBaseServer(c_applIdS6a); // MME ats as the server } // End of function f_preamble_MME } // End of group mmeRole Loading @@ -122,6 +129,8 @@ // Activate defaults activate( a_hss_default( ) ); // f_preambleDiameterBaseClient(c_applIdS6a); // HSS acts as the client } // End of function f_preamble_HSS } // End of group hssRole Loading DiameterS6a/ttcn/DiameterS6a_Templates.ttcn +4 −5 Original line number Diff line number Diff line Loading @@ -1628,11 +1628,10 @@ module DiameterS6a_Templates { */ group t_TC_HSS_UL_12 { template (value) Subscription_Data_AVP md_Subscription_Data_aPN_Configuration_Profile( in template (value) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile ) modifies m_subscriptionData_dummy := { aPN_Configuration_Profile := p_aPN_Configuration_Profile } // End of tempate md_Subscription_Data_aPN_Configuration_Profile /** * @desc Send ULR template */ template (value) ULR_Body_AVP md_ulrBodyAvps_TC_12 := md_ulrBodyAvps_TC_03(m_user_Name(PX_INVALID_USR_NAME)); // End of template md_ulrBodyAvps_TC_12 } // End of group t_TC_HSS_UL_12 Loading Loading
DiameterS6a/ttcn/DiameterS6a_HSS_TCFunctions.ttcn3 +177 −11 Original line number Diff line number Diff line Loading @@ -549,7 +549,7 @@ module DiameterS6a_HSS_TCFunctions { m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_IND_SET), md_visitedPLMNId( // from new MME PX_OTHER_VISITED_PLMN_ID PX_NEW_VISITED_PLMN_ID ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs Loading Loading @@ -631,10 +631,10 @@ module DiameterS6a_HSS_TCFunctions { vc_destinationRealm, m_user_Name(PX_USR_NAME), m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_IND_SET), // containing a ULR-Flags AVP m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_SINGLE_REG), // containing a ULR-Flags AVP // with Single-Registration-Indication bit set md_visitedPLMNId( PX_OTHER_VISITED_PLMN_ID // from new MME PX_NEW_VISITED_PLMN_ID // from new MME ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs Loading Loading @@ -689,9 +689,15 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_09 /** * @desc Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN */ function f_TC_HSS_UL_10() runs on TestAdapter { // Local variables var integer v_recvSteps := 0; // Initial state : await for first CL-Answer message // Final state : the IUT sends a UL-Answer to new MME var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); Loading @@ -699,9 +705,67 @@ module DiameterS6a_HSS_TCFunctions { log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' // Clause 'when': the IUT receives a UL-Request from new MME f_triggerUlrMessage( md_ULR_TCs( vc_sessionId, md_ulrBodyAvps_TC_01( m_auth_Session_State_noStateMaintained, vc_originHost, vc_originRealm, vc_destinationRealm, m_user_Name(PX_USR_NAME), m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_INITIAL_ATTACH), // containing a ULR-Flags AVP // with Initial-Attach-Indicator bit set md_visitedPLMNId( PX_NEW_VISITED_PLMN_ID // from new MME ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs ); // Clause 'then' tc_ac.start; alt { [v_recvSteps == 0] MME_S6a.receive( // the IUT sends a CL-Request to previous MME mw_mmeCancelLocationRequest( mdw_CLR_TCs( ?, mdw_clrBodyAvps_TC_08( mw_cancellationType( // containing a Cancellation-Type AVP SGSN_UPDATE_PROCEDURE_E // indicating SGSN_UPDATE_PROCEDURE ))))) -> value v_result { // Expected CL-Request message log("*** " & __SCOPE__ & ": INFO: Expected CL-Request was received. ***"); v_recvSteps := v_recvSteps + 1; // and, the IUT receives a CL-Answer from previous SGSN log("*** " & __SCOPE__ & ": INFO: Trigger CL-Answer. ***"); f_triggerClaMessage( md_CLA_TCs( vc_sessionId, md_claBodyAvps_TC_08 ) // End of md_CLA_TCs ); repeat } [v_recvSteps == 1] MME_S6a.receive( // and, the IUT sends a UL-Answer to new MME mw_mmeUpdateLocationAnswer( mdw_ULA_TCs( ?, mdw_ulaBodyAvps_TC_08 ))) -> value v_result { // Expected UL-Answer message f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer was received. ***"); } [] MME_S6a.receive { // Unxpected message f_selfOrClientSyncAndVerdict(c_tbDone, e_error); log("*** " & __SCOPE__ & ": INCONC: Unxpected message received. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); } } // End of 'altstep' statement // Postamble f_postamble_HSS(); Loading @@ -710,9 +774,15 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_10 /** * @desc Verify that the IUT when UL Request is received over S6a shall send CL Request to the previous old SGSN */ function f_TC_HSS_UL_11() runs on TestAdapter { // Local variables var integer v_recvSteps := 0; // Initial state : await for first CL-Answer message // Final state : the IUT sends a UL-Answer to new MME var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); Loading @@ -720,9 +790,67 @@ module DiameterS6a_HSS_TCFunctions { log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' // Clause 'when': the IUT receives a UL-Request from new MME f_triggerUlrMessage( md_ULR_TCs( vc_sessionId, md_ulrBodyAvps_TC_01( m_auth_Session_State_noStateMaintained, vc_originHost, vc_originRealm, vc_destinationRealm, m_user_Name(PX_USR_NAME), m_rAT_Type(PX_RAT_TYPE), m_ulr_Flags_AVP(PX_ULR_FLAGS_S6a_INITIAL_ATTACH), // containing a ULR-Flags AVP // with Initial-Attach-Indicator bit set md_visitedPLMNId( PX_NEW_VISITED_PLMN_ID // from new MME ) ) // End of md_ulrBodyAvps_TC_01 ) // End of md_ULR_TCs ); // Clause 'then' tc_ac.start; alt { [v_recvSteps == 0] MME_S6a.receive( // the IUT sends a CL-Request to previous MME mw_mmeCancelLocationRequest( mdw_CLR_TCs( ?, mdw_clrBodyAvps_TC_08( mw_cancellationType( // containing a Cancellation-Type AVP SGSN_UPDATE_PROCEDURE_E // indicating SGSN_UPDATE_PROCEDURE ))))) -> value v_result { // Expected CL-Request message log("*** " & __SCOPE__ & ": INFO: Expected CL-Request was received. ***"); v_recvSteps := v_recvSteps + 1; // and, the IUT receives a CL-Answer from previous SGSN log("*** " & __SCOPE__ & ": INFO: Trigger CL-Answer. ***"); f_triggerClaMessage( md_CLA_TCs( vc_sessionId, md_claBodyAvps_TC_08 ) // End of md_CLA_TCs ); repeat } [v_recvSteps == 1] MME_S6a.receive( // and, the IUT sends a UL-Answer to new MME mw_mmeUpdateLocationAnswer( mdw_ULA_TCs( ?, mdw_ulaBodyAvps_TC_08 ))) -> value v_result { // Expected UL-Answer message f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer was received. ***"); } [] MME_S6a.receive { // Unxpected message f_selfOrClientSyncAndVerdict(c_tbDone, e_error); log("*** " & __SCOPE__ & ": INCONC: Unxpected message received. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); } } // End of 'altstep' statement // Postamble f_postamble_HSS(); Loading @@ -731,9 +859,12 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_11 /** * @desc Verify that the IUT can successfully process all required AVPs in a UL-Answer when the APN-Configuration-Profile AVP is present in the Subscription-Data AVP */ function f_TC_HSS_UL_12() runs on TestAdapter { // Local variables var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); Loading @@ -741,9 +872,38 @@ module DiameterS6a_HSS_TCFunctions { log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' // Clause 'when': the IUT receives a UL-Request f_triggerUlrMessage( md_ULR_TCs( vc_sessionId, md_ulrBodyAvps_TC_12 ) // End of md_ULR_TCs ); // Clause 'then' // Clause 'then': the IUT sends a UL-Answer tc_ac.start; alt { [] MME_S6a.receive( mw_mmeUpdateLocationAnswer( mdw_ULA_TCs( ?, mdw_ulaBodyAvps_TC_12( mdw_subscriptionData_aPN_Configuration_Profile( // containing a Subscription-Data AVP mw_operator_Determined_Barring( // indicating OPERATOR_DETERMINED_BARRING ? // (containing an Operator-Determined-Barring AVP or ), mw_hplmn_ODB( ? // or containing an HPLMN-ODB AVP) ) ))))) -> value v_result { // Expected UL-Answer message f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": PASS: Expected UL-Answer message was received. ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); log("*** " & __SCOPE__ & ": INCONC: Message was not received in due time. ***"); } } // End of 'altstep' statement // Postamble f_postamble_HSS(); Loading @@ -753,10 +913,13 @@ module DiameterS6a_HSS_TCFunctions { } // End of TC function f_TC_HSS_UL_12 function f_TC_HSS_UL_13() runs on TestAdapter { // Local variables var DIAMETER_MSG v_result; // Preamble f_preamble_HSS(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamblue done. ***"); // Test Body // Clause 'when' Loading @@ -764,6 +927,9 @@ module DiameterS6a_HSS_TCFunctions { // Clause 'then' // Postamble f_postamble_HSS(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); } // End of TC function f_TC_HSS_UL_13 Loading
DiameterS6a/ttcn/DiameterS6a_Steps.ttcn3 +10 −1 Original line number Diff line number Diff line Loading @@ -19,12 +19,17 @@ // LibDiameter import from LibDiameter_TypesAndValues { type DIAMETER_MSG type DIAMETER_MSG; const c_applIdS6a }; import from LibDiameter_Types_S6a_AVPs { type ULR_MSG, CLA_MSG }; import from LibDiameter_Steps { function f_preambleDiameterBaseClient, f_preambleDiameterBaseServer }; // DiameterS6a import from DiameterS6a_PIXITS { Loading Loading @@ -110,6 +115,8 @@ // Activate defaults activate( a_mme_default( ) ); // f_preambleDiameterBaseServer(c_applIdS6a); // MME ats as the server } // End of function f_preamble_MME } // End of group mmeRole Loading @@ -122,6 +129,8 @@ // Activate defaults activate( a_hss_default( ) ); // f_preambleDiameterBaseClient(c_applIdS6a); // HSS acts as the client } // End of function f_preamble_HSS } // End of group hssRole Loading
DiameterS6a/ttcn/DiameterS6a_Templates.ttcn +4 −5 Original line number Diff line number Diff line Loading @@ -1628,11 +1628,10 @@ module DiameterS6a_Templates { */ group t_TC_HSS_UL_12 { template (value) Subscription_Data_AVP md_Subscription_Data_aPN_Configuration_Profile( in template (value) APN_Configuration_Profile_AVP p_aPN_Configuration_Profile ) modifies m_subscriptionData_dummy := { aPN_Configuration_Profile := p_aPN_Configuration_Profile } // End of tempate md_Subscription_Data_aPN_Configuration_Profile /** * @desc Send ULR template */ template (value) ULR_Body_AVP md_ulrBodyAvps_TC_12 := md_ulrBodyAvps_TC_03(m_user_Name(PX_INVALID_USR_NAME)); // End of template md_ulrBodyAvps_TC_12 } // End of group t_TC_HSS_UL_12 Loading