aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-08-17 13:02:12 +0200
committerHarald Welte <laforge@gnumonks.org>2012-08-17 13:02:12 +0200
commite555c2b5453a9aea6fa03db4033eac1cee8d8ce4 (patch)
treeb0ed476783f16edfd3e0e2d893a54f1ec6262c9c /openbsc/src
parent57e0724ed401bc8873d45defce84c733f45973ee (diff)
VTY: dynamically create BTS "type" command syntax
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/libbsc/bsc_vty.c14
-rw-r--r--openbsc/src/libcommon/gsm_data.c17
2 files changed, 27 insertions, 4 deletions
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index e3d31a150..d7cdee657 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -1434,7 +1434,7 @@ DEFUN(cfg_bts,
DEFUN(cfg_bts_type,
cfg_bts_type_cmd,
- "type TYPE",
+ "type TYPE", /* dynamically created */
"Set the BTS type\n" "Type\n")
{
struct gsm_bts *bts = vty->index;
@@ -2854,6 +2854,18 @@ int bsc_vty_init(const struct log_info *cat)
"Physical Channel Combination\n",
"\n", "", 0);
+ cfg_bts_type_cmd.string =
+ vty_cmd_string_from_valstr(tall_bsc_ctx,
+ bts_type_names,
+ "type (", "|", ")",
+ VTY_DO_LOWER);
+ cfg_bts_type_cmd.doc =
+ vty_cmd_string_from_valstr(tall_bsc_ctx,
+ bts_type_descs,
+ "BTS Vendor/Type\n",
+ "\n", "", 0);
+
+
install_element_ve(&show_net_cmd);
install_element_ve(&show_bts_cmd);
install_element_ve(&show_trx_cmd);
diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c
index 5c58bf353..e3a6ba342 100644
--- a/openbsc/src/libcommon/gsm_data.c
+++ b/openbsc/src/libcommon/gsm_data.c
@@ -182,7 +182,7 @@ struct gsm_bts *gsm_bts_neighbor(const struct gsm_bts *bts,
return NULL;
}
-static const struct value_string bts_types[] = {
+const struct value_string bts_type_names[_NUM_GSM_BTS_TYPE+1] = {
{ GSM_BTS_TYPE_UNKNOWN, "unknown" },
{ GSM_BTS_TYPE_BS11, "bs11" },
{ GSM_BTS_TYPE_NANOBTS, "nanobts" },
@@ -193,14 +193,25 @@ static const struct value_string bts_types[] = {
{ 0, NULL }
};
+const struct value_string bts_type_descs[_NUM_GSM_BTS_TYPE+1] = {
+ { GSM_BTS_TYPE_UNKNOWN, "Unknown BTS Type" },
+ { GSM_BTS_TYPE_BS11, "Siemens BTS (BS-11 or compatible)" },
+ { GSM_BTS_TYPE_NANOBTS, "ip.access nanoBTS or compatible" },
+ { GSM_BTS_TYPE_RBS2000, "Ericsson RBS2000 Series" },
+ { GSM_BTS_TYPE_HSL_FEMTO, "HSL 2.75G femto" },
+ { GSM_BTS_TYPE_NOKIA_SITE, "Nokia {Metro,Ultra,In}Site" },
+ { GSM_BTS_TYPE_OSMO_SYSMO, "sysmocom sysmoBTS" },
+ { 0, NULL }
+};
+
enum gsm_bts_type parse_btstype(const char *arg)
{
- return get_string_value(bts_types, arg);
+ return get_string_value(bts_type_names, arg);
}
const char *btstype2str(enum gsm_bts_type type)
{
- return get_value_string(bts_types, type);
+ return get_value_string(bts_type_names, type);
}
struct gsm_bts_trx *gsm_bts_trx_by_nr(struct gsm_bts *bts, int nr)