diff options
Diffstat (limited to 'ospfd/ospf_vty.c')
| -rw-r--r-- | ospfd/ospf_vty.c | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 64d3b7a028..bbb458d8ef 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -1878,7 +1878,7 @@ DEFUN (no_ospf_area_import_list, DEFUN (ospf_area_filter_list, ospf_area_filter_list_cmd, - "area <A.B.C.D|(0-4294967295)> filter-list prefix WORD <in|out>", + "area <A.B.C.D|(0-4294967295)> filter-list prefix PREFIXLIST_NAME <in|out>", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" @@ -1923,7 +1923,7 @@ DEFUN (ospf_area_filter_list, DEFUN (no_ospf_area_filter_list, no_ospf_area_filter_list_cmd, - "no area <A.B.C.D|(0-4294967295)> filter-list prefix WORD <in|out>", + "no area <A.B.C.D|(0-4294967295)> filter-list prefix PREFIXLIST_NAME <in|out>", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" @@ -4335,9 +4335,9 @@ DEFUN (show_ip_ospf_interface_traffic, static void show_ip_ospf_neighbour_header(struct vty *vty) { - vty_out(vty, "\n%-15s %3s %-15s %9s %-15s %-32s %5s %5s %5s\n", - "Neighbor ID", "Pri", "State", "Dead Time", "Address", - "Interface", "RXmtL", "RqstL", "DBsmL"); + vty_out(vty, "\n%-15s %-3s %-15s %-15s %-9s %-15s %-32s %5s %5s %5s\n", + "Neighbor ID", "Pri", "State", "Up Time", "Dead Time", + "Address", "Interface", "RXmtL", "RqstL", "DBsmL"); } 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 timebuf[OSPF_TIME_DUMP_SIZE]; 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)) { if ((nbr = rn->info)) { @@ -4359,6 +4362,13 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty, /* Down state is not shown. */ if (nbr->state == NSM_Down) 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) { char neigh_str[INET_ADDRSTRLEN]; @@ -4390,7 +4400,7 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty, json_neighbor = json_object_new_object(); - ospf_nbr_state_message(nbr, msgbuf, 16); + ospf_nbr_ism_state_message(nbr, msgbuf, 16); json_object_int_add(json_neighbor, "priority", nbr->priority); @@ -4416,8 +4426,22 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty, NULL) / 1000LL; json_object_int_add(json_neighbor, + "upTimeInMsec", + time_val); + json_object_int_add(json_neighbor, "deadTimeMsecs", 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 { json_object_string_add(json_neighbor, "deadTimeMsecs", @@ -4443,7 +4467,7 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty, json_object_array_add(json_neigh_array, json_neighbor); } else { - ospf_nbr_state_message(nbr, msgbuf, 16); + ospf_nbr_ism_state_message(nbr, msgbuf, 16); if (nbr->state == NSM_Attempt && nbr->router_id.s_addr == INADDR_ANY) @@ -4451,8 +4475,12 @@ static void show_ip_ospf_neighbor_sub(struct vty *vty, nbr->priority, msgbuf); else vty_out(vty, "%-15pI4 %3d %-15s ", - &nbr->router_id, - nbr->priority, msgbuf); + &nbr->router_id, nbr->priority, + msgbuf); + + vty_out(vty, "%-15s ", + ospf_timeval_dump(&res, uptime, + sizeof(uptime))); vty_out(vty, "%9s ", ospf_timer_dump(nbr->t_inactivity, |
