pespin has submitted this change. ( 
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(-)

Approvals:
  laforge: Looks good to me, but someone else must approve
  Jenkins Builder: Verified
  pespin: Looks good to me, approved
  jolly: Looks good to me, but someone else must approve




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: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I094b6775198dfcbf4041c3af423baa6f5072b97d
Gerrit-Change-Number: 40376
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: jolly <andr...@eversberg.eu>
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>

Reply via email to