osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40819?usp=email )
Change subject: 5gc: Implement UE-initiated de-registration procedure ...................................................................... 5gc: Implement UE-initiated de-registration procedure Change-Id: Iab438d5a7cc5f2ba58943e4568c1fb5e5f41f99d Related: SYS#7073 --- M 5gc/C5G_Tests.ttcn M 5gc/ConnHdlr.ttcn M deps/Makefile M library/NG_NAS_Osmo_Templates.ttcn 4 files changed, 60 insertions(+), 1 deletion(-) Approvals: osmith: Looks good to me, approved Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn index 30615f2..0b71059 100644 --- a/5gc/C5G_Tests.ttcn +++ b/5gc/C5G_Tests.ttcn @@ -291,6 +291,7 @@ private function f_TC_register() runs on ConnHdlr { f_register(); + f_deregister(); } testcase TC_ng_register() runs on MTC_CT { f_init(); @@ -305,6 +306,7 @@ private function f_TC_periodic_registration_updating() runs on ConnHdlr { f_register(); f_periodic_register_update(); + f_deregister(); } testcase TC_periodic_registration_updating() runs on MTC_CT { f_init(); @@ -322,6 +324,7 @@ f_sleep(1.0); f_ping4(g_pars.ue_pars.run_prog_pars.ping_hostname); f_pdu_sess_release(); + f_deregister(); } testcase TC_ng_register_ping4() runs on MTC_CT { f_init(); diff --git a/5gc/ConnHdlr.ttcn b/5gc/ConnHdlr.ttcn index fe96b45..01dcb1a 100644 --- a/5gc/ConnHdlr.ttcn +++ b/5gc/ConnHdlr.ttcn @@ -423,6 +423,34 @@ as_ngap_handle_configuration_update(); } +/* 3GPP TS 24.501 5.5.2.2 UE-initiated de-registration procedure, + * 3GPP TS 23.502 4.2.2.3.2 UE-initiated Deregistration */ +function f_deregister() runs on ConnHdlr { + var template (value) NG_NAS_UL_Message_Type nas_ul_msg; + var NG_NAS_DL_Message_Type rx_nas; + + nas_ul_msg := cs_NG_DEREGISTRATION_REQUEST_MO(crs_DeregisterType ('0'B,/* p_SwitchOff */ + '0'B,/* p_ReReg */ + '01'B/* p_Access */), + g_pars.kset_id, + cs_NG_MobileIdentity_Guti(omit, g_pars.ue_pars.guti)); + NGAP.send(nas_ul_msg); + + NGAP.receive(cr_NG_DEREGISTRATION_ACCEPT_MO); + as_ngap_handle_UeContextReleaseCmd(); +} + +/* 3GPP TS 38.413 8.3.3 UE Context Release (AMF initiated) */ +private altstep as_ngap_handle_UeContextReleaseCmd() runs on ConnHdlr { + var NGAP_PDU rx_ngap; + + [] NGAP.receive(mw_ngap_initMsg(mw_n2_UEContextReleaseCommand)) -> value rx_ngap { + var AMF_UE_NGAP_ID amf_id := valueof(f_NGAP_get_AMF_UE_NGAP_ID(rx_ngap)); + var RAN_UE_NGAP_ID ran_id := valueof(f_NGAP_get_RAN_UE_NGAP_ID(rx_ngap)); + NGAP.send(m_ngap_succMsg(f_ts_n2_UEContextReleaseComplete(amf_id, ran_id, f_ULI()))); + } +} + /* Handle a PDUSessionResourceSetupRequestTransfer contained inside NGAP InitialContextSetupRequest and return a Result for InitialContextSetupResponse */ private function f_pdu_handle_session_resource_released_item(PDUSessionResourceToReleaseItemRelCmd cmd) runs on ConnHdlr return PDUSessionResourceReleasedItemRelRes { diff --git a/deps/Makefile b/deps/Makefile index 818d610..4dba0a1 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -72,7 +72,7 @@ # Use tag names from 'git describe --tags' or commit hashes. This way we get # exact commits of deps when doing regression testing. -nas_commit= dcb175be8b2d9b4daf3e8a4ebf27da3caae8f7cb +nas_commit= ab43cccb96db6067ffba1c763b47cb25cd61b780 titan.Libraries.TCCUsefulFunctions_commit= R.35.B-6-gb3687da titan.ProtocolEmulations.M3UA_commit= b58f92046e48a7b1ed531e243a2319ebca53bf4c titan.ProtocolEmulations.SCCP_commit= 750a3e836831e58eae59d4757ef5d0c759f9ca5d diff --git a/library/NG_NAS_Osmo_Templates.ttcn b/library/NG_NAS_Osmo_Templates.ttcn index c1c8b44..4f8e8cc 100644 --- a/library/NG_NAS_Osmo_Templates.ttcn +++ b/library/NG_NAS_Osmo_Templates.ttcn @@ -405,6 +405,34 @@ } } +/* 24.501 cl. 8.2.12 (UE originating deregister) */ +template (value) NG_NAS_UL_Message_Type +cs_NG_DEREGISTRATION_REQUEST_MO(template (value) DeregisterType p_DeregisterType, + template (value) NAS_KeySetIdentifier p_KSI, + template (value) NG_MobileIdentity p_MobileId) := +{ + deregistration_RequestMO := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationRequest_MO, /* cl. 9.7 M V 1 */ + ngKSI := p_KSI, /* cl. 9.11.3.32 M V 1/2 */ + deregistrationType := p_DeregisterType, /* cl. 9.11.3.20 M V 1/2 */ + ngMobileId := p_MobileId /* cl. 9.11.3.4 M LV 5-? */ + } +} + +/* 24.501 cl. 8.2.13 De-registration accept (UE originating de-registration) */ +template (present) NG_NAS_DL_Message_Type cr_NG_DEREGISTRATION_ACCEPT_MO := +{ + deregistration_Accept := { + protocolDiscriminator := tsc_EPD_GMM, /* cl. 9.2 M V 1 */ + spareHalfOctet := tsc_SpareHalfOctet, /* cl. 9.3 M V 1/2 */ + securityHeaderType := tsc_SHT_NoSecurityProtection, + messageType := tsc_MT_NG_DeregistrationAccept_MO /* cl. 9.7 M V 1 */ + } +}; + /* 24.501 cl. 8.2.19 */ template (present) NG_NAS_DL_Message_Type cr_NG_CONFIGURATION_UPDATE_COMMAND(template ConfigUpdateInd p_ConfigUpdateInd := *, -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40819?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Iab438d5a7cc5f2ba58943e4568c1fb5e5f41f99d Gerrit-Change-Number: 40819 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pes...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de> Gerrit-Reviewer: osmith <osm...@sysmocom.de>