blob: 1d216ac2535bf8ac7d8917987cd5926125ab3197 [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"
7
Holger Hans Peter Freytherd2361d92012-12-03 15:32:54 +01008#define BSS_SEND_USSD 1
9
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010010struct sccp_connection;
Holger Hans Peter Freyther4cdb0502011-06-04 14:51:51 +020011struct osmo_msc_data;
12struct bsc_msc_connection;
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010013
Holger Hans Peter Freytherd65305f2010-11-05 11:31:08 +010014struct osmo_bsc_sccp_con {
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010015 struct llist_head entry;
16
Holger Hans Peter Freytherfae3c652010-11-10 09:44:34 +010017 int ciphering_handled;
Holger Hans Peter Freyther50c579b2010-11-10 10:07:30 +010018 int rtp_port;
Holger Hans Peter Freytherfae3c652010-11-10 09:44:34 +010019
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010020 /* SCCP connection realted */
21 struct sccp_connection *sccp;
Holger Hans Peter Freyther4cdb0502011-06-04 14:51:51 +020022 struct osmo_msc_data *msc;
Pablo Neira Ayusobf540cb2011-05-06 12:11:06 +020023 struct osmo_timer_list sccp_it_timeout;
24 struct osmo_timer_list sccp_cc_timeout;
Holger Hans Peter Freytherb8781d22010-11-06 18:08:43 +010025
Holger Hans Peter Freytherb4e72f82010-11-15 10:31:53 +010026 struct llist_head sccp_queue;
27 unsigned int sccp_queue_size;
28
Holger Hans Peter Freyther7e901082010-11-06 20:15:17 +010029 struct gsm_subscriber_connection *conn;
Holger Hans Peter Freytherd65305f2010-11-05 11:31:08 +010030 uint8_t new_subscriber;
31};
32
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +080033struct bsc_api *osmo_bsc_api();
34
Holger Hans Peter Freyther863a55d2010-11-10 09:31:41 +010035int bsc_queue_for_msc(struct osmo_bsc_sccp_con *conn, struct msgb *msg);
Holger Hans Peter Freyther7e901082010-11-06 20:15:17 +010036int bsc_open_connection(struct osmo_bsc_sccp_con *sccp, struct msgb *msg);
Holger Hans Peter Freyther354c87c2011-06-07 11:40:20 +020037int bsc_create_new_connection(struct gsm_subscriber_connection *conn,
38 struct osmo_msc_data *msc);
Holger Hans Peter Freyther7e901082010-11-06 20:15:17 +010039int bsc_delete_connection(struct osmo_bsc_sccp_con *sccp);
Holger Hans Peter Freyther45825862010-11-04 11:48:49 +010040
Holger Hans Peter Freyther076af1c2011-06-07 19:57:02 +020041struct osmo_msc_data *bsc_find_msc(struct gsm_subscriber_connection *conn, struct msgb *);
Holger Hans Peter Freyther5bb874d2010-11-05 11:21:18 +010042int bsc_scan_bts_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);
Holger Hans Peter Freythera54732d2010-11-05 18:11:19 +010043int bsc_scan_msc_msg(struct gsm_subscriber_connection *conn, struct msgb *msg);
Holger Hans Peter Freytherd2361d92012-12-03 15:32:54 +010044int bsc_send_welcome_ussd(struct gsm_subscriber_connection *conn);
Holger Hans Peter Freyther5bb874d2010-11-05 11:21:18 +010045
Holger Hans Peter Freyther644b0bf2011-06-08 15:52:07 +020046int bsc_handle_udt(struct osmo_msc_data *msc, struct msgb *msg, unsigned int length);
Holger Hans Peter Freyther3485feb2010-11-09 23:28:33 +010047int bsc_handle_dt1(struct osmo_bsc_sccp_con *conn, struct msgb *msg, unsigned int len);
48
Daniel Willmann5e95f452011-08-05 12:22:35 +020049int bsc_ctrl_cmds_install();
Holger Hans Peter Freyther00f4cc22010-11-06 23:50:06 +010050
Holger Hans Peter Freyther4f448c92010-07-05 16:02:04 +080051#endif