mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 05:42:21 +00:00
bgpd: use recent monotonic time for readtime
The readtime value is for diagnostic, and doesn't have to be highly accurate. This also fixes a problem where the readtime was being measured with system clock, but the peer_uptime() was comparing with bgp_clock. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
47f6aef02b
commit
d61c1bbd4b
@ -2385,6 +2385,15 @@ bgp_marker_all_one (struct stream *s, int length)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Recent thread time.
|
||||||
|
On same clock base as bgp_clock (MONOTONIC)
|
||||||
|
but can be time of last context switch to bgp_read thread. */
|
||||||
|
static time_t
|
||||||
|
bgp_recent_clock (void)
|
||||||
|
{
|
||||||
|
return recent_relative_time().tv_sec;
|
||||||
|
}
|
||||||
|
|
||||||
/* Starting point of packet process function. */
|
/* Starting point of packet process function. */
|
||||||
int
|
int
|
||||||
bgp_read (struct thread *thread)
|
bgp_read (struct thread *thread)
|
||||||
@ -2513,14 +2522,14 @@ bgp_read (struct thread *thread)
|
|||||||
bgp_open_receive (peer, size); /* XXX return value ignored! */
|
bgp_open_receive (peer, size); /* XXX return value ignored! */
|
||||||
break;
|
break;
|
||||||
case BGP_MSG_UPDATE:
|
case BGP_MSG_UPDATE:
|
||||||
peer->readtime = time(NULL); /* Last read timer reset */
|
peer->readtime = bgp_recent_clock ();
|
||||||
bgp_update_receive (peer, size);
|
bgp_update_receive (peer, size);
|
||||||
break;
|
break;
|
||||||
case BGP_MSG_NOTIFY:
|
case BGP_MSG_NOTIFY:
|
||||||
bgp_notify_receive (peer, size);
|
bgp_notify_receive (peer, size);
|
||||||
break;
|
break;
|
||||||
case BGP_MSG_KEEPALIVE:
|
case BGP_MSG_KEEPALIVE:
|
||||||
peer->readtime = time(NULL); /* Last read timer reset */
|
peer->readtime = bgp_recent_clock ();
|
||||||
bgp_keepalive_receive (peer, size);
|
bgp_keepalive_receive (peer, size);
|
||||||
break;
|
break;
|
||||||
case BGP_MSG_ROUTE_REFRESH_NEW:
|
case BGP_MSG_ROUTE_REFRESH_NEW:
|
||||||
|
Loading…
Reference in New Issue
Block a user