2008-10-28 18:25:53 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( $config [ 'enable_pseudowires' ]  &&  $device [ 'os_group' ]  ==  'cisco' )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset ( $cpw_count ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset ( $cpw_exists ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Pre-cache the existing state of pseudowires for this device from the database
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws_db_raw  =  dbFetchRows ( 'SELECT * FROM `pseudowires` WHERE `device_id` = ?' ,  array ( $device [ 'device_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( $pws_db_raw  as  $pw_db )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $device [ 'pws_db' ][ $pw_db [ 'cpwVcID' ]]  =  $pw_db [ 'pseudowire_id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset ( $pws_db_raw ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset ( $pw_db ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws  =  snmpwalk_cache_oid ( $device ,  'cpwVcID' ,  array (),  'CISCO-IETF-PW-MPLS-MIB' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws  =  snmpwalk_cache_oid ( $device ,  'cpwVcName' ,  $pws ,  'CISCO-IETF-PW-MPLS-MIB' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws  =  snmpwalk_cache_oid ( $device ,  'cpwVcType' ,  $pws ,  'CISCO-IETF-PW-MPLS-MIB' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws  =  snmpwalk_cache_oid ( $device ,  'cpwVcPsnType' ,  $pws ,  'CISCO-IETF-PW-MPLS-MIB' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws  =  snmpwalk_cache_oid ( $device ,  'cpwVcDescr' ,  $pws ,  'CISCO-IETF-PW-MPLS-MIB' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // For MPLS pseudowires
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $pws  =  snmpwalk_cache_oid ( $device ,  'cpwVcMplsPeerLdpID' ,  $pws ,  'CISCO-IETF-PW-MPLS-MIB' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( $pws  as  $pw_id  =>  $pw )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        list ( $cpw_remote_id )  =  explode ( ':' ,  $pw [ 'cpwVcMplsPeerLdpID' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $cpw_remote_device    =  dbFetchCell ( 'SELECT device_id from ipv4_addresses AS A, ports AS I WHERE A.ipv4_address=? AND A.port_id=I.port_id' ,  array ( $cpw_remote_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $if_id                =  dbFetchCell ( 'SELECT port_id from ports WHERE `ifDescr`=? AND `device_id`=?' ,  array ( $pw [ 'cpwVcName' ],  $device [ 'device_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! empty ( $device [ 'pws_db' ][ $pw [ 'cpwVcID' ]]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $pseudowire_id  =  $device [ 'pws_db' ][ $pw [ 'cpwVcID' ]]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            echo  '.' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-28 12:32:58 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $pseudowire_id  =  dbInsert ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'device_id'       =>  $device [ 'device_id' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'port_id'         =>  $if_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'peer_device_id'  =>  $cpw_remote_device , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'peer_ldp_id'     =>  $cpw_remote_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'cpwVcID'         =>  $pw [ 'cpwVcID' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'cpwOid'          =>  $pw_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'pw_type'         =>  $pw [ 'cpwVcType' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'pw_descr'        =>  $pw [ 'cpwVcDescr' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    'pw_psntype'      =>  $pw [ 'cpwVcPsnType' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                'pseudowires' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            echo  '+' ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-02 17:23:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-02 17:23:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $device [ 'pws' ][ $pw [ 'cpwVcID' ]]  =  $pseudowire_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } //end foreach
 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-12 15:59:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // Cycle the list of pseudowires we cached earlier and make sure we saw them again.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    foreach  ( $device [ 'pws_db' ]  as  $pw_id  =>  $pseudowire_id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( empty ( $device [ 'pws' ][ $pw_id ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            dbDelete ( 'vlans' ,  '`pseudowire_id` = ?' ,  array ( $pseudowire_id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-24 15:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    echo  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  //end if