mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-01 16:07:03 +00:00
pim6d: Fix missing parameters in "show ipv6 mld interface" command
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: #11241
Signed-off-by: Sarita Patra <saritap@vmware.com>
(cherry picked from commit cbb1e51311
)
This commit is contained in:
parent
43bcbda9b4
commit
a3350c9487
@ -2393,7 +2393,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,
|
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 pim_interface *pim_ifp = (struct pim_interface *)ifp->info;
|
||||||
struct gm_if *gm_ifp = pim_ifp->mld;
|
struct gm_if *gm_ifp = pim_ifp->mld;
|
||||||
@ -2431,10 +2431,10 @@ static void gm_show_if_one(struct vty *vty, struct interface *ifp,
|
|||||||
json_object_int_add(js_if, "timerLastMemberQueryIntervalMsec",
|
json_object_int_add(js_if, "timerLastMemberQueryIntervalMsec",
|
||||||
gm_ifp->cur_query_intv_trig);
|
gm_ifp->cur_query_intv_trig);
|
||||||
} else {
|
} else {
|
||||||
vty_out(vty, "%-16s %-5s %d %-25pPA %-5s %11pTH %pTVMs\n",
|
ttable_add_row(tt, "%s|%s|%pPAs|%d|%s|%pPAs|%pTH|%pTVMs",
|
||||||
ifp->name, "up", gm_ifp->cur_version, &gm_ifp->querier,
|
ifp->name, "up", &pim_ifp->primary_address,
|
||||||
querier ? "query" : "other",
|
gm_ifp->cur_version, querier ? "local" : "other",
|
||||||
querier ? gm_ifp->t_query : gm_ifp->t_other_querier,
|
&gm_ifp->querier, gm_ifp->t_query,
|
||||||
&gm_ifp->started);
|
&gm_ifp->started);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2443,14 +2443,27 @@ static void gm_show_if_vrf(struct vty *vty, struct vrf *vrf, const char *ifname,
|
|||||||
bool detail, json_object *js)
|
bool detail, json_object *js)
|
||||||
{
|
{
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
json_object *js_vrf;
|
json_object *js_vrf = NULL;
|
||||||
struct pim_interface *pim_ifp;
|
struct pim_interface *pim_ifp;
|
||||||
|
struct ttable *tt = NULL;
|
||||||
|
char *table = NULL;
|
||||||
|
|
||||||
if (js) {
|
if (js) {
|
||||||
js_vrf = json_object_new_object();
|
js_vrf = json_object_new_object();
|
||||||
json_object_object_add(js, vrf->name, js_vrf);
|
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) {
|
FOR_ALL_INTERFACES (vrf, ifp) {
|
||||||
json_object *js_if = NULL;
|
json_object *js_if = NULL;
|
||||||
|
|
||||||
@ -2461,7 +2474,7 @@ static void gm_show_if_vrf(struct vty *vty, struct vrf *vrf, const char *ifname,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
pim_ifp = ifp ->info;
|
pim_ifp = ifp->info;
|
||||||
|
|
||||||
if (!pim_ifp || !pim_ifp->mld)
|
if (!pim_ifp || !pim_ifp->mld)
|
||||||
continue;
|
continue;
|
||||||
@ -2471,17 +2484,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);
|
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,
|
static void gm_show_if(struct vty *vty, struct vrf *vrf, const char *ifname,
|
||||||
bool detail, json_object *js)
|
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)
|
if (vrf)
|
||||||
gm_show_if_vrf(vty, vrf, ifname, detail, js);
|
gm_show_if_vrf(vty, vrf, ifname, detail, js);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user