mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	Generalise arp discovery cache; move to common
This commit is contained in:
		@@ -800,6 +800,28 @@ function enable_graphs($device, &$graph_enable)
 | 
			
		||||
    enable_os_graphs($device['os'], $graph_enable);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// maintain a simple cache of objects
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
function object_add_cache($section, $obj)
 | 
			
		||||
{
 | 
			
		||||
    global $object_cache;
 | 
			
		||||
    $object_cache[$section][$obj] = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function object_is_cached($section, $obj)
 | 
			
		||||
{
 | 
			
		||||
    global $object_cache;
 | 
			
		||||
    if (array_key_exists($obj, $object_cache)) {
 | 
			
		||||
        return $object_cache[$obj];
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Checks if config allows us to ping this device
 | 
			
		||||
 * $attribs contains an array of all of this devices
 | 
			
		||||
@@ -812,9 +834,6 @@ function can_ping_device($attribs) {
 | 
			
		||||
    if ($config['icmp_check'] === true && $attribs['override_icmp_disable'] != "true") {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
} // end can_ping_device
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -60,12 +60,12 @@ foreach (dbFetchRows($sql, array($deviceid)) as $entry) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Attempt discovery of each IP only once per run.
 | 
			
		||||
    if (arp_discovery_is_cached($ip)) {
 | 
			
		||||
    if (object_is_cached('arp_discovery', $ip)) {
 | 
			
		||||
        echo '.';
 | 
			
		||||
        continue;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    arp_discovery_add_cache($ip);
 | 
			
		||||
    object_add_cache('arp_discovery', $ip);
 | 
			
		||||
 | 
			
		||||
    $name = gethostbyaddr($ip);
 | 
			
		||||
    echo '+';
 | 
			
		||||
 
 | 
			
		||||
@@ -704,25 +704,3 @@ function discover_process_ipv6(&$valid, $ifIndex, $ipv6_address, $ipv6_prefixlen
 | 
			
		||||
    }//end if
 | 
			
		||||
 | 
			
		||||
}//end discover_process_ipv6()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// maintain a simple cache of seen IPs during ARP discovery
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function arp_discovery_add_cache($ip) {
 | 
			
		||||
    global $arp_discovery;
 | 
			
		||||
    $arp_discovery[$ip] = true;
 | 
			
		||||
 | 
			
		||||
}//end arp_discovery_add_cache()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function arp_discovery_is_cached($ip) {
 | 
			
		||||
    global $arp_discovery;
 | 
			
		||||
    if (array_key_exists($ip, $arp_discovery)) {
 | 
			
		||||
        return $arp_discovery[$ip];
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}//end arp_discovery_is_cached()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user