From 49e65b3aeb463249032ff5f93a63b77f2cb65dbf Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Tue, 10 May 2016 13:37:59 +0200 Subject: msc_compl_l3(): publish in .h, tweak return value Use new libmsc enum values for return val, to avoid dependency on libbsc headers. Make callable from other scopes: publish in osmo_msc.h and remove 'static' in osmo_msc.c Change-Id: If24007445899e9c75553a0dbf843ada3566b3380 --- openbsc/include/openbsc/osmo_msc.h | 8 ++++++++ openbsc/src/libmsc/osmo_msc.c | 22 ++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'openbsc') diff --git a/openbsc/include/openbsc/osmo_msc.h b/openbsc/include/openbsc/osmo_msc.h index c1791777d..16979e7d3 100644 --- a/openbsc/include/openbsc/osmo_msc.h +++ b/openbsc/include/openbsc/osmo_msc.h @@ -50,9 +50,15 @@ static inline const char *subscr_conn_from_name(enum subscr_conn_from val) return get_value_string(subscr_conn_from_names, val); } +enum msc_compl_l3_rc { + MSC_CONN_ACCEPT = 0, + MSC_CONN_REJECT = 1, +}; + void msc_subscr_conn_init(void); struct bsc_api *msc_bsc_api(); + #define subscr_con_get(conn) _subscr_con_get(conn, __BASE_FILE__, __LINE__) struct gsm_subscriber_connection * _subscr_con_get(struct gsm_subscriber_connection *conn, @@ -66,6 +72,8 @@ int msc_create_conn_fsm(struct gsm_subscriber_connection *conn, const char *id); int msc_vlr_alloc(struct gsm_network *net); int msc_vlr_start(struct gsm_network *net); +enum msc_compl_l3_rc msc_compl_l3(struct gsm_subscriber_connection *conn, + struct msgb *msg, uint16_t chosen_channel); void msc_close_connection(struct gsm_subscriber_connection *conn); bool msc_subscr_conn_is_accepted(struct gsm_subscriber_connection *conn); diff --git a/openbsc/src/libmsc/osmo_msc.c b/openbsc/src/libmsc/osmo_msc.c index 597577ea8..61ccbcee2 100644 --- a/openbsc/src/libmsc/osmo_msc.c +++ b/openbsc/src/libmsc/osmo_msc.c @@ -21,6 +21,7 @@ * */ +#include #include #include #include @@ -64,9 +65,10 @@ static bool keep_conn(struct gsm_subscriber_connection *conn) } } -/* Receive a COMPLETE LAYER3 INFO from BSC */ -static int msc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg, - uint16_t chosen_channel) +/* receive a Level 3 Complete message and return MSC_CONN_ACCEPT or + * MSC_CONN_REJECT */ +enum msc_compl_l3_rc msc_compl_l3(struct gsm_subscriber_connection *conn, + struct msgb *msg, uint16_t chosen_channel) { gsm0408_new_conn(conn); gsm0408_dispatch(conn, msg); @@ -76,13 +78,13 @@ static int msc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg if (!keep_conn(conn)) { DEBUGP(DMM, "compl_l3: Discarding conn\n"); - return BSC_API_CONN_POL_REJECT; + return MSC_CONN_REJECT; } DEBUGP(DMM, "compl_l3: Keeping conn\n"); conn->owned_by_msc = true; DEBUGP(DMM, "%s owned_by_msc = true\n", vlr_subscr_name(conn->vsub)); - return BSC_API_CONN_POL_ACCEPT; + return MSC_CONN_ACCEPT; #if 0 /* @@ -91,14 +93,14 @@ static int msc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg * pending transaction or ongoing operation. */ if (conn->silent_call) - return BSC_API_CONN_POL_ACCEPT; - if (conn->sec_operation || conn->anch_operation) - return BSC_API_CONN_POL_ACCEPT; + return MSC_CONN_ACCEPT; + if (conn->loc_operation || conn->sec_operation || conn->anch_operation) + return MSC_CONN_ACCEPT; if (trans_has_conn(conn)) - return BSC_API_CONN_POL_ACCEPT; + return MSC_CONN_ACCEPT; LOGP(DRR, LOGL_INFO, "MSC Complete L3: Rejecting connection.\n"); - return BSC_API_CONN_POL_REJECT; + return MSC_CONN_REJECT; #endif } -- cgit v1.2.3