From: Donald Sharp Date: Mon, 22 May 2017 19:13:13 +0000 (-0400) Subject: pimd: Get show run to display vrf sub mode X-Git-Tag: frr-4.0-dev~468^2~87 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=9ecb7b77474ee963635df5680dc0b7ce00388a7a;p=mirror%2Ffrr.git pimd: Get show run to display vrf sub mode Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index de87c39bc8..059bd4e6f4 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -4265,12 +4265,13 @@ DEFUN (show_ip_ssmpingd, return CMD_SUCCESS; } -static int pim_rp_cmd_worker(struct vty *vty, const char *rp, const char *group, +static int pim_rp_cmd_worker(struct vty *vty, struct pim_instance *pim, + const char *rp, const char *group, const char *plist) { int result; - result = pim_rp_new(pimg, rp, group, plist); + result = pim_rp_new(pim, rp, group, plist); if (result == PIM_MALLOC_FAIL) { vty_out(vty, "%% Out of memory\n"); @@ -4523,12 +4524,15 @@ DEFUN (ip_pim_rp, "ip address of RP\n" "Group Address range to cover\n") { + VTY_DECLVAR_CONTEXT(vrf, vrf); + struct pim_instance *pim = vrf->info; int idx_ipv4 = 3; if (argc == (idx_ipv4 + 1)) - return pim_rp_cmd_worker(vty, argv[idx_ipv4]->arg, NULL, NULL); + return pim_rp_cmd_worker(vty, pim, argv[idx_ipv4]->arg, NULL, + NULL); else - return pim_rp_cmd_worker(vty, argv[idx_ipv4]->arg, + return pim_rp_cmd_worker(vty, pim, argv[idx_ipv4]->arg, argv[idx_ipv4 + 1]->arg, NULL); } @@ -4542,7 +4546,7 @@ DEFUN (ip_pim_rp_prefix_list, "group prefix-list filter\n" "Name of a prefix-list\n") { - return pim_rp_cmd_worker(vty, argv[3]->arg, NULL, argv[5]->arg); + return pim_rp_cmd_worker(vty, pimg, argv[3]->arg, NULL, argv[5]->arg); } static int pim_no_rp_cmd_worker(struct vty *vty, const char *rp, @@ -7344,7 +7348,9 @@ void pim_cmd_init() install_element(CONFIG_NODE, &ip_multicast_routing_cmd); install_element(CONFIG_NODE, &no_ip_multicast_routing_cmd); install_element(CONFIG_NODE, &ip_pim_rp_cmd); + install_element(VRF_NODE, &ip_pim_rp_cmd); install_element(CONFIG_NODE, &no_ip_pim_rp_cmd); + install_element(VRF_NODE, &no_ip_pim_rp_cmd); install_element(CONFIG_NODE, &ip_pim_rp_prefix_list_cmd); install_element(CONFIG_NODE, &no_ip_pim_rp_prefix_list_cmd); install_element(CONFIG_NODE, &no_ip_pim_ssm_prefix_list_cmd); diff --git a/pimd/pim_instance.c b/pimd/pim_instance.c index bfe2604e93..d493657917 100644 --- a/pimd/pim_instance.c +++ b/pimd/pim_instance.c @@ -31,6 +31,7 @@ #include "pim_oil.h" #include "pim_static.h" #include "pim_ssmpingd.h" +#include "pim_vty.h" static void pim_instance_terminate(struct pim_instance *pim) { @@ -190,8 +191,9 @@ static int pim_vrf_config_write(struct vty *vty) RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name) { pim = vrf->info; - if (!pim || !vrf->vrf_id != VRF_DEFAULT) { + if (!pim || vrf->vrf_id != VRF_DEFAULT) { vty_out(vty, "vrf %s\n", vrf->name); + pim_global_config_write_worker(pim, vty); vty_out(vty, "!\n"); } } diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c index 63ead7817e..b58a0333d7 100644 --- a/pimd/pim_msdp.c +++ b/pimd/pim_msdp.c @@ -1537,8 +1537,7 @@ enum pim_msdp_err pim_msdp_mg_src_add(struct pim_instance *pim, } /*********************** MSDP feature APIs *********************************/ -static int pim_msdp_config_write_helper(struct pim_instance *pim, - struct vty *vty) +int pim_msdp_config_write_helper(struct pim_instance *pim, struct vty *vty) { struct listnode *mbrnode; struct pim_msdp_mg_mbr *mbr; diff --git a/pimd/pim_msdp.h b/pimd/pim_msdp.h index b53391bdd1..669e7690ca 100644 --- a/pimd/pim_msdp.h +++ b/pimd/pim_msdp.h @@ -239,6 +239,7 @@ int pim_msdp_write(struct thread *thread); char *pim_msdp_peer_key_dump(struct pim_msdp_peer *mp, char *buf, int buf_size, bool long_format); int pim_msdp_config_write(struct vty *vty); +int pim_msdp_config_write_helper(struct pim_instance *pim, struct vty *vty); void pim_msdp_peer_pkt_txed(struct pim_msdp_peer *mp); void pim_msdp_sa_ref(struct pim_instance *pim, struct pim_msdp_peer *mp, struct prefix_sg *sg, struct in_addr rp); diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c index 30589f6e17..2a3f183b75 100644 --- a/pimd/pim_vty.c +++ b/pimd/pim_vty.c @@ -142,13 +142,12 @@ int pim_debug_config_write(struct vty *vty) return writes; } -static int pim_global_config_write_worker(struct pim_instance *pim, - struct vty *vty) +int pim_global_config_write_worker(struct pim_instance *pim, struct vty *vty) { int writes = 0; struct pim_ssm *ssm = pim->ssm_info; - writes += pim_msdp_config_write(vty); + writes += pim_msdp_config_write_helper(pim, vty); if (!pim->send_v6_secondary) { vty_out(vty, "no ip pim send-v6-secondary\n"); diff --git a/pimd/pim_vty.h b/pimd/pim_vty.h index 54bab623dc..aef90cacc3 100644 --- a/pimd/pim_vty.h +++ b/pimd/pim_vty.h @@ -24,6 +24,7 @@ int pim_debug_config_write(struct vty *vty); int pim_global_config_write(struct vty *vty); +int pim_global_config_write_worker(struct pim_instance *pim, struct vty *vty); int pim_interface_config_write(struct vty *vty); #endif /* PIM_VTY_H */