| 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 |
| } |
| |
| } |