aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-06-26 18:27:25 +0700
committerHarald Welte <laforge@gnumonks.org>2018-07-30 21:28:01 +0200
commitad64e2a8c71ae990bf54bb45de91d14482c110ca (patch)
tree63c650175aeb00796560e868ed6d0bcbf5e5ad7b /src
parent8e25cc5298422f068e814ce0fab1221f72a23595 (diff)
libmsc/gsm_09_11.c: introduce counter for active sessions
Diffstat (limited to 'src')
-rw-r--r--src/libmsc/gsm_09_11.c9
-rw-r--r--src/libmsc/osmo_msc.c1
2 files changed, 10 insertions, 0 deletions
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;