Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pim6d: Adding PIMv6 show CLIs #10710

Merged
merged 8 commits into from
Apr 4, 2022
Prev Previous commit
Next Next commit
pim6d: Adding "show ipv6 pim local-membership"
Adding the new cli to display pim local membership information.
Changing DEFUN to DEPFY for "show ip pim local-membership"

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
  • Loading branch information
SaiGomathiN committed Apr 4, 2022
commit de11054ed02fb5b25f7b5619bd6507261d4e38f0
24 changes: 24 additions & 0 deletions pimd/pim6_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1283,6 +1283,29 @@ DEFPY (show_ipv6_pim_jp_agg,
return CMD_SUCCESS;
}

DEFPY (show_ipv6_pim_local_membership,
show_ipv6_pim_local_membership_cmd,
"show ipv6 pim [vrf NAME] local-membership [json$json]",
SHOW_STR
IPV6_STR
PIM_STR
VRF_CMD_HELP_STR
"PIM interface local-membership\n"
JSON_STR)
{
struct vrf *v;
bool uj = !!json;

v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);

if (!v)
return CMD_WARNING;

pim_show_membership(v->info, vty, uj);

return CMD_SUCCESS;
}

void pim_cmd_init(void)
{
if_cmd_init(pim_interface_config_write);
Expand Down Expand Up @@ -1353,4 +1376,5 @@ void pim_cmd_init(void)
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);
install_element(VIEW_NODE, &show_ipv6_pim_local_membership_cmd);
}
15 changes: 8 additions & 7 deletions pimd/pim_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2693,24 +2693,25 @@ DEFPY (show_ip_pim_jp_agg,
return CMD_SUCCESS;
}

DEFUN (show_ip_pim_local_membership,
DEFPY (show_ip_pim_local_membership,
show_ip_pim_local_membership_cmd,
"show ip pim [vrf NAME] local-membership [json]",
"show ip pim [vrf NAME] local-membership [json$json]",
SHOW_STR
IP_STR
PIM_STR
VRF_CMD_HELP_STR
"PIM interface local-membership\n"
JSON_STR)
{
int idx = 2;
struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
bool uj = use_json(argc, argv);
struct vrf *v;
bool uj = !!json;

if (!vrf)
v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);

if (!v)
return CMD_WARNING;

pim_show_membership(vrf->info, vty, uj);
pim_show_membership(v->info, vty, uj);

return CMD_SUCCESS;
}
Expand Down
17 changes: 6 additions & 11 deletions pimd/pim_cmd_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -1728,7 +1728,6 @@ static void pim_show_membership_helper(struct vty *vty,
struct pim_ifchannel *ch,
struct json_object *json)
{
char ch_grp_str[PIM_ADDRSTRLEN];
json_object *json_iface = NULL;
json_object *json_row = NULL;

Expand All @@ -1739,16 +1738,14 @@ static void pim_show_membership_helper(struct vty *vty,
json_object_object_add(json, ch->interface->name, json_iface);
}

snprintfrr(ch_grp_str, sizeof(ch_grp_str), "%pPAs", &ch->sg.grp);

json_row = json_object_new_object();
json_object_string_addf(json_row, "source", "%pPAs", &ch->sg.src);
json_object_string_add(json_row, "group", ch_grp_str);
json_object_string_addf(json_row, "group", "%pPAs", &ch->sg.grp);
json_object_string_add(json_row, "localMembership",
ch->local_ifmembership == PIM_IFMEMBERSHIP_NOINFO
? "NOINFO"
: "INCLUDE");
json_object_object_add(json_iface, ch_grp_str, json_row);
? "NOINFO"
: "INCLUDE");
json_object_object_addf(json_iface, json_row, "%pPAs", &ch->sg.grp);
}

void pim_show_membership(struct pim_instance *pim, struct vty *vty, bool uj)
Expand All @@ -1773,8 +1770,7 @@ void pim_show_membership(struct pim_instance *pim, struct vty *vty, bool uj)
}

if (uj) {
vty_out(vty, "%s\n", json_object_to_json_string_ext(
json, JSON_C_TO_STRING_PRETTY));
vty_json(vty, json);
} else {
vty_out(vty,
"Interface Address Source Group Membership\n");
Expand Down Expand Up @@ -1841,9 +1837,8 @@ void pim_show_membership(struct pim_instance *pim, struct vty *vty, bool uj)
}
}
}
json_object_free(json);
}

json_object_free(json);
}

static void pim_show_channel_helper(struct pim_instance *pim, struct vty *vty,
Expand Down