On Tue, Apr 08, 2014 at 02:35:26PM +0200, Alvaro Neira Ayuso wrote:
From: Álvaro Neira Ayuso anayuso@sysmocom.de
Added the vty support for configuring the parameter for using the OML report in manager when we have anomalous temperature.
Signed-off-by: Alvaro Neira Ayuso anayuso@sysmocom.de
v2: Changed the functions for init the max_power_red value that we want to use in case of failure.
doc/examples/osmobts-mgr.cfg | 30 ++++ src/osmo-bts-sysmo/Makefile.am | 5 +- src/osmo-bts-sysmo/misc/sysmobts_mgr.c | 43 ++++- src/osmo-bts-sysmo/misc/sysmobts_mgr.h | 16 ++ src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c | 250 ++++++++++++++++++++++++++++ 5 files changed, 341 insertions(+), 3 deletions(-) create mode 100644 doc/examples/osmobts-mgr.cfg create mode 100644 src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c
diff --git a/doc/examples/osmobts-mgr.cfg b/doc/examples/osmobts-mgr.cfg new file mode 100644 index 0000000..f1c4e8e --- /dev/null +++ b/doc/examples/osmobts-mgr.cfg @@ -0,0 +1,30 @@ +! +! SysmoMgr (0.3.0.137-7576) configuration saved from vty +!! +! +log stderr
- logging filter all 1
 - logging color 1
 - logging timestamp 0
 - logging level all everything
 - logging level temp info
 - logging level fw info
 - logging level find info
 - logging level lglobal notice
 - logging level llapd notice
 - logging level linp notice
 - logging level lmux notice
 - logging level lmi notice
 - logging level lmib notice
 - logging level lsms notice
 +! +line vty
- no login
 +! +config-mgr
- temp-warn-board -30 50
 - temp-sever-board -50 80
 - temp-warn-pa -30 50
 - temp-sever-pa -50 80
 - pwr-action 1 1 0
 - pwr-max-transmiter 32
 diff --git a/src/osmo-bts-sysmo/Makefile.am b/src/osmo-bts-sysmo/Makefile.am index 1c08af3..b4b7de7 100644 --- a/src/osmo-bts-sysmo/Makefile.am +++ b/src/osmo-bts-sysmo/Makefile.am @@ -22,8 +22,9 @@ l1fwd_proxy_LDADD = $(top_builddir)/src/common/libbts.a $(COMMON_LDADD)
sysmobts_mgr_SOURCES = \ misc/sysmobts_mgr.c misc/sysmobts_misc.c \
misc/sysmobts_par.c misc/sysmobts_nl.c-sysmobts_mgr_LDADD = $(LIBOSMOCORE_LIBS)
misc/sysmobts_par.c misc/sysmobts_nl.c \misc/sysmobts_mgr_vty.c+sysmobts_mgr_LDADD = $(LIBOSMOCORE_LIBS) $(LIBOSMOVTY_LIBS)
sysmobts_util_SOURCES = misc/sysmobts_util.c misc/sysmobts_par.c sysmobts_util_LDADD = $(LIBOSMOCORE_LIBS) diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c index b8813f0..0fb1221 100644 --- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c @@ -57,6 +57,24 @@ static int fd_unix = -1; void *tall_mgr_ctx; static struct sbts2050_config_info confinfo;
+static struct sysmobts_mgr_instance sysmobts_mgr_inst = {
- .config_file = "osmobts-mgr.cfg",
 +};
+const char *sysmomgr_copyright =
- "(C) 2012 by Harald Welte laforge@gnumonks.org\r\n"
 - "(C) 2014 by Holger Hans Peter Freyther\r\n"
 - "License AGPLv3+: GNU AGPL version 2 or later http://gnu.org/licenses/agpl-3.0.html\r\n"
 - "This is free software: you are free to change and redistribute it.\r\n"
 - "There is NO WARRANTY, to the extent permitted by law.\r\n";
 +static struct vty_app_info vty_info = {
- .name = "SysmoMgr",
 - .version = PACKAGE_VERSION,
 - .go_parent_cb = mgr_vty_go_parent,
 - .is_config_node = mgr_vty_is_config_node,
 +};
/* every 6 hours means 365*4 = 1460 EEprom writes per year (max) */ #define TEMP_TIMER_SECS (6 * 3600)
@@ -219,13 +237,14 @@ static void print_help(void) printf(" -s Disable color\n"); printf(" -d CAT enable debugging\n"); printf(" -D daemonize\n");
- printf(" -c Specify the filename of the config file\n");
 }
static int parse_options(int argc, char **argv) { int opt;
- while ((opt = getopt(argc, argv, "nhsd:")) != -1) {
 
- while ((opt = getopt(argc, argv, "nhsd:c:")) != -1) { switch (opt) { case 'n': no_eeprom_write = 1;
 @@ -242,6 +261,9 @@ static int parse_options(int argc, char **argv) case 'D': daemonize = 1; break;
case 'c':sysmobts_mgr_inst.config_file = optarg; default: return -1; }break;@@ -445,6 +467,25 @@ int main(int argc, char **argv) if (rc < 0) exit(2);
- vty_info.copyright = sysmomgr_copyright;
 - vty_init(&vty_info);
 - logging_vty_add_cmds(&mgr_log_info);
 - sysmobts_mgr_vty_init();
 - rc = sysmobts_mgr_parse_config(sysmobts_mgr_inst.config_file,
 &confinfo);- if (rc < 0) {
 LOGP(DFIND, LOGL_FATAL, "Cannot parse config file\n");exit(2);- }
 - rc = telnet_init(tall_msgb_ctx, NULL, 4247);
 - if (rc < 0) {
 fprintf(stderr, "Error initializing telnet\n");exit(1);- }
 - /* start temperature check timer */ temp_timer.cb = check_temp_timer_cb; check_temp_timer_cb(NULL);
 diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.h b/src/osmo-bts-sysmo/misc/sysmobts_mgr.h index ddb6774..d89c46f 100644 --- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.h +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.h @@ -1,10 +1,26 @@ #ifndef _SYSMOBTS_MGR_H #define _SYSMOBTS_MGR_H
+#include <osmocom/vty/vty.h> +#include <osmocom/vty/command.h>
enum { DTEMP, DFW, DFIND, };
+enum mgr_vty_node {
- MGR_NODE = _LAST_OSMOVTY_NODE + 1,
 +};
+enum node_type mgr_vty_go_parent(struct vty *vty); +int mgr_vty_is_config_node(struct vty *vty, int node); +int sysmobts_mgr_vty_init(void); +int sysmobts_mgr_parse_config(const char *config_file,
struct sbts2050_config_info *cfg);+struct sysmobts_mgr_instance {
- const char *config_file;
 +}; #endif diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c new file mode 100644 index 0000000..412c2bc --- /dev/null +++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr_vty.c @@ -0,0 +1,250 @@ +/* (C) 2014 by Sysmocom
by sysmocom - s.f.m.c. GmbH
- All Rights Reserved
 
- Author: Alvaro Neira Ayuso anayuso@sysmocom.de
 
- 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 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 <unistd.h> +#include <errno.h> +#include <stdint.h> +#include <ctype.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h>
+#include <osmocom/vty/vty.h> +#include <osmocom/vty/command.h> +#include <osmocom/vty/misc.h>
+#include <osmo-bts/logging.h>
+#include "sysmobts_misc.h" +#include "sysmobts_mgr.h"
+static struct sbts2050_config_info *mgr_cfg = NULL;
+enum node_type mgr_vty_go_parent(struct vty *vty) +{
- switch (vty->node) {
 - case MGR_NODE:
 vty->node = CONFIG_NODE;break;- default:
 vty->node = CONFIG_NODE;- }
 - return vty->node;
 +}
+int mgr_vty_is_config_node(struct vty *vty, int node) +{
- switch (node) {
 - case MGR_NODE:
 return 1;- default:
 return 0;- }
 +}
+#define MGR_STR "Configure the sysmobts-mgr\n"
+static struct cmd_node mgr_node = {
- MGR_NODE,
 - "%s(config-mgr)# ",
 - 1,
 +};
+DEFUN(cfg_mgr, cfg_mgr_cmd,
- "config-mgr",
 - MGR_STR)
 +{
- vty->node = MGR_NODE;
 - return CMD_SUCCESS;
 +}
+DEFUN(show_mgr, show_mgr_cmd, "show mgr",
SHOW_STR "Display information about the mgr")+{
- vty_out(vty, " temp-warn-board Min:%d Max:%d%s",
 mgr_cfg->temp_min_board_warn_limit,mgr_cfg->temp_max_board_warn_limit,VTY_NEWLINE);
Coding style nitpick:
vty_out(vty, ... mgr_cfg->temp_min_board_warn_limit,
Apart from those nitpicks, this looks good to me.