2009-04-13 19:16:22 +00:00
< ? php
echo ( " IP Addresses : " );
2010-07-30 22:25:07 +00:00
# FIXME function!
2010-07-02 19:58:13 +00:00
$oids = shell_exec ( $config [ 'snmpwalk' ] . " -M " . $config [ 'mibdir' ] . " -m IP-MIB - " . $device [ 'snmpver' ] . " -Osq -c " . $device [ 'community' ] . " " . $device [ 'hostname' ] . " : " . $device [ 'port' ] . " ipAdEntIfIndex " );
2009-04-13 19:16:22 +00:00
$oids = trim ( $oids );
$oids = str_replace ( " ipAdEntIfIndex. " , " " , $oids );
foreach ( explode ( " \n " , $oids ) as $data ) {
$data = trim ( $data );
list ( $oid , $ifIndex ) = explode ( " " , $data );
2010-07-30 22:25:07 +00:00
# FIXME function!
2010-07-02 19:58:13 +00:00
$mask = shell_exec ( $config [ 'snmpget' ] . " -M " . $config [ 'mibdir' ] . " -m IP-MIB -O qv - " . $device [ 'snmpver' ] . " -c " . $device [ 'community' ] . " " . $device [ 'hostname' ] . " : " . $device [ 'port' ] . " ipAdEntNetMask. $oid " );
2009-04-13 19:16:22 +00:00
$mask = trim ( $mask );
$network = trim ( shell_exec ( $config [ 'ipcalc' ] . " $oid / $mask | grep Network | cut -d \" \" -f 4 " ));
list ( $net , $cidr ) = explode ( " / " , $network );
$cidr = trim ( $cidr );
if ( $mask == " 255.255.255.255 " ) { $cidr = " 32 " ; $network = " $oid / $cidr " ; }
2010-02-20 17:22:22 +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 ' " ;
2009-04-13 19:16:22 +00:00
$interface_id = mysql_result ( mysql_query ( $i_query ), 0 );
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 " );
}
$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 ( " . " ); }
2009-05-28 13:03:52 +00:00
$full_address = " $oid / $cidr | $ifIndex " ;
2009-04-14 12:07:17 +00:00
$valid_v4 [ $full_address ] = 1 ;
2009-04-13 19:16:22 +00:00
} else { echo ( " ! " ); }
}
2010-02-20 17:22:22 +00:00
$sql = " SELECT * FROM ipv4_addresses AS A, ports AS I WHERE I.device_id = ' " . $device [ 'device_id' ] . " ' AND A.interface_id = I.interface_id " ;
2009-04-14 12:07:17 +00:00
$data = mysql_query ( $sql );
while ( $row = mysql_fetch_array ( $data )) {
2009-05-28 13:03:52 +00:00
$full_address = $row [ 'ipv4_address' ] . " / " . $row [ 'ipv4_prefixlen' ] . " | " . $row [ 'ifIndex' ];
2009-04-14 12:07:17 +00:00
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-13 19:16:22 +00:00
echo ( " \n " );
2009-04-14 12:07:17 +00:00
unset ( $valid_v4 );
2009-04-13 19:16:22 +00:00
?>