allow 3min for port last_change compare to uptime, do not assume wrapped

This commit is contained in:
Oliver Gorwits
2023-03-15 08:07:45 +00:00
parent 9fc79ed147
commit 062895df10

View File

@@ -310,12 +310,14 @@ register_worker({ phase => 'early', driver => 'snmp' }, sub {
} }
# #981 must do this after filtering %deviceports to avoid weird data # #981 must do this after filtering %deviceports to avoid weird data
UPTIME: foreach my $entry (keys %$interfaces) { UPTIME: foreach my $entry (sort keys %$interfaces) {
my $port = $interfaces->{$entry}; my $port = $interfaces->{$entry};
next unless exists $deviceports{$port}; next unless exists $deviceports{$port};
my $lc = $i_lastchange->{$entry} || 0; my $lc = $i_lastchange->{$entry} || 0;
if (not $dev_uptime_wrapped and $lc > $dev_uptime) { # allow three minutes skew during boot, in case lc is larger than uptime
# because of different counters starting at different times
if (not $dev_uptime_wrapped and $lc > ($dev_uptime + 18000)) {
debug sprintf ' [%s] interfaces - device uptime wrapped (%s) - correcting', debug sprintf ' [%s] interfaces - device uptime wrapped (%s) - correcting',
$device->ip, $port; $device->ip, $port;
$device->uptime( $dev_uptime + 2**32 ); $device->uptime( $dev_uptime + 2**32 );