asterisk: Introduce test TC_internal_call_momt

Lots of infrastructure added to allow call establishment and hang up
between 2 users connected to Asterisk.

SIP_Tests is updated to accomodate for necessary changes in
SIP_Templates used by Asterisk_Templates.

Change-Id: Ic5827a3e94b06fbc57f6405bf0f0aa6598c5d1fe
Related: SYS#6782
diff --git a/sip/SIP_Tests.ttcn b/sip/SIP_Tests.ttcn
index 2164ef0..95f09e8 100644
--- a/sip/SIP_Tests.ttcn
+++ b/sip/SIP_Tests.ttcn
@@ -267,7 +267,9 @@
 
 	/* OSC <- SIP: A party sends SIP invite for a MT-call into OSC */
 	SIP.send(ts_SIP_INVITE(cp.comp.sip_call_id, cp.comp.sip_url_ext, cp.comp.sip_url_gsm,
-				cp.comp.sip_seq_nr, cp.comp.sip_body));
+			       ts_Via_from(cp.comp.sip_url_ext.addr.nameAddr.addrSpec.hostPort),
+			       ts_Contact_SipAddr(cp.comp.sip_url_ext),
+			       cp.comp.sip_seq_nr, cp.comp.sip_body));
 	if (cp.mncc_with_sdp) {
 		/* We just sent SDP via SIP, now expect the same SDP in MNCC to the MSC */
 		expect_sdp_to_msc := cp.comp.sip_body;
@@ -275,7 +277,7 @@
 
 	/* OSC -> SIP */
 	as_SIP_expect_resp(tr_SIP_Response(cp.comp.sip_call_id, sip_addr_ext, sip_addr_gsm,
-					   tr_Via_from(tr_HostPort(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
+					   tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
 					   *,
 					   "INVITE", 100, ?, "Trying", *));
 
@@ -288,7 +290,9 @@
 		}
 	[] SIP.receive {
 		setverdict(fail, "Received unexpected SIP response");
-		SIP.send(ts_SIP_ACK(cp.comp.sip_call_id, cp.comp.sip_url_ext, cp.comp.sip_url_gsm,
+		SIP.send(ts_SIP_ACK(cp.comp.sip_call_id,
+				    cp.comp.sip_url_ext, cp.comp.sip_url_gsm,
+				    ts_Via_from(cp.comp.sip_url_ext.addr.nameAddr.addrSpec.hostPort),
 				    cp.comp.sip_seq_nr, omit));
 		mtc.stop;
 		}
@@ -331,7 +335,7 @@
 
 	/* 180 Ringing should not contain any SDP. */
 	as_SIP_expect_resp(tr_SIP_Response(cp.comp.sip_call_id, sip_addr_ext, sip_addr_gsm,
-					   tr_Via_from(tr_HostPort(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
+					   tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
 					   *,
 					   "INVITE", 180, ?, "Ringing", omit));
 
@@ -347,14 +351,16 @@
 
 	/* OSC -> SIP: OSC confirms call establishment to SIP side */
 	as_SIP_expect_resp(tr_SIP_Response(cp.comp.sip_call_id, sip_addr_ext, sip_addr_gsm,
-					   tr_Via_from(tr_HostPort(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
+					   tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
 					   contact := ?,
 					   method := "INVITE", status_code := 200,
 					   seq_nr := ?, reason := "OK",
 					   body := expect_sdp_to_sip));
 
 	/* OSC <- SIP: SIP world acknowledges "200 OK" */
-	SIP.send(ts_SIP_ACK(cp.comp.sip_call_id, cp.comp.sip_url_ext, cp.comp.sip_url_gsm,
+	SIP.send(ts_SIP_ACK(cp.comp.sip_call_id,
+			    cp.comp.sip_url_ext, cp.comp.sip_url_gsm,
+			    ts_Via_from(cp.comp.sip_url_ext.addr.nameAddr.addrSpec.hostPort),
 			    cp.comp.sip_seq_nr, omit));
 	/* MSC <- OSC: OSC sends SETUP COMPL to MNCC (which triggers CC CONNECT ACK */
 	MNCC.receive(tr_MNCC_SETUP_COMPL_req(cp.mncc_call_id)) -> value mncc {
@@ -430,7 +436,10 @@
 		 * "a=sendrecv;" */
 		expect_sdp_to_sip := pattern cn_sdp & "*";
 	}
-	sip_req := f_SIP_expect_req(tr_SIP_INVITE(?, sip_addr_gsm, sip_addr_ext, ?, expect_sdp_to_sip));
+	sip_req := f_SIP_expect_req(tr_SIP_INVITE(sip_addr_ext.addr.nameAddr.addrSpec, ?,
+						  sip_addr_gsm, sip_addr_ext,
+						  tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_gsm.addr.nameAddr.addrSpec.hostPort)),
+						  ?, expect_sdp_to_sip));
 	cp.comp.sip_url_gsm.params := sip_req.msgHeader.fromField.fromParams;
 	cp.comp.sip_call_id := sip_req.msgHeader.callId.callid;
 	seq_nr := sip_req.msgHeader.cSeq.seqNumber;
@@ -474,7 +483,12 @@
 	/* MSC -> OSC: CC CONNECT ACK was received from MS */
 	MNCC.send(ts_MNCC_SETUP_COMPL_ind(cp.mncc_call_id));
 	/* OSC -> SIP: Acknowledge the call */
-	SIP.receive(tr_SIP_ACK(cp.comp.sip_call_id, sip_addr_gsm, sip_addr_ext, ?, omit));
+	SIP.receive(tr_SIP_ACK(sip_addr_ext.addr.nameAddr.addrSpec,
+			       cp.comp.sip_call_id,
+			       sip_addr_gsm,
+			       sip_addr_ext,
+			       tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_gsm.addr.nameAddr.addrSpec.hostPort)),
+			       ?, omit));
 }
 
 /* Release call from the mobile side */
@@ -487,7 +501,10 @@
 	MNCC.send(ts_MNCC_DISC_ind(cp.mncc_call_id, ts_MNCC_cause(0)));
 
 	/* OSC -> SIP: Expect BYE from OSC to SIP side */
-	sip_req := f_SIP_expect_req(tr_SIP_BYE(cp.comp.sip_call_id, sip_addr_gsm, sip_addr_ext, ?, *));
+	sip_req := f_SIP_expect_req(tr_SIP_BYE(sip_addr_ext.addr.nameAddr.addrSpec,
+					       cp.comp.sip_call_id, sip_addr_gsm, sip_addr_ext,
+					       tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_gsm.addr.nameAddr.addrSpec.hostPort)),
+					       ?, *));
 	cp.comp.sip_url_gsm.params := sip_req.msgHeader.fromField.fromParams;
 
 	/* OSC <- SIP: Acknowledge the BYE */
@@ -506,6 +523,7 @@
 	var template SipAddr sip_addr_ext := tr_SipAddr_from_val(cp.comp.sip_url_ext);
 	/* OSC <- SIP: SIP-side sends a BYE to OSC */
 	SIP.send(ts_SIP_BYE(cp.comp.sip_call_id, cp.comp.sip_url_ext, cp.comp.sip_url_gsm,
+			    ts_Via_from(cp.comp.sip_url_ext.addr.nameAddr.addrSpec.hostPort),
 			    cp.comp.sip_seq_nr, omit));
 	/* MSC <- OSC: Expect OSC to cause MNCC Disconnect Request */
 	MNCC.receive(tr_MNCC_DISC_req(cp.mncc_call_id));
@@ -513,7 +531,7 @@
 	MNCC.send(ts_MNCC_REL_ind(cp.mncc_call_id, ts_MNCC_cause(0)));
 	/* OSC -> SIP: Confirmation to SIP side */
 	as_SIP_expect_resp(tr_SIP_Response(cp.comp.sip_call_id, sip_addr_ext, sip_addr_gsm,
-					   tr_Via_from(tr_HostPort(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
+					   tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_ext.addr.nameAddr.addrSpec.hostPort)),
 					   *,
 					   "BYE", 200, cp.comp.sip_seq_nr, "OK", omit));
 }
@@ -682,7 +700,10 @@
 	timer T := 10.0;
 	T.start;
 	alt {
-	[] SIP.receive(tr_SIP_INVITE(?, sip_addr_gsm, sip_addr_ext, ?, ?)) {
+	[] SIP.receive(tr_SIP_INVITE(sip_addr_ext.addr.nameAddr.addrSpec, ?,
+				     sip_addr_gsm, sip_addr_ext,
+				     tr_Via_from(f_tr_HostPort_opt_defport(sip_addr_gsm.addr.nameAddr.addrSpec.hostPort)),
+				     ?, ?)) {
 		setverdict(fail, "Received unexpected INVITE");
 		}
 	[] T.timeout {