]> git.proxmox.com Git - mirror_frr.git/commitdiff
pim6d: Fix missing parameters in "show ipv6 mld interface" command
authorSarita Patra <saritap@vmware.com>
Fri, 24 Feb 2023 15:13:30 +0000 (07:13 -0800)
committerSarita Patra <saritap@vmware.com>
Sat, 25 Feb 2023 07:58:30 +0000 (23:58 -0800)
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>
pimd/pim6_mld.c

index eb897e660d2cc83ee445b5a151d7b5f5e57445c2..fcece56c6fafd626c84c80b6807f7a52d646f46d 100644 (file)
@@ -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