bsc-nat: Introduce Osmux test
Depends: openbsc.git Iadc004064a5a237c93009f242cb943ebc4d2d7e6
Change-Id: I35f206aab713ccf0a4e074872e291c349c903b9d
diff --git a/bsc-nat/BSC_MS_ConnectionHandler.ttcn b/bsc-nat/BSC_MS_ConnectionHandler.ttcn
index 7777f03..f9f4db0 100644
--- a/bsc-nat/BSC_MS_ConnectionHandler.ttcn
+++ b/bsc-nat/BSC_MS_ConnectionHandler.ttcn
@@ -63,6 +63,7 @@
decode_dtap := false,
role_ms := true,
protocol := RAN_PROTOCOL_BSSAP,
+ /* Always false. We don't want to enable Osmux signalling in SCCPLite messages: */
use_osmux := false,
sccp_addr_local := omit,
sccp_addr_peer := omit
@@ -89,11 +90,12 @@
}
/* main function processing various incoming events */
-function main(SCCP_PAR_Address sccp_addr_own, SCCP_PAR_Address sccp_addr_remote)
+function main(SCCP_PAR_Address sccp_addr_own, SCCP_PAR_Address sccp_addr_remote, boolean use_osmux)
runs on BSC_MS_ConnHdlr {
var PDU_BSSAP bssap;
var MgcpCommand mgcp_cmd;
- var MgcpResponse mgcp_resp;
+ var template MgcpResponse mgcp_resp;
+ var MgcpOsmuxCID osmux_cid;
log("Starting main of BSC_MS_ConnHdlr");
@@ -127,7 +129,19 @@
valueof(ts_SDP_ptime(20)) }));
/* respond with CRCX_ACK */
g_state := BSC_STATE_WAIT_MDCX;
- BSSAP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp));
+
+ if (use_osmux != f_MgcpCmd_contains_par(mgcp_cmd, "X-OSMUX")) {
+ setverdict(fail, log2str("Received Osmux CID presence doesn't match presence expectancy (", use_osmux, ")"));
+ self.stop;
+ }
+
+ if (use_osmux) {
+ osmux_cid := f_MgcpCmd_extract_osmux_cid(mgcp_cmd);
+ mgcp_resp := ts_CRCX_ACK_osmux(mgcp_cmd.line.trans_id, g_mgcp_conn_id, osmux_cid, g_sdp);
+ } else {
+ mgcp_resp := ts_CRCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp);
+ }
+ BSSAP.send(valueof(mgcp_resp));
}
/* MDCX -> OK */