2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo ( " OSPF:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo ( " Processes:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 17:41:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$ospf_instance_count   =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_port_count       =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_area_count       =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_neighbour_count  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								$ospf_oids_db  =  array ( 'ospfRouterId' ,  'ospfAdminStat' ,  'ospfVersionNumber' ,  'ospfAreaBdrRtrStatus' ,  'ospfASBdrRtrStatus' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      'ospfExternLsaCount' ,  'ospfExternLsaCksumSum' ,  'ospfTOSSupport' ,  'ospfOriginateNewLsas' ,  'ospfRxNewLsas' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      'ospfExtLsdbLimit' ,  'ospfMulticastExtensions' ,  'ospfExitOverflowInterval' ,  'ospfDemandExtensions' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Build array of existing entries
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( dbFetchRows ( " SELECT * FROM `ospf_instances` WHERE `device_id` = ? " ,  array ( $device [ 'device_id' ]))  as  $entry ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  $ospf_instances_db [ $entry [ 'ospf_instance_id' ]]  =  $entry ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Pull data from device
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$ospf_instances_poll  =  snmpwalk_cache_oid ( $device ,  " OSPF-MIB::ospfGeneralGroup " ,  array (),  " OSPF-MIB " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( $ospf_instances_poll  as  $ospf_instance_id  =>  $ospf_entry ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  /// If the entry doesn't already exist in the prebuilt array, insert into the database and put into the array
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if  ( ! isset ( $ospf_instances_db [ $ospf_instance_id ])) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'ospf_instance_id'  =>  $ospf_instance_id ),  'ospf_instances' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    echo ( " + " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ospf_instances_db [ $entry [ 'ospf_instance_id' ]]  =  dbFetchRow ( " SELECT * FROM `ospf_instances` WHERE `device_id` = ? AND `ospf_instance_id` = ? " ,  array ( $device [ 'device_id' ], $ospf_instance_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ospf_instances_db [ $entry [ 'ospf_instance_id' ]]  =  $entry ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( $debug ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " \n Polled:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_instances_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " Database:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_instances_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Loop array of entries and update
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( is_array ( $ospf_instances_db )) 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  foreach  ( $ospf_instances_db  as  $ospf_instance_db ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ospf_instance_poll  =  $ospf_instances_poll [ $ospf_instance_db [ 'ospf_instance_id' ]]; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    foreach  ( $ospf_oids_db  as  $oid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    {  // Loop the OIDs
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      if  ( $ospf_instance_db [ $oid ]  !=  $ospf_instance_poll [ $oid ]) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      {  // If data has changed, build a query
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ospf_instance_update [ $oid ]  =  $ospf_instance_poll [ $oid ]; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        #log_event("$oid -> ".$this_port[$oid], $device, 'ospf', $port['port_id']); /// FIXME
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $ospf_instance_update ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      dbUpdate ( $ospf_instance_update ,  'ospf_instances' ,  '`device_id` = ? AND `ospf_instance_id` = ?' ,  array ( $device [ 'device_id' ],  $ospf_instance_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      echo ( " U " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      unset ( $ospf_instance_update ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( " . " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    unset ( $ospf_instance_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    unset ( $ospf_instance_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $ospf_instance_count ++ ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								unset ( $ospf_instances_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								unset ( $ospf_instances_db ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo ( "  Areas:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_area_oids  =  array ( 'ospfAuthType' , 'ospfImportAsExtern' , 'ospfSpfRuns' , 'ospfAreaBdrRtrCount' , 'ospfAsBdrRtrCount' , 'ospfAreaLsaCount' , 'ospfAreaLsaCksumSum' , 'ospfAreaSummary' , 'ospfAreaStatus' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Build array of existing entries
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( dbFetchRows ( " SELECT * FROM `ospf_areas` WHERE `device_id` = ? " ,  array ( $device [ 'device_id' ]))  as  $entry ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  $ospf_areas_db [ $entry [ 'ospfAreaId' ]]  =  $entry ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Pull data from device
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								$ospf_areas_poll  =  snmpwalk_cache_oid ( $device ,  " OSPF-MIB::ospfAreaEntry " ,  array (),  " OSPF-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( $ospf_areas_poll  as  $ospf_area_id  =>  $ospf_area ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  /// If the entry doesn't already exist in the prebuilt array, insert into the database and put into the array
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if  ( ! isset ( $ospf_areas_db [ $ospf_area_id ])) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'ospfAreaId'  =>  $ospf_area_id ),  'ospf_areas' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    echo ( " + " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $entry  =  dbFetchRows ( " SELECT * FROM `ospf_areas` WHERE `device_id` = ? AND `ospfAreaId` = ? " , array ( $device [ 'device_id' ],  $ospf_area_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    $ospf_areas_db [ $entry [ 'ospf_area_id' ]]  =  $entry ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( $debug ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " \n Polled:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_areas_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " Database:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_areas_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Loop array of entries and update
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( is_array ( $ospf_areas_db )) 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  foreach  ( $ospf_areas_db  as  $ospf_area_db ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_array ( $ospf_ports_poll [ $ospf_port_db [ 'ospf_port_id' ]])) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      $ospf_area_poll  =  $ospf_areas_poll [ $ospf_area_db [ 'ospfAreaId' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      foreach  ( $ospf_area_oids  as  $oid ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      {  /// Loop the OIDs
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $ospf_area_db [ $oid ]  !=  $ospf_area_poll [ $oid ]) 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        {  /// If data has changed, build a query
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $ospf_area_update [ $oid ]  =  $ospf_area_poll [ $oid ]; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          #log_event("$oid -> ".$this_port[$oid], $device, 'interface', $port['port_id']); /// FIXME
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      if  ( $ospf_area_update ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        dbUpdate ( $ospf_area_update ,  'ospf_areas' ,  '`device_id` = ? AND `ospfAreaId` = ?' ,  array ( $device [ 'device_id' ],  $ospf_area_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo ( " U " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        unset ( $ospf_area_update ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo ( " . " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      unset ( $ospf_area_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      unset ( $ospf_area_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $ospf_area_count ++ ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-16 10:31:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      dbDelete ( 'ospf_ports' ,  '`device_id` = ? AND `ospfAreaId` = ?' ,  array ( $device [ 'device_id' ],  $ospf_area_db [ 'ospfAreaId' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								unset ( $ospf_areas_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								unset ( $ospf_areas_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#$ospf_ports = snmpwalk_cache_oid($device, "OSPF-MIB::ospfIfEntry", array(), "OSPF-MIB");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#print_r($ospf_ports);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo ( "  Ports:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$ospf_port_oids  =  array ( 'ospfIfIpAddress' , 'port_id' , 'ospfAddressLessIf' , 'ospfIfAreaId' , 'ospfIfType' , 'ospfIfAdminStat' , 'ospfIfRtrPriority' , 'ospfIfTransitDelay' , 'ospfIfRetransInterval' , 'ospfIfHelloInterval' , 'ospfIfRtrDeadInterval' , 'ospfIfPollInterval' , 'ospfIfState' , 'ospfIfDesignatedRouter' , 'ospfIfBackupDesignatedRouter' , 'ospfIfEvents' , 'ospfIfAuthKey' , 'ospfIfStatus' , 'ospfIfMulticastForwarding' , 'ospfIfDemand' , 'ospfIfAuthType' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Build array of existing entries
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( dbFetchRows ( " SELECT * FROM `ospf_ports` WHERE `device_id` = ? " ,  array ( $device [ 'device_id' ]))  as  $entry ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  $ospf_ports_db [ $entry [ 'ospf_port_id' ]]  =  $entry ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Pull data from device
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								$ospf_ports_poll  =  snmpwalk_cache_oid ( $device ,  " OSPF-MIB::ospfIfEntry " ,  array (),  " OSPF-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( $ospf_ports_poll  as  $ospf_port_id  =>  $ospf_port ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  /// If the entry doesn't already exist in the prebuilt array, insert into the database and put into the array
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if  ( ! isset ( $ospf_ports_db [ $ospf_port_id ])) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'ospf_port_id'  =>  $ospf_port_id ),  'ospf_ports' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    echo ( " + " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ospf_ports_db [ $entry [ 'ospf_port_id' ]]  =  dbFetchRow ( " SELECT * FROM `ospf_ports` WHERE `device_id` = ? AND `ospf_port_id` = ? " ,  array ( $device [ 'device_id' ],  $ospf_port_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( $debug ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 13:51:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " \n Polled:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_ports_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " Database:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_ports_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Loop array of entries and update
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( is_array ( $ospf_ports_db )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  foreach  ( $ospf_ports_db  as  $ospf_port_id  =>  $ospf_port_db ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_array ( $ospf_ports_poll [ $ospf_port_db [ 'ospf_port_id' ]])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      $ospf_port_poll  =  $ospf_ports_poll [ $ospf_port_db [ 'ospf_port_id' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      if  ( $ospf_port_poll [ 'ospfAddressLessIf' ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ospf_port_poll [ 'port_id' ]  =  @ dbFetchCell ( " SELECT `port_id` FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ? " ,  array ( $device [ 'device_id' ],  $ospf_port_poll [ 'ospfAddressLessIf' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ospf_port_poll [ 'port_id' ]  =  @ dbFetchCell ( " SELECT A.`port_id` FROM ipv4_addresses AS A, ports AS I WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND I.device_id = ? " ,  array ( $ospf_port_poll [ 'ospfIfIpAddress' ],  $device [ 'device_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      foreach  ( $ospf_port_oids  as  $oid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      {  // Loop the OIDs
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $ospf_port_db [ $oid ]  !=  $ospf_port_poll [ $oid ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        {  // If data has changed, build a query
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $ospf_port_update [ $oid ]  =  $ospf_port_poll [ $oid ]; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          #log_event("$oid -> ".$this_port[$oid], $device, 'ospf', $port['port_id']); /// FIXME
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      if  ( $ospf_port_update ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        dbUpdate ( $ospf_port_update ,  'ospf_ports' ,  '`device_id` = ? AND `ospf_port_id` = ?' ,  array ( $device [ 'device_id' ],  $ospf_port_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        echo ( " U " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 14:59:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        unset ( $ospf_port_update ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo ( " . " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      unset ( $ospf_port_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      unset ( $ospf_port_db ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 17:41:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      $ospf_port_count ++ ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      dbDelete ( 'ospf_ports' ,  '`device_id` = ? AND `ospf_port_id` = ?' ,  array ( $device [ 'device_id' ],  $ospf_port_db [ 'ospf_port_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      # "DELETE FROM `ospf_ports` WHERE `device_id` = '".$device['device_id']."' AND `ospf_port_id` = '".$ospf_port_db['ospf_port_id']."'");
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      echo ( " - " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrIpAddr.172.22.203.98.0 172.22.203.98
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrAddressLessIndex.172.22.203.98.0 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrRtrId.172.22.203.98.0 172.22.203.128
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrOptions.172.22.203.98.0 2
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrPriority.172.22.203.98.0 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrState.172.22.203.98.0 full
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrEvents.172.22.203.98.0 6
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrLsRetransQLen.172.22.203.98.0 1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbmaNbrStatus.172.22.203.98.0 active
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbmaNbrPermanence.172.22.203.98.0 dynamic
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#OSPF-MIB::ospfNbrHelloSuppressed.172.22.203.98.0 false
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo ( ' Neighbours: ' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_nbr_oids_db   =  array ( 'ospfNbrIpAddr' ,  'ospfNbrAddressLessIndex' ,  'ospfNbrRtrId' ,  'ospfNbrOptions' ,  'ospfNbrPriority' ,  'ospfNbrState' ,  'ospfNbrEvents' ,  'ospfNbrLsRetransQLen' ,  'ospfNbmaNbrStatus' ,  'ospfNbmaNbrPermanence' ,  'ospfNbrHelloSuppressed' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_nbr_oids_rrd  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ospf_nbr_oids  =  array_merge ( $ospf_nbr_oids_db ,  $ospf_nbr_oids_rrd ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Build array of existing entries
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( dbFetchRows ( " SELECT * FROM `ospf_nbrs` WHERE `device_id` = ? " ,  array ( $device [ 'device_id' ]))  as  $nbr_entry ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  $ospf_nbrs_db [ $nbr_entry [ 'ospf_nbr_id' ]]  =  $nbr_entry ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Pull data from device
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$ospf_nbrs_poll  =  snmpwalk_cache_oid ( $device ,  " OSPF-MIB::ospfNbrEntry " ,  array (),  " OSPF-MIB " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								foreach  ( $ospf_nbrs_poll  as  $ospf_nbr_id  =>  $ospf_nbr ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  /// If the entry doesn't already exist in the prebuilt array, insert into the database and put into the array
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if  ( ! isset ( $ospf_nbrs_db [ $ospf_nbr_id ])) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    dbInsert ( array ( 'device_id'  =>  $device [ 'device_id' ],  'ospf_nbr_id'  =>  $ospf_nbr_id ),  'ospf_nbrs' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo ( " + " ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $entry  =  dbFetchRow ( " SELECT * FROM `ospf_nbrs` WHERE `device_id` = ? AND `ospf_nbr_id` = ? " ,  array ( $device [ 'device_id' ],  $ospf_nbr_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $ospf_nbrs_db [ $entry [ 'ospf_nbr_id' ]]  =  $entry ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( $debug ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " \n Polled:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_nbrs_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " Database:  " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  print_r ( $ospf_nbrs_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  echo ( " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Loop array of entries and update
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if  ( is_array ( $ospf_nbrs_db )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  foreach  ( $ospf_nbrs_db  as  $ospf_nbr_id  =>  $ospf_nbr_db ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( is_array ( $ospf_nbrs_poll [ $ospf_nbr_db [ 'ospf_nbr_id' ]])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      $ospf_nbr_poll  =  $ospf_nbrs_poll [ $ospf_nbr_db [ 'ospf_nbr_id' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      $ospf_nbr_poll [ 'port_id' ]  =  @ dbFetchCell ( " SELECT A.`port_id` FROM ipv4_addresses AS A, nbrs AS I WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND I.device_id = ? " ,  array ( $ospf_nbr_poll [ 'ospfNbrIpAddr' ],  $device [ 'device_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      if  ( $ospf_nbr_db [ 'port_id' ]  !=  $ospf_nbr_poll [ 'port_id' ]) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $ospf_nbr_poll [ 'port_id' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $ospf_nbr_update  =  array ( 'port_id'  =>  $ospf_nbr_poll [ 'port_id' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-20 14:27:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 13:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $ospf_nbr_update  =  array ( 'port_id'  =>  array ( 'NULL' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-20 14:27:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      foreach  ( $ospf_nbr_oids  as  $oid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      {  // Loop the OIDs
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:18:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $debug )  {  echo ( $ospf_nbr_db [ $oid ] . " | " . $ospf_nbr_poll [ $oid ] . " \n " );  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $ospf_nbr_db [ $oid ]  !=  $ospf_nbr_poll [ $oid ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        {  // If data has changed, build a query
 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          $ospf_nbr_update [ $oid ]  =  $ospf_nbr_poll [ $oid ]; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          #log_event("$oid -> ".$this_nbr[$oid], $device, 'ospf', $nbr['port_id']); /// FIXME
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      if  ( $ospf_nbr_update ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        dbUpdate ( $ospf_nbr_update ,  'ospf_nbrs' ,  '`device_id` = ? AND `ospf_nbr_id` = ?' ,  array ( $device [ 'device_id' ],  $ospf_nbr_id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        echo ( " U " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        unset ( $ospf_nbr_update ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo ( " . " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      unset ( $ospf_nbr_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      unset ( $ospf_nbr_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      $ospf_nbr_count ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 21:56:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      dbDelete ( 'ospf_nbrs' ,  '`device_id` = ? AND `ospf_nbr_id` = ?' ,  array ( $device [ 'device_id' ],  $ospf_nbr_db [ 'ospf_nbr_id' ])); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-30 22:20:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      echo ( " - " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-25 11:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/// Create device-wide statistics RRD
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 17:41:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$filename  =  $config [ 'rrd_dir' ]  .  " / "  .  $device [ 'hostname' ]  .  " / "  .  safename ( " ospf-statistics.rrd " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if  ( ! is_file ( $filename )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 15:16:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  rrdtool_create ( $filename ,  " --step 300  \ 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 17:41:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          DS : instances : GAUGE : 600 : 0 : 1000000  \ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          DS : areas : GAUGE : 600 : 0 : 1000000  \ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          DS : ports : GAUGE : 600 : 0 : 1000000  \ 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-20 17:37:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          DS : neighbours : GAUGE : 600 : 0 : 1000000  " . $config['rrd_rra'] );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 17:41:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$rrd_update   =  " N: " . $ospf_instance_count . " : " . $ospf_area_count . " : " . $ospf_port_count . " : " . $ospf_neighbour_count ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								$ret  =  rrdtool_update ( " $filename " ,  $rrd_update ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								unset ( $ospf_ports_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								unset ( $ospf_ports_poll ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 15:19:08 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								echo ( " \n " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-27 01:39:02 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								?>