From: Holger Hans Peter Freyther <[email protected]>

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 72a27a4..290fb0e 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 ea02e4a..1dcc230 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 44a1b6c..3ff5f77 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);
-- 
2.1.3

Reply via email to