+ add snmp-autoreduce option

This commit is contained in:
garnier-quentin 2018-12-30 13:20:23 +01:00
parent 02a5c15da8
commit a3e94ba3e8
1 changed files with 18 additions and 2 deletions

View File

@ -147,9 +147,23 @@ sub autoreduce_table {
$self->{snmp_params}->{Retries} = 1; $self->{snmp_params}->{Retries} = 1;
$self->connect(); $self->connect();
} }
return 1 if (${$options{repeat_count}} == 1); return 1 if (${$options{repeat_count}} == 1);
${$options{repeat_count}} = int(${$options{repeat_count}} / 2); ${$options{repeat_count}} = int(${$options{repeat_count}} / 2);
return 0;
}
sub autoreduce_multiple_table {
my ($self, %options) = @_;
if ($self->{snmp_params}->{Retries} > 1) {
$self->{snmp_params}->{Retries} = 1;
$self->connect();
}
return 1 if (${$options{repeat_count}} == 1);
${$options{repeat_count}} = int(${$options{repeat_count}} / 2);
$self->{subsettable} = int($self->{subsettable} / 2);
return 0; return 0;
} }
@ -429,8 +443,11 @@ sub get_multiple_table {
next; next;
} }
if ($self->{snmp_autoreduce} == 1 && ($self->{session}->{ErrorNum} == 1 || $self->{session}->{ErrorNum} == -24)) {
next if ($self->autoreduce_multiple_table(repeat_count => \$repeat_count) == 0);
}
my $msg = 'SNMP Table Request : ' . $self->{session}->{ErrorStr}; my $msg = 'SNMP Table Request : ' . $self->{session}->{ErrorStr};
if ($dont_quit == 0) { if ($dont_quit == 0) {
$self->{output}->add_option_msg(short_msg => $msg); $self->{output}->add_option_msg(short_msg => $msg);
$self->{output}->option_exit(exit_litteral => $self->{snmp_errors_exit}); $self->{output}->option_exit(exit_litteral => $self->{snmp_errors_exit});
@ -555,7 +572,6 @@ sub get_table {
$last_oid =~ /(.*)\.(\d+)([\.\s]*)$/; $last_oid =~ /(.*)\.(\d+)([\.\s]*)$/;
my $vb = new SNMP::VarList([$1, $2]); my $vb = new SNMP::VarList([$1, $2]);
print "===" . $repeat_count . "===\n";
if ($self->is_snmpv1() || defined($self->{snmp_force_getnext})) { if ($self->is_snmpv1() || defined($self->{snmp_force_getnext})) {
$self->{session}->getnext($vb); $self->{session}->getnext($vb);
} else { } else {