mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 17:01:49 +00:00
lib: Add a Dev catch for when a timer is set for > 1 year
Since there are timers that are created based upon doing some math and we know that unsigned values when doing math and we accidently subtract a larger number from a smaller number causes the unsigned number to wrap to very large numbers, let's put in a small catch in place to see if there are any places in the system that mistakes are made and FRR is accidently creating a problem for itself. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
41ff140670
commit
e2eff5c3b1
@ -68,6 +68,12 @@ static struct log_ref ferr_lib_warn[] = {
|
||||
.description = "The Event subsystem has detected a file descriptor read/write event without an associated handling function. This is a bug, please collect log data and open an issue.",
|
||||
.suggestion = "Gather log data and open an Issue",
|
||||
},
|
||||
{
|
||||
.code = EC_LIB_TIMER_TOO_LONG,
|
||||
.title = "The Event subsystem has detected an internal timer that is scheduled to pop in greater than one year",
|
||||
.description = "The Event subsystem has detected a timer being started that will pop in a timer that is greater than one year. This is a bug, please collect log data and open an issue.",
|
||||
.suggestion = "Gather log data and open an Issue",
|
||||
},
|
||||
{
|
||||
.code = EC_LIB_RMAP_RECURSION_LIMIT,
|
||||
.title = "Reached the Route-Map Recursion Limit",
|
||||
|
@ -48,6 +48,7 @@ enum lib_log_refs {
|
||||
EC_LIB_SLOW_THREAD_WALL,
|
||||
EC_LIB_STARVE_THREAD,
|
||||
EC_LIB_NO_THREAD,
|
||||
EC_LIB_TIMER_TOO_LONG,
|
||||
EC_LIB_RMAP_RECURSION_LIMIT,
|
||||
EC_LIB_BACKUP_CONFIG,
|
||||
EC_LIB_VRF_LENGTH,
|
||||
|
@ -1052,6 +1052,12 @@ static void _thread_add_timer_timeval(const struct xref_threadsched *xref,
|
||||
if (thread_timer_list_first(&m->timer) == thread)
|
||||
AWAKEN(m);
|
||||
}
|
||||
#define ONEYEAR2SEC (60 * 60 * 24 * 365)
|
||||
if (time_relative->tv_sec > ONEYEAR2SEC)
|
||||
flog_err(
|
||||
EC_LIB_TIMER_TOO_LONG,
|
||||
"Timer: %pTHD is created with an expiration that is greater than 1 year",
|
||||
thread);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user