watch for dupe IPs

This commit is contained in:
Oliver Gorwits
2018-02-10 16:38:38 +00:00
parent f71aae75fd
commit 748ebba7c0

View File

@@ -40,12 +40,19 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
or return Status->defer("discover failed: could not SNMP connect to $device"); or return Status->defer("discover failed: could not SNMP connect to $device");
my @to_discover = store_neighbors($device); my @to_discover = store_neighbors($device);
my %seen_id = (); my (%seen_id, %seen_ip) = ((), ());
# only enqueue if device is not already discovered, # only enqueue if device is not already discovered,
# discover_* config permits the discovery # discover_* config permits the discovery
foreach my $neighbor (@to_discover) { foreach my $neighbor (@to_discover) {
my ($ip, $remote_type, $remote_id) = @$neighbor; my ($ip, $remote_type, $remote_id) = @$neighbor;
if ($seen_ip{ $ip }++) {
debug sprintf
' queue - skip: IP %s is already queued from %s',
$ip, $device->ip;
next;
}
if ($remote_id and $seen_id{ $remote_id }++) { if ($remote_id and $seen_id{ $remote_id }++) {
debug sprintf debug sprintf
' queue - skip: %s with ID [%s] already queued from %s', ' queue - skip: %s with ID [%s] already queued from %s',