aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/bsc
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-11-03 19:03:35 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-11-15 20:06:47 +0100
commit7225fd18e07d28f3df2816d571f7368f3fe6fd7c (patch)
treedd11ec409abe79690be53d8270aff1ed5b344a5f /openbsc/src/bsc
parent1999cf11b9c3667990240bdd94a97ac912fb2a60 (diff)
bsc: Add some basic checks to see if a SCCP connection is established
Diffstat (limited to 'openbsc/src/bsc')
-rw-r--r--openbsc/src/bsc/osmo_bsc_api.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/openbsc/src/bsc/osmo_bsc_api.c b/openbsc/src/bsc/osmo_bsc_api.c
index f4b3148f8..82074e7e1 100644
--- a/openbsc/src/bsc/osmo_bsc_api.c
+++ b/openbsc/src/bsc/osmo_bsc_api.c
@@ -19,14 +19,29 @@
*/
#include <openbsc/osmo_bsc.h>
+#include <openbsc/debug.h>
+
+#define return_when_not_connected(conn) \
+ if (!conn->sccp_con) {\
+ LOGP(DMSC, LOGL_ERROR, "MSC Connection not present.\n"); \
+ return; \
+ }
+
+#define return_when_not_connected_val(conn, ret) \
+ if (!conn->sccp_con) {\
+ LOGP(DMSC, LOGL_ERROR, "MSC Connection not present.\n"); \
+ return ret; \
+ }
static void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
{
+ return_when_not_connected(conn);
}
static void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
struct msgb *msg, uint8_t chosen_encr)
{
+ return_when_not_connected(conn);
}
static int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg,
@@ -37,21 +52,25 @@ static int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg
static void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg)
{
+ return_when_not_connected(conn);
}
static void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause,
uint8_t chosen_channel, uint8_t encr_alg_id,
uint8_t speech_model)
{
+ return_when_not_connected(conn);
}
static void bsc_assign_fail(struct gsm_subscriber_connection *conn,
uint8_t cause, uint8_t *rr_cause)
{
+ return_when_not_connected(conn);
}
static int bsc_clear_request(struct gsm_subscriber_connection *conn, uint32_t cause)
{
+ return_when_not_connected_val(conn, 1);
return 0;
}