[MERGED] osmo-msc[master]: cosmetic: msc_vty.c: use static gsmnet instead of gsmnet_fro...

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Thu Mar 22 17:27:46 UTC 2018


Harald Welte has submitted this change and it was merged.

Change subject: cosmetic: msc_vty.c: use static gsmnet instead of gsmnet_from_vty()
......................................................................


cosmetic: msc_vty.c: use static gsmnet instead of gsmnet_from_vty()

Now that all VTY definitions are in the same file, we no longer need
gsmnet_from_vty(). Just have one static struct gsm_network *gsmnet populated by
msc_vty_init() and use it in all VTY functions.

Change-Id: I5cb3712a4f4245feb62d42f1b041fe94de5fac1b
---
M src/libmsc/msc_vty.c
1 file changed, 24 insertions(+), 97 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index f013715..6e7e8d9 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -54,20 +54,7 @@
 #include <osmocom/msc/signal.h>
 #include <osmocom/msc/mncc_int.h>
 
-static struct gsm_network *vty_global_gsm_network = NULL;
-
-struct gsm_network *gsmnet_from_vty(struct vty *v)
-{
-	/* It can't hurt to force callers to continue to pass the vty instance
-	 * to this function, in case we'd like to retrieve the global
-	 * gsm_network instance from the vty at some point in the future. But
-	 * until then, just return the global pointer, which should have been
-	 * initialized by common_cs_vty_init().
-	 */
-	OSMO_ASSERT(vty_global_gsm_network);
-	return vty_global_gsm_network;
-}
-
+static struct gsm_network *gsmnet = NULL;
 
 struct cmd_node net_node = {
 	GSMNET_NODE,
@@ -84,7 +71,7 @@
       cfg_net_cmd,
       "network", NETWORK_STR)
 {
-	vty->index = gsmnet_from_vty(vty);
+	vty->index = gsmnet;
 	vty->node = GSMNET_NODE;
 
 	return CMD_SUCCESS;
@@ -98,8 +85,6 @@
       CODE_CMD_STR
       "Network Country Code to use\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	gsmnet->plmn.mcc = atoi(argv[0]);
 
 	return CMD_SUCCESS;
@@ -113,7 +98,6 @@
       CODE_CMD_STR
       "Mobile Network Code to use\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	uint16_t mnc;
 	bool mnc_3_digits;
 
@@ -133,8 +117,6 @@
       "short name NAME",
       "Set the short GSM network name\n" NAME_CMD_STR NAME_STR)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	osmo_talloc_replace_string(gsmnet, &gsmnet->name_short, argv[0]);
 	return CMD_SUCCESS;
 }
@@ -144,8 +126,6 @@
       "long name NAME",
       "Set the long GSM network name\n" NAME_CMD_STR NAME_STR)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	osmo_talloc_replace_string(gsmnet, &gsmnet->name_long, argv[0]);
 	return CMD_SUCCESS;
 }
@@ -160,7 +140,6 @@
 	"A5/n Algorithm Number\n"
 	"A5/n Algorithm Number\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	unsigned int i;
 
 	gsmnet->a5_encryption_mask = 0;
@@ -177,8 +156,6 @@
 	"Allow MS to attach via 2G BSC without authentication\n"
 	"Always do authentication\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	gsmnet->authentication_required = (argv[0][0] == 'r') ? true : false;
 
 	return CMD_SUCCESS;
@@ -193,8 +170,6 @@
 	"Request any location, prefer MS-based\n"
 	"Request any location, prefer MS-assisted\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	gsmnet->rrlp.mode = rrlp_mode_parse(argv[0]);
 
 	return CMD_SUCCESS;
@@ -206,8 +181,6 @@
 	"Send MM INFO after LOC UPD ACCEPT\n"
 	"Disable\n" "Enable\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	gsmnet->send_mm_info = atoi(argv[0]);
 
 	return CMD_SUCCESS;
@@ -304,7 +277,6 @@
 
 static int config_write_net(struct vty *vty)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	int i;
 
 	vty_out(vty, "network%s", VTY_NEWLINE);
@@ -364,7 +336,6 @@
       "assign-tmsi",
       "Assign TMSI during Location Updating.\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->vlr->cfg.assign_tmsi = true;
 	return CMD_SUCCESS;
 }
@@ -373,7 +344,6 @@
       "no assign-tmsi",
       NO_STR "Assign TMSI during Location Updating.\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->vlr->cfg.assign_tmsi = false;
 	return CMD_SUCCESS;
 }
@@ -383,7 +353,6 @@
       "cs7-instance-a <0-15>",
       "Set SS7 to be used by the A-Interface.\n" "SS7 instance reference number\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->a.cs7_instance = atoi(argv[0]);
 	return CMD_SUCCESS;
 }
@@ -393,7 +362,6 @@
       "cs7-instance-iu <0-15>",
       "Set SS7 to be used by the Iu-Interface.\n" "SS7 instance reference number\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->iu.cs7_instance = atoi(argv[0]);
 	return CMD_SUCCESS;
 }
@@ -403,7 +371,6 @@
       "Configure authentication tuple re-use\n"
       "0 to use each auth tuple at most once (default), >0 to limit re-use, -1 to re-use infinitely (vulnerable!).\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->vlr->cfg.auth_tuple_max_reuse_count = atoi(argv[0]);
 	return CMD_SUCCESS;
 }
@@ -414,7 +381,6 @@
       "0 = never re-use auth tuples beyond auth-tuple-max-reuse-count (default)\n"
       "1 = if the HLR does not deliver new tuples, do re-use already available old ones.\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->vlr->cfg.auth_reuse_old_sets_on_error = atoi(argv[0]) ? true : false;
 	return CMD_SUCCESS;
 }
@@ -427,7 +393,6 @@
       "Set to default timeout (" OSMO_STRINGIFY_VAL(MSC_PAGING_RESPONSE_TIMER_DEFAULT) " seconds)\n"
       "Set paging timeout in seconds\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	if (!strcmp(argv[1], "default"))
 		gsmnet->paging_response_timer = MSC_PAGING_RESPONSE_TIMER_DEFAULT;
 	else
@@ -441,8 +406,6 @@
       "MSISDN to which Emergency Calls are Dispatched\n"
       "MSISDN (E.164 Phone Number)\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	osmo_talloc_replace_string(gsmnet, &gsmnet->emergency.route_to_msisdn, argv[0]);
 
 	return CMD_SUCCESS;
@@ -450,8 +413,6 @@
 
 static int config_write_msc(struct vty *vty)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	vty_out(vty, "msc%s", VTY_NEWLINE);
 	vty_out(vty, " %sassign-tmsi%s",
 		gsmnet->vlr->cfg.assign_tmsi? "" : "no ", VTY_NEWLINE);
@@ -509,7 +470,6 @@
 DEFUN(show_msc_conn, show_msc_conn_cmd,
 	"show connection", SHOW_STR "Subscriber Connections\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct gsm_subscriber_connection *conn;
 
 	vty_conn_hdr(vty);
@@ -563,7 +523,6 @@
 DEFUN(show_msc_transaction, show_msc_transaction_cmd,
 	"show transaction", SHOW_STR "Transactions\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct gsm_trans *trans;
 
 	vty_trans_hdr(vty);
@@ -575,7 +534,6 @@
 
 static void subscr_dump_full_vty(struct vty *vty, struct vlr_subscr *vsub)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct gsm_trans *trans;
 	int reqs;
 	struct llist_head *entry;
@@ -654,7 +612,6 @@
 	SHOW_STR "Show information about subscribers\n"
 	"Display contents of subscriber cache\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub;
 	int count = 0;
 
@@ -677,7 +634,6 @@
       "SMS related commands\n" "SMS Sending related commands\n"
       "Send all pending SMS")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct gsm_sms *sms;
 	unsigned long long sms_id = 0;
 
@@ -701,7 +657,6 @@
       "SMS related commands\n" "SMS Database related commands\n"
       "Delete all expired SMS")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct gsm_sms *sms;
 	unsigned long long sms_id = 0;
 	long long num_deleted = 0;
@@ -781,7 +736,6 @@
       "show subscriber " SUBSCR_TYPES " ID",
 	SHOW_STR SUBSCR_HELP)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0],
 						       argv[1]);
 
@@ -816,7 +770,6 @@
       "subscriber " SUBSCR_TYPES " ID sms pending-send",
 	SUBSCR_HELP "SMS Operations\n" "Send pending SMS\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub;
 	struct gsm_sms *sms;
 
@@ -841,7 +794,6 @@
       "subscriber " SUBSCR_TYPES " ID sms sender " SUBSCR_TYPES " SENDER_ID send .LINE",
 	SUBSCR_HELP "SMS Operations\n" SUBSCR_HELP "Send SMS\n" "Actual SMS Text\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]);
 	char *str;
@@ -881,7 +833,6 @@
       "subscriber " SUBSCR_TYPES " ID silent-sms sender " SUBSCR_TYPES " SENDER_ID send .LINE",
 	SUBSCR_HELP "Silent SMS Operations\n" SUBSCR_HELP "Send SMS\n" "Actual SMS Text\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	struct vlr_subscr *sender = get_vsub_by_argv(gsmnet, argv[2], argv[3]);
 	char *str;
@@ -928,7 +879,6 @@
 	SUBSCR_HELP "Silent call operation\n" "Start silent call\n"
 	CHAN_TYPE_HELP)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	int rc, type;
 
@@ -970,7 +920,6 @@
 	SUBSCR_HELP "Silent call operation\n" "Stop silent call\n"
 	CHAN_TYPE_HELP)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	int rc;
 
@@ -1012,7 +961,6 @@
 {
 	char *text;
 	struct gsm_subscriber_connection *conn;
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	int level;
 
@@ -1051,7 +999,6 @@
       "subscriber " SUBSCR_TYPES " ID paging",
       SUBSCR_HELP "Issue an empty Paging for the subscriber (for debugging)\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	struct subscr_request *req;
 
@@ -1106,7 +1053,6 @@
       "Loop Type I\n")
 {
 	struct gsm_subscriber_connection *conn;
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 	const char *loop_str;
 	int loop_mode;
@@ -1140,7 +1086,6 @@
       "Open a TCH Loop inside the MS\n")
 {
 	struct gsm_subscriber_connection *conn;
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
 
 	if (!vsub) {
@@ -1167,7 +1112,6 @@
       "subscriber " SUBSCR_TYPES " ID expire",
 	SUBSCR_HELP "Expire the subscriber Now\n")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0],
 						       argv[1]);
 
@@ -1212,36 +1156,34 @@
       "show statistics",
 	SHOW_STR "Display network statistics\n")
 {
-	struct gsm_network *net = gsmnet_from_vty(vty);
-
 	vty_out(vty, "Location Update         : %lu attach, %lu normal, %lu periodic%s",
-		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,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC].current,
 		VTY_NEWLINE);
 	vty_out(vty, "IMSI Detach Indications : %lu%s",
-		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
 		VTY_NEWLINE);
 	vty_out(vty, "Location Updating Results: %lu completed, %lu failed%s",
-		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_COMPLETED].current,
-		net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_FAILED].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_COMPLETED].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_FAILED].current,
 		VTY_NEWLINE);
 	vty_out(vty, "SMS MO                  : %lu submitted, %lu no receiver%s",
-		net->msc_ctrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
-		net->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
+		gsmnet->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->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,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_SMS_DELIVERED].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_SMS_RP_ERR_MEM].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER].current,
 		VTY_NEWLINE);
 	vty_out(vty, "MO Calls                : %lu setup, %lu connect ack%s",
-		net->msc_ctrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
-		net->msc_ctrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
 		VTY_NEWLINE);
 	vty_out(vty, "MT Calls                : %lu setup, %lu connect%s",
-		net->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
-		net->msc_ctrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
+		gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
 		VTY_NEWLINE);
 	return CMD_SUCCESS;
 }
@@ -1251,9 +1193,7 @@
       "show sms-queue",
       SHOW_STR "Display SMSqueue statistics\n")
 {
-	struct gsm_network *net = gsmnet_from_vty(vty);
-
-	sms_queue_stats(net->sms_queue, vty);
+	sms_queue_stats(gsmnet->sms_queue, vty);
 	return CMD_SUCCESS;
 }
 
@@ -1262,9 +1202,7 @@
       "sms-queue trigger",
       "SMS Queue\n" "Trigger sending messages\n")
 {
-	struct gsm_network *net = gsmnet_from_vty(vty);
-
-	sms_queue_trigger(net->sms_queue);
+	sms_queue_trigger(gsmnet->sms_queue);
 	return CMD_SUCCESS;
 }
 
@@ -1273,9 +1211,7 @@
       "sms-queue max-pending <1-500>",
       "SMS Queue\n" "SMS to deliver in parallel\n" "Amount\n")
 {
-	struct gsm_network *net = gsmnet_from_vty(vty);
-
-	sms_queue_set_max_pending(net->sms_queue, atoi(argv[0]));
+	sms_queue_set_max_pending(gsmnet->sms_queue, atoi(argv[0]));
 	return CMD_SUCCESS;
 }
 
@@ -1284,9 +1220,7 @@
       "sms-queue clear",
       "SMS Queue\n" "Clear the queue of pending SMS\n")
 {
-	struct gsm_network *net = gsmnet_from_vty(vty);
-
-	sms_queue_clear(net->sms_queue);
+	sms_queue_clear(gsmnet->sms_queue);
 	return CMD_SUCCESS;
 }
 
@@ -1295,9 +1229,7 @@
       "sms-queue max-failure <1-500>",
       "SMS Queue\n" "Maximum amount of delivery failures\n" "Amount\n")
 {
-	struct gsm_network *net = gsmnet_from_vty(vty);
-
-	sms_queue_set_max_failure(net->sms_queue, atoi(argv[0]));
+	sms_queue_set_max_failure(gsmnet->sms_queue, atoi(argv[0]));
 	return CMD_SUCCESS;
 }
 
@@ -1372,7 +1304,6 @@
       "Filter log messages by IMSI\n" "IMSI to be used as filter\n")
 {
 	struct vlr_subscr *vlr_subscr;
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct log_target *tgt = osmo_log_vty2tgt(vty);
 	const char *imsi = argv[0];
 
@@ -1408,7 +1339,6 @@
       "Remote GSUP address of the HLR\n"
       "Remote GSUP address (default: " MSC_HLR_REMOTE_IP_DEFAULT ")")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	talloc_free((void*)gsmnet->gsup_server_addr_str);
 	gsmnet->gsup_server_addr_str = talloc_strdup(gsmnet, argv[0]);
 	return CMD_SUCCESS;
@@ -1418,15 +1348,12 @@
       "Remote GSUP port of the HLR\n"
       "Remote GSUP port (default: " OSMO_STRINGIFY(MSC_HLR_REMOTE_PORT_DEFAULT) ")")
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	gsmnet->gsup_server_port = atoi(argv[0]);
 	return CMD_SUCCESS;
 }
 
 static int config_write_hlr(struct vty *vty)
 {
-	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
-
 	vty_out(vty, "hlr%s", VTY_NEWLINE);
 	vty_out(vty, " remote-ip %s%s",
 		gsmnet->gsup_server_addr_str, VTY_NEWLINE);
@@ -1437,8 +1364,8 @@
 
 void msc_vty_init(struct gsm_network *msc_network)
 {
-	OSMO_ASSERT(vty_global_gsm_network == NULL);
-	vty_global_gsm_network = msc_network;
+	OSMO_ASSERT(gsmnet == NULL);
+	gsmnet = msc_network;
 
 	osmo_stats_vty_add_cmds();
 

-- 
To view, visit https://gerrit.osmocom.org/7447
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I5cb3712a4f4245feb62d42f1b041fe94de5fac1b
Gerrit-PatchSet: 1
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list