diff --git a/library/IPA_Emulation.ttcn b/library/IPA_Emulation.ttcn
index 61f357c..fc42dba 100644
--- a/library/IPA_Emulation.ttcn
+++ b/library/IPA_Emulation.ttcn
@@ -18,6 +18,8 @@
 
 import from MGCP_Types all;
 
+import from Osmocom_CTRL_Types all;
+
 modulepar {
 	/* Use Osmocom extended IPA mux header */
 	boolean mp_ipa_mgcp_uses_osmo_ext := true;
@@ -92,6 +94,11 @@
 	inout ASP_RSL_Unitdata, ASP_IPA_Event;
 } with { extension "internal" }
 
+/* Client port for CTRL inside IPA */
+type port IPA_CTRL_PT message {
+	inout CtrlMessage, ASP_IPA_Event;
+} with { extension "internal" }
+
 type component IPA_Emulation_CT {
 	/* down-facing port to IPA codec port */
 	port IPA_CODEC_PT IPA_PORT;
@@ -101,6 +108,8 @@
 	port IPA_MGCP_PT IPA_MGCP_PORT;
 	/* up-facing port for RSL */
 	port IPA_RSL_PT IPA_RSL_PORT;
+	/* up-facing port for CTRL */
+	port IPA_CTRL_PT IPA_CTRL_PORT;
 	/* up-facing port for other streams */
 	port IPA_SP_PT IPA_SP_PORT;
 
@@ -332,6 +341,11 @@
 	}
 }
 
+private function f_ctrl_to_user(octetstring msg) runs on IPA_Emulation_CT {
+	var charstring msg_ch := oct2char(msg);
+	IPA_CTRL_PORT.send(dec_CtrlMessage(msg_ch));
+}
+
 private function f_mgcp_to_ud(octetstring payload) runs on IPA_Emulation_CT return ASP_IPA_Unitdata {
 	if (mp_ipa_mgcp_uses_osmo_ext) {
 		return valueof(t_ASP_IPA_UD(IPAC_PROTO_MGCP_OLD, payload));
@@ -348,6 +362,7 @@
 	var ASP_Event asp_evt;
 	var MgcpCommand mgcp_cmd;
 	var MgcpResponse mgcp_rsp;
+	var CtrlMessage ctrl_msg;
 	var octetstring payload;
 	var ASP_RSL_Unitdata rsl;
 
@@ -376,6 +391,8 @@
 				select (ipa_rx.streamIdExt) {
 					case (IPAC_PROTO_EXT_MGCP) {
 						f_mgcp_to_user(ipa_rx.msg);
+					} case (IPAC_PROTO_EXT_CTRL) {
+						f_ctrl_to_user(ipa_rx.msg);
 					} case else {
 						IPA_SP_PORT.send(f_to_asp(ipa_rx));
 					}
@@ -422,6 +439,12 @@
 			IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
 		}
 
+		[] IPA_CTRL_PORT.receive(CtrlMessage:?) -> value ctrl_msg {
+			payload := char2oct(enc_CtrlMessage(ctrl_msg));
+			ipa_ud := valueof(t_ASP_IPA_UD(IPAC_PROTO_OSMO, payload, IPAC_PROTO_EXT_CTRL));
+			IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
+		}
+
 		/* Received RSL -> down into IPA */
 		[] IPA_RSL_PORT.receive(ASP_RSL_Unitdata:?) -> value rsl {
 			IPA_PORT.send(f_from_rsl(g_ipa_conn_id, rsl));
