ospfd: Few modifications in "show ip ospf neighbor" o/p.

Description:
	1. Adding uptime to the 'show ip ospf neighbor' o/p.
	2. Adding uptime and deadtime in string format for json consumption.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
This commit is contained in:
rgirada 2021-10-07 23:18:14 -07:00
parent 95bbb5e652
commit eb4ed6e8c7

View File

@ -4335,9 +4335,9 @@ DEFUN (show_ip_ospf_interface_traffic,
static void show_ip_ospf_neighbour_header(struct vty *vty) static void show_ip_ospf_neighbour_header(struct vty *vty)
{ {
vty_out(vty, "\n%-15s %3s %-15s %9s %-15s %-32s %5s %5s %5s\n", vty_out(vty, "\n%-15s %-3s %-15s %-15s %-9s %-15s %-32s %5s %5s %5s\n",
"Neighbor ID", "Pri", "State", "Dead Time", "Address", "Neighbor ID", "Pri", "State", "Up Time", "Dead Time",
"Interface", "RXmtL", "RqstL", "DBsmL"); "Address", "Interface", "RXmtL", "RqstL", "DBsmL");
} }
static void show_ip_ospf_neighbor_sub(struct vty *vty, static void show_ip_ospf_neighbor_sub(struct vty *vty,
@ -4350,6 +4350,9 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
char buf[PREFIX_STRLEN]; char buf[PREFIX_STRLEN];
char timebuf[OSPF_TIME_DUMP_SIZE]; char timebuf[OSPF_TIME_DUMP_SIZE];
json_object *json_neighbor = NULL, *json_neigh_array = NULL; json_object *json_neighbor = NULL, *json_neigh_array = NULL;
struct timeval res;
long time_val = 0;
char uptime[OSPF_TIME_DUMP_SIZE];
for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) { for (rn = route_top(oi->nbrs); rn; rn = route_next(rn)) {
if ((nbr = rn->info)) { if ((nbr = rn->info)) {
@ -4359,6 +4362,13 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
/* Down state is not shown. */ /* Down state is not shown. */
if (nbr->state == NSM_Down) if (nbr->state == NSM_Down)
continue; continue;
if (nbr->ts_last_progress.tv_sec
|| nbr->ts_last_progress.tv_usec)
time_val = monotime_since(
&nbr->ts_last_progress, &res)
/ 1000LL;
if (use_json) { if (use_json) {
char neigh_str[INET_ADDRSTRLEN]; char neigh_str[INET_ADDRSTRLEN];
@ -4415,9 +4425,23 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
->u.sands, ->u.sands,
NULL) NULL)
/ 1000LL; / 1000LL;
json_object_int_add(json_neighbor,
"upTimeInMsec",
time_val);
json_object_int_add(json_neighbor, json_object_int_add(json_neighbor,
"deadTimeMsecs", "deadTimeMsecs",
time_store); time_store);
json_object_string_add(
json_neighbor, "upTime",
ospf_timeval_dump(
&res, uptime,
sizeof(uptime)));
json_object_string_add(
json_neighbor, "deadTime",
ospf_timer_dump(
nbr->t_inactivity,
timebuf,
sizeof(timebuf)));
} else { } else {
json_object_string_add(json_neighbor, json_object_string_add(json_neighbor,
"deadTimeMsecs", "deadTimeMsecs",
@ -4451,8 +4475,12 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty,
nbr->priority, msgbuf); nbr->priority, msgbuf);
else else
vty_out(vty, "%-15pI4 %3d %-15s ", vty_out(vty, "%-15pI4 %3d %-15s ",
&nbr->router_id, &nbr->router_id, nbr->priority,
nbr->priority, msgbuf); msgbuf);
vty_out(vty, "%-15s ",
ospf_timeval_dump(&res, uptime,
sizeof(uptime)));
vty_out(vty, "%9s ", vty_out(vty, "%9s ",
ospf_timer_dump(nbr->t_inactivity, ospf_timer_dump(nbr->t_inactivity,