From 062895df10ef2796a9fe219360e34e57bd821941 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Wed, 15 Mar 2023 08:07:45 +0000 Subject: [PATCH] allow 3min for port last_change compare to uptime, do not assume wrapped --- lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm index 435cf848..7deaffde 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm @@ -310,12 +310,14 @@ register_worker({ phase => 'early', driver => 'snmp' }, sub { } # #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}; next unless exists $deviceports{$port}; 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', $device->ip, $port; $device->uptime( $dev_uptime + 2**32 );