Bill's patch to allow single instance partial table fetches.
This commit is contained in:
16
Info.pm
16
Info.pm
@@ -2537,8 +2537,22 @@ sub _load_attr {
|
|||||||
my $repeaters = $self->{BulkRepeaters} || $REPEATERS;
|
my $repeaters = $self->{BulkRepeaters} || $REPEATERS;
|
||||||
my $bulkwalk = $can_bulkwalk && $ver != 1;
|
my $bulkwalk = $can_bulkwalk && $ver != 1;
|
||||||
|
|
||||||
|
if ($partial) {
|
||||||
|
# Try a GET, in case the partial is a leaf OID.
|
||||||
|
# Would like to only do this if we know the OID is
|
||||||
|
# long enough; implementing that would require a
|
||||||
|
# lot of MIB mucking.
|
||||||
|
my $try = $sess->get($var);
|
||||||
|
$errornum = $sess->{ErrorNum};
|
||||||
|
if (defined($try) && $errornum == 0 && $try !~ /^NOSUCH/) {
|
||||||
|
$var->[2] = $try;
|
||||||
|
$vars = [ $var ];
|
||||||
|
$bulkwalk = 1; # fake a bulkwalk return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Use BULKWALK if we can because its faster
|
# Use BULKWALK if we can because its faster
|
||||||
if ($bulkwalk){
|
if ($bulkwalk && @$vars == 0){
|
||||||
($vars) = $sess->bulkwalk(0, $repeaters, $var);
|
($vars) = $sess->bulkwalk(0, $repeaters, $var);
|
||||||
if($sess->{ErrorNum}) {
|
if($sess->{ErrorNum}) {
|
||||||
$self->error_throw("SNMP::Info::_load_atrr: BULKWALK ".$sess->{ErrorStr},"\n");
|
$self->error_throw("SNMP::Info::_load_atrr: BULKWALK ".$sess->{ErrorStr},"\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user