From c544b9e8e72c3b77cca9d3d0ceaeae427b761f2c Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Sat, 9 Mar 2024 00:01:01 +0200 Subject: [PATCH] ripngd: fix "clear ipv6 ripng" command mgmtd doesn't support YANG RPCs yet, so this command must go directly to ripngd. Signed-off-by: Igor Ryzhov --- ripngd/ripng_cli.c | 32 -------------------------------- ripngd/ripngd.c | 33 +++++++++++++++++++++++++++++++++ ripngd/subdir.am | 1 + 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/ripngd/ripng_cli.c b/ripngd/ripng_cli.c index ed460a239e..4806861fe0 100644 --- a/ripngd/ripng_cli.c +++ b/ripngd/ripng_cli.c @@ -512,36 +512,6 @@ void cli_show_ipv6_ripng_split_horizon(struct vty *vty, } } -/* - * XPath: /frr-ripngd:clear-ripng-route - */ -DEFPY_YANG (clear_ipv6_rip, - clear_ipv6_rip_cmd, - "clear ipv6 ripng [vrf WORD]", - CLEAR_STR - IPV6_STR - "Clear IPv6 RIP database\n" - VRF_CMD_HELP_STR) -{ - struct list *input; - int ret; - - input = list_new(); - if (vrf) { - struct yang_data *yang_vrf; - - yang_vrf = yang_data_new( - "/frr-ripngd:clear-ripng-route/input/vrf", vrf); - listnode_add(input, yang_vrf); - } - - ret = nb_cli_rpc(vty, "/frr-ripngd:clear-ripng-route", input, NULL); - - list_delete(&input); - - return ret; -} - DEFPY_YANG( ripng_ipv6_distribute_list, ripng_ipv6_distribute_list_cmd, "ipv6 distribute-list ACCESSLIST6_NAME$name $dir [WORD$ifname]", @@ -693,8 +663,6 @@ void ripng_cli_init(void) install_element(INTERFACE_NODE, &ipv6_ripng_split_horizon_cmd); - install_element(ENABLE_NODE, &clear_ipv6_rip_cmd); - if_rmap_init(RIPNG_NODE); } diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index f4dadf377d..80b9013e0f 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -2231,6 +2231,38 @@ DEFUN (show_ipv6_ripng_status, return CMD_SUCCESS; } +#include "ripngd/ripngd_clippy.c" + +/* + * XPath: /frr-ripngd:clear-ripng-route + */ +DEFPY_YANG (clear_ipv6_rip, + clear_ipv6_rip_cmd, + "clear ipv6 ripng [vrf WORD]", + CLEAR_STR + IPV6_STR + "Clear IPv6 RIP database\n" + VRF_CMD_HELP_STR) +{ + struct list *input; + int ret; + + input = list_new(); + if (vrf) { + struct yang_data *yang_vrf; + + yang_vrf = yang_data_new( + "/frr-ripngd:clear-ripng-route/input/vrf", vrf); + listnode_add(input, yang_vrf); + } + + ret = nb_cli_rpc(vty, "/frr-ripngd:clear-ripng-route", input, NULL); + + list_delete(&input); + + return ret; +} + /* Update ECMP routes to zebra when ECMP is disabled. */ void ripng_ecmp_disable(struct ripng *ripng) { @@ -2648,6 +2680,7 @@ void ripng_init(void) /* Install ripng commands. */ install_element(VIEW_NODE, &show_ipv6_ripng_cmd); install_element(VIEW_NODE, &show_ipv6_ripng_status_cmd); + install_element(ENABLE_NODE, &clear_ipv6_rip_cmd); ripng_if_init(); ripng_debug_init(); diff --git a/ripngd/subdir.am b/ripngd/subdir.am index 83e376b555..a88114432d 100644 --- a/ripngd/subdir.am +++ b/ripngd/subdir.am @@ -27,6 +27,7 @@ ripngd_ripngd_SOURCES = \ clippy_scan += \ ripngd/ripng_cli.c \ + ripngd/ripngd.c \ # end noinst_HEADERS += \ -- 2.39.5