bsc: f_perform_clear: ack all DLCX and RSL REL REQ

ACK any MGCP DLCX or RLL REL REQ during f_perform_clear(), which makes
it more universally applicable to invoke at the end of a test.

Related: OS#5337
Change-Id: Ie5b77c266a5d8f47edd187c474df281a799a81de
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index d68cba2..34d3d03 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -7791,9 +7791,27 @@
 	}
 }
 
+private altstep as_mgcp_ack_all_dlcx() runs on MSC_ConnHdlr {
+	var MgcpCommand mgcp_cmd;
+	[] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd {
+		MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id));
+		repeat;
+	}
+}
+
+private altstep as_rsl_ack_all_rel_req() runs on MSC_ConnHdlr {
+	var RslLinkId main_dcch := valueof(ts_RslLinkID_DCCH(0));
+	[] RSL.receive(tr_RSL_REL_REQ(g_chan_nr, ?)) {
+		RSL.send(ts_RSL_REL_CONF(g_chan_nr, main_dcch));
+		repeat;
+	}
+}
+
 friend function f_perform_clear(RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC,
                                 template PDU_ML3_NW_MS exp_rr_rel_tmpl := tr_RRM_RR_RELEASE)
 runs on MSC_ConnHdlr {
+	var default ack_dlcx := activate(as_mgcp_ack_all_dlcx());
+	var default ack_rel_req := activate(as_rsl_ack_all_rel_req());
 	f_logp(BSCVTY, "MSC instructs BSC to clear channel");
 	BSSAP.send(ts_BSSMAP_ClearCommand(0));
 	interleave {
@@ -7814,6 +7832,8 @@
 			f_rslem_unregister(0, g_chan_nr, PT := rsl_proc_pt);
 		}
 	}
+	deactivate(ack_dlcx);
+	deactivate(ack_rel_req);
 }
 
 private function f_perform_compl_l3(RSL_DCHAN_PT rsl_pt, RSLEM_PROC_PT rsl_proc_pt,