summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);