libmsc/bsc: split rate counters into bsc and msc group

Tweaked-By: Neels Hofmeyr <nhofmeyr@sysmocom.de>
Change-Id: I7361033cd1eb919ec3c2ea2652f40ab8c75b2f99
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index c4ecf1c..c30fbb0 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -457,7 +457,7 @@
 	struct gsm_bts *bts = conn->bts;
 	struct msgb *msg;
 
-	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT]);
+	rate_ctr_inc(&bts->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT]);
 
 	msg = gsm48_create_loc_upd_rej(cause);
 	if (!msg) {
@@ -506,7 +506,7 @@
 
 	DEBUGP(DMM, "-> LOCATION UPDATE ACCEPT\n");
 
-	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT]);
+	rate_ctr_inc(&bts->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT]);
 
 	return gsm48_conn_sendmsg(msg, conn, NULL);
 }
@@ -637,13 +637,13 @@
 
 	switch (lu->type) {
 	case GSM48_LUPD_NORMAL:
-		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
+		rate_ctr_inc(&bts->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
 		break;
 	case GSM48_LUPD_IMSI_ATT:
-		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
+		rate_ctr_inc(&bts->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
 		break;
 	case GSM48_LUPD_PERIODIC:
-		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
+		rate_ctr_inc(&bts->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
 		break;
 	}
 
@@ -1063,7 +1063,7 @@
 	DEBUGP(DMM, "IMSI DETACH INDICATION: MI(%s)=%s",
 		gsm48_mi_type_name(mi_type), mi_string);
 
-	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
+	rate_ctr_inc(&bts->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
 
 	switch (mi_type) {
 	case GSM_MI_TYPE_TMSI:
@@ -2002,7 +2002,7 @@
 	     subscr_name(trans->subscr), trans->subscr->extension,
 	     setup.called.number);
 
-	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP]);
+	rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MO_SETUP]);
 
 	/* indicate setup to MNCC */
 	mncc_recvmsg(trans->net, trans, MNCC_SETUP_IND, &setup);
@@ -2080,7 +2080,7 @@
 	
 	new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
 
-	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP]);
+	rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP]);
 
 	return gsm48_conn_sendmsg(msg, trans->conn, trans);
 }
@@ -2306,7 +2306,7 @@
 	}
 
 	new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
-	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT]);
+	rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MT_CONNECT]);
 
 	return mncc_recvmsg(trans->net, trans, MNCC_SETUP_CNF, &connect);
 }
@@ -2319,7 +2319,7 @@
 	gsm48_stop_cc_timer(trans);
 
 	new_cc_state(trans, GSM_CSTATE_ACTIVE);
-	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK]);
+	rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK]);
 	
 	memset(&connect_ack, 0, sizeof(struct gsm_mncc));
 	connect_ack.callref = trans->callref;
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 840d4d4..6d3f41b 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -310,21 +310,21 @@
 #ifdef BUILD_SMPP
 		/* Avoid a second look-up */
 		if (smpp_first) {
-			rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
+			rate_ctr_inc(&conn->bts->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 			return 1; /* cause 1: unknown subscriber */
 		}
 
 		rc = smpp_try_deliver(gsms, conn);
 		if (rc == 1) {
 			rc = 1; /* cause 1: unknown subscriber */
-			rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
+			rate_ctr_inc(&conn->bts->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 		} else if (rc < 0) {
 			rc = 21; /* cause 21: short message transfer rejected */
 			/* FIXME: handle the error somehow? */
 		}
 #else
 		rc = 1; /* cause 1: unknown subscriber */
-		rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
+		rate_ctr_inc(&conn->bts->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
 		return rc;
 	}
@@ -365,7 +365,7 @@
 	uint8_t address_lv[12]; /* according to 03.40 / 9.1.2.5 */
 	int rc = 0;
 
-	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED]);
+	rate_ctr_inc(&conn->bts->network->msc_ctrs->ctr[MSC_CTR_SMS_SUBMITTED]);
 
 	gsms = sms_alloc();
 	if (!gsms)
@@ -635,10 +635,10 @@
 		 * to store this in our database and wait for a SMMA message */
 		/* FIXME */
 		send_signal(S_SMS_MEM_EXCEEDED, trans, sms, 0);
-		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM]);
+		rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_RP_ERR_MEM]);
 	} else {
 		send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);
-		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER]);
+		rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER]);
 	}
 
 	sms_free(sms);
@@ -934,7 +934,7 @@
 
 	DEBUGP(DLSMS, "TX: SMS DELIVER\n");
 
-	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_DELIVERED]);
+	rate_ctr_inc(&conn->bts->network->msc_ctrs->ctr[MSC_CTR_SMS_DELIVERED]);
 	db_sms_inc_deliver_attempts(trans->sms.sms);
 
 	return gsm411_rp_sendmsg(&trans->sms.smr_inst, msg,
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index d1041b3..e7ff0a9 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -795,41 +795,41 @@
 
 	openbsc_vty_print_statistics(vty, net);
 	vty_out(vty, "Location Update         : %lu attach, %lu normal, %lu periodic%s",
-		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH].current,
-		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL].current,
-		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC].current,
+		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH].current,
+		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL].current,
+		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC].current,
 		VTY_NEWLINE);
 	vty_out(vty, "IMSI Detach Indications : %lu%s",
-		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
+		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
 		VTY_NEWLINE);
 	vty_out(vty, "Location Update Response: %lu accept, %lu reject%s",
-		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT].current,
-		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT].current,
+		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT].current,
+		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT].current,
 		VTY_NEWLINE);
 	vty_out(vty, "Handover                : %lu attempted, %lu no_channel, %lu timeout, "
 		"%lu completed, %lu failed%s",
-		net->ratectrs->ctr[MSC_CTR_HANDOVER_ATTEMPTED].current,
-		net->ratectrs->ctr[MSC_CTR_HANDOVER_NO_CHANNEL].current,
-		net->ratectrs->ctr[MSC_CTR_HANDOVER_TIMEOUT].current,
-		net->ratectrs->ctr[MSC_CTR_HANDOVER_COMPLETED].current,
-		net->ratectrs->ctr[MSC_CTR_HANDOVER_FAILED].current,
+		net->msc_ctrs->ctr[BSC_CTR_HANDOVER_ATTEMPTED].current,
+		net->msc_ctrs->ctr[BSC_CTR_HANDOVER_NO_CHANNEL].current,
+		net->msc_ctrs->ctr[BSC_CTR_HANDOVER_TIMEOUT].current,
+		net->msc_ctrs->ctr[BSC_CTR_HANDOVER_COMPLETED].current,
+		net->msc_ctrs->ctr[BSC_CTR_HANDOVER_FAILED].current,
 		VTY_NEWLINE);
 	vty_out(vty, "SMS MO                  : %lu submitted, %lu no receiver%s",
-		net->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
-		net->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER].current,
+		net->msc_ctrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
+		net->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER].current,
 		VTY_NEWLINE);
 	vty_out(vty, "SMS MT                  : %lu delivered, %lu no memory, %lu other error%s",
-		net->ratectrs->ctr[MSC_CTR_SMS_DELIVERED].current,
-		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM].current,
-		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER].current,
+		net->msc_ctrs->ctr[MSC_CTR_SMS_DELIVERED].current,
+		net->msc_ctrs->ctr[MSC_CTR_SMS_RP_ERR_MEM].current,
+		net->msc_ctrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER].current,
 		VTY_NEWLINE);
 	vty_out(vty, "MO Calls                : %lu setup, %lu connect ack%s",
-		net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
-		net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
+		net->msc_ctrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
+		net->msc_ctrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
 		VTY_NEWLINE);
 	vty_out(vty, "MT Calls                : %lu setup, %lu connect%s",
-		net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
-		net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
+		net->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
+		net->msc_ctrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
 		VTY_NEWLINE);
 	return CMD_SUCCESS;
 }