summaryrefslogtreecommitdiff
path: root/pimd/pim_cmd.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-08-15 16:37:13 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-08-15 16:37:13 -0400
commit47bf9e213abb002512468324158db5bc62fd00ff (patch)
tree883c9218cc79a04d38f2830dfcb1596a28dc65c6 /pimd/pim_cmd.c
parent15507b63e616276b839a0cc4f15c8aef6a2e446d (diff)
pimd: Add 'show ip msdp vrf all sa ...' command
Allow the ability to iterate over all vrfs. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_cmd.c')
-rw-r--r--pimd/pim_cmd.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index 8b3badd6ee..b65eeaba01 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -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);