Loading ttcn/Ats_NG_NAS/NG_NAS_TCFunctions.ttcn +172 −84 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ module NG_NAS_TCFunctions { // NG_NAS import from NG_NAS_TypeDefs all; import from NG_NAS_TestSystem all; import from NAS_CommonTypeDefs all; // Lib3GPP import from NG_NAS_MsgContainers all; Loading @@ -38,10 +39,12 @@ module NG_NAS_TCFunctions { import from LibNGAP_Interface all; import from LibNGAP_Steps all; // LibFramwork import from LibHelpers_Functions all; // NGAP_Ats //import from NGAP_TestSystem all; import from NGAP_Steps all; //import from NGAP_Pixits all; // interface at AMF group TP_AMF_NGAP { Loading @@ -58,16 +61,37 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // AuthorizationRequest ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message( vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST( '111'B, -, ?, // Authentication_parameter_RAND ? // Authentication_parameter_AUTN )) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading @@ -81,16 +105,31 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // SecurityModeCommand ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_SECURITY_MODE_COMMAND) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: NG_SECURITY_MODE_COMMAND mismatch. ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading @@ -101,17 +140,57 @@ module NG_NAS_TCFunctions { */ function f_TC_5GNAS_AMF_AUT_REQ_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { // Local variables var NGAP_PDU v_PDU; var integer v_start_time_ms; // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO tc_noac.start; v_start_time_ms := f_getCurrentTimeUtc(); // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) alt { [] N2_gNBaMF_P.receive { // Skip message and check that timer T3560 has not expired (in milliseconds) if ((f_getCurrentTimeUtc() - v_start_time_ms) < PX_TIMER_T3560) { repeat; } else { tc_noac.stop; } } [] tc_noac.timeout { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: T3560 shall be expired. ***"); } } // End of 'alt'statement N2_gNBaMF_P.clear; // Remove enqueued messages tc_noac.start; alt { [] N2_gNBaMF_P.receive( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // AuthorizationRequest ))) -> value v_PDU { tc_noac.stop; f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_NGAPPDU_Get(v_PDU) f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST) == true) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST after T3560 timer expiry ***"); } } [] tc_noac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); } } // End of 'alt'statement // Postamble //TODO: f_postamble_NGAP_gNB(); Loading @@ -124,19 +203,60 @@ module NG_NAS_TCFunctions { */ function f_TC_5GNAS_AMF_AUT_REQ_04() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { // Local variables var NG_NAS_DL_Message_Type v_NG_NAS_DL_Message_Type; var NAS_KsiValue ngKSI; // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_decode_5G_NAS_DL_Message(vc_recvNAS_PDU, v_NG_NAS_DL_Message_Type); ngKSI := v_NG_NAS_DL_Message_Type.authentication_Request.ngNasKeySetId.nasKeySetId; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO // Send error message vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( m_GMM_GSM_Cause( -, int2bit(20, 8) // MAC failure )); vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_UplinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, vc_sendNAS_PDU, m_uPTransportLayerInformation_userLocationInformationNR( m_userLocationInformationNR( m_nR_CGI, m_tAI ))))); // Get response f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // IdentityRequest ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message( vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST( complement(ngKSI) )) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading @@ -150,16 +270,53 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO // Send error message vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( m_GMM_GSM_Cause( -, int2bit(71, 8) // ngKSI already in use )); vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_UplinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, vc_sendNAS_PDU, m_uPTransportLayerInformation_userLocationInformationNR( m_userLocationInformationNR( m_nR_CGI, m_tAI ))))); // Get response f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // IdentityRequest ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message( vc_recvNAS_PDU, mw_NG_IDENTITY_REQUEST( '111'B // Identity type )) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading Loading @@ -200,77 +357,8 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_NGSetupRequest( m_globalRANNodeID_globalGNB_ID( m_ie_globalGnbId( PX_PLMN_IDENTITY, PX_GNB_ID,//'0000000000000000000000'B,//in template (value) bitstring p_gnbId, -//in template (omit) GlobalGNB_ID.iE_Extensions p_iE_Extensions := omit )), { m_supportedTAItem( PX_TACode, { m_ie_broadcastPLMNItem( PX_PLMN_IDENTITY,//m_ie_pLMNIdentity('00f110'O), { m_sliceSupportItem( m_s_NSSAI( PX_SST, -,// in template (omit) SD p_sD := omit, -// in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit ), -//in template (omit) SliceSupportItem.iE_Extensions p_iE_Extensions := omit ) } ) },//in template (value) BroadcastPLMNList p_broadcastPLMNList, -//in template (omit) SupportedTAItem.iE_Extensions p_iE_Extensions := omit ) }, PX_PAGING_DRX ))); f_recv_NGAP_PDU( mw_ngap_succMsg( mw_n2_NGSetupResponse( mw_aMFName(PX_AMF_NAME), { *, mw_servedGUAMIItem( mw_gUAMI( PX_PLMN_IDENTITY )), * } ))); vt_NgNasUl_Msg := m_NG_REGISTRATION_REQUEST( {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, '000'B,//in template (value) NAS_KsiValue p_KeySetId, '0'B,//in template (value) B1_Type p_Tsc, { // 24.501 cl. 9.11.3.4 iei:=omit, iel:='0002'O, idDigit1:='0000'B, // 1st identitity digit oddEvenInd:='0'B, // Odd/even indicator or Spare typeOfId:='000'B, // Type of identity otherDigits:='00'O// length (1..infinity) optional // Other identity digits, could be any length @sic R5-192389, @sic R5w190307 sic@ sic@ }//in template (value) NG_MobileIdentity p_MobileId, ); vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); log("===> vc_sendNAS_PDU (1): ", vc_sendNAS_PDU); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_UplinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, vc_sendNAS_PDU, m_uPTransportLayerInformation_userLocationInformationNR( m_userLocationInformationNR( m_nR_CGI, m_tAI ))))); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( Loading ttcn/Ats_NG_NAS/module.mk +2 −0 Original line number Diff line number Diff line Loading @@ -20,12 +20,14 @@ modules := \ ../Lib_NG_NAS \ ../LibCommon \ ../Lib3GPP \ ../../titan-test-system-framework/ttcn/LibHelpers \ ../../titan-test-system-framework/ccsrc/Protocols/Pcap \ ../../titan-test-system-framework/ccsrc/Protocols/ETH \ ../../titan-test-system-framework/ccsrc/Protocols/IP \ ../../titan-test-system-framework/ccsrc/Protocols/Sctp \ ../../ccsrc/EncDec \ ../../titan-test-system-framework/ccsrc/Framework \ ../../titan-test-system-framework/ccsrc/Helpers \ ../../titan-test-system-framework/ccsrc/loggers \ ../../ccsrc/Externals \ ../../ccsrc/Ports/LibNAS \ Loading ttcn/Lib3GPP/NG_NAS/NG_NAS_TypeDefs.ttcn +108 −4 File changed.Preview size limit exceeded, changes collapsed. Show changes ttcn/LibNGAP/lib/LibNGAP_Pixits.ttcn +3 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,9 @@ module LibNGAP_Pixits { */ modulepar float PX_NGAP_TWAIT:= 30.0; modulepar integer PX_TIMER_T3560 := 500; // Default value is 500ms // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) } // End of group NGAP_Timers /** Loading ttcn/LibNGAP/lib_system/LibNGAP_Interface.ttcn +3 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ module LibNGAP_Interface { // LibCommon import from LibCommon_Sync all; import from LibCommon_Time all; // LibNGAP import from NGAP_IEs language "ASN.1:1997" all; Loading Loading @@ -59,7 +60,9 @@ module LibNGAP_Interface { // General timers timer tc_wait := PX_NGAP_TWAIT; timer tc_noac := PX_TNOAC; timer tc_delay := 0.3; // delay next Request // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) // Variables for storing default references var default vc_default_ngap; Loading Loading
ttcn/Ats_NG_NAS/NG_NAS_TCFunctions.ttcn +172 −84 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ module NG_NAS_TCFunctions { // NG_NAS import from NG_NAS_TypeDefs all; import from NG_NAS_TestSystem all; import from NAS_CommonTypeDefs all; // Lib3GPP import from NG_NAS_MsgContainers all; Loading @@ -38,10 +39,12 @@ module NG_NAS_TCFunctions { import from LibNGAP_Interface all; import from LibNGAP_Steps all; // LibFramwork import from LibHelpers_Functions all; // NGAP_Ats //import from NGAP_TestSystem all; import from NGAP_Steps all; //import from NGAP_Pixits all; // interface at AMF group TP_AMF_NGAP { Loading @@ -58,16 +61,37 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // AuthorizationRequest ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message( vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST( '111'B, -, ?, // Authentication_parameter_RAND ? // Authentication_parameter_AUTN )) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading @@ -81,16 +105,31 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_await_NasAuthorizationRequest_send_NasAuthorizationResponse(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // SecurityModeCommand ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_SECURITY_MODE_COMMAND) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: NG_SECURITY_MODE_COMMAND mismatch. ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading @@ -101,17 +140,57 @@ module NG_NAS_TCFunctions { */ function f_TC_5GNAS_AMF_AUT_REQ_03() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { // Local variables var NGAP_PDU v_PDU; var integer v_start_time_ms; // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO tc_noac.start; v_start_time_ms := f_getCurrentTimeUtc(); // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) alt { [] N2_gNBaMF_P.receive { // Skip message and check that timer T3560 has not expired (in milliseconds) if ((f_getCurrentTimeUtc() - v_start_time_ms) < PX_TIMER_T3560) { repeat; } else { tc_noac.stop; } } [] tc_noac.timeout { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: T3560 shall be expired. ***"); } } // End of 'alt'statement N2_gNBaMF_P.clear; // Remove enqueued messages tc_noac.start; alt { [] N2_gNBaMF_P.receive( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // AuthorizationRequest ))) -> value v_PDU { tc_noac.stop; f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_NGAPPDU_Get(v_PDU) f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST) == true) { f_selfOrClientSyncAndVerdict(c_tbDone, e_error); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST after T3560 timer expiry ***"); } } [] tc_noac.timeout { f_selfOrClientSyncAndVerdict(c_tbDone, e_success); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); } } // End of 'alt'statement // Postamble //TODO: f_postamble_NGAP_gNB(); Loading @@ -124,19 +203,60 @@ module NG_NAS_TCFunctions { */ function f_TC_5GNAS_AMF_AUT_REQ_04() runs on NGNASComponent /*gNB_NGNAS_NGAPComponent*/ { // Local variables var NG_NAS_DL_Message_Type v_NG_NAS_DL_Message_Type; var NAS_KsiValue ngKSI; // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_decode_5G_NAS_DL_Message(vc_recvNAS_PDU, v_NG_NAS_DL_Message_Type); ngKSI := v_NG_NAS_DL_Message_Type.authentication_Request.ngNasKeySetId.nasKeySetId; f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO // Send error message vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( m_GMM_GSM_Cause( -, int2bit(20, 8) // MAC failure )); vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_UplinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, vc_sendNAS_PDU, m_uPTransportLayerInformation_userLocationInformationNR( m_userLocationInformationNR( m_nR_CGI, m_tAI ))))); // Get response f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // IdentityRequest ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message( vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST( complement(ngKSI) )) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading @@ -150,16 +270,53 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Preamble done. ***"); // Body // TODO // Send error message vt_NgNasUl_Msg := m_NG_AUTHENTICATION_FAILURE( m_GMM_GSM_Cause( -, int2bit(71, 8) // ngKSI already in use )); vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_UplinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, vc_sendNAS_PDU, m_uPTransportLayerInformation_userLocationInformationNR( m_userLocationInformationNR( m_nR_CGI, m_tAI ))))); // Get response f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, ? // IdentityRequest ))); f_NASPDU_Get(vc_recvNGAP_PDU); if (f_Check_5GAKA_NAS_DL_Message( vc_recvNAS_PDU, mw_NG_IDENTITY_REQUEST( '111'B // Identity type )) == false) { setverdict(fail); log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***"); } f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Testbody done. ***"); // Postamble // Terminate call with rejection f_terminate_NasRegistrationRequest_with_reject(); //TODO: f_postamble_NGAP_gNB(); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); log("*** " & __SCOPE__ & ": INFO: Postamble done. ***"); Loading Loading @@ -200,77 +357,8 @@ module NG_NAS_TCFunctions { // Preamble f_NGAP_gnb_init(); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_NGSetupRequest( m_globalRANNodeID_globalGNB_ID( m_ie_globalGnbId( PX_PLMN_IDENTITY, PX_GNB_ID,//'0000000000000000000000'B,//in template (value) bitstring p_gnbId, -//in template (omit) GlobalGNB_ID.iE_Extensions p_iE_Extensions := omit )), { m_supportedTAItem( PX_TACode, { m_ie_broadcastPLMNItem( PX_PLMN_IDENTITY,//m_ie_pLMNIdentity('00f110'O), { m_sliceSupportItem( m_s_NSSAI( PX_SST, -,// in template (omit) SD p_sD := omit, -// in template (omit) S_NSSAI.iE_Extensions p_iE_Extensions := omit ), -//in template (omit) SliceSupportItem.iE_Extensions p_iE_Extensions := omit ) } ) },//in template (value) BroadcastPLMNList p_broadcastPLMNList, -//in template (omit) SupportedTAItem.iE_Extensions p_iE_Extensions := omit ) }, PX_PAGING_DRX ))); f_recv_NGAP_PDU( mw_ngap_succMsg( mw_n2_NGSetupResponse( mw_aMFName(PX_AMF_NAME), { *, mw_servedGUAMIItem( mw_gUAMI( PX_PLMN_IDENTITY )), * } ))); vt_NgNasUl_Msg := m_NG_REGISTRATION_REQUEST( {'1'B,'001'B},//in template (value) RegistrationType p_RegistrationType, '000'B,//in template (value) NAS_KsiValue p_KeySetId, '0'B,//in template (value) B1_Type p_Tsc, { // 24.501 cl. 9.11.3.4 iei:=omit, iel:='0002'O, idDigit1:='0000'B, // 1st identitity digit oddEvenInd:='0'B, // Odd/even indicator or Spare typeOfId:='000'B, // Type of identity otherDigits:='00'O// length (1..infinity) optional // Other identity digits, could be any length @sic R5-192389, @sic R5w190307 sic@ sic@ }//in template (value) NG_MobileIdentity p_MobileId, ); vc_sendNAS_PDU := bit2oct(encvalue(valueof(vt_NgNasUl_Msg))); log("===> vc_sendNAS_PDU (1): ", vc_sendNAS_PDU); f_send_NGAP_PDU( m_ngap_initMsg( m_n2_UplinkNASTransport( PX_AMF_UE_NGAP_ID, PX_RAN_UE_NGAP_ID, vc_sendNAS_PDU, m_uPTransportLayerInformation_userLocationInformationNR( m_userLocationInformationNR( m_nR_CGI, m_tAI ))))); f_send_NGSetupRequest_await_NGSetupRespone(); f_send_NasRegistrationRequest(); f_recv_NGAP_PDU( mw_ngap_initMsg( mw_n2_DownlinkNASTransport( Loading
ttcn/Ats_NG_NAS/module.mk +2 −0 Original line number Diff line number Diff line Loading @@ -20,12 +20,14 @@ modules := \ ../Lib_NG_NAS \ ../LibCommon \ ../Lib3GPP \ ../../titan-test-system-framework/ttcn/LibHelpers \ ../../titan-test-system-framework/ccsrc/Protocols/Pcap \ ../../titan-test-system-framework/ccsrc/Protocols/ETH \ ../../titan-test-system-framework/ccsrc/Protocols/IP \ ../../titan-test-system-framework/ccsrc/Protocols/Sctp \ ../../ccsrc/EncDec \ ../../titan-test-system-framework/ccsrc/Framework \ ../../titan-test-system-framework/ccsrc/Helpers \ ../../titan-test-system-framework/ccsrc/loggers \ ../../ccsrc/Externals \ ../../ccsrc/Ports/LibNAS \ Loading
ttcn/Lib3GPP/NG_NAS/NG_NAS_TypeDefs.ttcn +108 −4 File changed.Preview size limit exceeded, changes collapsed. Show changes
ttcn/LibNGAP/lib/LibNGAP_Pixits.ttcn +3 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,9 @@ module LibNGAP_Pixits { */ modulepar float PX_NGAP_TWAIT:= 30.0; modulepar integer PX_TIMER_T3560 := 500; // Default value is 500ms // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) } // End of group NGAP_Timers /** Loading
ttcn/LibNGAP/lib_system/LibNGAP_Interface.ttcn +3 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ module LibNGAP_Interface { // LibCommon import from LibCommon_Sync all; import from LibCommon_Time all; // LibNGAP import from NGAP_IEs language "ASN.1:1997" all; Loading Loading @@ -59,7 +60,9 @@ module LibNGAP_Interface { // General timers timer tc_wait := PX_NGAP_TWAIT; timer tc_noac := PX_TNOAC; timer tc_delay := 0.3; // delay next Request // FSCOM: TTCN-3 timer are in seconds (ETSI ES 201 873-1 V4.16.1 (2024-10) Clause 12 Declaring timers) // Variables for storing default references var default vc_default_ngap; Loading