diff --git a/lib/if.c b/lib/if.c index a344c2b8657e..a8ceac72432b 100644 --- a/lib/if.c +++ b/lib/if.c @@ -1340,6 +1340,15 @@ static void cli_show_interface_end(struct vty *vty, vty_out(vty, "exit\n"); } +static int cli_cmp_interface(const struct lyd_node *dnode1, + const struct lyd_node *dnode2) +{ + const char *ifname1 = yang_dnode_get_string(dnode1, "name"); + const char *ifname2 = yang_dnode_get_string(dnode2, "name"); + + return if_cmp_name_func(ifname1, ifname2); +} + void if_vty_config_start(struct vty *vty, struct interface *ifp) { vty_frame(vty, "!\n"); @@ -1760,6 +1769,7 @@ const struct frr_yang_module_info frr_interface_info = { .destroy = lib_interface_destroy, .cli_show = cli_show_interface, .cli_show_end = cli_show_interface_end, + .cli_cmp = cli_cmp_interface, .get_next = lib_interface_get_next, .get_keys = lib_interface_get_keys, .lookup_entry = lib_interface_lookup_entry, @@ -1842,6 +1852,7 @@ const struct frr_yang_module_info frr_interface_cli_info = { .cbs = { .cli_show = cli_show_interface, .cli_show_end = cli_show_interface_end, + .cli_cmp = cli_cmp_interface, }, }, { diff --git a/ripd/rip_cli.c b/ripd/rip_cli.c index 29db1b232d1f..2e967698ea59 100644 --- a/ripd/rip_cli.c +++ b/ripd/rip_cli.c @@ -83,6 +83,11 @@ void cli_show_router_rip(struct vty *vty, const struct lyd_node *dnode, vty_out(vty, "\n"); } +void cli_show_end_router_rip(struct vty *vty, const struct lyd_node *dnode) +{ + vty_out(vty, "exit\n"); +} + /* * XPath: /frr-ripd:ripd/instance/allow-ecmp */ @@ -1332,6 +1337,7 @@ const struct frr_yang_module_info frr_ripd_cli_info = { { .xpath = "/frr-ripd:ripd/instance", .cbs.cli_show = cli_show_router_rip, + .cbs.cli_show_end = cli_show_end_router_rip, }, { .xpath = "/frr-ripd:ripd/instance/allow-ecmp", diff --git a/ripd/rip_nb.h b/ripd/rip_nb.h index d07273af8029..ee592daf81a1 100644 --- a/ripd/rip_nb.h +++ b/ripd/rip_nb.h @@ -173,6 +173,7 @@ void ripd_instance_timers_apply_finish(struct nb_cb_apply_finish_args *args); /* Optional 'cli_show' callbacks. */ void cli_show_router_rip(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +void cli_show_end_router_rip(struct vty *vty, const struct lyd_node *dnode); void cli_show_rip_allow_ecmp(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); void cli_show_rip_default_information_originate(struct vty *vty, diff --git a/ripngd/ripng_cli.c b/ripngd/ripng_cli.c index a4a0f5a2cb38..ed460a239e76 100644 --- a/ripngd/ripng_cli.c +++ b/ripngd/ripng_cli.c @@ -83,6 +83,11 @@ void cli_show_router_ripng(struct vty *vty, const struct lyd_node *dnode, vty_out(vty, "\n"); } +void cli_show_end_router_ripng(struct vty *vty, const struct lyd_node *dnode) +{ + vty_out(vty, "exit\n"); +} + /* * XPath: /frr-ripngd:ripngd/instance/allow-ecmp */ @@ -701,6 +706,7 @@ const struct frr_yang_module_info frr_ripngd_cli_info = { { .xpath = "/frr-ripngd:ripngd/instance", .cbs.cli_show = cli_show_router_ripng, + .cbs.cli_show_end = cli_show_end_router_ripng, }, { .xpath = "/frr-ripngd:ripngd/instance/allow-ecmp", diff --git a/ripngd/ripng_nb.h b/ripngd/ripng_nb.h index a6ac1fba076b..790a50f62893 100644 --- a/ripngd/ripng_nb.h +++ b/ripngd/ripng_nb.h @@ -107,6 +107,7 @@ void ripngd_instance_timers_apply_finish(struct nb_cb_apply_finish_args *args); /* Optional 'cli_show' callbacks. */ void cli_show_router_ripng(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); +void cli_show_end_router_ripng(struct vty *vty, const struct lyd_node *dnode); void cli_show_ripng_allow_ecmp(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); void cli_show_ripng_default_information_originate(struct vty *vty,