[PATCH] openbsc[master]: move to libcommon-cs: global vty gsm_network pointer

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/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Sun Nov 13 00:05:16 UTC 2016


Hello Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/1133

to look at the new patch set (#4).

move to libcommon-cs: global vty gsm_network pointer

Move gsmnet_from_vty() and the bsc_gsmnet global to common_cs_vty.c.

Rename bsc_gsmnet to vty_global_gsm_network and make it static to common_cs_vty.c, to
clearly mark the global variable for VTY use only.

Introduce common_cs_vty_init() to set vty_global_gsm_network.

Change-Id: I26c5c47de08f899b896813d09612d5cb2f8e42d6
---
M openbsc/include/openbsc/common_cs.h
M openbsc/src/libbsc/bsc_vty.c
M openbsc/src/libcommon-cs/common_cs_vty.c
3 files changed, 32 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/33/1133/4

diff --git a/openbsc/include/openbsc/common_cs.h b/openbsc/include/openbsc/common_cs.h
index 172d6e6..caecfeb 100644
--- a/openbsc/include/openbsc/common_cs.h
+++ b/openbsc/include/openbsc/common_cs.h
@@ -7,6 +7,8 @@
 
 typedef int (*mncc_recv_cb_t)(struct gsm_network *, struct msgb *);
 
+struct vty;
+
 #define MAX_A5_KEY_LEN	(128/8)
 
 struct gsm_encr {
@@ -19,3 +21,6 @@
 				     uint16_t country_code,
 				     uint16_t network_code,
 				     mncc_recv_cb_t mncc_recv);
+
+int common_cs_vty_init(struct gsm_network *network);
+struct gsm_network *gsmnet_from_vty(struct vty *v);
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index 9ed19aa..c8aa43c 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -131,21 +131,6 @@
 	1,
 };
 
-extern struct gsm_network *bsc_gsmnet;
-
-struct gsm_network *gsmnet_from_vty(struct vty *v)
-{
-	/* In case we read from the config file, the vty->priv cannot
-	 * point to a struct telnet_connection, and thus conn->priv
-	 * will not point to the gsm_network structure */
-#if 0
-	struct telnet_connection *conn = v->priv;
-	return (struct gsm_network *) conn->priv;
-#else
-	return bsc_gsmnet;
-#endif
-}
-
 static int dummy_config_write(struct vty *v)
 {
 	return CMD_SUCCESS;
@@ -3989,7 +3974,7 @@
 	uint8_t buf[88];
 	int rc;
 
-	bts = gsm_bts_num(bsc_gsmnet, bts_nr);
+	bts = gsm_bts_num(gsmnet_from_vty(vty), bts_nr);
 	if (!bts) {
 		vty_out(vty, "%% No such BTS (%d)%s", bts_nr, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -4040,7 +4025,7 @@
 	int ts_nr = atoi(argv[2]);
 	int activate;
 
-	bts = gsm_bts_num(bsc_gsmnet, bts_nr);
+	bts = gsm_bts_num(gsmnet_from_vty(vty), bts_nr);
 	if (!bts) {
 		vty_out(vty, "%% No such BTS (%d)%s", bts_nr, VTY_NEWLINE);
 		return CMD_WARNING;
@@ -4102,6 +4087,7 @@
 					   "BTS Vendor/Type\n",
 					   "\n", "", 0);
 
+	common_cs_vty_init(network);
 
 	install_element_ve(&show_net_cmd);
 	install_element_ve(&show_bts_cmd);
diff --git a/openbsc/src/libcommon-cs/common_cs_vty.c b/openbsc/src/libcommon-cs/common_cs_vty.c
index 99aa0cf..11ed50f 100644
--- a/openbsc/src/libcommon-cs/common_cs_vty.c
+++ b/openbsc/src/libcommon-cs/common_cs_vty.c
@@ -1,6 +1,7 @@
 /* Code used by both libbsc and libmsc (common_cs means "BSC or MSC").
  *
  * (C) 2016 by sysmocom s.m.f.c. <info at sysmocom.de>
+ * (C) 2008-2010 by Harald Welte <laforge at gnumonks.org>
  * All Rights Reserved
  *
  * This program is free software; you can redistribute it and/or modify
@@ -17,3 +18,26 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  */
+
+#include <openbsc/gsm_data.h>
+
+static struct gsm_network *vty_global_gsm_network = NULL;
+
+/* initialize VTY elements used in both BSC and MSC */
+int common_cs_vty_init(struct gsm_network *network)
+{
+	OSMO_ASSERT(vty_global_gsm_network == NULL);
+	vty_global_gsm_network = network;
+}
+
+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;
+}

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

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I26c5c47de08f899b896813d09612d5cb2f8e42d6
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list