summaryrefslogtreecommitdiff
path: root/zebra/zserv.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zserv.c')
-rw-r--r--zebra/zserv.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/zebra/zserv.c b/zebra/zserv.c
index 27668534ee..a731f7f278 100644
--- a/zebra/zserv.c
+++ b/zebra/zserv.c
@@ -1031,6 +1031,7 @@ static char *zserv_time_buf(time_t *time1, char *buf, int buflen)
/* Display client info details */
static void zebra_show_client_detail(struct vty *vty, struct zserv *client)
{
+ struct client_gr_info *info;
char cbuf[ZEBRA_TIME_BUF], rbuf[ZEBRA_TIME_BUF];
char wbuf[ZEBRA_TIME_BUF], nhbuf[ZEBRA_TIME_BUF], mbuf[ZEBRA_TIME_BUF];
time_t connect_time, last_read_time, last_write_time;
@@ -1125,6 +1126,45 @@ static void zebra_show_client_detail(struct vty *vty, struct zserv *client)
vty_out(vty, "ES-EVI %-12u%-12u%-12u\n",
client->local_es_evi_add_cnt, 0, client->local_es_evi_del_cnt);
vty_out(vty, "Errors: %u\n", client->error_cnt);
+
+ TAILQ_FOREACH (info, &client->gr_info_queue, gr_info) {
+ afi_t afi;
+ bool route_sync_done = true;
+ char timebuf[MONOTIME_STRLEN];
+
+ vty_out(vty, "VRF : %s\n", vrf_id_to_name(info->vrf_id));
+ vty_out(vty, "Capabilities : ");
+ switch (info->capabilities) {
+ case ZEBRA_CLIENT_GR_CAPABILITIES:
+ vty_out(vty, "Graceful Restart\n");
+ break;
+ case ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE:
+ case ZEBRA_CLIENT_ROUTE_UPDATE_PENDING:
+ case ZEBRA_CLIENT_GR_DISABLE:
+ case ZEBRA_CLIENT_RIB_STALE_TIME:
+ vty_out(vty, "None\n");
+ break;
+ }
+ for (afi = AFI_IP; afi < AFI_MAX; afi++) {
+ if (info->af_enabled[afi]) {
+ if (info->route_sync[afi])
+ vty_out(vty,
+ "AFI %d enabled, route sync DONE\n",
+ afi);
+ else {
+ vty_out(vty,
+ "AFI %d enabled, route sync NOT DONE\n",
+ afi);
+ route_sync_done = false;
+ }
+ }
+ }
+ if (route_sync_done) {
+ time_to_string(info->route_sync_done_time, timebuf);
+ vty_out(vty, "Route sync finished at %s", timebuf);
+ }
+ }
+
vty_out(vty, "Input Fifo: %zu:%zu Output Fifo: %zu:%zu\n",
client->ibuf_fifo->count, client->ibuf_fifo->max_count,
client->obuf_fifo->count, client->obuf_fifo->max_count);