]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pim6d: Adding "show ipv6 pim jp-agg" command
authorSai Gomathi N <nsaigomathi@vmware.com>
Wed, 2 Mar 2022 05:13:01 +0000 (21:13 -0800)
committerSai Gomathi N <nsaigomathi@vmware.com>
Mon, 4 Apr 2022 07:52:03 +0000 (00:52 -0700)
Adding new show CLI to display pim join prune aggregate information.

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
pimd/pim6_cmd.c
pimd/pim_cmd_common.c

index 8c9b0329b6a8a149decedadb01d3d35121ad8dd8..636999c4b754437e45fb343d98ac328a2e8dd898 100644 (file)
@@ -1253,6 +1253,36 @@ DEFPY (show_ipv6_pim_join_vrf_all,
        return CMD_WARNING;
 }
 
+DEFPY (show_ipv6_pim_jp_agg,
+       show_ipv6_pim_jp_agg_cmd,
+       "show ipv6 pim [vrf NAME] jp-agg",
+       SHOW_STR
+       IPV6_STR
+       PIM_STR
+       VRF_CMD_HELP_STR
+       "join prune aggregation list\n")
+{
+       struct vrf *v;
+       struct pim_instance *pim;
+
+       v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+       if (!v) {
+               vty_out(vty, "%% Vrf specified: %s does not exist\n", vrf);
+               return CMD_WARNING;
+       }
+       pim = pim_get_pim_instance(v->vrf_id);
+
+       if (!pim) {
+               vty_out(vty, "%% Unable to find pim instance\n");
+               return CMD_WARNING;
+       }
+
+       pim_show_jp_agg_list(pim, vty);
+
+       return CMD_SUCCESS;
+}
+
 void pim_cmd_init(void)
 {
        if_cmd_init(pim_interface_config_write);
@@ -1322,4 +1352,5 @@ void pim_cmd_init(void)
        install_element(VIEW_NODE, &show_ipv6_pim_interface_vrf_all_cmd);
        install_element(VIEW_NODE, &show_ipv6_pim_join_cmd);
        install_element(VIEW_NODE, &show_ipv6_pim_join_vrf_all_cmd);
+       install_element(VIEW_NODE, &show_ipv6_pim_jp_agg_cmd);
 }
index 4a92050d5d46d9ac94c3ed14fab436b28598be8f..b859e4a4720a03c49a6f062e5bef6e08e9761696 100644 (file)
@@ -1684,17 +1684,9 @@ static void pim_show_jp_agg_helper(struct vty *vty, struct interface *ifp,
                                   struct pim_neighbor *neigh,
                                   struct pim_upstream *up, int is_join)
 {
-       char src_str[INET_ADDRSTRLEN];
-       char grp_str[INET_ADDRSTRLEN];
-       char rpf_str[INET_ADDRSTRLEN];
-
-       pim_inet4_dump("<src?>", up->sg.src, src_str, sizeof(src_str));
-       pim_inet4_dump("<grp?>", up->sg.grp, grp_str, sizeof(grp_str));
-       /* pius->address.s_addr */
-       pim_inet4_dump("<rpf?>", neigh->source_addr, rpf_str, sizeof(rpf_str));
-
-       vty_out(vty, "%-16s %-15s %-15s %-15s %5s\n", ifp->name, rpf_str,
-               src_str, grp_str, is_join ? "J" : "P");
+       vty_out(vty, "%-16s %-15pPAs %-15pPAs %-15pPAs %5s\n", ifp->name,
+               &neigh->source_addr, &up->sg.src, &up->sg.grp,
+               is_join ? "J" : "P");
 }
 
 void pim_show_jp_agg_list(struct pim_instance *pim, struct vty *vty)