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 " ));
2012-04-09 17:53:22 +00:00
$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
2014-01-13 17:43:58 +00: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' )
2010-12-03 15:56:57 +00:00
{
2014-06-24 02:02:56 +01:00
$port_id = dbFetchCell ( " SELECT `port_id` FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ? " , array ( $device [ 'device_id' ], $ifIndex ));
2011-03-15 11:24:35 +00:00
2014-01-13 17:43:58 +00:00
if ( dbFetchCell ( " SELECT COUNT(*) FROM `ipv4_networks` WHERE `ipv4_network` = ? " , array ( $network )) < '1' )
2010-12-03 15:56:57 +00:00
{
2014-06-10 22:21:10 +01:00
dbInsert ( array ( 'ipv4_network' => $network ), 'ipv4_networks' );
2010-12-03 15:56:57 +00:00
#echo("Create Subnet $network\n");
echo ( " S " );
2009-04-14 12:07:17 +00:00
}
2011-03-15 11:24:35 +00:00
2014-01-13 17:43:58 +00:00
$ipv4_network_id = dbFetchCell ( " SELECT `ipv4_network_id` FROM `ipv4_networks` WHERE `ipv4_network` = ? " , array ( $network ));
2010-12-03 15:56:57 +00:00
2014-01-13 17:43:58 +00:00
if ( dbFetchCell ( " SELECT COUNT(*) FROM `ipv4_addresses` WHERE `ipv4_address` = ? AND `ipv4_prefixlen` = ? AND `port_id` = ? " , array ( $oid , $cidr , $port_id )) == '0' )
2010-12-03 15:56:57 +00:00
{
2014-06-10 22:21:10 +01:00
dbInsert ( array ( 'ipv4_address' => $oid , 'ipv4_prefixlen' => $cidr , 'ipv4_network_id' => $ipv4_network_id , 'port_id' => $port_id ), 'ipv4_addresses' );
2012-05-16 13:25:50 +00:00
#echo("Added $oid/$cidr to $port_id ( $hostname $ifIndex )\n $i_query\n");
2010-12-03 15:56:57 +00:00
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 ( " ! " ); }
}
2012-05-16 13:25:50 +00: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 " ;
2014-01-13 17:43:58 +00:00
foreach ( dbFetchRows ( $sql ) as $row )
2010-12-03 15:56:57 +00:00
{
$full_address = $row [ 'ipv4_address' ] . " / " . $row [ 'ipv4_prefixlen' ] . " | " . $row [ 'ifIndex' ];
if ( ! $valid_v4 [ $full_address ])
{
echo ( " - " );
2014-01-13 17:43:58 +00:00
$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' ])))
2010-12-03 15:56:57 +00:00
{
2014-06-10 22:21:10 +01:00
$query = dbDelete ( 'ipv4_networks' , '`ipv4_network_id` = ?' , array ( $row [ 'ipv4_network_id' ]));
2010-12-03 15:56:57 +00:00
}
}
}
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
2014-01-13 17:43:58 +00:00
?>