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
This commit is contained in:
parent
2c05f75bbf
commit
b90eabfb46
|
@ -7,6 +7,8 @@ struct gsm_network;
|
|||
|
||||
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 @@ struct gsm_network *gsm_network_init(void *ctx,
|
|||
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);
|
||||
|
|
|
@ -131,21 +131,6 @@ struct cmd_node ts_node = {
|
|||
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 @@ DEFUN(smscb_cmd, smscb_cmd_cmd,
|
|||
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 @@ DEFUN(pdch_act, pdch_act_cmd,
|
|||
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 @@ int bsc_vty_init(const struct log_info *cat, struct gsm_network *network)
|
|||
"BTS Vendor/Type\n",
|
||||
"\n", "", 0);
|
||||
|
||||
common_cs_vty_init(network);
|
||||
|
||||
install_element_ve(&show_net_cmd);
|
||||
install_element_ve(&show_bts_cmd);
|
||||
|
|
|
@ -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@sysmocom.de>
|
||||
* (C) 2008-2010 by Harald Welte <laforge@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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue