cbc: Support mme/bsc sctp/tcp server mode

Related: OS#4945
Change-Id: I9fa4ddfa18ac85644f219874e6b2166e1795e3a9
diff --git a/cbc/MME_ConnectionHandler.ttcn b/cbc/MME_ConnectionHandler.ttcn
index fec358c..ed0502e 100644
--- a/cbc/MME_ConnectionHandler.ttcn
+++ b/cbc/MME_ConnectionHandler.ttcn
@@ -25,15 +25,23 @@
 
 type function void_fn() runs on MME_ConnHdlr;
 
+/* Coordinate with test_CT: */
+type port MME_ConnHdlr_Coord_PT message {
+	inout charstring;
+} with { extension "internal" };
+
 /* this component represents a single subscriber connection */
 type component MME_ConnHdlr extends SBC_AP_Adapter_CT {
 	var MME_ConnHdlrPars g_pars;
+	port MME_ConnHdlr_Coord_PT COORD;
 }
 
 type record MME_ConnHdlrPars {
+	charstring mme_host,
 	integer mme_sbcap_port,
 	charstring cbc_host,
 	integer cbc_sbcap_port,
+	boolean sctp_is_client,
 	void_fn start_fn,
 	CBS_Message exp_cbs_msg optional,
 	SBC_AP_Cause write_replace_warning_ind_cause optional,
@@ -42,7 +50,14 @@
 
 function f_MME_ConnHdlr_main(charstring id, MME_ConnHdlrPars pars) runs on MME_ConnHdlr {
 	g_pars := pars;
-	SBC_AP_Adapter.f_connect(g_pars.cbc_host, g_pars.cbc_sbcap_port, "", g_pars.mme_sbcap_port);
+	if (g_pars.sctp_is_client) {
+		SBC_AP_Adapter.f_connect(g_pars.cbc_host, g_pars.cbc_sbcap_port,
+					 g_pars.mme_host, g_pars.mme_sbcap_port);
+	} else {
+		SBC_AP_Adapter.f_bind(g_pars.mme_host, g_pars.mme_sbcap_port);
+		SBC_AP_Adapter.f_wait_client_connect();
+	}
+	COORD.send(COORD_MSG_CONNECTED);
 	g_pars.start_fn.apply();
 }