2008-04-03 19:04:24 +00:00
< ? php
2008-11-03 17:21:48 +00:00
echo ( " IPv6 Addresses : " );
2008-04-03 19:04:24 +00:00
2009-11-28 09:48:23 +00:00
#$ipv6interfaces = shell_exec($config['snmpget']." -m IPV6-MIB -Ovnq -".$device['snmpver']." -c ".$device['community']." ".$device['hostname'].":".$device['port']." ipv6Interfaces.0");
#if($ipv6interfaces){
2008-11-03 17:21:48 +00:00
2009-04-24 15:04:45 +00:00
$cmd = $config [ 'snmpwalk' ] . " -m IP-MIB - " . $device [ 'snmpver' ] . " -Ln -c " . $device [ 'community' ] . " " . $device [ 'hostname' ] . " : " . $device [ 'port' ];
$cmd .= " ipAddressIfIndex.ipv6 -Osq | grep -v No " ;
$oids = trim ( trim ( shell_exec ( $cmd )));
2008-04-03 19:04:24 +00:00
$oids = str_replace ( " ipAddressIfIndex.ipv6. " , " " , $oids ); $oids = str_replace ( " \" " , " " , $oids ); $oids = trim ( $oids );
foreach ( explode ( " \n " , $oids ) as $data ) {
2008-11-19 12:12:54 +00:00
if ( $data ) {
2008-04-03 19:04:24 +00:00
$data = trim ( $data );
list ( $ipv6addr , $ifIndex ) = explode ( " " , $data );
$oid = " " ;
$sep = '' ; $adsep = '' ;
2009-04-13 19:16:22 +00:00
unset ( $ipv6_address );
2008-04-03 19:04:24 +00:00
$do = '0' ;
foreach ( explode ( " : " , $ipv6addr ) as $part ) {
$n = hexdec ( $part );
$oid = " $oid " . " $sep " . " $n " ;
2008-11-03 17:09:38 +00:00
$sep = " . " ;
2009-04-13 19:16:22 +00:00
$ipv6_address = $ipv6_address . " $adsep " . $part ;
2008-04-03 19:04:24 +00:00
$do ++ ;
2008-11-03 17:09:38 +00:00
if ( $do == 2 ) { $adsep = " : " ; $do = '0' ; } else { $adsep = " " ;}
2008-04-03 19:04:24 +00:00
}
2009-04-24 15:04:45 +00:00
$ipv6_prefixlen = trim ( shell_exec ( $config [ 'snmpget' ] . " -m IP-MIB - " . $device [ 'snmpver' ] . " -c " . $device [ 'community' ] . " " . $device [ 'hostname' ] . " : " . $device [ 'port' ] . " .1.3.6.1.2.1.4.34.1.5.2.16. $oid | sed 's/.* \ .//' " ));
$ipv6_origin = trim ( shell_exec ( $config [ 'snmpget' ] . " -m IP-MIB -Ovq - " . $device [ 'snmpver' ] . " -c " . $device [ 'community' ] . " " . $device [ 'hostname' ] . " : " . $device [ 'port' ] . " .1.3.6.1.2.1.4.34.1.6.2.16. $oid " ));
2008-04-03 19:04:24 +00:00
2009-04-13 19:16:22 +00:00
$ipv6_network = trim ( shell_exec ( $config [ 'sipcalc' ] . " $ipv6_address / $ipv6_prefixlen | grep Subnet | cut -f 2 -d '-' " ));
$ipv6_compressed = trim ( shell_exec ( $config [ 'sipcalc' ] . " $ipv6_address / $ipv6_prefixlen | grep Compressed | cut -f 2 -d '-' " ));
2008-04-03 19:04:24 +00:00
2009-04-13 19:16:22 +00:00
if ( mysql_result ( mysql_query ( " SELECT count(*) FROM `interfaces`
WHERE device_id = '".$device[' device_id ']."' AND `ifIndex` = '$ifIndex' " ), 0) != '0' && $ipv6_prefixlen > '0' && $ipv6_prefixlen < '129' && $ipv6_compressed != '::1') {
2008-04-03 19:04:24 +00:00
$i_query = " SELECT interface_id FROM `interfaces` WHERE device_id = ' " . $device [ 'device_id' ] . " ' AND `ifIndex` = ' $ifIndex ' " ;
$interface_id = mysql_result ( mysql_query ( $i_query ), 0 );
2009-04-13 19:16:22 +00:00
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `ipv6_networks` WHERE `ipv6_network` = ' $ipv6_network ' " ), 0 ) < '1' ) {
mysql_query ( " INSERT INTO `ipv6_networks` (`ipv6_network`) VALUES (' $ipv6_network ') " );
2008-04-03 19:04:24 +00:00
echo ( " N " );
}
2009-04-02 11:07:54 +00:00
2009-04-13 19:16:22 +00:00
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `ipv6_networks` WHERE `ipv6_network` = ' $ipv6_network ' " ), 0 ) < '1' ) {
mysql_query ( " INSERT INTO `ipv6_networks` (`ipv6_network`) VALUES (' $ipv6_network ') " );
2009-04-02 11:07:54 +00:00
echo ( " N " );
2008-04-03 19:04:24 +00:00
}
2009-04-13 19:16:22 +00:00
$ipv6_network_id = @ mysql_result ( mysql_query ( " SELECT `ipv6_network_id` from `ipv6_networks` WHERE `ipv6_network` = ' $ipv6_network ' " ), 0 );
2009-04-02 11:07:54 +00:00
2009-04-13 19:16:22 +00:00
if ( mysql_result ( mysql_query ( " SELECT COUNT(*) FROM `ipv6_addresses` WHERE `ipv6_address` = ' $ipv6_address ' AND `ipv6_prefixlen` = ' $ipv6_prefixlen ' AND `interface_id` = ' $interface_id ' " ), 0 ) == '0' ) {
mysql_query ( " INSERT INTO `ipv6_addresses` (`ipv6_address`, `ipv6_compressed`, `ipv6_prefixlen`, `ipv6_origin`, `ipv6_network_id`, `interface_id`)
VALUES ( '$ipv6_address' , '$ipv6_compressed' , '$ipv6_prefixlen' , '$ipv6_origin' , '$ipv6_network_id' , '$interface_id' ) " );
2009-04-02 11:07:54 +00:00
echo ( " + " );
} else { echo ( " . " ); }
2009-04-13 19:16:22 +00:00
$full_address = " $ipv6_address / $ipv6_prefixlen " ;
2009-05-03 22:32:01 +00:00
$valid = $full_address . " - " . $interface_id ;
$valid_v6 [ $valid ] = 1 ;
2009-03-30 11:20:18 +00:00
}
2008-11-19 12:12:54 +00:00
}
2008-04-03 19:04:24 +00:00
}
2009-11-28 09:48:23 +00:00
#} else { echo("None configured"); }
2008-11-03 17:21:48 +00:00
2009-04-13 19:16:22 +00:00
$sql = " SELECT * FROM ipv6_addresses AS A, interfaces AS I WHERE I.device_id = ' " . $device [ 'device_id' ] . " ' AND A.interface_id = I.interface_id " ;
2009-04-02 11:07:54 +00:00
$data = mysql_query ( $sql );
while ( $row = mysql_fetch_array ( $data )) {
2009-04-13 19:16:22 +00:00
$full_address = $row [ 'ipv6_address' ] . " / " . $row [ 'ipv6_prefixlen' ];
2009-05-03 22:32:01 +00:00
$interface_id = $row [ 'interface_id' ];
$valid = $full_address . " - " . $interface_id ;
if ( ! $valid_v6 [ $valid ]) {
2009-04-02 11:07:54 +00:00
echo ( " - " );
2009-04-13 19:16:22 +00:00
$query = @ mysql_query ( " DELETE FROM `ipv6_addresses` WHERE `ipv6_address_id` = ' " . $row [ 'ipv6_address_id' ] . " ' " );
if ( ! mysql_result ( mysql_query ( " SELECT count(*) FROM ipv6_addresses WHERE ipv6_network_id = ' " . $row [ 'ipv6_network_id' ] . " ' " ), 0 )) {
$query = @ mysql_query ( " DELETE FROM `ipv6_networks` WHERE `ipv6_network_id` = ' " . $row [ 'ipv6_network_id' ] . " ' " );
2009-04-02 11:07:54 +00:00
}
}
}
unset ( $valid_v6 );
2008-04-03 19:04:24 +00:00
?>
2008-11-03 17:09:38 +00:00