Skip to content

Commit

Permalink
pim6d: Fix missing parameters in "show ipv6 mld interface" command
Browse files Browse the repository at this point in the history
Before fix:
==========
frr# show ipv6 mld interface
Interface         State  V  Querier                    Timer               Uptime
ens224            up     1  fe80::250:56ff:feb7:a7e3   query 00:00:24.219  00:00:07.031

After fix:
=========
frr(config-if)# do show ipv6 mld interface
 Interface  State  Address                   V  Querier  QuerierIp                 Query Timer   Uptime
 ens224     up     fe80::250:56ff:feb7:a7e3  1  local    fe80::250:56ff:feb7:a7e3  00:01:22.263  00:08:00.237

Issue: FRRouting#11241

Signed-off-by: Sarita Patra <saritap@vmware.com>
  • Loading branch information
patrasar committed Feb 25, 2023
1 parent 3ab119a commit cbb1e51
Showing 1 changed file with 30 additions and 13 deletions.
43 changes: 30 additions & 13 deletions pimd/pim6_mld.c
Original file line number Diff line number Diff line change
Expand Up @@ -2380,7 +2380,7 @@ static void gm_show_if_one_detail(struct vty *vty, struct interface *ifp)
}

static void gm_show_if_one(struct vty *vty, struct interface *ifp,
json_object *js_if)
json_object *js_if, struct ttable *tt)
{
struct pim_interface *pim_ifp = (struct pim_interface *)ifp->info;
struct gm_if *gm_ifp = pim_ifp->mld;
Expand Down Expand Up @@ -2418,26 +2418,39 @@ static void gm_show_if_one(struct vty *vty, struct interface *ifp,
json_object_int_add(js_if, "timerLastMemberQueryIntervalMsec",
gm_ifp->cur_query_intv_trig);
} else {
vty_out(vty, "%-16s %-5s %d %-25pPA %-5s %11pTH %pTVMs\n",
ifp->name, "up", gm_ifp->cur_version, &gm_ifp->querier,
querier ? "query" : "other",
querier ? gm_ifp->t_query : gm_ifp->t_other_querier,
&gm_ifp->started);
ttable_add_row(tt, "%s|%s|%pPAs|%d|%s|%pPAs|%pTH|%pTVMs",
ifp->name, "up", &pim_ifp->primary_address,
gm_ifp->cur_version, querier ? "local" : "other",
&gm_ifp->querier, gm_ifp->t_query,
&gm_ifp->started);
}
}

static void gm_show_if_vrf(struct vty *vty, struct vrf *vrf, const char *ifname,
bool detail, json_object *js)
{
struct interface *ifp;
json_object *js_vrf;
json_object *js_vrf = NULL;
struct pim_interface *pim_ifp;
struct ttable *tt = NULL;
char *table = NULL;

if (js) {
js_vrf = json_object_new_object();
json_object_object_add(js, vrf->name, js_vrf);
}

if (!js && !detail) {
/* Prepare table. */
tt = ttable_new(&ttable_styles[TTSTYLE_BLANK]);
ttable_add_row(
tt,
"Interface|State|Address|V|Querier|QuerierIp|Query Timer|Uptime");
tt->style.cell.rpad = 2;
tt->style.corner = '+';
ttable_restyle(tt);
}

FOR_ALL_INTERFACES (vrf, ifp) {
json_object *js_if = NULL;

Expand All @@ -2448,7 +2461,7 @@ static void gm_show_if_vrf(struct vty *vty, struct vrf *vrf, const char *ifname,
continue;
}

pim_ifp = ifp ->info;
pim_ifp = ifp->info;

if (!pim_ifp || !pim_ifp->mld)
continue;
Expand All @@ -2458,17 +2471,21 @@ static void gm_show_if_vrf(struct vty *vty, struct vrf *vrf, const char *ifname,
json_object_object_add(js_vrf, ifp->name, js_if);
}

gm_show_if_one(vty, ifp, js_if);
gm_show_if_one(vty, ifp, js_if, tt);
}

/* Dump the generated table. */
if (!js && !detail) {
table = ttable_dump(tt, "\n");
vty_out(vty, "%s\n", table);
XFREE(MTYPE_TMP, table);
ttable_del(tt);
}
}

static void gm_show_if(struct vty *vty, struct vrf *vrf, const char *ifname,
bool detail, json_object *js)
{
if (!js && !detail)
vty_out(vty, "%-16s %-5s V %-25s %-18s %s\n", "Interface",
"State", "Querier", "Timer", "Uptime");

if (vrf)
gm_show_if_vrf(vty, vrf, ifname, detail, js);
else
Expand Down

0 comments on commit cbb1e51

Please sign in to comment.