113 lines
2.8 KiB
Plaintext
113 lines
2.8 KiB
Plaintext
module HNBGW_ConnectionHandler {
|
|
|
|
/* HNBGW Connection Handler of HNB_Tests in TTCN-3
|
|
* (C) 2021 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
|
|
* All rights reserved.
|
|
*
|
|
* Released under the terms of GNU General Public License, Version 2 or
|
|
* (at your option) any later version.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
import from Misc_Helpers all;
|
|
import from General_Types all;
|
|
import from Osmocom_Types all;
|
|
import from IPL4asp_Types all;
|
|
import from Native_Functions all;
|
|
|
|
import from SDP_Types all;
|
|
|
|
import from StatsD_Checker all;
|
|
|
|
import from TELNETasp_PortType all;
|
|
import from Osmocom_VTY_Functions all;
|
|
|
|
import from HNBAP_Templates all;
|
|
|
|
import from Iuh_Emulation all;
|
|
|
|
/* this component represents a single Iuh connection at the HNBGW. */
|
|
type component HNBGW_ConnHdlr extends StatsD_ConnHdlr {
|
|
port TELNETasp_PT HNBVTY;
|
|
port HNBAP_PT HNBAP;
|
|
port RUA_PT RUA;
|
|
var TestHdlrParams g_pars;
|
|
|
|
var boolean g_vty_initialized := false;
|
|
}
|
|
|
|
function f_HNBGW_ConnHdlr_init_vty() runs on HNBGW_ConnHdlr {
|
|
if (not g_vty_initialized) {
|
|
map(self:HNBVTY, system:HNBVTY);
|
|
f_vty_set_prompts(HNBVTY);
|
|
f_vty_transceive(HNBVTY, "enable");
|
|
g_vty_initialized := true;
|
|
}
|
|
}
|
|
|
|
/* initialize all parameters */
|
|
function f_HNBGW_ConnHdlr_init(TestHdlrParams pars) runs on HNBGW_ConnHdlr {
|
|
var integer i := 0;
|
|
var Iuh_Emulation_CT vc_Iuh;
|
|
|
|
g_pars := valueof(pars);
|
|
vc_Iuh := Iuh_Emulation_CT.create("HNBGW" & int2str(i));
|
|
connect(self:HNBAP, vc_Iuh:HNBAP);
|
|
connect(self:RUA, vc_Iuh:RUA);
|
|
|
|
var Iuh_conn_parameters iuh_pars;
|
|
iuh_pars.remote_ip := g_pars.hnodeb_addr;
|
|
iuh_pars.remote_sctp_port := -1;
|
|
iuh_pars.local_ip := g_pars.hnbgw_addr;
|
|
iuh_pars.local_sctp_port := g_pars.hnbgw_port;
|
|
vc_Iuh.start(Iuh_Emulation.main(iuh_pars, "Iuh" & int2str(i)));
|
|
|
|
f_HNBGW_ConnHdlr_init_vty();
|
|
}
|
|
|
|
type record TestHdlrParams {
|
|
charstring hnbgw_addr,
|
|
charstring hnodeb_addr,
|
|
integer hnbgw_port,
|
|
uint16_t rnc_id,
|
|
charstring hNB_Identity_Info,
|
|
OCT3 plmnid,
|
|
uint32_t cell_identity,
|
|
uint16_t lac,
|
|
uint8_t rac,
|
|
uint8_t sac
|
|
};
|
|
|
|
/* Note: Do not use valueof() to get a value of this template, use
|
|
* f_gen_test_hdlr_pars() instead in order to get a configuration. */
|
|
template (value) TestHdlrParams t_def_TestHdlrPars := {
|
|
hnbgw_addr := "127.0.0.1",
|
|
hnodeb_addr := "127.0.0.1",
|
|
hnbgw_port := 29169,
|
|
rnc_id := 23,
|
|
hNB_Identity_Info := "OsmoHNodeB",
|
|
plmnid := '00F110'O,
|
|
cell_identity := 1,
|
|
lac := 2,
|
|
rac := 3,
|
|
sac := 4
|
|
}
|
|
|
|
|
|
function f_handle_hnbap_hnb_register_req()
|
|
runs on HNBGW_ConnHdlr {
|
|
HNBAP.receive(tr_HNBAP_HNBRegisterRequest(char2oct(g_pars.hNB_Identity_Info),
|
|
g_pars.plmnid,
|
|
int2bit(g_pars.cell_identity, 28),
|
|
int2oct(g_pars.lac, 2),
|
|
int2oct(g_pars.rac, 1),
|
|
int2oct(g_pars.sac, 2)
|
|
));
|
|
HNBAP.send(ts_HNBAP_HNBRegisterAccept(g_pars.rnc_id));
|
|
}
|
|
|
|
|
|
|
|
}
|