pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40376?usp=email )
Change subject: 5gc: Initial ConnHdlr support
......................................................................
5gc: Initial ConnHdlr support
With this we can already send an InitialUEMessage(Registration Request)
to the 5GC and see if everything is configured properly there.
Change-Id: I094b6775198dfcbf4041c3af423baa6f5072b97d
---
M 5gc/C5G_Tests.ttcn
M 5gc/expected-results.xml
M library/NGAP_Functions.ttcn
3 files changed, 54 insertions(+), 40 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/76/40376/1
diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn
index 70bb0d9..823d216 100644
--- a/5gc/C5G_Tests.ttcn
+++ b/5gc/C5G_Tests.ttcn
@@ -56,18 +56,7 @@
/* parameters of emulated UE */
type record UeParams {
hexstring imsi,
- charstring ue_ip,
- //NAS_EPS_Types.GUTI guti optional,
- octetstring kasme optional,
-
- /* TEI (Control) local side, S11 (SGW) */
- OCT4 s11_teic_local,
- /* TEI (Control) remote side, S11 (SGW) */
- OCT4 s11_teic_remote optional,
- /* TEI (Control) local side, S5c (PGW) */
- OCT4 s5c_teic_local,
- /* TEI (Control) remote side, S5c (PGW) */
- OCT4 s5c_teic_remote optional//,
+ charstring ue_ip
}
type component MTC_CT {
@@ -80,11 +69,9 @@
var UeParams g_ue_pars[NUM_UE];
}
-type component ConnHdlr /* extends GTP2_ConnHdlr */ {
+type component ConnHdlr extends NGAP_ConnHdlr {
var ConnHdlrPars g_pars;
timer g_Tguard := 30.0;
-
- //var Gtp1cPeer g_gn_iface_peer := { connId := 1, remName := mp_gn_remote_ip, remPort :=
mp_gn_remote_port };
}
type record ConnHdlrPars {
@@ -141,25 +128,11 @@
NGAP_UNIT[num].receive(NGAPEM_Event:{up_down:=NGAPEM_EVENT_UP});
}
friend function f_init_one_ue(inout UeParams uep, integer imsi_suffix) {
-/*
+
uep := {
imsi := f_gen_imsi(imsi_suffix),
- ue_ip := "192.168.123.50",
- guti := omit,
- kasme := omit,
- s11_teic_local := '00000000'O,
- s11_teic_remote := omit,
- s5c_teic_local := '00000000'O,
- s5c_teic_remote := omit,
- bearer := {
- ebi := omit,
- s11_teid_local := omit,
- s11_teid_remote := omit,
- s5c_teid_local := omit,
- s5c_teid_remote := omit
- }
+ ue_ip := "192.168.123.50"
}
-*/
}
friend function f_init_ngap(integer imsi_suffix) runs on MTC_CT {
var integer i;
@@ -193,8 +166,8 @@
vc_conn := ConnHdlr.create(id);
/* NGAP part */
-// connect(vc_conn:NGAP, vc_NGAP[ngap_idx]:NGAP_CLIENT);
-// connect(vc_conn:NGAP_PROC, vc_NGAP[ngap_idx]:NGAP_PROC);
+ connect(vc_conn:NGAP, vc_NGAP[ngap_idx]:NGAP_CLIENT);
+ connect(vc_conn:NGAP_PROC, vc_NGAP[ngap_idx]:NGAP_PROC);
/* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have
* a stand-alone 'derefers()' call, see
https://www.eclipse.org/forums/index.php/t/1091364/ */
@@ -218,9 +191,13 @@
activate(as_Tguard());
}
+private template (value) NGAP_IEs.TAI ts_ngran_NGAP_TAI(NGRANParams ngran_pars) := {
+ pLMNIdentity := ngran_pars.global_ngran_id.globalGNB_ID.pLMNIdentity,
+ tAC := ngran_pars.supported_ta_list[0].tAC,
+ iE_Extensions := omit
+}
-
-friend function f_ngap_setup(integer idx := 0, template NGAP_IEs.Cause cause := omit)
runs on MTC_CT {
+friend function f_ngap_setup(integer idx := 0, template (omit) NGAP_IEs.Cause cause :=
omit) runs on MTC_CT {
var template (present) NGAP_IEs.Cause exp_cause := ?;
var boolean exp_fail := false;
timer T := 5.0;
@@ -259,6 +236,30 @@
}
}
}
+
+private function f_register() runs on ConnHdlr {
+ var template (value) UserLocationInformation p_ueLocInf;
+ var template (value) NGAP_PDU tx_pdu;
+
+ p_ueLocInf := m_uPTransportLayerInformation_userLocationInformationNR(
+ m_userLocationInformationNR(
+ g_pars.ngran_pars[g_pars.c5g_idx].cell_identity.nR_CGI,
+ ts_ngran_NGAP_TAI(g_pars.ngran_pars[g_pars.c5g_idx])
+
+ ));
+
+
+ tx_pdu := m_ngap_initMsg(m_n2_initialUeMessage(g_pars.c5g_idx,
+ '7e004179000d0109f1500000000079890040642e02f070'O, /* Registration
request */
+ p_ueLocInf,
+ mo_Signalling));
+
+ NGAP.send(tx_pdu);
+ f_sleep(5.0);
+
+ /* TODO: handle Auth, SecurityModeCommand, InitialContextSetup, PDUSessionresource, */
+}
+
/* NG Setup procedure to 5GC using a Global gNB ID containing unknown/foreign PLMN.
* Related:
https://github.com/open5gs/open5gs/issues/3544 */
testcase TC_ng_setup_unknown_global_gnb_id_plmn() runs on MTC_CT {
@@ -280,11 +281,25 @@
f_ngap_setup(0);
}
+private function f_TC_register(ConnHdlrPars pars) runs on ConnHdlr {
+ f_init_handler(pars);
+ f_register();
+}
+testcase TC_ng_register() runs on MTC_CT {
+ f_init_ngap(4);
+ f_ngap_setup(0);
+
+ var ConnHdlrPars pars := f_init_pars(ue_idx := 0);
+ var ConnHdlr vc_conn;
+ vc_conn := f_start_handler_with_pars(refers(f_TC_register), pars);
+ vc_conn.done;
+}
control {
execute( TC_ng_setup() );
execute( TC_ng_setup_unknown_global_gnb_id_plmn() );
execute( TC_ng_setup_wrong_tac() );
+ execute( TC_ng_register() );
}
diff --git a/5gc/expected-results.xml b/5gc/expected-results.xml
index 3652aab..2120ba4 100644
--- a/5gc/expected-results.xml
+++ b/5gc/expected-results.xml
@@ -3,4 +3,5 @@
<testcase classname='C5G_Tests'
name='TC_ng_setup_unknown_global_gnb_id_plmn' time='MASKED'/>
<testcase classname='C5G_Tests' name='TC_ng_setup_wrong_tac'
time='MASKED'/>
<testcase classname='C5G_Tests' name='TC_ng_setup'
time='MASKED'/>
+ <testcase classname='C5G_Tests' name='TC_ng_register'
time='MASKED'/>
</testsuite>
diff --git a/library/NGAP_Functions.ttcn b/library/NGAP_Functions.ttcn
index a35ccf3..7ab2f5a 100644
--- a/library/NGAP_Functions.ttcn
+++ b/library/NGAP_Functions.ttcn
@@ -57,11 +57,9 @@
{
if (ischosen(ngap.initiatingMessage)) {
var InitiatingMessage im := ngap.initiatingMessage;
- select (ngap) {
- case (?) {
- return omit;
- /* TODO */
- /* return im.value_.InitialUEMessage.protocolIEs[0].value_.RAN_UE_NGAP_ID; */
+ select (im) {
+ case (mw_n2_initialUeMessage) {
+ return im.value_.InitialUEMessage.protocolIEs[0].value_.RAN_UE_NGAP_ID;
}
/* TODO */
}
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40376?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I094b6775198dfcbf4041c3af423baa6f5072b97d
Gerrit-Change-Number: 40376
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>