diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn
index bf96eff..76a56fc 100644
--- a/bsc/MSC_ConnectionHandler.ttcn
+++ b/bsc/MSC_ConnectionHandler.ttcn
@@ -279,6 +279,7 @@
 	var MgcpOsmuxCID osmux_cid;
 	var SDP_Message sdp;
 	var integer cid := f_get_free_mgcp_conn();
+	var charstring local_rtp_addr := host_mgw_rtp_v6; /* Use IPv6 by default if no remote addr is provided by client */
 	if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {
 		if (cid != 0) {
 			Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MGCP wildcard EP only works in first CRCX");
@@ -292,9 +293,14 @@
 		sdp := mgcp_cmd.sdp;
 		g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;
 		g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;
+		if (sdp.connection.addr_type == "IP6") {
+			local_rtp_addr := host_mgw_rtp_v6;
+		} else {
+			local_rtp_addr := host_mgw_rtp_v4;
+		}
 	}
 	var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];
-	sdp := valueof(ts_SDP(mgcp_conn.mgw.host, mgcp_conn.mgw.host, "foo", "21",
+	sdp := valueof(ts_SDP(mgcp_conn.mgw.host, local_rtp_addr, "foo", "21",
 				mgcp_conn.mgw.port_nr, { int2str(mgcp_conn.rtp_pt) },
 			{valueof(ts_SDP_rtpmap(mgcp_conn.rtp_pt,
 						mgcp_conn.mime_type & "/" &
@@ -316,15 +322,21 @@
 	runs on MSC_ConnHdlr return template MgcpResponse {
 	var SDP_Message sdp;
 	var integer cid := f_get_mgcp_conn(f_MgcpCmd_extract_conn_id(mgcp_cmd));
+	var charstring local_rtp_addr;
 	if (isvalue(mgcp_cmd.sdp)) {
 		sdp := mgcp_cmd.sdp;
 		g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;
 		g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;
+		if (sdp.connection.addr_type == "IP6") {
+			local_rtp_addr := host_mgw_rtp_v6;
+		} else {
+			local_rtp_addr := host_mgw_rtp_v4;
+		}
 	} else {
 		Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MDCX has no [recognizable] SDP");
 	}
 	var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];
-	sdp := valueof(ts_SDP(mgcp_conn.peer.host, mgcp_conn.peer.host, "foo", "21",
+	sdp := valueof(ts_SDP(mgcp_conn.peer.host, local_rtp_addr, "foo", "21",
 				mgcp_conn.peer.port_nr, { int2str(mgcp_conn.rtp_pt) },
 			{valueof(ts_SDP_rtpmap(mgcp_conn.rtp_pt,
 						mgcp_conn.mime_type & "/" &
@@ -427,7 +439,9 @@
 	var TestHdlrParams g_pars;
 
 	var charstring host_bts := "127.0.0.2";
-	var charstring host_mgw := "127.0.0.3";
+	var charstring host_mgw_mgcp := "127.0.0.3";
+	var charstring host_mgw_rtp_v4 := "127.0.0.5";
+	var charstring host_mgw_rtp_v6 := "::1";
 	var charstring host_msc := "127.0.0.4";
 
 	var boolean g_vty_initialized := false;
@@ -538,6 +552,7 @@
 	boolean         exp_ms_power_params,
 	boolean		aoip,
 	boolean		use_osmux,
+	charstring	host_aoip_tla,
 	TestHdlrParamsMSCPool mscpool
 };
 
@@ -567,6 +582,7 @@
 	exp_ms_power_params := false,
 	aoip := true,
 	use_osmux := false,
+	host_aoip_tla := "1.2.3.4",
 	mscpool := {
 		bssap_idx := 0,
 		rsl_idx := 0,
@@ -1015,7 +1031,7 @@
 		codecType := FR_AMR;
 	}
 
-	f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw, codecType);
+	f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, codecType);
 
 	/* patch in the LCLS related items, as needed */
 	f_ass_patch_lcls(ass_tpl, exp_ass_cpl);
@@ -1184,7 +1200,7 @@
 			cmd := ts_CRCX(get_next_trans_id(), ep, "sendrecv", call_id);
 			resp := tr_CRCX_ACK;
 		}
-		cmd.sdp := ts_SDP(host_msc, host_mgw, "23", "42",
+		cmd.sdp := ts_SDP(host_msc, host_mgw_rtp_v4, "23", "42",
 			     14000, { int2str(g_media.mgcp_conn[1].rtp_pt) },
 			     { valueof(ts_SDP_ptime(20)) });
 		mgcp_transceive_mgw(cmd, resp);
