From 83fb73389a8db769c725419bc0e5a3ca66b38887 Mon Sep 17 00:00:00 2001 From: Eric Miller <> Date: Thu, 17 Aug 2006 01:54:27 +0000 Subject: [PATCH] Bill's patch to allow single instance partial table fetches. --- Info.pm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Info.pm b/Info.pm index c5419c39..78abcbe8 100644 --- a/Info.pm +++ b/Info.pm @@ -2537,8 +2537,22 @@ sub _load_attr { my $repeaters = $self->{BulkRepeaters} || $REPEATERS; 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 - if ($bulkwalk){ + if ($bulkwalk && @$vars == 0){ ($vars) = $sess->bulkwalk(0, $repeaters, $var); if($sess->{ErrorNum}) { $self->error_throw("SNMP::Info::_load_atrr: BULKWALK ".$sess->{ErrorStr},"\n");