blob: 569634d55104e187a914c5dd9eb88e286e302547 [file] [log] [blame]
Holger Hans Peter Freyther43b09092010-06-15 11:52:51 +08001/* main MSC management code... */
2
3/*
4 * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org>
5 * (C) 2010 by On Waves
6 *
7 * All Rights Reserved
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 *
23 */
24
25#include <openbsc/bsc_api.h>
26#include <openbsc/debug.h>
27
Holger Hans Peter Freyther6a3d7652010-06-15 12:03:10 +080028#include <openbsc/gsm_04_11.h>
29
Holger Hans Peter Freyther43b09092010-06-15 11:52:51 +080030static void msc_sapi_n_reject(struct gsm_subscriber_connection* conn, int dlci)
31{
Holger Hans Peter Freyther6a3d7652010-06-15 12:03:10 +080032 int sapi = dlci & 0x7;
33
34 if (sapi == UM_SAPI_SMS)
35 gsm411_sapi_n_reject(conn);
Holger Hans Peter Freyther43b09092010-06-15 11:52:51 +080036}
37
Holger Hans Peter Freytherf6fb3ef2010-06-15 13:16:52 +080038static void msc_clear_request(struct gsm_subscriber_connection* conn, uint32_t cause)
39{
40 gsm0408_clear_request(conn, cause);
41}
42
Holger Hans Peter Freyther97643312010-06-17 16:41:25 +080043static int msc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg,
44 uint16_t chosen_channel)
45{
46 gsm0408_dispatch(conn, msg);
47
48 /* TODO: do better */
49 return BSC_API_CONN_POL_ACCEPT;
50}
51
52static void msc_dtap(struct gsm_subscriber_connection *conn, struct msgb *msg)
53{
54 gsm0408_dispatch(conn, msg);
55}
56
Holger Hans Peter Freyther43b09092010-06-15 11:52:51 +080057static struct bsc_api msc_handler = {
58 .sapi_n_reject = msc_sapi_n_reject,
Holger Hans Peter Freytherf6fb3ef2010-06-15 13:16:52 +080059 .clear_request = msc_clear_request,
Holger Hans Peter Freyther97643312010-06-17 16:41:25 +080060 .compl_l3 = msc_compl_l3,
61 .dtap = msc_dtap,
Holger Hans Peter Freyther43b09092010-06-15 11:52:51 +080062};
63
64struct bsc_api *msc_bsc_api() {
65 return &msc_handler;
66}