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);