Hello,

If one host is down, when performing snmpwalk due to Interface by Name 
configuration (Target[myrouter]: #2/11:[EMAIL PROTECTED]), this code will not 
work as expected.

errmsg is never used in Net_SNMP_util, only in SNMP_util. Its value is undef.
When host is down, the result is @ret defined with 1 element in array, the 
element is an undef.

The code will result in several delay in mrtg processing, as all nodes are 
tried and failed, the host is never marked as dead.


MRTG_lib.pm  (line 1623)
    foreach my $node (@nodes) {
        next if $confcache->{___deadhosts}{$hostkey} and time - 
$confcache->{___deadhosts}{$hostkey} < 300;
        $SNMP_Session::errmsg = undef;
        @ret = snmpwalk(v4onlyifnecessary($host, $ipv4only), $snmpoptions, 
$node);
        unless ( $SNMP_Session::errmsg){
            foreach my $ret (@ret)
              {
                  my ($oid, $desc) = split(':', $ret, 2);
                  if ($tables{$node} eq 'Ip') {
                      storeincache($confcache,$host,$tables{$node},$oid,$desc);
                  } else {
                      $desc =~ s/[\0- ]+$//; #trailing whitespace is too sick 
for us
                      $desc =~ s/[\0- ]/ /g; #whitespace is just whitespace
                      storeincache($confcache,$host,$tables{$node},$desc,$oid);
                  }
              };
        } else {
            $confcache->{___deadhosts}{$hostkey} = time
                if $SNMP_Session::errmsg =~ /no response received/;
            debug('coca',"Skipping $node scanning because $host does not seem 
to support it");
        }


Regards,
Carlos Velasco

_______________________________________________
mrtg-developers mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/mrtg-developers

Reply via email to