cbc: Support mme/bsc sctp/tcp server mode
Related: OS#4945
Change-Id: I9fa4ddfa18ac85644f219874e6b2166e1795e3a9
diff --git a/cbc/BSC_ConnectionHandler.ttcn b/cbc/BSC_ConnectionHandler.ttcn
index ec86f01..a8601a6 100644
--- a/cbc/BSC_ConnectionHandler.ttcn
+++ b/cbc/BSC_ConnectionHandler.ttcn
@@ -25,15 +25,23 @@
type function void_fn() runs on BSC_ConnHdlr;
+/* Coordinate with test_CT: */
+type port BSC_ConnHdlr_Coord_PT message {
+ inout charstring;
+} with { extension "internal" };
+
/* this component represents a single subscriber connection */
type component BSC_ConnHdlr extends CBSP_Adapter_CT {
var BSC_ConnHdlrPars g_pars;
+ port BSC_ConnHdlr_Coord_PT COORD;
}
type record BSC_ConnHdlrPars {
+ charstring bsc_host,
integer bsc_cbsp_port,
charstring cbc_host,
integer cbc_cbsp_port,
+ boolean tcp_is_client,
void_fn start_fn,
CBS_Message exp_cbs_msg optional,
BSSMAP_FIELD_CellIdentificationList cell_list_success optional
@@ -41,7 +49,13 @@
function f_BSC_ConnHdlr_main(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
g_pars := pars;
- CBSP_Adapter.f_connect(g_pars.cbc_host, g_pars.cbc_cbsp_port, "", g_pars.bsc_cbsp_port);
+ if (g_pars.tcp_is_client) {
+ CBSP_Adapter.f_connect(g_pars.cbc_host, g_pars.cbc_cbsp_port,
+ g_pars.bsc_host, g_pars.bsc_cbsp_port);
+ } else {
+ CBSP_Adapter.f_bind(g_pars.bsc_host, g_pars.bsc_cbsp_port);
+ CBSP_Adapter.f_wait_client_connect();
+ }
var BSSMAP_FIELD_CellIdentificationList cell_list := {
cIl_allInBSS := ''O
@@ -51,6 +65,7 @@
f_cbsp_send(ts_CBSP_RESTART(cell_list, CBSP_BC_MSGT_CBS, CBSP_RI_DATA_LOST));
f_cbsp_send(ts_CBSP_RESTART(cell_list, CBSP_BC_MSGT_EMERG, CBSP_RI_DATA_LOST));
as_cbsp_reset(0);
+ COORD.send(COORD_MSG_CONNECTED);
g_pars.start_fn.apply();
}