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.orgReview at https://gerrit.osmocom.org/6112 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(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/12/6112/1 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: newchange Gerrit-Change-Id: Ieec52d5e0da776d35d6a473bd726b368af9d5c66 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org>