cfgmaker: adding noHC[] too liberally

Daniel <[email protected]>
Newsgroups gmane.network.mrtg.user
Message-ID <[email protected]>
Hello MRTG list,

I've searched the mailing list archives that I could find, but didn't
see anything relevant to my situation.

I'm having a bit of a problem with cfgmaker too aggressively marking
interfaces as being "noHC".  There are two corner cases here that I'm
tickling....

Case 1: Virtual interfaces: sometimes the speed returned is 0, so it's
   marked for noHC.
   The returned value is not 'undef', just zero.
   (I'm seeing this on 'unrouted VLAN xxx' interfaces on a
   Cisco 6509.  It has a lot of traffic on some of these
   interfaces.).

Case 2: (This is specific to my environment): I want all interfaces
   enumerated in the mrtg config file, even if they're down.
   One consequence of this for me is that when the interface is
   down, it sees no traffic, so a poll of the ifHCInOctets interface
   counter returns 0, so it's marked for noHC.
   The returned value is not 'undef', just zero.

The logic in mrtg-2.16.2 seemed more sane to me than it does in
the mrtg-2.17.3/4 code.  Would a patch like the following be
considered acceptable?  It's a diff from 2.17.4.

I've included it inline as an attachment.

Thanks,

	- Daniel


diff -ru mrtg-2.17.4.orig/bin/cfgmaker mrtg-2.17.4/bin/cfgmaker
--- mrtg-2.17.4.orig/bin/cfgmaker	2012-01-12 03:29:00.000000000 -0700
+++ mrtg-2.17.4/bin/cfgmaker	2013-11-14 13:42:24.000000000 -0700
@@ -902,11 +902,13 @@
     my $snmphost = v4onlyifnecessary($router, $ipv4only);
 
     if ($router =~ /:[\d.]*:[\d.]*:[\d.]*:[23]/) {
-        my $speed = (snmpget($snmphost, $v3opt, 'ifHighSpeed.'.$if))[0] || 'unknown';
+        my $speed = (snmpget($snmphost, $v3opt, 'ifHighSpeed.'.$if))[0];
+	$speed = 'unknown' unless defined $speed;
         debug('base',"snmpget $snmphost for ifHighSpeed.$if -> $speed Mb/s");
         $SNMP_Session::errmsg = undef;
 	$Net_SNMP_util::ErrorMessage = undef;
-        my $counter = (snmpget($snmphost,$v3opt, 'ifHCInOctets.'.$if))[0] || 'unknown';
+        my $counter = (snmpget($snmphost,$v3opt, 'ifHCInOctets.'.$if))[0];
+	$counter = 'unknown' unless defined $counter;
         debug('base',"snmpget $snmphost for ifHCInOctets.$if -> $counter");
         if( $speed eq 'unknown' or $counter !~ /^\d+$/ or $SNMP_Session::errmsg or $Net_SNMP_util::ErrorMessage){
             $SNMP_Session::errmsg = undef;

_______________________________________________
mrtg mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/mrtg
cfgmaker-diff-ru (text/plain, 1.1 KB)
diff -ru mrtg-2.17.4.orig/bin/cfgmaker mrtg-2.17.4/bin/cfgmaker
--- mrtg-2.17.4.orig/bin/cfgmaker	2012-01-12 03:29:00.000000000 -0700
+++ mrtg-2.17.4/bin/cfgmaker	2013-11-14 13:42:24.000000000 -0700
@@ -902,11 +902,13 @@
     my $snmphost = v4onlyifnecessary($router, $ipv4only);
 
     if ($router =~ /:[\d.]*:[\d.]*:[\d.]*:[23]/) {
-        my $speed = (snmpget($snmphost, $v3opt, 'ifHighSpeed.'.$if))[0] || 'unknown';
+        my $speed = (snmpget($snmphost, $v3opt, 'ifHighSpeed.'.$if))[0];
+	$speed = 'unknown' unless defined $speed;
         debug('base',"snmpget $snmphost for ifHighSpeed.$if -> $speed Mb/s");
         $SNMP_Session::errmsg = undef;
 	$Net_SNMP_util::ErrorMessage = undef;
-        my $counter = (snmpget($snmphost,$v3opt, 'ifHCInOctets.'.$if))[0] || 'unknown';
+        my $counter = (snmpget($snmphost,$v3opt, 'ifHCInOctets.'.$if))[0];
+	$counter = 'unknown' unless defined $counter;
         debug('base',"snmpget $snmphost for ifHCInOctets.$if -> $counter");
         if( $speed eq 'unknown' or $counter !~ /^\d+$/ or $SNMP_Session::errmsg or $Net_SNMP_util::ErrorMessage){
             $SNMP_Session::errmsg = undef;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.