]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Add 'show ip msdp vrf all sa ...' command 984/head
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 15 Aug 2017 20:37:13 +0000 (16:37 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 15 Aug 2017 20:37:13 +0000 (16:37 -0400)
Allow the ability to iterate over all vrfs.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_cmd.c

index 8b3badd6ee993b1df699dac37f929d385a7ec5e1..b65eeaba0119954660ff17059c1b45fcc4068875 100644 (file)
@@ -8383,6 +8383,54 @@ DEFUN (show_ip_msdp_sa_sg,
        return CMD_SUCCESS;
 }
 
+DEFUN (show_ip_msdp_sa_sg_vrf_all,
+       show_ip_msdp_sa_sg_vrf_all_cmd,
+       "show ip msdp vrf all sa [A.B.C.D [A.B.C.D]] [json]",
+       SHOW_STR
+       IP_STR
+       MSDP_STR
+       VRF_CMD_HELP_STR
+       "MSDP active-source information\n"
+       "source or group ip\n"
+       "group ip\n"
+       JSON_STR)
+{
+       u_char uj = use_json(argc, argv);
+       struct vrf *vrf;
+       bool first = true;
+       int idx = 2;
+
+       char *src_ip = argv_find(argv, argc, "A.B.C.D", &idx) ? argv[idx++]->arg
+               : NULL;
+       char *grp_ip = idx < argc && argv_find(argv, argc, "A.B.C.D", &idx)
+               ? argv[idx]->arg
+               : NULL;
+
+       if (uj)
+               vty_out(vty, "{ ");
+       RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name) {
+               if (uj) {
+                       if (!first)
+                               vty_out(vty, ", ");
+                       vty_out(vty, " \"%s\": ", vrf->name);
+                       first = false;
+               } else
+                       vty_out(vty, "VRF: %s\n", vrf->name);
+
+               if (src_ip && grp_ip)
+                       ip_msdp_show_sa_sg(vrf->info, vty, src_ip, grp_ip, uj);
+               else if (src_ip)
+                       ip_msdp_show_sa_addr(vrf->info, vty, src_ip, uj);
+               else
+                       ip_msdp_show_sa(vrf->info, vty, uj);
+       }
+       if (uj)
+               vty_out(vty, "}\n");
+
+       return CMD_SUCCESS;
+}
+
+
 void pim_cmd_init(void)
 {
        install_node(&pim_global_node, pim_global_config_write); /* PIM_NODE */
@@ -8638,6 +8686,7 @@ void pim_cmd_init(void)
        install_element(VIEW_NODE, &show_ip_msdp_sa_detail_cmd);
        install_element(VIEW_NODE, &show_ip_msdp_sa_detail_vrf_all_cmd);
        install_element(VIEW_NODE, &show_ip_msdp_sa_sg_cmd);
+       install_element(VIEW_NODE, &show_ip_msdp_sa_sg_vrf_all_cmd);
        install_element(VIEW_NODE, &show_ip_msdp_mesh_group_cmd);
        install_element(VIEW_NODE, &show_ip_msdp_mesh_group_vrf_all_cmd);
        install_element(VIEW_NODE, &show_ip_pim_ssm_range_cmd);