]> git.proxmox.com Git - mirror_frr.git/commitdiff
isisd: retrofit the 'log-adjacency-changes' command
authorEmanuele Di Pascale <emanuele@voltanet.io>
Wed, 14 Nov 2018 13:44:07 +0000 (14:44 +0100)
committerEmanuele Di Pascale <emanuele@voltanet.io>
Tue, 18 Dec 2018 14:24:46 +0000 (15:24 +0100)
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
isisd/isis_cli.c
isisd/isis_cli.h
isisd/isis_northbound.c
isisd/isisd.c

index 6934c33fc8ee90c82905430d90faa3cded5a8a8a..3227f41b4558281045f22934c6c9fb9413794854 100644 (file)
@@ -1878,6 +1878,24 @@ void cli_show_ip_isis_priority(struct vty *vty, struct lyd_node *dnode,
        }
 }
 
+/*
+ * XPath: /frr-isisd:isis/instance/log-adjacency-changes
+ */
+DEFPY(log_adj_changes, log_adj_changes_cmd, "[no] log-adjacency-changes",
+      NO_STR "Log changes in adjacency state\n")
+{
+       nb_cli_enqueue_change(vty, "./log-adjacency-changes",
+                             no ? NB_OP_DELETE : NB_OP_CREATE, NULL);
+
+       return nb_cli_apply_changes(vty, NULL);
+}
+
+void cli_show_isis_log_adjacency(struct vty *vty, struct lyd_node *dnode,
+                                bool show_defaults)
+{
+       vty_out(vty, " log-adjacency-changes\n");
+}
+
 void isis_cli_init(void)
 {
        install_element(CONFIG_NODE, &router_isis_cmd);
@@ -1963,6 +1981,8 @@ void isis_cli_init(void)
 
        install_element(INTERFACE_NODE, &isis_priority_cmd);
        install_element(INTERFACE_NODE, &no_isis_priority_cmd);
+
+       install_element(ISIS_NODE, &log_adj_changes_cmd);
 }
 
 #endif /* ifndef FABRICD */
index 90e31859fca6ecbcd0f0bf1b7f8c03a5981b230b..8dadf6098183cd44260f1f8d5caea99ceb4f1ad4 100644 (file)
@@ -119,5 +119,7 @@ void cli_show_ip_isis_network_type(struct vty *vty, struct lyd_node *dnode,
                                   bool show_defaults);
 void cli_show_ip_isis_priority(struct vty *vty, struct lyd_node *dnode,
                               bool show_defaults);
+void cli_show_isis_log_adjacency(struct vty *vty, struct lyd_node *dnode,
+                                bool show_defaults);
 
 #endif /* ISISD_ISIS_CLI_H_ */
index c11788a498b3fb2b19513e5082bc4f80e5103a55..93998cda89eb5169c98b9639c7a4de72ec65faea 100644 (file)
@@ -1480,7 +1480,14 @@ isis_instance_log_adjacency_changes_create(enum nb_event event,
                                           const struct lyd_node *dnode,
                                           union nb_resource *resource)
 {
-       /* TODO: implement me. */
+       struct isis_area *area;
+
+       if (event != NB_EV_APPLY)
+               return NB_OK;
+
+       area = yang_dnode_get_entry(dnode, true);
+       area->log_adj_changes = 1;
+
        return NB_OK;
 }
 
@@ -1488,7 +1495,14 @@ static int
 isis_instance_log_adjacency_changes_delete(enum nb_event event,
                                           const struct lyd_node *dnode)
 {
-       /* TODO: implement me. */
+       struct isis_area *area;
+
+       if (event != NB_EV_APPLY)
+               return NB_OK;
+
+       area = yang_dnode_get_entry(dnode, true);
+       area->log_adj_changes = 0;
+
        return NB_OK;
 }
 
@@ -2745,6 +2759,7 @@ const struct frr_yang_module_info frr_isisd_info = {
                        .xpath = "/frr-isisd:isis/instance/log-adjacency-changes",
                        .cbs.create = isis_instance_log_adjacency_changes_create,
                        .cbs.delete = isis_instance_log_adjacency_changes_delete,
+                       .cbs.cli_show = cli_show_isis_log_adjacency,
                },
                {
                        .xpath = "/frr-isisd:isis/mpls-te",
index b431e3bbdcad587cbc1092d20066338f29ad17a3..9e77303d22ab0787b23dd50342536eabac51d19f 100644 (file)
@@ -1807,6 +1807,7 @@ void isis_area_lsp_refresh_set(struct isis_area *area, int level,
        lsp_regenerate_schedule(area, level, 1);
 }
 
+#ifdef FABRICD
 DEFUN (log_adj_changes,
        log_adj_changes_cmd,
        "log-adjacency-changes",
@@ -1831,7 +1832,7 @@ DEFUN (no_log_adj_changes,
 
        return CMD_SUCCESS;
 }
-
+#endif /* ifdef FABRICD */
 /* IS-IS configuration write function */
 int isis_config_write(struct vty *vty)
 {
@@ -2189,17 +2190,16 @@ void isis_init()
 #ifdef FABRICD
        install_element(CONFIG_NODE, &router_openfabric_cmd);
        install_element(CONFIG_NODE, &no_router_openfabric_cmd);
-#endif /* ifdef FABRICD */
-#ifdef FABRICD
+
        install_element(ROUTER_NODE, &net_cmd);
        install_element(ROUTER_NODE, &no_net_cmd);
-#endif /* ifdef FABRICD */
-#ifdef FABRICD
+
        install_element(ROUTER_NODE, &isis_topology_cmd);
        install_element(ROUTER_NODE, &no_isis_topology_cmd);
-#endif /* ifdef FABRICD */
+
        install_element(ROUTER_NODE, &log_adj_changes_cmd);
        install_element(ROUTER_NODE, &no_log_adj_changes_cmd);
+#endif /* ifdef FABRICD */
 
        spf_backoff_cmd_init();
 }