From 9f0f978c8daa764d01f0892ef7b5e443f7c551a8 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Fri, 21 Nov 2014 10:40:07 +0100 Subject: [PATCH] vty: Check with the application before writing the config For the BSC/NITB application we see that people modify the band without modifying the ARFCN. This creates an unbootable config. Using the new hook the BSC/NITB can check if the config is consistent and prevent the config file being written. Related: SYS#739 --- TODO-RELEASE | 1 + include/osmocom/vty/vty.h | 2 ++ src/vty/command.c | 9 +++++++++ 3 files changed, 12 insertions(+) diff --git a/TODO-RELEASE b/TODO-RELEASE index 72a27a474..290fb0ee2 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -1,2 +1,3 @@ #library what description / commit summary line libosmocore abi-change logging: Add ability to save/print current log filters +libosmovty abi-change vty: Check with the application before writing the config diff --git a/include/osmocom/vty/vty.h b/include/osmocom/vty/vty.h index ea02e4a00..1dcc23000 100644 --- a/include/osmocom/vty/vty.h +++ b/include/osmocom/vty/vty.h @@ -159,6 +159,8 @@ struct vty_app_info { enum node_type (*go_parent_cb)(struct vty *vty); /*! \brief call-back to determine if node is config node */ int (*is_config_node)(struct vty *vty, int node); + /*! \brief Check if the config is consistent before write */ + int (*config_is_consistent)(struct vty *vty); }; /* Prototypes. */ diff --git a/src/vty/command.c b/src/vty/command.c index 44a1b6cb9..3ff5f775f 100644 --- a/src/vty/command.c +++ b/src/vty/command.c @@ -2497,6 +2497,15 @@ DEFUN(config_write_file, char *failed_file; int rc; + if (host.app_info->config_is_consistent) { + rc = host.app_info->config_is_consistent(vty); + if (!rc) { + vty_out(vty, "Configuration is not consistent%s", + VTY_NEWLINE); + return CMD_WARNING; + } + } + if (host.config == NULL) { vty_out(vty, "Can't save to configuration file, using vtysh.%s", VTY_NEWLINE);