aboutsummaryrefslogtreecommitdiffstats
path: root/smlc/BSC_ConnectionHandler.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'smlc/BSC_ConnectionHandler.ttcn')
-rw-r--r--smlc/BSC_ConnectionHandler.ttcn95
1 files changed, 95 insertions, 0 deletions
diff --git a/smlc/BSC_ConnectionHandler.ttcn b/smlc/BSC_ConnectionHandler.ttcn
new file mode 100644
index 00000000..bd787c7b
--- /dev/null
+++ b/smlc/BSC_ConnectionHandler.ttcn
@@ -0,0 +1,95 @@
+module BSC_ConnectionHandler {
+
+/* BSC Connection Handler of SMLC Tests in TTCN-3
+ * (C) 2020 sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+import from Misc_Helpers all;
+import from General_Types all;
+import from Osmocom_Types all;
+import from SCCPasp_Types all;
+import from BSSAP_Types all;
+import from BSSAP_CodecPort all;
+import from RAN_Emulation all;
+import from BSSMAP_Templates all;
+import from BSSAP_LE_Emulation all;
+import from BSSAP_LE_Types all;
+import from BSSMAP_LE_Templates all;
+
+import from TELNETasp_PortType all;
+import from Osmocom_VTY_Functions all;
+
+/* this component represents a single subscriber connection at the SMLC. */
+type component BSC_ConnHdlr extends BSSAP_LE_ConnHdlr {
+ /* SCCP Connecction Identifier for the underlying SCCP connection */
+ var integer g_sccp_conn_id;
+
+ port TELNETasp_PT SMLCVTY;
+
+ var TestHdlrParams g_pars;
+
+ var charstring host_bsc := "127.0.0.4";
+
+ var boolean g_vty_initialized := false;
+}
+
+function f_BscConnHdlr_init_vty() runs on BSC_ConnHdlr {
+ if (not g_vty_initialized) {
+ map(self:SMLCVTY, system:SMLCVTY);
+ f_vty_set_prompts(SMLCVTY);
+ f_vty_transceive(SMLCVTY, "enable");
+ g_vty_initialized := true;
+ }
+}
+
+/* initialize all parameters */
+function f_BscConnHdlr_init() runs on BSC_ConnHdlr {
+ f_BscConnHdlr_init_vty();
+}
+
+/* Callback function from general BSSAP_LE_Emulation whenever a connectionless
+ * BSSAP_LE message arrives. Can return a PDU_BSSAP_LE that should be sent in return */
+private function BSSAP_LE_UnitdataCallback(PDU_BSSAP_LE bssap)
+runs on BSSAP_LE_Emulation_CT return template PDU_BSSAP_LE {
+ var template PDU_BSSAP_LE resp := omit;
+
+ /* answer all RESET with a RESET ACK */
+ if (match(bssap, tr_BSSMAP_LE_Reset)) {
+ resp := ts_BSSMAP_LE_ResetAck;
+ }
+
+ return resp;
+}
+
+const BssapLeOps BSC_BssapLeOps := {
+ create_cb := refers(BSSAP_LE_Emulation.ExpectedCreateCallback),
+ unitdata_cb := refers(BSSAP_LE_UnitdataCallback),
+ decode_dtap := false,
+ role_ms := false,
+ sccp_addr_local := omit,
+ sccp_addr_peer := omit
+}
+type record TestHdlrParams {
+ hexstring imsi,
+ integer bssap_le_idx,
+ SCCP_PAR_Address sccp_addr_bsc optional,
+ SCCP_PAR_Address sccp_addr_smlc optional
+};
+
+/* Note: Do not use valueof() to get a value of this template, use
+ * f_gen_test_hdlr_pars() instead in order to get a configuration that is
+ * matched to the current test situation (aoip vs. sccplite) */
+template (value) TestHdlrParams t_def_TestHdlrPars := {
+ imsi := '001019876543210'H,
+ bssap_le_idx := 0,
+ sccp_addr_bsc := omit,
+ sccp_addr_smlc := omit
+}
+
+}