diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 5bcd40c..67411ff 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -230,8 +230,8 @@
 	integer got_dlcx_count,
 	MgcpCallId mgcp_call_id optional,
 	MgcpEndpoint mgcp_ep,
-	CrcxResponse mgw_conn_1,
-	CrcxResponse mgw_conn_2,
+	CrcxResponse mgw_conn_ran,
+	CrcxResponse mgw_conn_cn,
 	uint7_t rtp_payload_type,
 	charstring rtp_sdp_format,
 	HostName hnb_rtp_ip,
@@ -247,13 +247,13 @@
 	got_dlcx_count := 0,
 	mgcp_call_id := omit,
 	mgcp_ep := "rtpbridge/1@mgw",
-	mgw_conn_1 := {
+	mgw_conn_ran := {
 		resp := 1,
 		mgw_rtp_ip := "127.1.2.1",
 		mgw_rtp_port := 10000,
 		mgcp_connection_id := '11111'H
 	},
-	mgw_conn_2 := {
+	mgw_conn_cn := {
 		resp := 1,
 		mgw_rtp_ip := "127.1.2.2",
 		mgw_rtp_port := 20000,
@@ -1131,9 +1131,9 @@
  * Return true when an OK reply was sent, false otherwise.
  * Count occurrence of Osmux, include Osmux parameters in the reply if necessary. */
 function f_handle_crcx(inout MgcpParameters pars, MgcpCommand mgcp_cmd) return template MgcpResponse {
-	var CrcxResponse conn := pars.mgw_conn_1;
+	var CrcxResponse conn := pars.mgw_conn_ran;
 	if (pars.got_crcx_count > 0) {
-		conn := pars.mgw_conn_2;
+		conn := pars.mgw_conn_cn;
 	}
 	pars.got_crcx_count := pars.got_crcx_count + 1;
 
@@ -1252,7 +1252,7 @@
 	T.stop;
 
 	/* Expect RAB Assignment Request with IP/port from CRCX ACK via Iuh */
-	rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_1.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_1.mgw_rtp_port));
+	rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_ran.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_ran.mgw_rtp_port));
 	tx := valueof(ts_RANAP_RabAssReq(rab_sml));
 
 	f_rua_expect(tx);
@@ -1273,9 +1273,9 @@
 	[] MGCP.receive(tr_MDCX(tr_SDP(pars.hnb_rtp_ip, pars.hnb_rtp_port))) -> value mgcp_cmd {
 		log("MDCX1", mgcp_cmd);
 		/* Verify SDP of MDCX */
-		var SDP_Message sdp := valueof(ts_SDP(pars.mgw_conn_1.mgw_rtp_ip, pars.mgw_conn_1.mgw_rtp_ip, hex2str(pars.mgcp_call_id), "42", pars.mgw_conn_1.mgw_rtp_port,
+		var SDP_Message sdp := valueof(ts_SDP(pars.mgw_conn_ran.mgw_rtp_ip, pars.mgw_conn_ran.mgw_rtp_ip, hex2str(pars.mgcp_call_id), "42", pars.mgw_conn_ran.mgw_rtp_port,
 			{ int2str(pars.rtp_payload_type) }, { valueof(ts_SDP_rtpmap(pars.rtp_payload_type, pars.rtp_sdp_format)), valueof(ts_SDP_ptime(20)) } ));
-		var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgw_conn_1.mgcp_connection_id, sdp);
+		var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgw_conn_ran.mgcp_connection_id, sdp);
 		MGCP.send(valueof(mgcp_rsp));
 		}
 	/* Handle CRCX for second leg of endpoint, answer with IP/port */
@@ -1288,7 +1288,7 @@
 	}
 
 	/* Expect RAB Assignment Response with IP/port from second CRCX ACK */
-	rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_2.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_2.mgw_rtp_port));
+	rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_cn.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_cn.mgw_rtp_port));
 	tx := valueof(ts_RANAP_RabAssResp(rab_smdl));
 
 	f_bssap_expect(tx);
