2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								### Discover BGP peers on Cisco devices
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 23:09:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  echo ( " BGP Sessions :  " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-24 15:04:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  $as_cmd   =  $config [ 'snmpwalk' ]  .  "  -m BGP4-MIB -CI -Oqvn - "  .  $device [ 'snmpver' ]  .  "  -c "  .  $device [ 'community' ]  .  "   "  .  $device [ 'hostname' ] . " : " . $device [ 'port' ]  .  "   " ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  $as_cmd  .=  " .1.3.6.1.2.1.15.2 " ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-16 15:17:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  $bgpLocalAs  =  trim ( shell_exec ( $as_cmd )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-07-31 10:53:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  if ( $bgpLocalAs  &&  ! strstr ( $bgpLocalAs ,  " No " ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-30 11:20:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo ( " AS $bgpLocalAs   \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ( $bgpLocalAs  !=  $device [ 'bgpLocalAs' ])  {  mysql_query ( " UPDATE devices SET bgpLocalAs = ' $bgpLocalAs ' WHERE device_id = ' " . $device [ 'device_id' ] . " ' " );  echo ( " Updated AS \n " );  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-24 15:04:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $peers_cmd   =  $config [ 'snmpwalk' ]  .  "  -m BGP4-MIB -CI -Oq - "  .  $device [ 'snmpver' ]  .  "  -c "  .  $device [ 'community' ]  .  "   "  .  $device [ 'hostname' ] . " : " . $device [ 'port' ]  .  "   " ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    $peers_cmd  .=  " BGP4-MIB::bgpPeerRemoteAs " ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $peers  =  trim ( str_replace ( " BGP4-MIB::bgpPeerRemoteAs. " ,  " " ,  `$peers_cmd` ));   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( explode ( " \n " ,  $peers )  as  $peer )   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      if ( $peer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        list ( $peer_ip ,  $peer_as )  =  split ( "   " ,   $peer ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-17 00:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									$peerlist []  =  $device [ 'device_id' ]  . "   $peer_ip " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-09 13:55:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									$astext  =  trim ( str_replace ( " \" " ,  " " ,  shell_exec ( " /usr/bin/dig +short AS $peer_as .asn.cymru.com TXT | cut -d '|' -f 5 | sed s/ \\ \" //g " ))); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-30 11:20:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        echo ( str_pad ( $peer_ip ,  40 )  .  "  AS $peer_as    " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        #echo("$peer_ip AS$peer_as ");
 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `bgpPeers` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND bgpPeerIdentifier = ' $peer_ip ' " ), 0 )  <  '1' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $add  =  mysql_query ( " INSERT INTO bgpPeers (`device_id`, `bgpPeerIdentifier`, `bgpPeerRemoteAS`) VALUES (' " . $device [ 'device_id' ] . " ',' $peer_ip ',' $peer_as ') " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 23:09:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          echo ( " + " );  
							 
						 
					
						
							
								
									
										
										
										
											2008-03-18 13:35:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  else  {  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $update  =  mysql_query ( " UPDATE `bgpPeers` SET astext = ' $astext ' WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND bgpPeerIdentifier = ' $peer_ip ' " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-30 11:20:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ## Get afi/safi and populate cbgp on cisco IOS
 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-11 19:10:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if ( $device [ 'os' ]  ==  " IOS "  ||  $device [ 'os' ]  ==  " IOS XE " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-30 11:20:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          unset ( $af_list ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $af_cmd   =  $config [ 'snmpwalk' ]  .  "  -CI -m CISCO-BGP4-MIB -OsQ - "  .  $device [ 'snmpver' ]  .  "  -c "  .  $device [ 'community' ]  .  "   "  .  $device [ 'hostname' ] . " : " . $device [ 'port' ]  .  "   " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $af_cmd  .=  " cbgpPeerAddrFamilyName. "  .  $peer_ip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $afs  =  trim ( str_replace ( " cbgpPeerAddrFamilyName. " . $peer_ip . " . " ,  " " ,  `$af_cmd` )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          foreach  ( explode ( " \n " ,  $afs )  as  $af )   { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									    list ( $afisafi ,  $text )  =  explode ( "  =  " ,  $af ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            list ( $afi ,  $safi )  =  explode ( " . " ,  $afisafi ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if ( $afi  &&  $safi )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									     echo ( " ( $afi : $safi ) " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             $af_list [ '$afi' ][ '$safi' ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									     if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `bgpPeers_cbgp` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND bgpPeerIdentifier = ' $peer_ip ' AND afi = ' $afi ' AND safi = ' $safi ' " ), 0 )  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								               mysql_query ( " INSERT INTO `bgpPeers_cbgp` (device_id,bgpPeerIdentifier, afi, safi) VALUES (' " . $device [ 'device_id' ] . " ',' $peer_ip ',' $afi ',' $safi ') " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          }           
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $af_query  =  mysql_query ( " SELECT * FROM bgpPeers_cbgp WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND bgpPeerIdentifier = ' $peer_ip ' " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          while  ( $entry  =  mysql_fetch_array ( $af_query ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $afi  =  $entry [ 'afi' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									    $afi  =  $entry [ 'safi' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! $af_list [ '$afi' ][ '$safi' ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								              mysql_query ( " DELETE FROM `bgpPeers_cbgp` WHERE `device_id` = ' " . $device [ 'device_id' ] . " ' AND bgpPeerIdentifier = ' $peer_ip ' AND afi = ' $afi ' AND safi = ' $safi ' " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          }  # AF list
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  # if IOS 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      echo ( " \n " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 23:09:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      }  # If Peer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }  # Foreach  
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }  else  {  echo ( " No BGP on host " );  }  # End if
 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-17 00:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## Delete removed peers
 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 23:09:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$sql  =  " SELECT * FROM bgpPeers AS B, devices AS D WHERE B.device_id = D.device_id AND D.device_id = ' " . $device [ 'device_id' ] . " ' " ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								$query  =  mysql_query ( $sql ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-17 00:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								while  ( $entry  =  mysql_fetch_array ( $query ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        unset ( $exists ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $i  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-17 00:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        while  ( $i  <  count ( $peerlist )  &&  ! $exists )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 23:09:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $checkme  =  $entry [ 'device_id' ]  .  "   "  .  $entry [ 'bgpPeerIdentifier' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $peerlist [ $i ]  ==  $checkme )  {  $exists  =  1 ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            $i ++ ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if ( ! $exists )  {  
							 
						 
					
						
							
								
									
										
										
										
											2008-03-17 00:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          mysql_query ( " DELETE FROM bgpPeers WHERE bgpPeer_id = ' "  .  $entry [ 'bgpPeer_id' ]  .  " ' " );  
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 19:16:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									  mysql_query ( " DELETE FROM bgpPeers_cbgp WHERE bgpPeer_id = ' "  .  $entry [ 'bgpPeer_id' ]  .  " ' " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 23:09:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								          echo ( " - " ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-15 17:58:15 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								?>