Skip to content

Commit

Permalink
Merge pull request librenms#160 from laf/issue-159
Browse files Browse the repository at this point in the history
Urgent: Fix for Cisco kit where match prefix is switched off
  • Loading branch information
paulgear committed Apr 27, 2014
2 parents e6fa7d4 + fe100a4 commit 59dfe4e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
17 changes: 15 additions & 2 deletions includes/discovery/vlans.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,22 @@
if ($device['os_group'] == "cisco" || $device['os'] == "ios") // This shit only seems to work on IOS
{
# Probably does not work with snmpv3. I have no real idea about what this code is really doing
$device_details = $device;
$device_details['snmpcontext'] = $vlan_id;
$vlan_device = array_merge($device, array('community' => $device['community']."@".$vlan_id));
$vlan_data = snmpwalk_cache_oid($vlan_device, "dot1dStpPortEntry", array(), "BRIDGE-MIB:Q-BRIDGE-MIB");
$vlan_data = snmpwalk_cache_oid($vlan_device, "dot1dBasePortEntry", $vlan_data, "BRIDGE-MIB:Q-BRIDGE-MIB");
$vlan_data = snmpwalk_cache_oid($device_details, "dot1dStpPortEntry", array(), "BRIDGE-MIB:Q-BRIDGE-MIB");
if ($exec_response['status'] != 0)
{
unset($device_details);
if( $device['snmpver'] == 'v3')
{
print_error("ERROR: For 'vlan-' context to work correctly on cisco device with SNMPv3, please add 'match prefix' into snmp config.");
} else {
print_error("ERROR: No support for per-VLAN community");
}
break;
}
$vlan_data = snmpwalk_cache_oid($device_details, "dot1dBasePortEntry", $vlan_data, "BRIDGE-MIB:Q-BRIDGE-MIB");
}

echo("VLAN $vlan_id \n");
Expand Down
18 changes: 17 additions & 1 deletion includes/snmp.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -765,12 +765,28 @@ function snmp_cache_portName($device, $array)
function snmp_gen_auth (&$device)
{
global $debug;
$vlan = FALSE;

if (isset($device['snmpcontext']))
{
if (is_numeric($device['snmpcontext']) && $device['snmpcontext'] > 0 && $device['snmpcontext'] < 4096 )
{
$vlan = $device['snmpcontext'];
}
}

$cmd = "";

if ($device['snmpver'] === "v3")
{
$cmd = " -v3 -n \"\" -l " . $device['authlevel'];
$cmd = " -v3 -l " . $device['authlevel'];

if(is_numeric($vlan))
{
$cmd .= ' -n "vlan-' . $vlan . '"';
} else {
$cmd .= ' -n ""';
}

if ($device['authlevel'] === "noAuthNoPriv")
{
Expand Down

0 comments on commit 59dfe4e

Please sign in to comment.