diff --git a/bsc/BSC_Tests.cfg b/bsc/BSC_Tests.cfg
index dde224c..b381deb 100644
--- a/bsc/BSC_Tests.cfg
+++ b/bsc/BSC_Tests.cfg
@@ -25,4 +25,7 @@
 [MAIN_CONTROLLER]
 
 [EXECUTE]
-BSC_Tests.TC_recv_dump
+#BSC_Tests.TC_chan_act_noreply
+#BSC_Tests.TC_chan_act_ack_noest
+#BSC_Tests.TC_chan_act_ack_est_ind_noreply
+BSC_Tests.TC_chan_act_ack_est_ind_refused
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 9b26800..55d54a3 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1,126 +1,213 @@
 module BSC_Tests {
 
 import from Osmocom_Types all;
-
+import from GSM_Types all;
 import from IPL4asp_Types all;
 
+import from BSSAP_Adapter all;
+import from BSSAP_CodecPort all;
+import from BSSMAP_Templates all;
 import from IPA_Emulation all;
+import from IPA_Types all;
+import from RSL_Types all;
 
-import from MTP3asp_Types all;
+import from RSL_Tests all;
 
-import from SCCP_Types all;
-import from SCCPasp_Types all;
-import from SCCP_Emulation all;
-
-import from MSC_Simulation all;
-import from BTS_Simulation all;
-
-const integer NUM_MSC := 1;
 const integer NUM_BTS := 1;
+const float T3101_MAX := 12.0;
 
-type record MscState {
-	MSC_CT MSC,
-	MSC_SCCP_MTP3_parameters sccp_pars,
-	SCCP_PAR_Address sccp_addr_own
-}
-
-type record BtsState {
-	BTS_CT BTS
-}
-
-type component test_CT {
-	var MscState msc[NUM_MSC];
-	var BtsState bts[NUM_BTS];
+type component test_CT extends BSSAP_Adapter_CT {
+	var IPA_Client bts[NUM_BTS];
+	port IPA_RSL_PT IPA_RSL[NUM_BTS];
 
 	var boolean g_initialized := false;
-	var octetstring g_sio := '83'O;
+	timer T_guard := 30.0;
+
 }
 
 modulepar {
-	PortNumber mp_msc_port := 5000;
-	charstring mp_msc_ip := "127.0.0.1";
-
-	charstring mp_sccp_service_type := "mtp3_itu";
-
-	integer mp_bsc_pc := 196;
-	integer mp_bsc_ssn := 254;
-
-	integer mp_msc_pc := 185;	/* 0.23.1 */
-	integer mp_msc_ssn := 254;
-
 	charstring mp_bsc_ip := "127.0.0.1";
 	integer mp_bsc_rsl_port := 3003;
 }
 
-/* construct a SCCP_PAR_Address with just PC + SSN and no GT */
-template (value) SCCP_PAR_Address ts_SccpAddr_PC_SSN(integer pc, integer ssn) := {
-	addressIndicator := {
-		pointCodeIndic := '1'B,
-		ssnIndicator := '1'B,
-		globalTitleIndic := '0000'B,
-		routingIndicator := '1'B
-	},
-	signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, '83'O),
-	//signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, g_sio),
-	subsystemNumber := ssn,
-	globalTitle := omit
+type record IPA_Client {
+	IPA_Emulation_CT vc_IPA,
+	IPA_CCM_Parameters ccm_pars,
+	charstring id
 }
 
-template MTP3_Field_sio ts_sio(octetstring sio_in) := {
-	ni := substr(oct2bit(sio_in),0,2),
-	prio := substr(oct2bit(sio_in),2,2),
-	si := substr(oct2bit(sio_in),4,4)
-}
-
-template MSC_SCCP_MTP3_parameters ts_SCCP_Pars(octetstring sio, integer opc, integer dpc,
-						integer local_ssn) := {
-	sio := ts_sio(sio),
-	opc := opc,
-	dpc := dpc,
-	sls := 0,
-	sccp_serviceType := mp_sccp_service_type,
-	ssn := local_ssn
-};
-
-function f_init_MscState(inout MscState msc_st, integer opc, integer dpc, integer local_ssn, integer remote_ssn)
+function f_ipa_rsl_start(inout IPA_Client clnt, charstring bsc_host, PortNumber bsc_port, integer i)
 runs on test_CT {
-	msc_st.sccp_pars := valueof(ts_SCCP_Pars(g_sio, opc, dpc, local_ssn));
-	msc_st.sccp_addr_own := valueof(ts_SccpAddr_PC_SSN(opc, local_ssn));
+	timer T := 10.0;
+
+	clnt.id := "IPA" & int2str(i);
+	clnt.vc_IPA := IPA_Emulation_CT.create(clnt.id & "-IPA");
+	clnt.ccm_pars := c_IPA_default_ccm_pars;
+	clnt.ccm_pars.name := "Osmocom TTCN-3 BTS Simulator";
+	clnt.ccm_pars.unit_id := int2str(1234+i) & "/0/0";
+
+	map(clnt.vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
+	connect(clnt.vc_IPA:IPA_RSL_PORT, self:IPA_RSL[i]);
+
+	clnt.vc_IPA.start(IPA_Emulation.main_client(bsc_host, bsc_port, "", -1, clnt.ccm_pars));
+
+	/* wait for IPA RSL link to connect and send ID ACK */
+	T.start;
+	alt {
+	[] IPA_RSL[i].receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_ID_ACK}) {
+		T.stop;
+		IPA_RSL[i].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_PAGING_LOAD_IND(23)));
+		}
+	[] IPA_RSL[i].receive { repeat }
+	[] T.timeout {
+		setverdict(fail, "Timeout waiting for ASP_IPA_EVENT_ID_ACK");
+		self.stop;
+		}
+	}
+}
+
+function f_sleep(float seconds) {
+	timer T := seconds;
+	T.start;
+	T.timeout;
+}
+
+altstep as_Tguard() runs on test_CT {
+	[] T_guard.timeout { setverdict(fail, "Timeout of T_guard"); }
 }
 
 function f_init() runs on test_CT {
 	var integer i;
-	var charstring id;
 
-	for (i := 0; i < NUM_MSC; i := i+1) {
-		f_init_MscState(msc[i], mp_msc_pc +i, mp_bsc_pc, mp_msc_ssn, mp_bsc_ssn);
-		msc[i].MSC := MSC_CT.create;
-		id := "MSC" & int2str(i);
-		msc[i].MSC.start(MSC_Simulation.main(mp_msc_ip, mp_msc_port + i, msc[i].sccp_pars, msc[i].sccp_addr_own, id));
+	if (g_initialized) {
+		return;
 	}
+	g_initialized := true;
+
+	/* Call a function of our 'parent component' BSSAP_Adapter_CT to start the
+	 * MSC-side BSSAP emulation */
+	f_bssap_init("VirtMSC");
+
+	f_sleep(5.0);
 
 	for (i := 0; i < NUM_BTS; i := i+1) {
-		bts[i].BTS := BTS_CT.create;
-		id := "BTS" & int2str(i);
-		bts[i].BTS.start(BTS_Simulation.main(mp_bsc_ip, mp_bsc_rsl_port, id));
+		f_ipa_rsl_start(bts[i], mp_bsc_ip, mp_bsc_rsl_port, i);
 	}
+	f_sleep(0.5);
 
+	T_guard.start;
+	activate(as_Tguard());
 }
 
-testcase TC_recv_dump() runs on test_CT {
-	var integer i;
-	timer T := 30.0;
+function f_exp_ipa_rx(integer bts_nr, template RSL_Message t_rx, float t_secs := 2.0, IpaStreamId sid := IPAC_PROTO_RSL_TRX0)
+runs on test_CT return RSL_Message {
+	var ASP_RSL_Unitdata rx_rsl_ud;
+	timer T := t_secs;
+
+	T.start;
+	alt {
+	[] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(sid, t_rx)) -> value rx_rsl_ud {
+		T.stop;
+		}
+	[] IPA_RSL[bts_nr].receive { repeat; }
+	[] T.timeout { setverdict(fail, "Timeout expecting ", t_rx); }
+	}
+	return rx_rsl_ud.rsl;
+}
+
+function f_ipa_tx(integer bts_nr, template RSL_Message t_tx, IpaStreamId sid := IPAC_PROTO_RSL_TRX0)
+runs on test_CT {
+	IPA_RSL[bts_nr].send(ts_ASP_RSL_UD(sid, t_tx));
+}
+
+
+testcase TC_chan_act_noreply() runs on test_CT {
+	var BSSAP_N_UNITDATA_ind ud_ind;
 
 	f_init();
+	f_bssap_reset();
 
-	alt {
-		[] msc[0].MSC.done { }
-		[] T.timeout { setverdict(fail); }
-	}
+	IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23)));
+	f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
+	setverdict(pass);
 }
 
+/* CHAN RQD -> CHAN ACT -> CHAN ACT ACK -> RF CHAN REL */
+testcase TC_chan_act_ack_noest() runs on test_CT {
+	var RSL_Message rx_rsl;
+
+	f_init();
+	f_bssap_reset();
+
+	/* Send CHAN RQD and wait for allocation; acknowledge it */
+	f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23));
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
+	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
+	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23));
+
+	/* expect BSC to disable the channel again if there's no RLL EST IND */
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);
+
+	setverdict(pass);
+}
+
+/* Test behavior if MSC never answers to CR */
+testcase TC_chan_act_ack_est_ind_noreply() runs on test_CT {
+	var RSL_Message rx_rsl;
+
+	f_init();
+	f_bssap_reset();
+
+	/* Send CHAN RQD and wait for allocation; acknowledge it */
+	f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23));
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
+	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
+	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23));
+
+	var octetstring l3 := '00010203040506'O
+	f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
+
+	BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3)));
+
+	/* expect BSC to disable the channel again if there's no response from MSC */
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);
+
+	setverdict(pass);
+}
+
+/* Test behavior if MSC answers with CREF to CR */
+testcase TC_chan_act_ack_est_ind_refused() runs on test_CT {
+	var BSSAP_N_CONNECT_ind rx_c_ind;
+	var RSL_Message rx_rsl;
+
+	f_init();
+	f_bssap_reset();
+
+	/* Send CHAN RQD and wait for allocation; acknowledge it */
+	f_ipa_tx(0, ts_RSL_CHAN_RQD('23'O, 23));
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
+	var RslChannelNr chan_nr := rx_rsl.ies[0].body.chan_nr;
+	f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 23));
+
+	var octetstring l3 := '00010203040506'O
+	f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
+
+	BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
+	BSSAP.send(ts_BSSAP_DISC_req(rx_c_ind.connectionId, 0));
+
+	/* expect BSC to disable the channel */
+	rx_rsl := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL), T3101_MAX);
+
+	setverdict(pass);
+}
+
+
+
 control {
-	execute( TC_recv_dump() );
+	execute( TC_chan_act_noreply() );
+	execute( TC_chan_act_ack_noest() );
+	execute( TC_chan_act_ack_est_ind_noreply() );
+	execute( TC_chan_act_ack_est_ind_refused() );
 }
 
 }
diff --git a/bsc/BSSAP_Adapter.ttcn b/bsc/BSSAP_Adapter.ttcn
index f9fb0d4..60c7103 100644
--- a/bsc/BSSAP_Adapter.ttcn
+++ b/bsc/BSSAP_Adapter.ttcn
@@ -1,78 +1,148 @@
-module MSC_Simulation {
+module BSSAP_Adapter {
 
-import from IPL4asp_Types all;
+/* This module implements a 'dumb' BSSAP adapter.  It creates the M3UA and SCCP components and stacks a BSSAP
+ * codec port on top.  As a result, it provides the ability to transceive SCCP-User-SAP primitives with
+ * deoded BSSAP payload.  Use this if you want to have full control about what you transmit or receive,
+ * without any automatisms in place.  Allows you to refuse connections or other abnormal behavior. */
 
-import from IPA_Emulation all;
+import from General_Types all;
+import from Osmocom_Types all;
+
+import from M3UA_Types all;
+import from M3UA_Emulation all;
+import from MTP3asp_Types all;
+import from MTP3asp_PortType all;
 
 import from SCCP_Types all;
 import from SCCPasp_Types all;
 import from SCCP_Emulation all;
 
-/* 
-import from MobileL3_Types all;
-import from MobileL3_CommonIE_Types all;
-import from L3_Templates all;
+import from SCTPasp_Types all;
+import from SCTPasp_PortType all;
 
-import from BSSAP_Types all;
+import from BSSAP_CodecPort all;
 import from BSSMAP_Templates all;
-*/
-import from BSSMAP_Emulation all;
 
-import from MGCP_Adapter all;
-
-import from MSC_ConnectionHandler all;
-
-type component MSC_CT {
+type component BSSAP_Adapter_CT {
 	/* component references */
-	var IPA_Emulation_CT vc_IPA;
+	var M3UA_CT vc_M3UA;
 	var SCCP_CT vc_SCCP;
-	var BSSMAP_Emulation_CT vc_BSSMAP;
-	var MGCP_Adapter_CT vc_MGCP_UDP;
 	/* test port to SCCP emulation */
-	port SCCPasp_PT SCCP;
+	port BSSAP_CODEC_PT BSSAP;
+
+	var octetstring g_sio;
+	var MSC_SCCP_MTP3_parameters g_sccp_pars;
+	var SCCP_PAR_Address g_sccp_addr_own, g_sccp_addr_peer;
 }
 
 modulepar {
-	boolean mp_mgcp_uses_udp := false;
+	charstring mp_sccp_service_type := "mtp3_itu";
+
+	SCTP_Association_Address mp_sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" };
+	integer mp_own_pc := 185;	/* 0.23.1 */
+	integer mp_own_ssn := 254;
+
+	integer mp_peer_pc := 187;
+	integer mp_peer_ssn := 254;
 }
 
-function main(charstring local_ip, PortNumber local_port,
-	      MSC_SCCP_MTP3_parameters sccp_pars,
-	      SCCP_PAR_Address sccp_addr_own, charstring id) runs on MSC_CT
+/* construct a SCCP_PAR_Address with just PC + SSN and no GT */
+template (value) SCCP_PAR_Address ts_SccpAddr_PC_SSN(integer pc, integer ssn) := {
+	addressIndicator := {
+		pointCodeIndic := '1'B,
+		ssnIndicator := '1'B,
+		globalTitleIndic := '0000'B,
+		routingIndicator := '1'B
+	},
+	signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, '83'O),
+	//signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, g_sio),
+	subsystemNumber := ssn,
+	globalTitle := omit
+}
+
+private function init_pars() runs on BSSAP_Adapter_CT {
+	g_sio := '83'O;
+	g_sccp_pars := {
+		sio := {
+			ni := substr(oct2bit(g_sio),0,2),
+			prio := substr(oct2bit(g_sio),2,2),
+			si := substr(oct2bit(g_sio),4,4)
+		},
+		opc := mp_own_pc,
+		dpc := mp_peer_pc,
+		sls := 0,
+		sccp_serviceType := mp_sccp_service_type,
+		ssn := mp_own_ssn
+	};
+	g_sccp_addr_own := valueof(ts_SccpAddr_PC_SSN(mp_own_pc, mp_own_ssn));
+	g_sccp_addr_peer := valueof(ts_SccpAddr_PC_SSN(mp_peer_pc, mp_peer_ssn));
+}
+
+
+function f_bssap_init(charstring id) runs on BSSAP_Adapter_CT
 {
+	init_pars();
+
 	/* create components */
-	vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
+	vc_M3UA := M3UA_CT.create(id & "-M3UA");
 	vc_SCCP := SCCP_CT.create(id & "-SCCP");
-	vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP");
 
-	map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
+	map(vc_M3UA:SCTP_PORT, system:sctp);
 
-	/* connect MTP3 service provider (IPA) to lower side of SCCP */
-	connect(vc_IPA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT);
+	/* connect MTP3 service provider (M3UA) to lower side of SCCP */
+	connect(vc_M3UA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT);
 
 	/* connect BSSNAP dispatcher to upper side of SCCP */
-	connect(vc_BSSMAP:SCCP, vc_SCCP:SCCP_SP_PORT);
+	connect(self:BSSAP, vc_SCCP:SCCP_SP_PORT);
 
-	if (mp_mgcp_uses_udp == false) {
-		/* connect BSSMAP dispatcher to IPA_Emulation MGCP */
-		connect(vc_BSSMAP:MGCP, vc_IPA:IPA_MGCP_PORT);
-	} else {
-		vc_MGCP_UDP := MGCP_Adapter_CT.create(id & "-MGCP_UDP");
-		connect(vc_BSSMAP:MGCP, vc_MGCP_UDP:MGCP);
-		vc_MGCP_UDP.start(MGCP_Adapter.main());
-	}
+	vc_M3UA.start(f_M3UA_Emulation(mp_sctp_addr));
+	vc_SCCP.start(SCCPStart(g_sccp_pars));
+}
 
-	vc_IPA.start(IPA_Emulation.main_server(local_ip, local_port));
-	vc_SCCP.start(SCCPStart(sccp_pars));
-	vc_BSSMAP.start(BSSMAP_Emulation.main(MSC_BssmapOps, id & "-BSSMAP"));
-
-	/* wait until termination of respective components */
-	vc_IPA.done;
-	vc_BSSMAP.done;
-	vc_SCCP.done;
-	if (mp_mgcp_uses_udp) {
-		vc_MGCP_UDP.done;
+private altstep as_reset_ack() runs on BSSAP_Adapter_CT {
+	var BSSAP_N_UNITDATA_ind ud_ind;
+	[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind {
+		log("Respoding to inbound RESET with RESET-ACK");
+		BSSAP.send(ts_BSSAP_UNITDATA_req(ud_ind.callingAddress, ud_ind.calledAddress,
+			   ts_BSSMAP_ResetAck));
 	}
 }
 
+
+function f_bssap_wait_for_reset() runs on BSSAP_Adapter_CT {
+	var BSSAP_N_UNITDATA_ind ud_ind;
+	timer T := 20.0;
+
+	T.start;
+	alt {
+	[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind {
+		BSSAP.send(ts_BSSAP_UNITDATA_req(ud_ind.callingAddress, ud_ind.calledAddress,
+			   ts_BSSMAP_ResetAck));
+		}
+	[] as_reset_ack();
+	[] BSSAP.receive {
+		repeat;
+		}
+	[] T.timeout {
+		setverdict(fail);
+		}
+	}
+}
+
+function f_bssap_reset() runs on BSSAP_Adapter_CT {
+	timer T := 5.0;
+
+	BSSAP.send(ts_BSSAP_UNITDATA_req(g_sccp_addr_peer, g_sccp_addr_own, ts_BSSMAP_Reset(0)));
+	T.start;
+	alt {
+	[] BSSAP.receive(tr_BSSAP_UNITDATA_ind(g_sccp_addr_own, g_sccp_addr_peer, tr_BSSMAP_ResetAck)) {
+		log("Received RESET-ACK in response to RESET, we're ready to go!");
+		}
+	[] as_reset_ack();
+	[] BSSAP.receive { repeat };
+	[] T.timeout { setverdict(fail, "Waiting for RESET-ACK after sending RESET"); }
+	}
+}
+
+
 }
diff --git a/bsc/gen_links.sh b/bsc/gen_links.sh
index 9743398..4fd22a0 100755
--- a/bsc/gen_links.sh
+++ b/bsc/gen_links.sh
@@ -23,17 +23,38 @@
 FILES="Socket_API_Definitions.ttcn"
 gen_links $DIR $FILES
 
+# Required by MGCP and IPA
 DIR=$BASEDIR/titan.TestPorts.IPL4asp/src
 FILES="IPL4asp_Functions.ttcn  IPL4asp_PT.cc  IPL4asp_PT.hh IPL4asp_PortType.ttcn  IPL4asp_Types.ttcn  IPL4asp_discovery.cc IPL4asp_protocol_L234.hh"
 gen_links $DIR $FILES
 
+# required by M3UA_Emulation
+DIR=$BASEDIR/titan.ProtocolModules.M3UA/src
+FILES="M3UA_Types.ttcn"
+gen_links $DIR $FILES
+
+# required by M3UA_Emulation
+DIR=$BASEDIR/titan.TestPorts.SCTPasp/src
+FILES="SCTPasp_PT.cc  SCTPasp_PT.hh  SCTPasp_PortType.ttcn  SCTPasp_Types.ttcn"
+gen_links $DIR $FILES
+
+# required by M3UA Emulation
+DIR=../MTP3asp_CNL113337/src
+FILES="MTP3asp_PortType.ttcn  MTP3asp_Types.ttcn"
+gen_links $DIR $FILES
+
+# required by SCCP Emulation
+DIR=../M3UA_CNL113537/src
+FILES="M3UA_Emulation.ttcn"
+gen_links $DIR $FILES
+
 # required by SCCP Emulation
 DIR=../MTP3asp_CNL113337/src
 FILES="MTP3asp_PortType.ttcn  MTP3asp_Types.ttcn"
 gen_links $DIR $FILES
 
 DIR=../SCCP_CNL113341/src
-FILES="SCCP_Emulation.ttcn  SCCP_EncDec.cc  SCCP_Mapping.ttcnpp  SCCP_Types.ttcn  SCCPasp_Types.ttcn"
+FILES="SCCP_Emulation.ttcn  SCCP_Mapping.ttcnpp  SCCP_Types.ttcn  SCCPasp_Types.ttcn"
 gen_links $DIR $FILES
 ln -sf SCCP_Mapping.ttcnpp SCCP_Mapping.ttcn
 
@@ -55,5 +76,5 @@
 gen_links $DIR $FILES
 
 DIR=../library
-FILES="General_Types.ttcn Osmocom_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Emulation.ttcn"
+FILES="General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcn L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn BSSAP_CodecPort.ttcn"
 gen_links $DIR $FILES
diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh
index 6bedd28..f037230 100755
--- a/bsc/regen_makefile.sh
+++ b/bsc/regen_makefile.sh
@@ -2,7 +2,7 @@
 
 MAIN=BSC_Tests.ttcn
 
-FILES="*.ttcn SCCP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc RTP_EncDec.cc SDP_EncDec.cc *.c MGCP_CodecPort_CtrlFunctDef.cc"
+FILES="*.ttcn IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc RTP_EncDec.cc SDP_EncDec.cc *.c"
 
 ttcn3_makefilegen -l -f $MAIN $FILES
 sed -i -e 's/# TTCN3_DIR = /TTCN3_DIR = \/usr/' Makefile
