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 */