blob: a1baeb4e92a910290db2313072182941ef055ea2 [file] [log] [blame]
Pau Espin Pedrolac8a0542024-04-19 17:30:57 +02001/* Component implementing a IMS server towards Asterisk's IMS UE
2 * (C) 2024 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
3 * Author: Pau Espin Pedrol <pespin@sysmocom.de>
4 * All rights reserved.
5 *
6 * Released under the terms of GNU General Public License, Version 2 or
7 * (at your option) any later version.
8 *
9 * SPDX-License-Identifier: GPL-2.0-or-later
10 */
11module IMS_ConnectionHandler {
12
13import from TCCOpenSecurity_Functions all;
14import from General_Types all;
15import from Osmocom_Types all;
16import from Native_Functions all;
17import from Misc_Helpers all;
18
19import from SDP_Types all;
20import from SDP_Templates all;
21
22import from SIP_Emulation all;
23import from SIPmsg_Types all;
24import from SIP_Templates all;
25
26type port IMSCoord_PT message
27{
28 inout charstring;
29} with { extension "internal" };
30
31const charstring IMS_COORD_CMD_REGISTERED := "COORD_CMD_REGISTERED";
32
33type component IMS_ConnHdlr extends SIP_ConnHdlr {
34 var charstring g_name;
35 var IMS_ConnHdlrPars g_pars;
36 timer g_Tguard;
37 var PDU_SIP_Request g_rx_sip_req;
38 var PDU_SIP_Response g_rx_sip_resp;
39
40 port IMSCoord_PT COORD;
41}
42type record of IMS_ConnHdlr IMS_ConnHdlrList;
43
44type record IMS_ConnHdlrPars {
45 float t_guard,
46 charstring remote_sip_host,
47 uint16_t remote_sip_port,
48 charstring user,
49 charstring display_name,
50 charstring password,
51 SipUrl registrar_sip_req_uri,
52 SipAddr registrar_sip_record,
53 CallidString registrar_sip_call_id,
54 integer registrar_sip_seq_nr,
55 Via local_via,
56 SipUrl local_sip_url_ext,
57 SipAddr local_sip_record,
58 Contact local_contact,
59 IMS_CallPars cp optional
60}
61type record of IMS_ConnHdlrPars IMS_ConnHdlrParsList;
62
63type record IMS_CallParsMT {
64 /* Whether to wait for COORD.receive(COORD_CMD_PICKUP) before accepting the call. */
65 boolean wait_coord_cmd_pickup,
66 /* Whether to expect CANCEL instead of ACK as answer to our OK */
67 boolean exp_cancel
68}
69
70type record IMS_CallPars {
71 SipAddr calling optional,
72 SipAddr called optional,
73
74 SipAddr from_addr optional,
75 SipAddr to_addr optional,
76
77 CallidString sip_call_id,
78 integer sip_seq_nr,
79 charstring sip_body optional,
80
81 charstring local_rtp_addr,
82 uint16_t local_rtp_port,
83
84 SDP_Message peer_sdp optional,
85 IMS_CallParsMT mt
86}
87
88}