Harald Welte has submitted this change and it was merged. Change subject: libcommon: eliminate common_vty.c ......................................................................
libcommon: eliminate common_vty.c Move bsc_vty_go_parent() to osmo_bsc_main.c and bsc_nat.c, and drop those nodes that aren't used in the respective main scope. Change-Id: I22ebb76742e9c5ab9dd608ac089a5c558aceeb36 --- M include/osmocom/bsc/vty.h M src/libcommon/Makefile.am D src/libcommon/common_vty.c M src/osmo-bsc/osmo_bsc_main.c M src/osmo-bsc_nat/bsc_nat.c 5 files changed, 129 insertions(+), 157 deletions(-) Approvals: Vadim Yanitskiy: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/bsc/vty.h b/include/osmocom/bsc/vty.h index f705601..daf9750 100644 --- a/include/osmocom/bsc/vty.h +++ b/include/osmocom/bsc/vty.h @@ -41,8 +41,6 @@ HLR_NODE, }; -extern int bsc_vty_is_config_node(struct vty *vty, int node); - struct log_info; int bsc_vty_init(struct gsm_network *network); int bsc_vty_init_extra(void); diff --git a/src/libcommon/Makefile.am b/src/libcommon/Makefile.am index af578a2..1a73e6c 100644 --- a/src/libcommon/Makefile.am +++ b/src/libcommon/Makefile.am @@ -20,7 +20,6 @@ $(NULL) libcommon_a_SOURCES = \ - common_vty.c \ debug.c \ gsm_data.c \ gsm_data_shared.c \ diff --git a/src/libcommon/common_vty.c b/src/libcommon/common_vty.c deleted file mode 100644 index 82327d1..0000000 --- a/src/libcommon/common_vty.c +++ /dev/null @@ -1,152 +0,0 @@ -/* OpenBSC VTY common helpers */ -/* (C) 2009-2010 by Harald Welte <lafo...@gnumonks.org> - * (C) 2009-2010 by Holger Hans Peter Freyther - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <stdlib.h> -#include <string.h> - -#include <osmocom/core/talloc.h> - -#include <osmocom/bsc/vty.h> -#include <osmocom/bsc/gsm_data.h> -#include <osmocom/bsc/debug.h> -#include <osmocom/bsc/bsc_nat.h> -#include <osmocom/bsc/abis_om2000.h> - -#include <osmocom/vty/telnet_interface.h> -#include <osmocom/vty/command.h> -#include <osmocom/vty/buffer.h> -#include <osmocom/vty/vty.h> -#include <osmocom/sigtran/osmo_ss7.h> - - -int bsc_vty_go_parent(struct vty *vty) -{ - switch (vty->node) { - case GSMNET_NODE: - vty->node = CONFIG_NODE; - vty->index = NULL; - break; - case BTS_NODE: - vty->node = GSMNET_NODE; - { - /* set vty->index correctly ! */ - struct gsm_bts *bts = vty->index; - vty->index = bts->network; - vty->index_sub = NULL; - } - break; - case TRX_NODE: - vty->node = BTS_NODE; - { - /* set vty->index correctly ! */ - struct gsm_bts_trx *trx = vty->index; - vty->index = trx->bts; - vty->index_sub = &trx->bts->description; - } - break; - case TS_NODE: - vty->node = TRX_NODE; - { - /* set vty->index correctly ! */ - struct gsm_bts_trx_ts *ts = vty->index; - vty->index = ts->trx; - vty->index_sub = &ts->trx->description; - } - break; - case OML_NODE: - case OM2K_NODE: - vty->node = ENABLE_NODE; - /* NOTE: this only works because it's not part of the config - * tree, where outer commands are searched via vty_go_parent() - * and only (!) executed when a matching one is found. - */ - talloc_free(vty->index); - vty->index = NULL; - break; - case OM2K_CON_GROUP_NODE: - vty->node = BTS_NODE; - { - struct con_group *cg = vty->index; - struct gsm_bts *bts = cg->bts; - vty->index = bts; - vty->index_sub = &bts->description; - } - break; - case NAT_BSC_NODE: - vty->node = NAT_NODE; - { - struct bsc_config *bsc_config = vty->index; - vty->index = bsc_config->nat; - } - break; - case PGROUP_NODE: - vty->node = NAT_NODE; - vty->index = NULL; - break; - case TRUNK_NODE: - vty->node = MGCP_NODE; - vty->index = NULL; - break; - case SMPP_ESME_NODE: - vty->node = SMPP_NODE; - vty->index = NULL; - break; - case SMPP_NODE: - case MGCP_NODE: - case GBPROXY_NODE: - case SGSN_NODE: - case NAT_NODE: - case BSC_NODE: - case MSC_NODE: - case MNCC_INT_NODE: - case NITB_NODE: - vty->node = CONFIG_NODE; - vty->index = NULL; - break; - case SUBSCR_NODE: - vty->node = ENABLE_NODE; - vty->index = NULL; - break; - default: - osmo_ss7_vty_go_parent(vty); - } - - return vty->node; -} - -int bsc_vty_is_config_node(struct vty *vty, int node) -{ - /* Check if libosmo-sccp declares the node in - * question as config node */ - if (osmo_ss7_is_config_node(vty, node)) - return 1; - - switch (node) { - /* add items that are not config */ - case OML_NODE: - case OM2K_NODE: - case SUBSCR_NODE: - case CONFIG_NODE: - return 0; - - default: - return 1; - } -} diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c index db8c4f8..4b53f2d 100644 --- a/src/osmo-bsc/osmo_bsc_main.c +++ b/src/osmo-bsc/osmo_bsc_main.c @@ -44,6 +44,7 @@ #include <osmocom/gsm/protocol/gsm_12_21.h> #include <osmocom/abis/abis.h> +#include <osmocom/bsc/abis_om2000.h> #include <osmocom/mgcp_client/mgcp_client.h> @@ -146,7 +147,89 @@ } } -extern int bsc_vty_go_parent(struct vty *vty); +static int bsc_vty_go_parent(struct vty *vty) +{ + switch (vty->node) { + case GSMNET_NODE: + vty->node = CONFIG_NODE; + vty->index = NULL; + break; + case BTS_NODE: + vty->node = GSMNET_NODE; + { + /* set vty->index correctly ! */ + struct gsm_bts *bts = vty->index; + vty->index = bts->network; + vty->index_sub = NULL; + } + break; + case TRX_NODE: + vty->node = BTS_NODE; + { + /* set vty->index correctly ! */ + struct gsm_bts_trx *trx = vty->index; + vty->index = trx->bts; + vty->index_sub = &trx->bts->description; + } + break; + case TS_NODE: + vty->node = TRX_NODE; + { + /* set vty->index correctly ! */ + struct gsm_bts_trx_ts *ts = vty->index; + vty->index = ts->trx; + vty->index_sub = &ts->trx->description; + } + break; + case OML_NODE: + case OM2K_NODE: + vty->node = ENABLE_NODE; + /* NOTE: this only works because it's not part of the config + * tree, where outer commands are searched via vty_go_parent() + * and only (!) executed when a matching one is found. + */ + talloc_free(vty->index); + vty->index = NULL; + break; + case OM2K_CON_GROUP_NODE: + vty->node = BTS_NODE; + { + struct con_group *cg = vty->index; + struct gsm_bts *bts = cg->bts; + vty->index = bts; + vty->index_sub = &bts->description; + } + break; + case BSC_NODE: + case MSC_NODE: + vty->node = CONFIG_NODE; + vty->index = NULL; + break; + default: + osmo_ss7_vty_go_parent(vty); + } + + return vty->node; +} + +static int bsc_vty_is_config_node(struct vty *vty, int node) +{ + /* Check if libosmo-sccp declares the node in + * question as config node */ + if (osmo_ss7_is_config_node(vty, node)) + return 1; + + switch (node) { + /* add items that are not config */ + case OML_NODE: + case OM2K_NODE: + case CONFIG_NODE: + return 0; + + default: + return 1; + } +} static struct vty_app_info vty_info = { .name = "OsmoBSC", diff --git a/src/osmo-bsc_nat/bsc_nat.c b/src/osmo-bsc_nat/bsc_nat.c index 5569d2f..87db684 100644 --- a/src/osmo-bsc_nat/bsc_nat.c +++ b/src/osmo-bsc_nat/bsc_nat.c @@ -1574,7 +1574,51 @@ tall_ctr_ctx = talloc_named_const(tall_bsc_ctx, 0, "counter"); } -extern int bsc_vty_go_parent(struct vty *vty); +static int bsc_vty_go_parent(struct vty *vty) +{ + switch (vty->node) { + case NAT_BSC_NODE: + vty->node = NAT_NODE; + { + struct bsc_config *bsc_config = vty->index; + vty->index = bsc_config->nat; + } + break; + case PGROUP_NODE: + vty->node = NAT_NODE; + vty->index = NULL; + break; + case TRUNK_NODE: + vty->node = MGCP_NODE; + vty->index = NULL; + break; + case NAT_NODE: + vty->node = CONFIG_NODE; + vty->index = NULL; + break; + default: + osmo_ss7_vty_go_parent(vty); + } + + return vty->node; +} + +static int bsc_vty_is_config_node(struct vty *vty, int node) +{ + /* Check if libosmo-sccp declares the node in + * question as config node */ + if (osmo_ss7_is_config_node(vty, node)) + return 1; + + switch (node) { + /* add items that are not config */ + case CONFIG_NODE: + return 0; + + default: + return 1; + } +} static struct vty_app_info vty_info = { .name = "OsmoBSCNAT", -- To view, visit https://gerrit.osmocom.org/6429 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I22ebb76742e9c5ab9dd608ac089a5c558aceeb36 Gerrit-PatchSet: 3 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofm...@sysmocom.de> Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Vadim Yanitskiy <axilira...@gmail.com>