2009-04-13 19:16:22 +00:00
< ? php
2011-03-15 11:24:35 +00:00
echo ( " IPv4 Addresses : " );
2009-04-13 19:16:22 +00:00
2010-12-03 15:56:57 +00:00
$oids = trim ( snmp_walk ( $device , " ipAdEntIfIndex " , " -Osq " , " IP-MIB " ));
$oids = str_replace ( " ipAdEntIfIndex. " , " " , $oids );
2011-03-15 11:24:35 +00:00
foreach ( explode ( " \n " , $oids ) as $data )
2010-12-03 15:56:57 +00:00
{
$data = trim ( $data );
list ( $oid , $ifIndex ) = explode ( " " , $data );
$mask = trim ( snmp_get ( $device , " ipAdEntNetMask. $oid " , " -Oqv " , " IP-MIB " ));
2011-03-08 18:01:54 +00:00
$addr = Net_IPv4 :: parseAddress ( " $oid / $mask " );
$network = $addr -> network . " / " . $addr -> bitmask ;
$cidr = $addr -> bitmask ;
2011-03-16 17:53:20 +00:00
2010-12-03 15:56:57 +00:00
if ( mysql_result ( mysql_query ( " SELECT count(*) FROM `ports` WHERE device_id = ' " . $device [ 'device_id' ] . " ' AND `ifIndex` = ' $ifIndex ' " ), 0 ) != '0' && $oid != " 0.0.0.0 " )
{
$i_query = " SELECT interface_id FROM `ports` WHERE device_id = ' " . $device [ 'device_id' ] . " ' AND `ifIndex` = ' $ifIndex ' " ;
$interface_id = mysql_result ( mysql_query ( $i_query ), 0 );
2011-03-15 11:24:35 +00:00
2010-12-03 15:56:57 +00:00
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `ipv4_networks` WHERE `ipv4_network` = ' $network ' " ), 0 ) < '1' )
{
mysql_query ( " INSERT INTO `ipv4_networks` (`ipv4_network`) VALUES (' $network ') " );
#echo("Create Subnet $network\n");
echo ( " S " );
2009-04-14 12:07:17 +00:00
}
2011-03-15 11:24:35 +00:00
2010-12-03 15:56:57 +00:00
$ipv4_network_id = @ mysql_result ( mysql_query ( " SELECT `ipv4_network_id` from `ipv4_networks` WHERE `ipv4_network` = ' $network ' " ), 0 );
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `ipv4_addresses` WHERE `ipv4_address` = ' $oid ' AND `ipv4_prefixlen` = ' $cidr ' AND `interface_id` = ' $interface_id ' " ), 0 ) == '0' )
{
mysql_query ( " INSERT INTO `ipv4_addresses` (`ipv4_address`, `ipv4_prefixlen`, `ipv4_network_id`, `interface_id`) VALUES (' $oid ', ' $cidr ', ' $ipv4_network_id ', ' $interface_id ') " );
#echo("Added $oid/$cidr to $interface_id ( $hostname $ifIndex )\n $i_query\n");
echo ( " + " );
} else { echo ( " . " ); }
2011-03-15 11:24:35 +00:00
2010-12-03 15:56:57 +00:00
$full_address = " $oid / $cidr | $ifIndex " ;
$valid_v4 [ $full_address ] = 1 ;
} else { echo ( " ! " ); }
}
$sql = " SELECT * FROM ipv4_addresses AS A, ports AS I WHERE I.device_id = ' " . $device [ 'device_id' ] . " ' AND A.interface_id = I.interface_id " ;
$data = mysql_query ( $sql );
2011-03-08 18:01:54 +00:00
2011-04-06 13:54:50 +00:00
while ( $row = mysql_fetch_assoc ( $data ))
2010-12-03 15:56:57 +00:00
{
$full_address = $row [ 'ipv4_address' ] . " / " . $row [ 'ipv4_prefixlen' ] . " | " . $row [ 'ifIndex' ];
if ( ! $valid_v4 [ $full_address ])
{
echo ( " - " );
$query = @ mysql_query ( " DELETE FROM `ipv4_addresses` WHERE `ipv4_address_id` = ' " . $row [ 'ipv4_address_id' ] . " ' " );
if ( ! mysql_result ( mysql_query ( " SELECT count(*) FROM ipv4_addresses WHERE ipv4_network_id = ' " . $row [ 'ipv4_network_id' ] . " ' " ), 0 ))
{
$query = @ mysql_query ( " DELETE FROM `ipv4_networks` WHERE `ipv4_network_id` = ' " . $row [ 'ipv4_network_id' ] . " ' " );
}
}
}
2009-04-14 12:07:17 +00:00
2010-12-03 15:56:57 +00:00
echo ( " \n " );
2009-04-13 19:16:22 +00:00
2010-12-03 15:56:57 +00:00
unset ( $valid_v4 );
2011-03-15 11:24:35 +00:00
?>