2010-08-10 15:54:01 +00:00
< ? php
2009-10-28 13:49:37 +00:00
2011-04-28 21:12:16 +00:00
# FIXME Removed 28/4/2011 - this can go, right?
#unset($ports);
#$ports = snmp_cache_ifIndex($device); // Cache Port List
# /FIXME
2011-03-16 01:11:27 +00:00
#mysql_query("INSERT INTO `ports` (`device_id`,`ifIndex`) VALUES ('".$device['device_id']."','$ifIndex')");
// Build SNMP Cache Array
$data_oids = array ( 'ifName' , 'ifDescr' , 'ifAlias' , 'ifAdminStatus' , 'ifOperStatus' , 'ifMtu' , 'ifSpeed' , 'ifHighSpeed' , 'ifType' , 'ifPhysAddress' ,
2011-03-23 09:54:56 +00:00
'ifPromiscuousMode' , 'ifConnectorPresent' , 'ifDuplex' );
2011-03-16 01:11:27 +00:00
$stat_oids = array ( 'ifInErrors' , 'ifOutErrors' , 'ifInUcastPkts' , 'ifOutUcastPkts' , 'ifInNUcastPkts' , 'ifOutNUcastPkts' ,
2011-03-23 09:54:56 +00:00
'ifHCInMulticastPkts' , 'ifHCInBroadcastPkts' , 'ifHCOutMulticastPkts' , 'ifHCOutBroadcastPkts' ,
'ifInOctets' , 'ifOutOctets' , 'ifHCInOctets' , 'ifHCOutOctets' , 'ifInDiscards' , 'ifOutDiscards' , 'ifInUnknownProtos' ,
'ifInBroadcastPkts' , 'ifOutBroadcastPkts' , 'ifInMulticastPkts' , 'ifOutMulticastPkts' );
2011-03-16 01:11:27 +00:00
$stat_oids_db = array ( 'ifInOctets' , 'ifOutOctets' , 'ifInErrors' , 'ifOutErrors' , 'ifInUcastPkts' , 'ifOutUcastPkts' ); // From above for DB
$etherlike_oids = array ( 'dot3StatsAlignmentErrors' , 'dot3StatsFCSErrors' , 'dot3StatsSingleCollisionFrames' , 'dot3StatsMultipleCollisionFrames' ,
2011-03-23 09:54:56 +00:00
'dot3StatsSQETestErrors' , 'dot3StatsDeferredTransmissions' , 'dot3StatsLateCollisions' , 'dot3StatsExcessiveCollisions' ,
'dot3StatsInternalMacTransmitErrors' , 'dot3StatsCarrierSenseErrors' , 'dot3StatsFrameTooLongs' , 'dot3StatsInternalMacReceiveErrors' ,
'dot3StatsSymbolErrors' );
2011-03-16 01:11:27 +00:00
$cisco_oids = array ( 'locIfHardType' , 'locIfInRunts' , 'locIfInGiants' , 'locIfInCRC' , 'locIfInFrame' , 'locIfInOverrun' , 'locIfInIgnored' , 'locIfInAbort' ,
2011-03-23 09:54:56 +00:00
'locIfCollisions' , 'locIfInputQueueDrops' , 'locIfOutputQueueDrops' );
2011-03-16 01:11:27 +00:00
$pagp_oids = array ( 'pagpOperationMode' , 'pagpPortState' , 'pagpPartnerDeviceId' , 'pagpPartnerLearnMethod' , 'pagpPartnerIfIndex' , 'pagpPartnerGroupIfIndex' ,
2011-03-23 09:54:56 +00:00
'pagpPartnerDeviceName' , 'pagpEthcOperationMode' , 'pagpDeviceId' , 'pagpGroupIfIndex' );
2011-03-16 01:11:27 +00:00
$ifmib_oids = array_merge ( $data_oids , $stat_oids );
$ifmib_oids = array ( 'ifEntry' , 'ifXEntry' );
echo ( " Caching Oids: " );
foreach ( $ifmib_oids as $oid ) { echo ( " $oid " ); $port_stats = snmpwalk_cache_oid ( $device , $oid , $port_stats , " IF-MIB " ); }
if ( $config [ 'enable_ports_etherlike' ])
{
2011-03-23 09:54:56 +00:00
echo ( " dot3Stats " ); $port_stats = snmpwalk_cache_oid ( $device , " dot3StatsEntry " , $port_stats , " EtherLike-MIB " );
2011-03-16 01:11:27 +00:00
} else {
2011-03-23 09:54:56 +00:00
echo ( " dot3StatsDuplexStatus " ); $port_stats = snmpwalk_cache_oid ( $device , " dot3StatsDuplexStatus " , $port_stats , " EtherLike-MIB " );
2011-03-16 01:11:27 +00:00
}
if ( $config [ 'enable_ports_adsl' ])
{
2011-03-23 09:54:56 +00:00
$device [ 'adsl_count' ] = mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `ports` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND `ifType` = 'adsl' " ), 0 );
2011-03-16 01:11:27 +00:00
}
if ( $device [ 'adsl_count' ] > " 0 " )
{
2011-03-23 09:54:56 +00:00
echo ( " ADSL " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.1.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.2.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.3.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.4.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.5.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.2 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.3 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.4 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.5 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.6 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.7 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.6.1.8 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.1 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.2 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.3 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.4 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.5 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.6 " , $port_stats , " ADSL-LINE-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " .1.3.6.1.2.1.10.94.1.1.7.1.7 " , $port_stats , " ADSL-LINE-MIB " );
2011-03-16 01:11:27 +00:00
}
2011-05-06 14:04:53 +00:00
## Alcatel Detailed Statistics ## FIXME make this disableable
if ( $device [ 'os' ] == " aos " ) {
$stat_oids = array ( 'alcetherStatsCRCAlignErrors' , 'alcetherStatsRxUndersizePkts' , 'alcetherStatsTxUndersizePkts' , 'alcetherStatsTxOversizePkts' , 'alcetherStatsRxJabbers' , 'alcetherStatsRxCollisions' , 'alcetherStatsTxCollisions' ,
'alcetherStatsPkts64Octets' , 'alcetherStatsPkts65to127Octets' , 'alcetherStatsPkts128to255Octets' , 'alcetherStatsPkts256to511Octets' , 'alcetherStatsPkts512to1023Octets' , 'alcetherStatsPkts1024to1518Octets' ,
'gigaEtherStatsPkts1519to4095Octets' , 'gigaEtherStatsPkts4096to9215Octets' , 'alcetherStatsPkts1519to2047Octets' , 'alcetherStatsPkts2048to4095Octets' , 'alcetherStatsPkts4096Octets' , 'alcetherStatsRxGiantPkts' ,
'alcetherStatsRxDribbleNibblePkts' , 'alcetherStatsRxLongEventPkts' , 'alcetherStatsRxVlanTagPkts' , 'alcetherStatsRxControlPkts' , 'alcetherStatsRxLenChkErrPkts' , 'alcetherStatsRxCodeErrPkts' , 'alcetherStatsRxDvEventPkts' ,
'alcetherStatsRxPrevPktDropped' , 'alcetherStatsTx64Octets' , 'alcetherStatsTx65to127Octets' , 'alcetherStatsTx128to255Octets' , 'alcetherStatsTx256to511Octets' , 'alcetherStatsTx512to1023Octets' ,
'alcetherStatsTx1024to1518Octets' , 'alcetherStatsTx1519to2047Octets' , 'alcetherStatsTx2048to4095Octets' , 'alcetherStatsTx4096Octets' , 'alcetherStatsTxRetryCount' , 'alcetherStatsTxVlanTagPkts' ,
'alcetherStatsTxControlPkts' , 'alcetherStatsTxLatePkts' , 'alcetherStatsTxTotalBytesOnWire' , 'alcetherStatsTxLenChkErrPkts' , 'alcetherStatsTxExcDeferPkts' );
foreach ( $stat_oids as $oid )
{
$port_stats = snmpwalk_cache_oid ( $device , " alcetherStatsEntry " , $port_stats , " ALCATEL-IND1-PORT-MIB " );
}
}
2011-03-16 01:11:27 +00:00
echo ( " \n " );
2011-03-30 09:35:20 +00:00
/// FIXME This probably needs re-enabled. We need to clear these things when they get unset, too.
2011-03-16 01:11:27 +00:00
#foreach ($etherlike_oids as $oid) { $port_stats = snmpwalk_cache_oid($device, $oid, $port_stats, "EtherLike-MIB"); }
#foreach ($cisco_oids as $oid) { $port_stats = snmpwalk_cache_oid($device, $oid, $port_stats, "OLD-CISCO-INTERFACES-MIB"); }
#foreach ($pagp_oids as $oid) { $port_stats = snmpwalk_cache_oid($device, $oid, $port_stats, "CISCO-PAGP-MIB"); }
if ( $device [ 'os_group' ] == " ios " )
{
2011-03-23 09:54:56 +00:00
$port_stats = snmp_cache_portIfIndex ( $device , $port_stats );
$port_stats = snmp_cache_portName ( $device , $port_stats );
2011-04-26 22:25:35 +00:00
foreach ( $pagp_oids as $oid ) { $port_stats = snmpwalk_cache_oid ( $device , $oid , $port_stats , " CISCO-PAGP-MIB " ); }
2011-03-23 09:54:56 +00:00
$data_oids [] = " portName " ;
2011-03-30 09:35:20 +00:00
/// FIXME Why is this commented out?
2011-04-26 22:25:35 +00:00
$port_stats = snmpwalk_cache_oid ( $device , " vmVlan " , $port_stats , " CISCO-VLAN-MEMBERSHIP-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " vlanTrunkPortEncapsulationOperType " , $port_stats , " CISCO-VTP-MIB " );
$port_stats = snmpwalk_cache_oid ( $device , " vlanTrunkPortNativeVlan " , $port_stats , " CISCO-VTP-MIB " );
2011-03-16 01:11:27 +00:00
}
$polled = time ();
/// End Building SNMP Cache Array
if ( $debug ) { print_r ( $port_stats ); }
/// New interface detection
2011-03-30 09:35:20 +00:00
///// FIXME
2011-03-16 01:11:27 +00:00
/// End New interface detection
/// Loop ports in the DB and update where necessary
$port_query = mysql_query ( " SELECT * FROM `ports` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND `deleted` = 0 " );
2011-04-06 13:54:50 +00:00
while ( $port = mysql_fetch_assoc ( $port_query ))
2011-03-16 01:11:27 +00:00
{
2011-03-23 09:54:56 +00:00
echo ( " Port " . $port [ 'ifDescr' ] . " " );
if ( $port_stats [ $port [ 'ifIndex' ]] && $port [ 'disabled' ] != " 1 " )
{ // Check to make sure Port data is cached.
$this_port = & $port_stats [ $port [ 'ifIndex' ]];
2011-03-26 17:16:09 +00:00
if ( $device [ 'os' ] == " vmware " && preg_match ( " /Device ([a-z0-9]+) at .*/ " , $this_port [ 'ifDescr' ], $matches )) { $this_port [ 'ifDescr' ] = $matches [ 1 ]; }
2011-03-23 09:54:56 +00:00
$polled_period = $polled - $port [ 'poll_time' ];
2011-03-16 01:11:27 +00:00
2011-03-23 09:54:56 +00:00
$update .= " `poll_time` = ' " . $polled . " ' " ;
$update .= " , `poll_prev` = ' " . $port [ 'poll_time' ] . " ' " ;
$update .= " , `poll_period` = ' " . $polled_period . " ' " ;
2011-03-16 01:11:27 +00:00
2011-03-23 09:54:56 +00:00
### Copy ifHC[In|Out]Octets values to non-HC if they exist
if ( $this_port [ 'ifHCInOctets' ] > 0 && is_numeric ( $this_port [ 'ifHCInOctets' ]) && $this_port [ 'ifHCOutOctets' ] > 0 && is_numeric ( $this_port [ 'ifHCOutOctets' ]))
{
echo ( " HC " );
$this_port [ 'ifInOctets' ] = $this_port [ 'ifHCInOctets' ];
$this_port [ 'ifOutOctets' ] = $this_port [ 'ifHCOutOctets' ];
}
2009-10-28 13:49:37 +00:00
2011-04-24 00:28:09 +00:00
### rewrite the ifPhysAddress
if ( strpos ( $this_port [ 'ifPhysAddress' ], " : " ))
{
list ( $a_a , $a_b , $a_c , $a_d , $a_e , $a_f ) = explode ( " : " , $this_port [ 'ifPhysAddress' ]);
2011-04-24 01:34:08 +00:00
$ah_a = zeropad ( $a_a );
$ah_b = zeropad ( $a_b );
$ah_c = zeropad ( $a_c );
$ah_d = zeropad ( $a_d );
$ah_e = zeropad ( $a_e );
$ah_f = zeropad ( $a_f );
2011-04-24 00:28:09 +00:00
#$this_port['ifPhysAddress'] = $ah_a.":".$ah_b.":".$ah_c.":".$ah_d.":".$ah_e.":".$ah_f;
$this_port [ 'ifPhysAddress' ] = $ah_a . $ah_b . $ah_c . $ah_d . $ah_e . $ah_f ;
}
2011-03-23 09:54:56 +00:00
if ( is_numeric ( $this_port [ 'ifHCInBroadcastPkts' ]) && is_numeric ( $this_port [ 'ifHCOutBroadcastPkts' ]) && is_numeric ( $this_port [ 'ifHCInMulticastPkts' ]) && is_numeric ( $this_port [ 'ifHCOutMulticastPkts' ]))
{
echo ( " HC " );
$this_port [ 'ifInBroadcastPkts' ] = $this_port [ 'ifHCInBroadcastPkts' ];
$this_port [ 'ifOutBroadcastPkts' ] = $this_port [ 'ifHCOutBroadcastPkts' ];
$this_port [ 'ifInMulticastPkts' ] = $this_port [ 'ifHCInMulticastPkts' ];
$this_port [ 'ifOutMulticastPkts' ] = $this_port [ 'ifHCOutMulticastPkts' ];
}
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
### Overwrite ifSpeed with ifHighSpeed if it's over 10G
if ( is_numeric ( $this_port [ 'ifHighSpeed' ]) && $this_port [ 'ifSpeed' ] > " 1000000000 " )
{
echo ( " HighSpeed " );
$this_port [ 'ifSpeed' ] = $this_port [ 'ifHighSpeed' ] * 1000000 ;
}
2010-07-20 13:02:54 +00:00
2011-03-23 09:54:56 +00:00
### Overwrite ifDuplex with dot3StatsDuplexStatus if it exists
if ( isset ( $this_port [ 'dot3StatsDuplexStatus' ]))
{
echo ( " dot3Duplex " );
$this_port [ 'ifDuplex' ] = $this_port [ 'dot3StatsDuplexStatus' ];
}
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
### Update IF-MIB data
foreach ( $data_oids as $oid )
{
if ( $port [ $oid ] != $this_port [ $oid ] && ! isset ( $this_port [ $oid ]))
{
$update .= " , ` $oid ` = NULL " ;
2011-04-03 19:36:32 +00:00
log_event ( $oid . " : " . $port [ $oid ] . " -> NULL " , $device , 'interface' , $port [ 'interface_id' ]);
2011-03-23 09:54:56 +00:00
if ( $debug ) { echo ( $oid . " : " . $port [ $oid ] . " -> NULL " ); } else { echo ( $oid . " " ); }
2011-03-27 10:21:19 +00:00
} elseif ( $port [ $oid ] != $this_port [ $oid ]) {
2011-03-23 09:54:56 +00:00
$update .= " , ` $oid ` = ' " . mres ( $this_port [ $oid ]) . " ' " ;
2011-04-03 19:36:32 +00:00
log_event ( $oid . " : " . $port [ $oid ] . " -> " . $this_port [ $oid ], $device , 'interface' , $port [ 'interface_id' ]);
2011-03-23 09:54:56 +00:00
if ( $debug ) { echo ( $oid . " : " . $port [ $oid ] . " -> " . $this_port [ $oid ] . " " ); } else { echo ( $oid . " " ); }
}
}
2010-08-10 15:54:01 +00:00
2011-03-23 09:54:56 +00:00
/// Parse description (usually ifAlias) if config option set
2010-07-28 16:48:30 +00:00
2011-03-23 09:54:56 +00:00
if ( isset ( $config [ 'port_descr_parser' ]) && is_file ( $config [ 'install_dir' ] . " / " . $config [ 'port_descr_parser' ]))
{
$port_attribs = array ( 'type' , 'descr' , 'circuit' , 'speed' , 'notes' );
include ( $config [ 'install_dir' ] . " / " . $config [ 'port_descr_parser' ]);
foreach ( $port_attribs as $attrib )
{
$attrib_key = " port_descr_ " . $attrib ;
if ( $port_ifAlias [ $attrib ] != $port [ $attrib_key ])
2011-03-11 21:37:17 +00:00
{
2011-03-23 09:54:56 +00:00
$update .= " , ` " . $attrib_key . " ` = ' " . $port_ifAlias [ $attrib ] . " ' " ;
2011-04-03 19:36:32 +00:00
log_event ( $attrib . " : " . $port [ $attrib_key ] . " -> " . $port_ifAlias [ $attrib ], $device , 'interface' , $port [ 'interface_id' ]);
2009-10-28 13:49:37 +00:00
}
2011-03-23 09:54:56 +00:00
}
}
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
/// Ende parse ifAlias
2010-05-03 16:20:32 +00:00
2011-03-23 09:54:56 +00:00
/// Update IF-MIB metrics
foreach ( $stat_oids_db as $oid )
{
$update .= " , ` $oid ` = ' " . $this_port [ $oid ] . " ' " ;
$update .= " , ` " . $oid . " _prev` = ' " . $port [ $oid ] . " ' " ;
$oid_prev = $oid . " _prev " ;
if ( $port [ $oid ])
{
$oid_diff = $this_port [ $oid ] - $port [ $oid ];
$oid_rate = $oid_diff / $polled_period ;
if ( $oid_rate < 0 ) { $oid_rate = " 0 " ; }
$update .= " , ` " . $oid . " _rate` = ' " . $oid_rate . " ' " ;
$update .= " , ` " . $oid . " _delta` = ' " . $oid_diff . " ' " ;
if ( $debug ) { echo ( " \n $oid ( $oid_diff B) $oid_rate Bps $polled_period secs \n " ); }
}
}
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
/// Update RRDs
$rrdfile = $host_rrd . " /port- " . safename ( $port [ 'ifIndex' ] . " .rrd " );
if ( ! is_file ( $rrdfile ))
{
rrdtool_create ( $rrdfile , " --step 300 \
DS : INOCTETS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTOCTETS : DERIVE : 600 : 0 : 12500000000 \
DS : INERRORS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTERRORS : DERIVE : 600 : 0 : 12500000000 \
DS : INUCASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTUCASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : INNUCASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTNUCASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : INDISCARDS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTDISCARDS : DERIVE : 600 : 0 : 12500000000 \
DS : INUNKNOWNPROTOS : DERIVE : 600 : 0 : 12500000000 \
DS : INBROADCASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTBROADCASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : INMULTICASTPKTS : DERIVE : 600 : 0 : 12500000000 \
DS : OUTMULTICASTPKTS : DERIVE : 600 : 0 : 12500000000 \
2011-04-24 01:34:08 +00:00
RRA : AVERAGE : 0.5 : 1 : 2400 \
RRA : AVERAGE : 0.5 : 6 : 1200 \
RRA : AVERAGE : 0.5 : 24 : 1200 \
RRA : AVERAGE : 0.5 : 288 : 1200 \
2011-03-23 09:54:56 +00:00
RRA : MAX : 0.5 : 1 : 600 \
RRA : MAX : 0.5 : 6 : 700 \
RRA : MAX : 0.5 : 24 : 775 \
RRA : MAX : 0.5 : 288 : 797 " );
}
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
foreach ( $stat_oids as $oid )
{ /// Copy values from array to global variables and force numeric.
$$oid = $this_port [ $oid ];
if ( ! is_numeric ( $$oid )) { $$oid = " 0 " ; }
}
2011-03-16 01:11:27 +00:00
2011-03-23 09:54:56 +00:00
$if_rrd_update = " $polled : $ifInOctets : $ifOutOctets : $ifInErrors : $ifOutErrors : $ifInUcastPkts : $ifOutUcastPkts : $ifInNUcastPkts : $ifOutNUcastPkts : $ifInDiscards : $ifOutDiscards : $ifInUnknownProtos " ;
$if_rrd_update .= " : $ifInBroadcastPkts : $ifOutBroadcastPkts : $ifInMulticastPkts : $ifOutMulticastPkts " ;
$ret = rrdtool_update ( " $rrdfile " , $if_rrd_update );
2010-07-04 18:23:25 +00:00
2011-03-23 09:54:56 +00:00
# if ($config['enable_ports_Xbcmc'] && $config['os'][$device['os']]['ifXmcbc']) {
# if (!is_file($ifx_rrd)) { shell_exec($ifx_rrd_cmd); }
# $ifx_rrd_update = "$polled:$ifHCInBroadcastPkts:$ifHCOutBroadcastPkts:$ifHCInMulticastPkts:$ifHCOutMulticastPkts";
# $ret = rrdtool_update($ifx_rrd, $ifx_rrd_update);
# }
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
/// End Update IF-MIB
2009-10-28 13:49:37 +00:00
2011-03-23 09:54:56 +00:00
/// Update PAgP
2011-03-30 09:35:20 +00:00
if ( $this_port [ 'pagpOperationMode' ] || $port [ 'pagpOperationMode' ])
2011-03-23 09:54:56 +00:00
{
foreach ( $pagp_oids as $oid )
{ // Loop the OIDs
2011-03-27 10:21:19 +00:00
if ( $this_port [ $oid ] != $port [ $oid ])
2011-03-23 09:54:56 +00:00
{ // If data has changed, build a query
$update .= " , ` $oid ` = ' " . mres ( $this_port [ $oid ]) . " ' " ;
echo ( " PAgP " );
2011-04-03 19:36:32 +00:00
log_event ( " $oid -> " . $this_port [ $oid ], $device , 'interface' , $port [ 'interface_id' ]);
2009-10-28 13:49:37 +00:00
}
2011-03-23 09:54:56 +00:00
}
2011-03-16 01:11:27 +00:00
}
2011-03-23 09:54:56 +00:00
// End Update PAgP
/// Do EtherLike-MIB
if ( $config [ 'enable_ports_etherlike' ]) { include ( " port-etherlike.inc.php " ); }
/// Do ADSL MIB
if ( $config [ 'enable_ports_adsl' ]) { include ( " port-adsl.inc.php " ); }
/// Do PoE MIBs
if ( $config [ 'enable_ports_poe' ]) { include ( " port-poe.inc.php " ); }
2011-05-06 14:04:53 +00:00
/// Do Alcatel Detailed Stats
if ( $device [ 'os' ] == " aos " ) { include ( " port-alcatel.inc.php " ); }
2011-03-23 09:54:56 +00:00
// Update MySQL
if ( $update )
2011-03-16 01:11:27 +00:00
{
2011-03-23 09:54:56 +00:00
$update_query = " UPDATE `ports` SET " . $update . " WHERE `interface_id` = ' " . $port [ 'interface_id' ] . " ' " ;
@ mysql_query ( $update_query );
if ( $debug ) { echo ( " \n MYSQL : [ $update_query ] " ); }
2011-03-11 21:37:17 +00:00
}
2011-03-23 09:54:56 +00:00
// End Update MySQL
2011-03-16 01:11:27 +00:00
2011-03-23 09:54:56 +00:00
unset ( $update_query ); unset ( $update );
2011-03-16 01:11:27 +00:00
2011-03-23 09:54:56 +00:00
// Send alerts for interface flaps.
if ( $config [ 'warn' ][ 'ifdown' ] && ( $port [ 'ifOperStatus' ] != $this_port [ 'ifOperStatus' ]) && $port [ 'ignore' ] == 0 )
{
if ( $this_port [ 'ifAlias' ])
{
$falias = preg_replace ( '/^"/' , '' , $this_port [ 'ifAlias' ]); $falias = preg_replace ( '/"$/' , '' , $falias ); $full = $this_port [ 'ifDescr' ] . " ( " . $falias . " ) " ;
} else {
$full = $this_port [ 'ifDescr' ];
}
switch ( $this_port [ 'ifOperStatus' ])
{
case " up " :
notify ( $device , " Interface UP - " . $device [ 'hostname' ] . " - " . $full , " Device: " . $device [ 'hostname' ] . " \n Interface: " . $full . " \n Timestamp: " . date ( $config [ 'timestamp_format' ]));
break ;
case " down " :
notify ( $device , " Interface DOWN - " . $device [ 'hostname' ] . " - " . $full , " Device: " . $device [ 'hostname' ] . " \n Interface: " . $full . " \n Timestamp: " . date ( $config [ 'timestamp_format' ]));
break ;
}
}
}
elseif ( $port [ 'disabled' ] != " 1 " )
{
echo ( " Port Deleted " ); // Port missing from SNMP cache.
mysql_query ( " UPDATE `ports` SET `deleted` = '1' WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND `ifIndex` = ' " . $this_port [ 'ifIndex' ] . " ' " );
} else {
echo ( " Port Disabled. " );
}
echo ( " \n " );
#### Clear Per-Port Variables Here
unset ( $this_port );
2010-07-23 13:42:28 +00:00
2011-03-16 01:11:27 +00:00
}
2009-10-28 13:49:37 +00:00
2011-03-16 01:11:27 +00:00
#### Clear Variables Here
unset ( $port_stats );
2010-07-23 13:42:28 +00:00
2011-04-24 00:28:09 +00:00
?>