2009-04-13 19:16:22 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								echo  'IPv4 Addresses : ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-25 11:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if (  key_exists ( 'vrf_lite_cisco' ,  $device )  &&  ( count ( $device [ 'vrf_lite_cisco' ]) !=  0 )  ){ 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $vrfs_lite_cisco  =  $device [ 'vrf_lite_cisco' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-25 11:17:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								else  {   
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $vrfs_lite_cisco  =  array ( array ( 'context_name' => null )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								foreach  ( $vrfs_lite_cisco  as  $vrf )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $device [ 'context_name' ] = $vrf [ 'context_name' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $oids  =  trim ( snmp_walk ( $device ,  'ipAdEntIfIndex' ,  '-Osq' ,  'IP-MIB' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $oids  =  str_replace ( 'ipAdEntIfIndex.' ,  '' ,  $oids ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( explode ( " \n " ,  $oids )  as  $data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $data                =  trim ( $data ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        list ( $oid , $ifIndex )  =  explode ( ' ' ,  $data ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mask                =  trim ( snmp_get ( $device ,  " ipAdEntNetMask. $oid " ,  '-Oqv' ,  'IP-MIB' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $addr                =  Net_IPv4 :: parseAddress ( " $oid / $mask " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $network             =  $addr -> network . '/' . $addr -> bitmask ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $cidr                =  $addr -> bitmask ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `ports` WHERE device_id = ? AND `ifIndex` = ?' ,  array ( $device [ 'device_id' ],  $ifIndex ))  !=  '0'  &&  $oid  !=  '0.0.0.0'  &&  $oid  !=  'ipAdEntIfIndex' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $port_id  =  dbFetchCell ( 'SELECT `port_id` FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?' ,  array ( $device [ 'device_id' ],  $ifIndex )); 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `ipv4_networks` WHERE `ipv4_network` = ?' ,  array ( $network ))  <  '1' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                dbInsert ( array ( 'ipv4_network'  =>  $network , 'context_name'  =>  $device [ 'context_name' ]),  'ipv4_networks' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // echo("Create Subnet $network\n");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                echo  'S' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                //Update Context
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dbUpdate ( array ( 'context_name'  =>  $device [ 'context_name' ]),  'ipv4_networks' ,  '`ipv4_network` = ?' ,  array ( $network )  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                echo  's' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ipv4_network_id  =  dbFetchCell ( 'SELECT `ipv4_network_id` FROM `ipv4_networks` WHERE `ipv4_network` = ?' ,  array ( $network )); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( dbFetchCell ( 'SELECT COUNT(*) FROM `ipv4_addresses` WHERE `ipv4_address` = ? AND `ipv4_prefixlen` = ? AND `port_id` = ? ' ,  array ( $oid ,  $cidr ,  $port_id ))  ==  '0' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dbInsert ( array ( 'ipv4_address'  =>  $oid ,  'ipv4_prefixlen'  =>  $cidr ,  'ipv4_network_id'  =>  $ipv4_network_id ,  'port_id'  =>  $port_id ,  'context_name'  =>  $device [ 'context_name' ]),  'ipv4_addresses' ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // echo("Added $oid/$cidr to $port_id ( $hostname $ifIndex )\n $i_query\n");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                echo  '+' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                //Update Context
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dbUpdate ( array ( 'context_name'  =>  $device [ 'context_name' ]),  'ipv4_addresses' ,  'ipv4_address` = ? AND `ipv4_prefixlen` = ? AND `port_id` = ?' , array ( $oid ,  $cidr ,  $port_id )  ); 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                echo  '.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $full_address             =  " $oid / $cidr | $ifIndex " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $valid_v4 [ $full_address ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            echo  '!' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } //end if
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } //end foreach
 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 12:21:45 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $sql  =  " SELECT * FROM ipv4_addresses AS A, ports AS I WHERE I.device_id = ' " . $device [ 'device_id' ] . " ' AND  A.port_id = I.port_id " ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    foreach  ( dbFetchRows ( $sql )  as  $row )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $full_address  =  $row [ 'ipv4_address' ] . '/' . $row [ 'ipv4_prefixlen' ] . '|' . $row [ 'ifIndex' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! $valid_v4 [ $full_address ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo  '-' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $query  =  dbDelete ( 'ipv4_addresses' ,  '`ipv4_address_id` = ?' ,  array ( $row [ 'ipv4_address_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! dbFetchCell ( 'SELECT COUNT(*) FROM `ipv4_addresses` WHERE `ipv4_network_id` = ?' ,  array ( $row [ 'ipv4_network_id' ])))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $query  =  dbDelete ( 'ipv4_networks' ,  '`ipv4_network_id` = ?' ,  array ( $row [ 'ipv4_network_id' ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2015-07-13 20:10:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-03 15:56:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 19:16:22 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 15:13:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    unset ( $device [ 'context_name' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    unset ( $valid_v4 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								unset ( $vrfs_c );