blob: 5ebea507946e943ef3968f577bc95164723d7c71 [file] [log] [blame]
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +08001/* OpenBSC BSC code */
2
3#ifndef OSMO_BSC_H
4#define OSMO_BSC_H
5
6#include "bsc_api.h"
Holger Hans Peter Freytherd6332802015-04-05 19:46:20 +02007#include "bsc_msg_filter.h"
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +08008
Holger Hans Peter Freytherd2361d92012-12-03 15:32:54 +01009#define BSS_SEND_USSD 1
10
Jacob Erlbeck56595f82013-09-11 10:46:55 +020011enum bsc_con {
12 BSC_CON_SUCCESS,
13 BSC_CON_REJECT_NO_LINK,
14 BSC_CON_REJECT_RF_GRACE,
15 BSC_CON_NO_MEM,
16};
17
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010018struct sccp_connection;
Neels Hofmeyra369e242017-02-23 21:57:23 +010019struct bsc_msc_data;
Holger Hans Peter Freyther4cdb0502011-06-04 14:51:51 +020020struct bsc_msc_connection;
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010021
Holger Hans Peter Freytherd65305f2010-11-05 11:31:08 +010022struct osmo_bsc_sccp_con {
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010023 struct llist_head entry;
24
Holger Hans Peter Freytherfae3c652010-11-10 09:44:34 +010025 int ciphering_handled;
Holger Hans Peter Freyther93dfa242014-08-08 21:06:30 +020026
27 /* for audio handling */
28 uint16_t cic;
Philipp Maierfbf66102017-04-09 12:32:51 +020029 uint32_t rtp_ip;
Holger Hans Peter Freyther50c579b2010-11-10 10:07:30 +010030 int rtp_port;
Holger Hans Peter Freytherfae3c652010-11-10 09:44:34 +010031
Holger Hans Peter Freyther56cb7292014-09-02 17:28:40 +020032 /* for advanced ping/pong */
33 int send_ping;
34
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010035 /* SCCP connection realted */
36 struct sccp_connection *sccp;
Neels Hofmeyra369e242017-02-23 21:57:23 +010037 struct bsc_msc_data *msc;
Pablo Neira Ayusobf540cb2011-05-06 12:11:06 +020038 struct osmo_timer_list sccp_it_timeout;
39 struct osmo_timer_list sccp_cc_timeout;
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010040
Holger Hans Peter Freytherb4e72f82010-11-15 10:31:53 +010041 struct llist_head sccp_queue;
42 unsigned int sccp_queue_size;
43
Holger Hans Peter Freyther7e901082010-11-06 20:15:17 +010044 struct gsm_subscriber_connection *conn;
Holger Hans Peter Freytherd65305f2010-11-05 11:31:08 +010045 uint8_t new_subscriber;
Holger Hans Peter Freytherd6332802015-04-05 19:46:20 +020046
47 struct bsc_filter_state filter_state;
Philipp Maierfbf66102017-04-09 12:32:51 +020048
49 /* Sigtran connection ID */
50 int conn_id;
Holger Hans Peter Freytherd65305f2010-11-05 11:31:08 +010051};
52
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +080053struct bsc_api *osmo_bsc_api();
54
Holger Hans Peter Freyther863a55d2010-11-10 09:31:41 +010055int bsc_queue_for_msc(struct osmo_bsc_sccp_con *conn, struct msgb *msg);
Holger Hans Peter Freyther7e901082010-11-06 20:15:17 +010056int bsc_open_connection(struct osmo_bsc_sccp_con *sccp, struct msgb *msg);
Jacob Erlbeck56595f82013-09-11 10:46:55 +020057enum bsc_con bsc_create_new_connection(struct gsm_subscriber_connection *conn,
Neels Hofmeyra369e242017-02-23 21:57:23 +010058 struct bsc_msc_data *msc, int send_ping);
Holger Hans Peter Freyther7e901082010-11-06 20:15:17 +010059int bsc_delete_connection(struct osmo_bsc_sccp_con *sccp);
Holger Hans Peter Freyther45825862010-11-04 11:48:49 +010060
Neels Hofmeyra369e242017-02-23 21:57:23 +010061struct bsc_msc_data *bsc_find_msc(struct gsm_subscriber_connection *conn, struct msgb *);
Holger Hans Peter Freyther5bb874d2010-11-05 11:21:18 +010062int bsc_scan_bts_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);
Holger Hans Peter Freythera54732d2010-11-05 18:11:19 +010063int bsc_scan_msc_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);
Holger Hans Peter Freytherd2361d92012-12-03 15:32:54 +010064int bsc_send_welcome_ussd(struct gsm_subscriber_connection *conn);
Holger Hans Peter Freyther5bb874d2010-11-05 11:21:18 +010065
Neels Hofmeyra369e242017-02-23 21:57:23 +010066int bsc_handle_udt(struct bsc_msc_data *msc, struct msgb *msg, unsigned int length);
Philipp Maierfbf66102017-04-09 12:32:51 +020067int bsc_handle_dt(struct osmo_bsc_sccp_con *conn, struct msgb *msg, unsigned int len);
Holger Hans Peter Freyther3485feb2010-11-09 23:28:33 +010068
Daniel Willmann5e95f452011-08-05 12:22:35 +020069int bsc_ctrl_cmds_install();
Holger Hans Peter Freyther00f4cc22010-11-06 23:50:06 +010070
Holger Hans Peter Freyther98258db2014-02-22 10:30:32 +010071void bsc_gen_location_state_trap(struct gsm_bts *bts);
72
Holger Hans Peter Freytherec0cb7c2015-04-05 20:53:42 +020073struct llist_head *bsc_access_lists(void);
74
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +080075#endif