pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37592?usp=email )

Change subject: sgsn: Set up GTPv1U in emulated RNCs
......................................................................

sgsn: Set up GTPv1U in emulated RNCs

Change-Id: Icf5fa28ea08cfd255b49b546eadd74e91a9c7ecf
---
M sgsn/SGSN_Tests.ttcn
M sgsn/SGSN_Tests_Iu.ttcn
2 files changed, 50 insertions(+), 14 deletions(-)

Approvals:
  Jenkins Builder: Verified
  osmith: Looks good to me, approved
  fixeria: Looks good to me, but someone else must approve




diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
index 8274d43..92f081d 100644
--- a/sgsn/SGSN_Tests.ttcn
+++ b/sgsn/SGSN_Tests.ttcn
@@ -164,12 +164,17 @@
 type record length(NUM_GB) of NSConfiguration NSConfigurations;

 const integer NUM_RNC := 1;
+type record IuInstance {
+       RAN_Adapter ranap,
+       GTP_Emulation_CT vc_RNC_GTP
+};
+type record length(NUM_RNC) of IuInstance IuInstances;
 type record of RAN_Configuration RAN_Configurations;

 type component test_CT {
        var GbInstances g_gb;
-       var RAN_Adapter g_ranap[NUM_RNC];
-       var boolean g_ranap_enable := false;
+       var IuInstances g_iu;
+       var boolean g_iu_enable := false;

        var GSUP_Emulation_CT vc_GSUP;
        var IPA_Emulation_CT vc_GSUP_IPA;
@@ -267,6 +272,21 @@
        }
 }

+private function f_init_rnc_gtp(charstring id, integer rnc_idx) runs on 
test_CT {
+       id := id & "-RNC_GTP";
+
+       var GtpEmulationCfg gtp_cfg := {
+               gtpc_bind_ip := omit,
+               gtpc_bind_port := omit,
+               gtpu_bind_ip := mp_ranap_cfg[rnc_idx].sctp_addr.local_ip_addr,
+               gtpu_bind_port := GTP1U_PORT,
+               sgsn_role := false
+       };
+
+       g_iu[rnc_idx].vc_RNC_GTP := GTP_Emulation_CT.create(id);
+       g_iu[rnc_idx].vc_RNC_GTP.start(GTP_Emulation.main(gtp_cfg));
+}
+
 private function f_init_ggsn_gtp(charstring id) runs on test_CT {
        id := id & "-GGSN_GTP";

@@ -376,10 +396,11 @@
        f_init_gb(g_gb[1], "SGSN_Test-Gb1", 1);
        f_init_gb(g_gb[2], "SGSN_Test-Gb2", 2);

-       if (g_ranap_enable) {
+       if (g_iu_enable) {
                for (i := 0; i < NUM_RNC; i := i+1) {
-                       f_ran_adapter_init(g_ranap[i], mp_ranap_cfg[i], 
"SGSN_Test_" & int2str(i), RNC_RanOps);
-                       f_ran_adapter_start(g_ranap[i]);
+                       f_ran_adapter_init(g_iu[i].ranap, mp_ranap_cfg[i], 
"SGSN_Test_" & int2str(i), RNC_RanOps);
+                       f_ran_adapter_start(g_iu[i].ranap);
+                       f_init_rnc_gtp("SGSN_Test", i);
                }
        }
        f_init_gsup("SGSN_Test");
@@ -389,9 +410,9 @@

 function f_cleanup() runs on test_CT {
        var integer i;
-       if (g_ranap_enable) {
+       if (g_iu_enable) {
                for (i := 0; i < NUM_RNC; i := i+1) {
-                       f_ran_adapter_cleanup(g_ranap[i]);
+                       f_ran_adapter_cleanup(g_iu[i].ranap);
                }
        }
        self.stop;
@@ -438,9 +459,9 @@
                        gb[2].cfg.bvc[0].cell_id
                }
        pars := f_new_BSSGP_ConnHdlrPars(imsi_suffix, cell_ids, 
t_NetPars(expect_ciph := expect_ciph), t_guard := t_guard);
-       if (g_ranap_enable) {
-               pars.sccp_addr_local := g_ranap[0].sccp_addr_own;
-               pars.sccp_addr_peer := g_ranap[0].sccp_addr_peer;
+       if (g_iu_enable) {
+               pars.sccp_addr_local := g_iu[0].ranap.sccp_addr_own;
+               pars.sccp_addr_peer := g_iu[0].ranap.sccp_addr_peer;
        }

        vc_conn := BSSGP_ConnHdlr.create(id);
@@ -461,9 +482,15 @@
        connect(vc_conn:BSSGP_GLOBAL[2], gb[2].vc_BSSGP:GLOBAL);

        /* FIXME: support multiple RNCs */
-       if (g_ranap_enable) {
-               connect(vc_conn:BSSAP, g_ranap[0].vc_RAN:CLIENT);
-               connect(vc_conn:BSSAP_PROC, g_ranap[0].vc_RAN:PROC);
+       if (g_iu_enable) {
+               connect(vc_conn:BSSAP, g_iu[0].ranap.vc_RAN:CLIENT);
+               connect(vc_conn:BSSAP_PROC, g_iu[0].ranap.vc_RAN:PROC);
+
+               for (var integer i := 0; i < NUM_RNC; i := i+1) {
+                       /* GTP[0] is used by emulated GGSN: */
+                       connect(vc_conn:GTP[i + 1], g_iu[i].vc_RNC_GTP:CLIENT);
+                       connect(vc_conn:GTP_PROC[i + 1], 
g_iu[i].vc_RNC_GTP:CLIENT_PROC);
+               }
        }

        connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT);
diff --git a/sgsn/SGSN_Tests_Iu.ttcn b/sgsn/SGSN_Tests_Iu.ttcn
index 9825150..84679cd 100644
--- a/sgsn/SGSN_Tests_Iu.ttcn
+++ b/sgsn/SGSN_Tests_Iu.ttcn
@@ -15,7 +15,7 @@
 import from BSSGP_ConnHdlr all;

 private function f_init() runs on test_CT {
-       g_ranap_enable := true;
+       g_iu_enable := true;
        SGSN_Tests.f_init();

        /* default VTY configuration */

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37592?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Icf5fa28ea08cfd255b49b546eadd74e91a9c7ecf
Gerrit-Change-Number: 37592
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to