]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_cli.c
isisd: retrofit the 'spf-interval' command
[mirror_frr.git] / isisd / isis_cli.c
index b66be8f614373a4c113bb3ae70751cf457cd83c3..10bd67248ddfc5184ba6bd62283bd561282ff82a 100644 (file)
@@ -763,6 +763,58 @@ void cli_show_isis_lsp_mtu(struct vty *vty, struct lyd_node *dnode,
        vty_out(vty, " lsp-mtu %s\n", yang_dnode_get_string(dnode, NULL));
 }
 
+/*
+ * XPath: /frr-isisd:isis/instance/spf/minimum-interval
+ */
+DEFPY(spf_interval, spf_interval_cmd,
+      "spf-interval [level-1|level-2]$level (1-120)$val",
+      "Minimum interval between SPF calculations\n"
+      "Set interval for level 1 only\n"
+      "Set interval for level 2 only\n"
+      "Minimum interval between consecutive SPFs in seconds\n")
+{
+       if (!level || strmatch(level, "level-1"))
+               nb_cli_enqueue_change(vty, "./spf/minimum-interval/level-1",
+                                     NB_OP_MODIFY, val_str);
+       if (!level || strmatch(level, "level-2"))
+               nb_cli_enqueue_change(vty, "./spf/minimum-interval/level-2",
+                                     NB_OP_MODIFY, val_str);
+
+       return nb_cli_apply_changes(vty, NULL);
+}
+
+DEFPY(no_spf_interval, no_spf_interval_cmd,
+      "no spf-interval [level-1|level-2]$level [(1-120)]",
+      NO_STR
+      "Minimum interval between SPF calculations\n"
+      "Set interval for level 1 only\n"
+      "Set interval for level 2 only\n"
+      "Minimum interval between consecutive SPFs in seconds\n")
+{
+       if (!level || strmatch(level, "level-1"))
+               nb_cli_enqueue_change(vty, "./spf/minimum-interval/level-1",
+                                     NB_OP_MODIFY, NULL);
+       if (!level || strmatch(level, "level-2"))
+               nb_cli_enqueue_change(vty, "./spf/minimum-interval/level-2",
+                                     NB_OP_MODIFY, NULL);
+
+       return nb_cli_apply_changes(vty, NULL);
+}
+
+void cli_show_isis_spf_min_interval(struct vty *vty, struct lyd_node *dnode,
+                                   bool show_defaults)
+{
+       const char *l1 = yang_dnode_get_string(dnode, "./level-1");
+       const char *l2 = yang_dnode_get_string(dnode, "./level-2");
+
+       if (strmatch(l1, l2))
+               vty_out(vty, " spf-interval %s\n", l1);
+       else {
+               vty_out(vty, " spf-interval level-1 %s\n", l1);
+               vty_out(vty, " spf-interval level-2 %s\n", l2);
+       }
+}
+
 void isis_cli_init(void)
 {
        install_element(CONFIG_NODE, &router_isis_cmd);
@@ -797,6 +849,9 @@ void isis_cli_init(void)
        install_element(ISIS_NODE, &no_max_lsp_lifetime_cmd);
        install_element(ISIS_NODE, &area_lsp_mtu_cmd);
        install_element(ISIS_NODE, &no_area_lsp_mtu_cmd);
+
+       install_element(ISIS_NODE, &spf_interval_cmd);
+       install_element(ISIS_NODE, &no_spf_interval_cmd);
 }
 
 #endif /* ifndef FABRICD */