2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( $device [ 'os_group' ]  ==  " cisco " ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-28 11:24:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " Cisco CEF Switching Path:  " ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  $cefs  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  $cefs  =  snmpwalk_cache_threepart_oid ( $device ,  " CISCO-CEF-MIB::cefSwitchingStatsEntry " ,  $cefs ,  " CISCO-CEF-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  $polled  =  time (); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  $cefs_query  =  dbFetchRows ( " SELECT * FROM `cef_switching` WHERE `device_id` = ? " ,  array ( $device [ 'device_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  foreach  ( $cefs_query  as  $ceftmp ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $cef_id  =  $device [ 'device_id' ] . " - " . $ceftmp [ 'entPhysicalIndex' ] . " - " . $ceftmp [ 'afi' ] . " - " . $ceftmp [ 'cef_index' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $cefs_db [ $cef_id ]  =  $ceftmp [ 'cef_switching_id' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if  ( $debug )  {  print_r ( $cefs );  } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if  ( is_array ( $cefs )) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( ! is_array ( $entity_array )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( " Caching OIDs:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $entity_array  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( "  entPhysicalDescr " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $entity_array  =  snmpwalk_cache_multi_oid ( $device ,  " entPhysicalDescr " ,  $entity_array ,  " ENTITY-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( "  entPhysicalName " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $entity_array  =  snmpwalk_cache_multi_oid ( $device ,  " entPhysicalName " ,  $entity_array ,  " ENTITY-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( "  entPhysicalModelName " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $entity_array  =  snmpwalk_cache_multi_oid ( $device ,  " entPhysicalModelName " ,  $entity_array ,  " ENTITY-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $cefs  as  $entity  =>  $afis ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      $entity_name  =  $entity_array [ $entity ][ 'entPhysicalName' ]  . "  -  " . $entity_array [ $entity ][ 'entPhysicalModelName' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( " \n $entity   $entity_name\n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      foreach  ( $afis  as  $afi  =>  $paths ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        echo ( "  |-  $afi\n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $paths  as  $path  =>  $cef_stat ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          echo ( "  | |- " . $path . " :  " . $cef_stat [ 'cefSwitchingPath' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $cef_id  =  $device [ 'device_id' ] . " - " . $entity . " - " . $afi . " - " . $path ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  #        if (dbFetchCell("SELECT COUNT(*) FROM `cef_switching` WHERE `device_id` = ? AND `entPhysicalIndex` = ? AND `afi` = ? AND `cef_index` = ?", array($device['device_id'], $entity, $afi, $path)) != "1")
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          if  ( ! isset ( $cefs_db [ $cef_id ])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'entPhysicalIndex'  =>  $entity ,  'afi'  =>  $afi ,  'cef_index'  =>  $path ,  'cef_path'  =>  $cef_stat [ 'cefSwitchingPath' ]),  'cef_switching' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo ( " + " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          unset ( $cefs_db [ $cef_id ]); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 02:43:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $cef_entry  =  dbFetchRow ( " SELECT * FROM `cef_switching` WHERE `device_id` = ? AND `entPhysicalIndex` = ? AND `afi` = ? AND `cef_index` = ? " ,  array ( $device [ 'device_id' ],  $entity ,  $afi ,  $path )); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $filename  =  $config [ 'rrd_dir' ]  .  " / "  .  $device [ 'hostname' ]  .  " / "  .  safename ( " cefswitching- " . $entity . " - " . $afi . " - " . $path . " .rrd " ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          if  ( ! is_file ( $filename )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            rrdtool_create ( $filename ,  " --step 300  \ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            DS : drop : DERIVE : 600 : 0 : 1000000  \ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            DS : punt : DERIVE : 600 : 0 : 1000000  \ 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-20 17:37:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            DS : hostpunt : DERIVE : 600 : 0 : 1000000  " . $config['rrd_rra'] );
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 12:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          // Copy HC to non-HC if they exist
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          if  ( is_numeric ( $cef_stat [ 'cefSwitchingHCDrop' ]))  {  $cef_stat [ 'cefSwitchingDrop' ]  =  $cef_stat [ 'cefSwitchingHCDrop' ];  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          if  ( is_numeric ( $cef_stat [ 'cefSwitchingHCPunt' ]))  {  $cef_stat [ 'cefSwitchingPunt' ]  =  $cef_stat [ 'cefSwitchingHCPunt' ];  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          if  ( is_numeric ( $cef_stat [ 'cefSwitchingHCPunt2Host' ]))  {  $cef_stat [ 'cefSwitchingPunt2Host' ]  =  $cef_stat [ 'cefSwitchingHCPunt2Host' ];  } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 12:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          // FIXME -- memcached
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'drop' ]  =  $cef_stat [ 'cefSwitchingDrop' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'punt' ]  =  $cef_stat [ 'cefSwitchingPunt' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'punt2host' ]  =  $cef_stat [ 'cefSwitchingPunt2Host' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'drop_prev' ]  =  $cef_entry [ 'drop' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'punt_prev' ]  =  $cef_entry [ 'punt' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'punt2host_prev' ]  =  $cef_entry [ 'punt2host' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'updated' ]  =  $polled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $cef_stat [ 'update' ][ 'updated_prev' ]  =  $cef_entry [ 'updated' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          dbUpdate ( $cef_stat [ 'update' ],  'cef_switching' ,  '`device_id` = ? AND `entPhysicalIndex` = ? AND `afi` = ? AND `cef_index` = ?' ,  array ( $device [ 'device_id' ],  $entity ,  $afi ,  $path )); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $ret  =  rrdtool_update ( " $filename " ,  array ( $cef_stat [ 'cefSwitchingDrop' ],  $cef_stat [ 'cefSwitchingPunt' ],  $cef_stat [ 'cefSwitchingPunt2Host' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          echo ( " \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 12:24:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  // FIXME - need to delete old ones. FIXME REALLY.
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  print_r ( $cefs_db ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  foreach  ( $cefs_db  as  $cef_switching_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    dbDelete ( " cef_switching " ,  " `cef_switching_id` =  ? " ,  array ( $cef_switching_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    echo ( " - " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 10:53:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  # os_group = cisco
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-09 15:30:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 20:44:52 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								?>