]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_vty.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / zebra / zebra_vty.c
index d6009db0c6d25b5604a19298dc67b3252462541e..6d6143002999e2c780be2d4ef8c85ca3f4e01057 100644 (file)
@@ -1,21 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /* Zebra VTY functions
  * Copyright (C) 2002 Kunihiro Ishiguro
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * GNU Zebra is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; see the file COPYING; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -146,11 +131,12 @@ DEFUN (no_ip_multicast_mode,
 }
 
 
-DEFUN (show_ip_rpf,
+DEFPY (show_ip_rpf,
        show_ip_rpf_cmd,
-       "show ip rpf [json]",
+       "show [ip$ip|ipv6$ipv6] rpf [json]",
        SHOW_STR
        IP_STR
+       IPV6_STR
        "Display RPF information for multicast source\n"
        JSON_STR)
 {
@@ -159,9 +145,9 @@ DEFUN (show_ip_rpf,
                .multi = false,
        };
 
-       return do_show_ip_route(vty, VRF_DEFAULT_NAME, AFI_IP, SAFI_MULTICAST,
-                               false, uj, 0, NULL, false, 0, 0, 0, false,
-                               &ctx);
+       return do_show_ip_route(vty, VRF_DEFAULT_NAME, ip ? AFI_IP : AFI_IP6,
+                               SAFI_MULTICAST, false, uj, 0, NULL, false, 0, 0,
+                               0, false, &ctx);
 }
 
 DEFPY (show_ip_rpf_addr,
@@ -186,6 +172,28 @@ DEFPY (show_ip_rpf_addr,
        return CMD_SUCCESS;
 }
 
+DEFPY (show_ipv6_rpf_addr,
+       show_ipv6_rpf_addr_cmd,
+       "show ipv6 rpf X:X::X:X$address",
+       SHOW_STR
+       IPV6_STR
+       "Display RPF information for multicast source\n"
+       "IPv6 multicast source address\n")
+{
+       struct route_node *rn;
+       struct route_entry *re;
+
+       re = rib_match_multicast(AFI_IP6, VRF_DEFAULT, (union g_addr *)&address,
+                                &rn);
+
+       if (re)
+               vty_show_ip_route_detail(vty, rn, 1, false, false);
+       else
+               vty_out(vty, "%% No match for RPF lookup\n");
+
+       return CMD_SUCCESS;
+}
+
 static char re_status_output_char(const struct route_entry *re,
                                  const struct nexthop *nhop,
                                  bool is_fib)
@@ -4583,6 +4591,7 @@ void zebra_vty_init(void)
 
        install_element(VIEW_NODE, &show_ip_rpf_cmd);
        install_element(VIEW_NODE, &show_ip_rpf_addr_cmd);
+       install_element(VIEW_NODE, &show_ipv6_rpf_addr_cmd);
 
        install_element(CONFIG_NODE, &ip_nht_default_route_cmd);
        install_element(CONFIG_NODE, &no_ip_nht_default_route_cmd);