]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: retrofit the 'purge-originator' command
authorEmanuele Di Pascale <emanuele@voltanet.io>
Wed, 14 Nov 2018 09:55:54 +0000 (10:55 +0100)
committerEmanuele Di Pascale <emanuele@voltanet.io>
Tue, 18 Dec 2018 14:23:49 +0000 (15:23 +0100)
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
isisd/isis_cli.c
isisd/isis_cli.h
isisd/isis_northbound.c
isisd/isis_vty_common.c
isisd/isis_vty_fabricd.c

index a57fbd4699243fa084debf5e1000ee1a4e0f3a33..d2c88eda542bc00d66aeb5ece36f664d3aef5130 100644 (file)
@@ -881,6 +881,24 @@ void cli_show_isis_spf_ietf_backoff(struct vty *vty, struct lyd_node *dnode,
                yang_dnode_get_string(dnode, "./time-to-learn"));
 }
 
+/*
+ * XPath: /frr-isisd:isis/instance/purge-originator
+ */
+DEFPY(area_purge_originator, area_purge_originator_cmd, "[no] purge-originator",
+      NO_STR "Use the RFC 6232 purge-originator\n")
+{
+       nb_cli_enqueue_change(vty, "./purge-originator",
+                             no ? NB_OP_DELETE : NB_OP_CREATE, NULL);
+
+       return nb_cli_apply_changes(vty, NULL);
+}
+
+void cli_show_isis_purge_origin(struct vty *vty, struct lyd_node *dnode,
+                               bool show_defaults)
+{
+       vty_out(vty, " purge-originator\n");
+}
+
 void isis_cli_init(void)
 {
        install_element(CONFIG_NODE, &router_isis_cmd);
@@ -920,6 +938,8 @@ void isis_cli_init(void)
        install_element(ISIS_NODE, &no_spf_interval_cmd);
        install_element(ISIS_NODE, &spf_delay_ietf_cmd);
        install_element(ISIS_NODE, &no_spf_delay_ietf_cmd);
+
+       install_element(ISIS_NODE, &area_purge_originator_cmd);
 }
 
 #endif /* ifndef FABRICD */
index 59128c61671db8899248d7766fcbe3c8ce8d7951..1b2e89c5dbcb3d5bf74a020eb34b0ed862c4c75e 100644 (file)
@@ -55,5 +55,7 @@ void cli_show_isis_spf_min_interval(struct vty *vty, struct lyd_node *dnode,
                                    bool show_defaults);
 void cli_show_isis_spf_ietf_backoff(struct vty *vty, struct lyd_node *dnode,
                                    bool show_defaults);
+void cli_show_isis_purge_origin(struct vty *vty, struct lyd_node *dnode,
+                               bool show_defaults);
 
 #endif /* ISISD_ISIS_CLI_H_ */
index 454299c3db199032ea38b78c5aac41d2c060f1bc..f55a0ccf34605febcbc7adfddc109b3af604e34b 100644 (file)
@@ -343,14 +343,28 @@ static int isis_instance_purge_originator_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->purge_originator = true;
+
        return NB_OK;
 }
 
 static int isis_instance_purge_originator_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->purge_originator = false;
+
        return NB_OK;
 }
 
@@ -1976,6 +1990,7 @@ const struct frr_yang_module_info frr_isisd_info = {
                        .xpath = "/frr-isisd:isis/instance/purge-originator",
                        .cbs.create = isis_instance_purge_originator_create,
                        .cbs.delete = isis_instance_purge_originator_delete,
+                       .cbs.cli_show = cli_show_isis_purge_origin,
                },
                {
                        .xpath = "/frr-isisd:isis/instance/lsp/mtu",
index 3c4279095d3ec961db02b6308cb2f8aad81626b4..c8625b6d4ea07b5a3ebdbf9c15bce90a17618b95 100644 (file)
@@ -439,18 +439,6 @@ DEFUN (no_isis_bfd,
        return CMD_SUCCESS;
 }
 
-DEFUN (area_purge_originator,
-       area_purge_originator_cmd,
-       "[no] purge-originator",
-       NO_STR
-       "Use the RFC 6232 purge-originator\n")
-{
-       VTY_DECLVAR_CONTEXT(isis_area, area);
-
-       area->purge_originator = !!strcmp(argv[0]->text, "no");
-       return CMD_SUCCESS;
-}
-
 void isis_vty_init(void)
 {
        install_element(INTERFACE_NODE, &isis_passive_cmd);
@@ -480,7 +468,5 @@ void isis_vty_init(void)
        install_element(INTERFACE_NODE, &isis_bfd_cmd);
        install_element(INTERFACE_NODE, &no_isis_bfd_cmd);
 
-       install_element(ROUTER_NODE, &area_purge_originator_cmd);
-
        isis_vty_daemon_init();
 }
index 4cd32a95111811ee92ea7db8d4856b7f5b9ebbac..acf1c49db2bee72de7981fd6426beee802df3ec3 100644 (file)
@@ -680,6 +680,18 @@ DEFUN (spf_delay_ietf,
        return CMD_SUCCESS;
 }
 
+DEFUN (area_purge_originator,
+       area_purge_originator_cmd,
+       "[no] purge-originator",
+       NO_STR
+       "Use the RFC 6232 purge-originator\n")
+{
+       VTY_DECLVAR_CONTEXT(isis_area, area);
+
+       area->purge_originator = !!strcmp(argv[0]->text, "no");
+       return CMD_SUCCESS;
+}
+
 void isis_vty_daemon_init(void)
 {
        install_element(ROUTER_NODE, &fabric_tier_cmd);
@@ -716,4 +728,6 @@ void isis_vty_daemon_init(void)
 
        install_element(ROUTER_NODE, &spf_delay_ietf_cmd);
        install_element(ROUTER_NODE, &no_spf_delay_ietf_cmd);
+
+       install_element(ROUTER_NODE, &area_purge_originator_cmd);
 }