summaryrefslogtreecommitdiffstats
path: root/pimd/pim6_mld.c
diff options
context:
space:
mode:
authorSarita Patra <saritap@vmware.com>2023-02-24 16:13:30 +0100
committerSarita Patra <saritap@vmware.com>2023-02-25 08:58:30 +0100
commitcbb1e51311ca710540d752c9d6c7689f8fc65dc4 (patch)
treee32851e7b5c830e37eddb4f572f30e448846e0d0 /pimd/pim6_mld.c
parentpim6d: Display primary address in "show ipv6 mld interface json" cmd (diff)
downloadfrr-cbb1e51311ca710540d752c9d6c7689f8fc65dc4.tar.xz
frr-cbb1e51311ca710540d752c9d6c7689f8fc65dc4.zip
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>
Diffstat (limited to 'pimd/pim6_mld.c')
-rw-r--r--pimd/pim6_mld.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/pimd/pim6_mld.c b/pimd/pim6_mld.c
index eb897e660..fcece56c6 100644
--- a/pimd/pim6_mld.c
+++ b/pimd/pim6_mld.c
@@ -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;
@@ -2418,11 +2418,11 @@ 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);
}
}
@@ -2430,14 +2430,27 @@ 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;
@@ -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;
@@ -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