diff --git a/lib/App/Netdisco/Util/SNMP.pm b/lib/App/Netdisco/Util/SNMP.pm index efbb19ad..f3204749 100644 --- a/lib/App/Netdisco/Util/SNMP.pm +++ b/lib/App/Netdisco/Util/SNMP.pm @@ -80,6 +80,8 @@ sub get_communities { Takes an established L instance and makes a fresh connection using community indexing, with the given C<$vlan> ID. Works for all SNMP versions. +Inherits the C from the previous L instance. + Passing VLAN "C<0>" (zero) will reset the indexing to the basic v2 community or v3 empty context. @@ -88,6 +90,7 @@ or v3 empty context. sub snmp_comm_reindex { my ($snmp, $device, $vlan) = @_; my $ver = $snmp->snmp_ver; + my $vtp = $snmp->vtp_version; if ($ver == 3) { my $prefix = ''; @@ -122,6 +125,9 @@ sub snmp_comm_reindex { $vlan ? $snmp->update(Community => $comm . '@' . $vlan) : $snmp->update(Community => $comm); } + + $snmp->cache({ _vtp_version => $vtp }); + return $snmp; } true; diff --git a/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm b/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm index 029adb2a..09c924b5 100644 --- a/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm +++ b/lib/App/Netdisco/Worker/Plugin/Macsuck/Nodes.pm @@ -274,7 +274,8 @@ sub walk_fwtable { my $fw_mac = $snmp->fw_mac; my $fw_port = $snmp->fw_port; - my $fw_vlan = $snmp->qb_fw_vlan; + my $fw_vlan = ($snmp->can('cisco_comm_indexing') && $snmp->cisco_comm_indexing()) + ? {} : $snmp->qb_fw_vlan; my $bp_index = $snmp->bp_index; # to map forwarding table port to device port we have