hnbgw: Allow announcing a different mgw-local IuUP address after MDCX

This will allow emulating an MGW deciding to change its local IuUP IP
address due to received remote address in MGCP MDCX, and announce the
changed address back in MGCP MDCX. A test validating this scenario
against osmo-hnbgw will be added in a follow-up patch.

Related: SYS#6657
Change-Id: Ia724e0363a8bab56f5d31e7f7f7a127af584f935
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 7f2d6c0..d4073d1 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -222,6 +222,8 @@
 type record MgwResponse {
 	integer resp,
 	HostName mgw_rtp_ip,
+	/* if set, used after first received MDCX: */
+	HostName mgw_rtp_ip_mdcx optional,
 	PortNumber mgw_rtp_port,
 	MgcpConnectionId mgcp_connection_id
 }
@@ -250,12 +252,14 @@
 	mgw_conn_ran := {
 		resp := 1,
 		mgw_rtp_ip := "127.1.2.1",
+		mgw_rtp_ip_mdcx := omit,
 		mgw_rtp_port := 10000,
 		mgcp_connection_id := '11111'H
 	},
 	mgw_conn_cn := {
 		resp := 1,
 		mgw_rtp_ip := "127.1.2.2",
+		mgw_rtp_ip_mdcx := omit,
 		mgw_rtp_port := 20000,
 		mgcp_connection_id := '22222'H
 	},
@@ -1271,9 +1275,16 @@
 	interleave {
 	/* Expect MDCX with IP/port from RAB Assignment Response */
 	[] MGCP.receive(tr_MDCX(tr_SDP(pars.hnb_rtp_ip, pars.hnb_rtp_port))) -> value mgcp_cmd {
+		var HostName mgw_rtp_ip;
 		log("MDCX1", mgcp_cmd);
+		if (ispresent(pars.mgw_conn_ran.mgw_rtp_ip_mdcx)) {
+			mgw_rtp_ip := pars.mgw_conn_ran.mgw_rtp_ip_mdcx;
+		} else {
+			mgw_rtp_ip := pars.mgw_conn_ran.mgw_rtp_ip;
+		}
+
 		/* Verify SDP of MDCX */
-		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,
+		var SDP_Message sdp := valueof(ts_SDP(mgw_rtp_ip, 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_ran.mgcp_connection_id, sdp);
 		MGCP.send(valueof(mgcp_rsp));