]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Show PfxSnt for `show bgp <afi> <safi>` command
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Wed, 22 Apr 2020 20:39:13 +0000 (23:39 +0300)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Thu, 23 Apr 2020 08:48:14 +0000 (11:48 +0300)
JSON output was already in, just printing in CLI as well.

```
root@exit1-debian-9:~# vtysh -c 'show bgp ipv4 summary'

IPv4 Unicast Summary:
BGP router identifier 10.10.10.1, local AS number 65001 vrf-id 0
BGP table version 100003
RIB entries 200005, using 37 MiB of memory
Peers 1, using 21 KiB of memory

... MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
...      64       157        0    0    0 00:01:18            0   100003

Total number of neighbors 1
```

JSON:

```
root@exit1-debian-9:~# vtysh -c 'show bgp ipv4 summary json' \ |
> jq '.ipv4Unicast.peers."192.168.0.2".pfxSnt'
100003
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
bgpd/bgp_vty.c

index a356564813ec98c2b1abfcc98e96e2eb79889431..33117d212a8e0c780a93ec1f1a89b5556ab47921 100644 (file)
@@ -9047,10 +9047,12 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
                                        vty_out(vty, "EstdCnt DropCnt ResetTime Reason\n");
                                else
                                        vty_out(vty,
-                                       "V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd\n");
+                                               "V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt\n");
                        }
                }
 
+               paf = peer_af_find(peer, afi, pfx_rcd_safi);
+
                count++;
                /* Works for both failed & successful cases */
                if (peer_dynamic_neighbor(peer))
@@ -9106,7 +9108,6 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
                                json_object_int_add(json_peer, "pfxRcd",
                                                    peer->pcount[afi][pfx_rcd_safi]);
 
-                               paf = peer_af_find(peer, afi, pfx_rcd_safi);
                                if (paf && PAF_SUBGRP(paf))
                                        json_object_int_add(json_peer,
                                                            "pfxSnt",
@@ -9192,7 +9193,7 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
                                        peer_uptime(peer->uptime, timebuf,
                                                    BGP_UPTIME_LEN, 0, NULL));
 
-                               if (peer->status == Established)
+                               if (peer->status == Established) {
                                        if (peer->afc_recv[afi][safi])
                                                vty_out(vty, " %12" PRIu32,
                                                        peer->pcount
@@ -9200,7 +9201,12 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
                                                                [pfx_rcd_safi]);
                                        else
                                                vty_out(vty, " NoNeg");
-                               else {
+
+                                       if (paf && PAF_SUBGRP(paf))
+                                               vty_out(vty, " %8" PRIu32,
+                                                       (PAF_SUBGRP(paf))
+                                                               ->scount);
+                               } else {
                                        if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
                                                vty_out(vty, " Idle (Admin)");
                                        else if (CHECK_FLAG(
@@ -9211,6 +9217,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
                                                vty_out(vty, " %12s",
                                                        lookup_msg(bgp_status_msg,
                                                                   peer->status, NULL));
+
+                                       vty_out(vty, " %8" PRIu32, 0);
                                }
                                vty_out(vty, "\n");
                        }