[MERGED] osmo-ttcn3-hacks[master]: msc: Make TC_lu_and_mo_call succeed with osmo-mg enabled osm...

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sat Jan 27 00:02:10 UTC 2018


Harald Welte has submitted this change and it was merged.

Change subject: msc: Make TC_lu_and_mo_call succeed with osmo-mg enabled osmo-msc
......................................................................


msc: Make TC_lu_and_mo_call succeed with osmo-mg enabled osmo-msc

This is for patch https://gerrit.osmocom.org/#/c/4980 in osmo-msc

Change-Id: Ieec52d5e0da776d35d6a473bd726b368af9d5c66
---
M library/L3_Templates.ttcn
M library/MGCP_Templates.ttcn
M library/MNCC_Types.ttcn
M msc_tests/BSC_ConnectionHandler.ttcn
M msc_tests/MSC_Tests.ttcn
5 files changed, 93 insertions(+), 25 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 549997e..2050e3d 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -585,6 +585,49 @@
 	}
 }
 
+template PDU_ML3_NW_MS tr_ML3_MT_CC_CONNECT(integer tid) := {
+	discriminator := '0011'B,
+	tiOrSkip := {
+		transactionId := {
+			tio := int2bit(tid, 3),
+			tiFlag := '1'B,
+			tIExtension := omit
+		}
+	},
+	msgs := {
+		cc := {
+			connect_NW_MS := {
+				messageType := '000111'B,
+				nsd := '00'B,
+				facility := *,
+				progressIndicator := *,
+				connectedNumber := *,
+				connectedSubAddress := *,
+				user_user := *
+			}
+		}
+	}
+}
+
+template (value) PDU_ML3_MS_NW ts_ML3_MO_CC_CONNECT_ACK(integer tid) := {
+	discriminator := '0011'B,
+	tiOrSkip := {
+		transactionId := {
+			tio := int2bit(tid, 3),
+			tiFlag := '0'B,
+			tIExtension := omit
+		}
+	},
+	msgs := {
+		cc := {
+			connectAck := {
+				messageType := '001111'B,
+				nsd := '00'B
+			}
+		}
+	}
+}
+
 template PDU_ML3_NW_MS tr_ML3_MT_CC_DISC(integer tid) := {
 	discriminator := '0011'B,
 	tiOrSkip := {
diff --git a/library/MGCP_Templates.ttcn b/library/MGCP_Templates.ttcn
index 182868e..7f10bd2 100644
--- a/library/MGCP_Templates.ttcn
+++ b/library/MGCP_Templates.ttcn
@@ -74,8 +74,8 @@
 		sdp := sdp
 	}
 
-	template MgcpCommand tr_CRCX := {
-		line := t_MgcpCmdLine("CRCX", ?, ?),
+	template MgcpCommand tr_CRCX(template MgcpEndpoint ep := ?) := {
+		line := t_MgcpCmdLine("CRCX", ?, ep),
 		params := *,
 		sdp := *
 	}
diff --git a/library/MNCC_Types.ttcn b/library/MNCC_Types.ttcn
index 46159b7..884a7c0 100644
--- a/library/MNCC_Types.ttcn
+++ b/library/MNCC_Types.ttcn
@@ -499,9 +499,9 @@
 	}
 };
 
-/* MT: MSC -> MNCC: Respons to SETUP.req */
-template MNCC_PDU tr_MNCC_SETUP_rsp(template uint32_t call_id := ?, template MNCC_number connected := *,
-				    template charstring imsi := ?) := {
+/* MO: MSC <- MNCC: Respons to SETUP.ind */
+template MNCC_PDU ts_MNCC_SETUP_rsp(uint32_t call_id, charstring imsi := "",
+				    template MNCC_number connected := omit) := {
 	msg_type := MNCC_SETUP_RSP,
 	u := {
 		signal := {	/* See 24.008 9.3.5 */
@@ -513,20 +513,20 @@
 			connected := connected,
 			cause := omit,
 			progress := omit,
-			useruser := *,
-			facility := *,
+			useruser := omit,				/* optional */
+			facility := omit,				/* optional */
 			cccap := omit,
-			ssversion := *,
+			ssversion := omit,				/* optional */
 			clir_sup := 0,
 			clir_inv := 0,
 			signal := omit,
 			keypad := omit,
 			more := 0,
 			notify := 0,
-			emergency := *,
+			emergency := omit,
 			imsi := imsi,
-			lchan_type := ?,
-			lchan_mode := ?
+			lchan_type := 0,
+			lchan_mode := 0
 		}
 	}
 };
@@ -595,9 +595,9 @@
 	}
 }
 
-/* MO: MSC <- MNCC: SETUP_COMPL.req; request to send CONNECT ACK */
-template MNCC_PDU ts_MNCC_SETUP_COMPL_req(uint32_t call_id) :=
-		ts_MNCC_SIMPLE(MNCC_SETUP_COMPL_REQ, call_id); /* See 24.008 9.3.6 */
+/* MT: MSC -> MNCC: SETUP_COMPL.req; request to send CONNECT ACK */
+template MNCC_PDU tr_MNCC_SETUP_COMPL_req(template uint32_t call_id) :=
+		tr_MNCC_SIMPLE(MNCC_SETUP_COMPL_REQ, call_id); /* See 24.008 9.3.6 */
 
 /* MT: MSC -> MNCC: SETUP_COMPL.ind; receipt of CONNECT ACK */
 template MNCC_PDU tr_MNCC_SETUP_COMPL_ind(template uint32_t call_id := ?) :=
diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn
index 8ce1332..75871c5 100644
--- a/msc_tests/BSC_ConnectionHandler.ttcn
+++ b/msc_tests/BSC_ConnectionHandler.ttcn
@@ -285,6 +285,10 @@
 	PortNumber bss_rtp_port optional,		/* BSS Side RTP Port */
 	HostName mss_rtp_ip optional,			/* MSS Side RTP IP */
 	PortNumber mss_rtp_port optional,		/* MSS Side RTP Port */
+	HostName mgw_rtp_ip_bss,			/* BSS-facing MGW RTP IP */
+	PortNumber mgw_rtp_port_bss,			/* BSS-facing MGW RTP Port */
+	HostName mgw_rtp_ip_mss,			/* MSS-facing MGW RTP IP */
+	PortNumber mgw_rtp_port_mss,			/* MSS-facing MGW RTP Port */
 	uint7_t rtp_payload_type,			/* dynamic RTP payload type */
 	charstring rtp_sdp_format,			/* AMR/8000 or the like */
 
@@ -302,10 +306,14 @@
 	bearer_cap := valueof(ts_Bcap_voice),
 	mncc_callref := omit,
 	mncc_bearer_cap := valueof(ts_MNCC_bcap_voice),
-	bss_rtp_ip := "1.1.1.1",
-	bss_rtp_port := 0,//
+	bss_rtp_ip := "9.8.7.6",
+	bss_rtp_port := 9000,
 	mss_rtp_ip := omit,
 	mss_rtp_port := omit,
+	mgw_rtp_ip_bss := "1.1.1.1",
+	mgw_rtp_port_bss := 10000,
+	mgw_rtp_ip_mss := "1.1.1.1",
+	mgw_rtp_port_mss := 11000,
 	rtp_payload_type := 98,
 	rtp_sdp_format := "AMR/8000",
 	mgcp_call_id := omit,
@@ -342,13 +350,14 @@
 		MNCC.send(ts_MNCC_CALL_PROC_req(cpars.mncc_callref, cpars.mncc_bearer_cap));
 		BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id)));
 		};
+	/* First MGCP CRCX (for BSS/RAN side) */
 	[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
 		cpars.mgcp_call_id := f_MgcpCmd_extract_call_id(mgcp_cmd);
 		/* TODO: dynamic EP allocation case */
 		cpars.mgcp_ep := mgcp_cmd.line.ep;
-		var SDP_Message sdp := valueof(ts_SDP(cpars.bss_rtp_ip, cpars.bss_rtp_ip,
+		var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_bss, cpars.mgw_rtp_ip_bss,
 							hex2str(cpars.mgcp_call_id), "42",
-							cpars.bss_rtp_port,
+							cpars.mgw_rtp_port_bss,
 							{ int2str(cpars.rtp_payload_type) },
 							{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
 										cpars.rtp_sdp_format)),
@@ -356,22 +365,37 @@
 		MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_bss, sdp));
 		}
 	}
+	/* Second MGCP CRCX (this time for MSS/CN side) */
+	MGCP.receive(tr_CRCX(cpars.mgcp_ep)) -> value mgcp_cmd {
+		var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_mss, cpars.mgw_rtp_ip_mss,
+							hex2str(cpars.mgcp_call_id), "42",
+							cpars.mgw_rtp_port_mss,
+							{ int2str(cpars.rtp_payload_type) },
+							{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
+										cpars.rtp_sdp_format)),
+							  valueof(ts_SDP_ptime(20)) }));
+		MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_mss, sdp));
+	}
 
 	/* Alerting */
 	MNCC.send(ts_MNCC_ALERT_req(cpars.mncc_callref));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id)));
 
-	alt {
-	/* FIXME: expect AoIP IP/Port to match what we returned in CRCX_ACK above */
-	[] BSSAP.receive(tr_BSSMAP_AssignmentReq) {
+	var BSSMAP_IE_AoIP_TransportLayerAddress tla_ass :=
+		valueof(ts_BSSMAP_IE_AoIP_TLA4(f_inet_addr(cpars.mgw_rtp_ip_bss),cpars.mgw_rtp_port_bss));
+	interleave {
+	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id))) {}
+	/* expect AoIP IP/Port to match what we returned in CRCX_ACK above */
+	[] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla;
 		tla := valueof(ts_BSSMAP_IE_AoIP_TLA4(f_inet_addr(cpars.bss_rtp_ip), cpars.bss_rtp_port));
 		BSSAP.send(ts_BSSMAP_AssignmentComplete(omit, tla));
 		}
 	}
 
-	/* Answer. This causes TCH assignment in case of "late assignment" */
-	MNCC.send(ts_MNCC_SETUP_COMPL_req(cpars.mncc_callref));
+	/* Answer. MNCC_SETUP_RSP -> CONNECT to MS; CONNECT_ACK from MS */
+	MNCC.send(ts_MNCC_SETUP_rsp(cpars.mncc_callref));
+	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CONNECT(cpars.transaction_id)));
+	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT_ACK(cpars.transaction_id)));
 
 	f_sleep(3.0);
 
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 5afa93a..c5ab892 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -866,7 +866,8 @@
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(tid)));
 
 	/* Answer. This causes TCH assignment in case of "late assignment" */
-	MNCC.send(ts_MNCC_SETUP_COMPL_req(mncc.u.signal.callref));
+	//MNCC.send(ts_MNCC_SETUP_COMPL_req(mncc.u.signal.callref));
+	MNCC.send(ts_MNCC_SETUP_rsp(mncc.u.signal.callref));
 
 	f_sleep(3.0);
 

-- 
To view, visit https://gerrit.osmocom.org/6112
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ieec52d5e0da776d35d6a473bd726b368af9d5c66
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list