diff options
Diffstat (limited to 'src/libmsc/osmo_msc.c')
-rw-r--r-- | src/libmsc/osmo_msc.c | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c index 1a1ba3ce4..9828da164 100644 --- a/src/libmsc/osmo_msc.c +++ b/src/libmsc/osmo_msc.c @@ -219,117 +219,6 @@ int ran_conn_clear_request(struct ran_conn *conn, uint32_t cause) return 1; } -static const char *used_ref_counts_str(struct ran_conn *conn) -{ - static char buf[256]; - int bit_nr; - char *pos = buf; - *pos = '\0'; - - if (conn->use_tokens < 0) - return "invalid"; - -#define APPEND_STR(fmt, args...) do { \ - int remain = sizeof(buf) - (pos - buf) - 1; \ - int l = -1; \ - if (remain > 0) \ - l = snprintf(pos, remain, "%s" fmt, (pos == buf? "" : ","), ##args); \ - if (l < 0 || l > remain) { \ - buf[sizeof(buf) - 1] = '\0'; \ - return buf; \ - } \ - pos += l; \ - } while(0) - - for (bit_nr = 0; (1 << bit_nr) <= conn->use_tokens; bit_nr++) { - if (conn->use_tokens & (1 << bit_nr)) { - APPEND_STR("%s", get_value_string(ran_conn_use_names, bit_nr)); - } - } - return buf; -#undef APPEND_STR -} - -/* increment the ref-count. Needs to be called by every user */ -struct ran_conn *_ran_conn_get(struct ran_conn *conn, enum ran_conn_use balance_token, - const char *file, int line) -{ - OSMO_ASSERT(conn); - - if (balance_token != RAN_CONN_USE_UNTRACKED) { - uint32_t flag = 1 << balance_token; - OSMO_ASSERT(balance_token < 32); - if (conn->use_tokens & flag) - LOGPSRC(DREF, LOGL_ERROR, file, line, - "%s: MSC conn use error: using an already used token: %s\n", - vlr_subscr_name(conn->vsub), - ran_conn_use_name(balance_token)); - conn->use_tokens |= flag; - } - - conn->use_count++; - LOGPSRC(DREF, LOGL_DEBUG, file, line, - "%s: MSC conn use + %s == %u (0x%x: %s)\n", - vlr_subscr_name(conn->vsub), ran_conn_use_name(balance_token), - conn->use_count, conn->use_tokens, used_ref_counts_str(conn)); - - return conn; -} - -/* decrement the ref-count. Once it reaches zero, we release */ -void _ran_conn_put(struct ran_conn *conn, enum ran_conn_use balance_token, - const char *file, int line) -{ - OSMO_ASSERT(conn); - - if (balance_token != RAN_CONN_USE_UNTRACKED) { - uint32_t flag = 1 << balance_token; - OSMO_ASSERT(balance_token < 32); - if (!(conn->use_tokens & flag)) - LOGPSRC(DREF, LOGL_ERROR, file, line, - "%s: MSC conn use error: freeing an unused token: %s\n", - vlr_subscr_name(conn->vsub), - ran_conn_use_name(balance_token)); - conn->use_tokens &= ~flag; - } - - if (conn->use_count == 0) { - LOGPSRC(DREF, LOGL_ERROR, file, line, - "%s: MSC conn use - %s failed: is already 0\n", - vlr_subscr_name(conn->vsub), - ran_conn_use_name(balance_token)); - return; - } - - conn->use_count--; - LOGPSRC(DREF, LOGL_DEBUG, file, line, - "%s: MSC conn use - %s == %u (0x%x: %s)\n", - vlr_subscr_name(conn->vsub), ran_conn_use_name(balance_token), - conn->use_count, conn->use_tokens, used_ref_counts_str(conn)); - - if (conn->use_count == 0) - osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_UNUSED, NULL); -} - -bool ran_conn_used_by(struct ran_conn *conn, enum ran_conn_use token) -{ - return conn && (conn->use_tokens & (1 << token)); -} - -const struct value_string ran_conn_use_names[] = { - {RAN_CONN_USE_UNTRACKED, "UNTRACKED"}, - {RAN_CONN_USE_COMPL_L3, "compl_l3"}, - {RAN_CONN_USE_DTAP, "dtap"}, - {RAN_CONN_USE_AUTH_CIPH, "auth+ciph"}, - {RAN_CONN_USE_CM_SERVICE, "cm_service"}, - {RAN_CONN_USE_TRANS_CC, "trans_cc"}, - {RAN_CONN_USE_TRANS_SMS, "trans_sms"}, - {RAN_CONN_USE_TRANS_NC_SS, "trans_nc_ss"}, - {RAN_CONN_USE_SILENT_CALL, "silent_call"}, - {RAN_CONN_USE_RELEASE, "release"}, - {0, NULL}, -}; - void msc_stop_paging(struct vlr_subscr *vsub) { DEBUGP(DPAG, "Paging can stop for %s\n", vlr_subscr_name(vsub)); |