aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-06-26 18:27:25 +0700
committerHarald Welte <laforge@gnumonks.org>2018-07-22 10:55:21 +0200
commit6afef893e17bce67e4d4119acd34d480ed03ba77 (patch)
treeb43bafbb4eea9d9a04e1ac49dbafe5a41374217b
parent2b2829fa70d6ea9eb5d69ce818764316b56b3b3e (diff)
libmsc/gsm_09_11.c: introduce counter for active sessionslaforge/ussd
-rw-r--r--include/osmocom/msc/gsm_data.h1
-rw-r--r--src/libmsc/gsm_09_11.c9
-rw-r--r--src/libmsc/osmo_msc.c1
3 files changed, 11 insertions, 0 deletions
diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 3af619dca..c79adde59 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -276,6 +276,7 @@ struct gsm_network {
struct rate_ctr_group *msc_ctrs;
struct osmo_counter *active_calls;
+ struct osmo_counter *active_nc_ss;
/* layer 4 */
struct mncc_sock_state *mncc_state;
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index 2c5afb32f..9b0a9e446 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -107,6 +107,9 @@ int gsm0911_rcv_nc_ss(struct gsm_subscriber_connection *conn, struct msgb *msg)
return -ENOMEM;
}
+ /* Count active NC SS/USSD sessions */
+ osmo_counter_inc(conn->network->active_nc_ss);
+
trans->conn = msc_subscr_conn_get(conn, MSC_CONN_USE_TRANS_NC_SS);
trans->dlci = OMSC_LINKID_CB(msg);
cm_service_request_concludes(conn, msg);
@@ -300,6 +303,9 @@ static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
return NULL;
}
+ /* Count active NC SS/USSD sessions */
+ osmo_counter_inc(net->active_nc_ss);
+
/* Assign transaction ID */
tid = trans_assign_trans_id(trans->net,
trans->vsub, GSM48_PDISC_NC_SS, 0);
@@ -365,6 +371,9 @@ void _gsm911_nc_ss_trans_free(struct gsm_trans *trans)
*/
if (trans->ss.msg != NULL)
msgb_free(trans->ss.msg);
+
+ /* One session less */
+ osmo_counter_dec(trans->net->active_nc_ss);
}
int gsm0911_gsup_handler(struct vlr_subscr *vsub,
diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c
index 62a449f78..a6618c093 100644
--- a/src/libmsc/osmo_msc.c
+++ b/src/libmsc/osmo_msc.c
@@ -67,6 +67,7 @@ struct gsm_network *gsm_network_init(void *ctx, mncc_recv_cb_t mncc_recv)
return NULL;
}
net->active_calls = osmo_counter_alloc("msc.active_calls");
+ net->active_nc_ss = osmo_counter_alloc("msc.active_nc_ss");
net->mncc_recv = mncc_recv;