aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-11-21 10:40:07 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-12-04 14:39:14 +0100
commit9f0f978c8daa764d01f0892ef7b5e443f7c551a8 (patch)
treeeac141be7b7139b0f3b4fb18b7fb1042f9f6ee72
parente15ac060e7ae78d4c3569d7fc9071bcf49807e05 (diff)
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
-rw-r--r--TODO-RELEASE1
-rw-r--r--include/osmocom/vty/vty.h2
-rw-r--r--src/vty/command.c9
3 files changed, 12 insertions, 0 deletions
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 72a27a47..290fb0ee 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 ea02e4a0..1dcc2300 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 44a1b6cb..3ff5f775 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);