| 
									
										
										
										
											2008-04-03 19:04:24 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-28 12:32:58 -05: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-08-28 12:32:58 -05: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']; | 
					
						
							| 
									
										
										
										
											2008-11-03 17:21:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |     $oids = snmp_walk($device, 'ipAddressIfIndex.ipv6', '-Ln -Osq', 'IP-MIB'); | 
					
						
							|  |  |  |     $oids = str_replace('ipAddressIfIndex.ipv6.', '', $oids); | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     $oids = str_replace('"', '', $oids); | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |     $oids = str_replace('IP-MIB::', '', $oids); | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     $oids = trim($oids); | 
					
						
							| 
									
										
										
										
											2009-04-02 11:07:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     foreach (explode("\n", $oids) as $data) { | 
					
						
							|  |  |  |         if ($data) { | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |             $data                    = trim($data); | 
					
						
							|  |  |  |             list($ipv6addr,$ifIndex) = explode(' ', $data); | 
					
						
							|  |  |  |             $oid   = ''; | 
					
						
							|  |  |  |             $sep   = ''; | 
					
						
							|  |  |  |             $adsep = ''; | 
					
						
							|  |  |  |             unset($ipv6_address); | 
					
						
							|  |  |  |             $do = '0'; | 
					
						
							|  |  |  |             foreach (explode(':', $ipv6addr) as $part) { | 
					
						
							|  |  |  |                 $n            = hexdec($part); | 
					
						
							|  |  |  |                 $oid          = "$oid"."$sep"."$n"; | 
					
						
							|  |  |  |                 $sep          = '.'; | 
					
						
							|  |  |  |                 $ipv6_address = $ipv6_address."$adsep".$part; | 
					
						
							|  |  |  |                 $do++; | 
					
						
							|  |  |  |                 if ($do == 2) { | 
					
						
							|  |  |  |                     $adsep = ':'; | 
					
						
							|  |  |  |                     $do    = '0'; | 
					
						
							| 
									
										
										
										
											2016-08-28 12:32:58 -05:00
										 |  |  |                 } else { | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |                     $adsep = ''; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $ipv6_prefixlen = snmp_get($device, ".1.3.6.1.2.1.4.34.1.5.2.16.$oid", '', 'IP-MIB'); | 
					
						
							|  |  |  |             $ipv6_prefixlen = explode('.', $ipv6_prefixlen); | 
					
						
							|  |  |  |             $ipv6_prefixlen = str_replace('"', '', end($ipv6_prefixlen)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $ipv6_origin = snmp_get($device, ".1.3.6.1.2.1.4.34.1.6.2.16.$oid", '-Ovq', 'IP-MIB'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             discover_process_ipv6($valid, $ifIndex, $ipv6_address, $ipv6_prefixlen, $ipv6_origin, $device['context_name']); | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         } //end if
 | 
					
						
							|  |  |  |     } //end foreach
 | 
					
						
							| 
									
										
										
										
											2008-11-03 17:21:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |     if (!$oids) { | 
					
						
							|  |  |  |         $oids = snmp_walk($device, 'ipv6AddrPfxLength', '-Ln -Osq -OnU', 'IPV6-MIB'); | 
					
						
							|  |  |  |         $oids = str_replace('.1.3.6.1.2.1.55.1.8.1.2.', '', $oids); | 
					
						
							|  |  |  |         $oids = str_replace('"', '', $oids); | 
					
						
							|  |  |  |         $oids = trim($oids); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach (explode("\n", $oids) as $data) { | 
					
						
							|  |  |  |             if ($data) { | 
					
						
							|  |  |  |                 $data = trim($data); | 
					
						
							|  |  |  |                 list($if_ipv6addr,$ipv6_prefixlen) = explode(' ', $data); | 
					
						
							|  |  |  |                 list($ifIndex,$ipv6addr)           = explode('.', $if_ipv6addr, 2); | 
					
						
							|  |  |  |                 $ipv6_address = snmp2ipv6($ipv6addr); | 
					
						
							|  |  |  |                 $ipv6_origin  = snmp_get($device, "IPV6-MIB::ipv6AddrType.$if_ipv6addr", '-Ovq', 'IPV6-MIB'); | 
					
						
							|  |  |  |                 discover_process_ipv6($valid, $ifIndex, $ipv6_address, $ipv6_prefixlen, $ipv6_origin, $device['context_name']); | 
					
						
							|  |  |  |             } //end if
 | 
					
						
							|  |  |  |         } //end foreach
 | 
					
						
							|  |  |  |     } //end if
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-25 21:28:25 +01:00
										 |  |  |     $sql = 'SELECT `ipv6_addresses`.*, `ports`.`device_id`, `ports`.`ifIndex` FROM `ipv6_addresses`'; | 
					
						
							|  |  |  |     $sql .= ' LEFT JOIN `ports` ON `ipv6_addresses`.`port_id` = `ports`.`port_id`'; | 
					
						
							|  |  |  |     $sql .= ' WHERE `ports`.device_id = ? OR `ports`.`device_id` IS NULL'; | 
					
						
							|  |  |  |     foreach (dbFetchRows($sql, array($device['device_id'])) as $row) { | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |         $full_address  = $row['ipv6_address'].'/'.$row['ipv6_prefixlen']; | 
					
						
							|  |  |  |         $port_id       = $row['port_id']; | 
					
						
							|  |  |  |         $valid_address = $full_address.'-'.$port_id; | 
					
						
							|  |  |  |         if (!$valid['ipv6'][$valid_address]) { | 
					
						
							|  |  |  |             echo '-'; | 
					
						
							|  |  |  |             $query = dbDelete('ipv6_addresses', '`ipv6_address_id` = ?', array($row['ipv6_address_id'])); | 
					
						
							|  |  |  |             if (!dbFetchCell('SELECT COUNT(*) FROM `ipv6_addresses` WHERE `ipv6_network_id` = ?', array($row['ipv6_network_id']))) { | 
					
						
							|  |  |  |                 $query = dbDelete('ipv6_networks', '`ipv6_network_id` = ?', array($row['ipv6_network_id'])); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-04-02 11:07:54 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-20 15:13:53 +01:00
										 |  |  |     echo "\n"; | 
					
						
							|  |  |  |     unset($device['context_name']); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-06-21 00:59:43 +01:00
										 |  |  | unset($vrfs_c); |