$sort = 'cipMacHCSwitchedBytes_output_rate'; } else { $sort = 'bps'; } } } } //end if $accs = dbFetchRows("SELECT *, (M.cipMacHCSwitchedBytes_input_rate + M.cipMacHCSwitchedBytes_output_rate) AS bps,\n (M.cipMacHCSwitchedPkts_input_rate + M.cipMacHCSwitchedPkts_output_rate) AS pps\n FROM `mac_accounting` AS M, `ports` AS I, `devices` AS D WHERE M.port_id = ?\n AND I.port_id = M.port_id AND D.device_id = I.device_id ORDER BY {$sort} DESC LIMIT 0," . $topn, array($port)); $pluses = ''; $iter = '0'; $rrd_options .= " COMMENT:' In\\: Current Maximum Total Out\\: Current Maximum Total\\\\n'"; foreach ($accs as $acc) { $this_rrd = $config['rrd_dir'] . '/' . $acc['hostname'] . '/' . safename('cip-' . $acc['ifIndex'] . '-' . $acc['mac'] . '.rrd'); if (is_file($this_rrd)) { $mac = formatmac($acc['mac']); $name = $mac; $addy = dbFetchRow('SELECT * FROM ipv4_mac where mac_address = ? AND port_id = ?', array($acc['mac'], $acc['port_id'])); if ($addy) { $name = $addy['ipv4_address'] . ' (' . $mac . ')'; $peer = dbFetchRow('SELECT * FROM ipv4_addresses AS A, ports AS I, devices AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', array($addy['ipv4_address'])); if ($peer) { $name = $peer['hostname'] . ' ' . makeshortif($peer['ifDescr']) . ' (' . $mac . ')'; } if (dbFetchCell("SELECT count(*) FROM bgpPeers WHERE device_id = '" . $acc['device_id'] . "' AND bgpPeerIdentifier = ?", array($addy['ipv4_address']))) { $peer_info = dbFetchRow('SELECT * FROM bgpPeers WHERE device_id = ? AND bgpPeerIdentifier = ?', array($acc['device_id'], $addy['ipv4_address'])); $name .= ' - AS' . $peer_info['bgpPeerRemoteAs']; } if ($peer_info) { $asn = 'AS' . $peer_info['bgpPeerRemoteAs'];
if (!is_integer($i / 2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } $fdb_host = dbFetchRow("SELECT * FROM `ports` AS P, devices AS D WHERE P.ifPhysAddress = ? AND D.device_id = P.device_id", array($fdb['mac_address'])); if ($fdb_host) { $fdb_name = generate_device_link($fdb_host); } else { unset($fdb_name); } if ($fdb_host) { $fdb_if = generate_port_link($fdb_host); } else { unset($fdb_if); } if ($fdb_host['device_id'] == $device['device_id']) { $fdb_name = "Localhost"; } if ($fdb_host['port_id'] == $fdb['port_id']) { $fdb_if = "Local Port"; } echo "\n <tr bgcolor={$bg_colour}>\n <td width=160>VLAN" . $fdb['vlan_id'] . "</td>\n <td width=160>" . formatmac($fdb['mac_address']) . "</td>\n <td width=280>{$fdb_name}</td>\n <td><strong>{$fdb_if}</strong></td>\n <td width=160>"; foreach (dbFetchRows("SELECT ip_address FROM ip_mac WHERE mac_address = ? GROUP BY ip_address", array($fdb['mac_address'])) as $ip) { echo $ip['ip_address'] . "<br />"; } echo "</td>\n\n </tr>"; $i++; } echo " </tbody>\n"; echo "</table>\n";
echo '<table border="0" cellspacing="0" cellpadding="5" width="100%">'; echo '<tr><th>Port</th><th>MAC address</th><th>IPv4 address</th><th>Remote device</th><th>Remote port</th></tr>'; $i = "1"; foreach (dbFetchRows("SELECT * FROM ipv4_mac AS M, ports AS I WHERE I.port_id = M.port_id AND I.device_id = ?", array($device['device_id'])) as $arp) { if (!is_integer($i / 2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } $arp_host = dbFetchRow("SELECT * FROM ipv4_addresses AS A, ports AS I, devices AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id", array($arp['ipv4_address'])); if ($arp_host) { $arp_name = generate_device_link($arp_host); } else { unset($arp_name); } if ($arp_host) { $arp_if = generate_port_link($arp_host); } else { unset($arp_if); } if ($arp_host['device_id'] == $device['device_id']) { $arp_name = "Localhost"; } if ($arp_host['port_id'] == $arp['port_id']) { $arp_if = "Local Port"; } echo "\n <tr bgcolor={$bg_colour}>\n <td width=200><b>" . generate_port_link(array_merge($arp, $device)) . "</b></td>\n <td width=160>" . formatmac($arp['mac_address']) . "</td>\n <td width=160>" . $arp['ipv4_address'] . "</td>\n <td width=280>{$arp_name}</td>\n <td>{$arp_if}</td>\n </tr>"; $i++; } echo "</table>";
} elseif ($sort == "out") { $sort = "bytes_output_rate"; } else { $sort = "bps"; } } $mas = dbFetchRows("SELECT *, (bytes_input_rate + bytes_output_rate) AS bps,\n (pkts_input_rate + pkts_output_rate) AS pps\n FROM `mac_accounting`\n LEFT JOIN `mac_accounting-state` ON `mac_accounting`.ma_id = `mac_accounting-state`.ma_id\n WHERE `mac_accounting`.port_id = ?\n ORDER BY {$sort} DESC LIMIT 0," . $topn, array($port)); $port = get_port_by_id($port); $device = device_by_id_cache($port['device_id']); $pluses = ""; $iter = '0'; $rrd_options .= " COMMENT:' In\\: Current Maximum Total Out\\: Current Maximum Total\\\\n'"; foreach ($mas as $ma) { $this_rrd = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename("mac_acc-" . $port['ifIndex'] . "-" . $ma['vlan_id'] . "-" . $ma['mac'] . ".rrd"); if (is_file($this_rrd)) { $mac = formatmac($ma['mac']); $name = $mac; $addy = dbFetchRow("SELECT * FROM ipv4_mac where mac_address = ? AND port_id = ?", array($ma['mac'], $ma['port_id'])); if ($addy) { $name = $addy['ipv4_address'] . " (" . $mac . ")"; $peer = dbFetchRow("SELECT * FROM ipv4_addresses AS A, ports AS I, devices AS D\n WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id", array($addy['ipv4_address'])); if ($peer) { $name = $peer['hostname'] . " " . short_ifname($peer['ifDescr']) . " (" . $mac . ")"; } if (dbFetchCell("SELECT COUNT(*) FROM bgpPeers WHERE device_id = ? AND bgpPeerIdentifier = ?", array($ma['device_id'], $addy['ipv4_address']))) { $peer_info = dbFetchRow("SELECT * FROM bgpPeers WHERE device_id = ? AND bgpPeerIdentifier = ?", array($ma['device_id'], $addy['ipv4_address'])); $name .= " - AS" . $peer_info['bgpPeerRemoteAs']; } if ($peer_info) { $asn = "AS" . $peer_info['bgpPeerRemoteAs']; $astext = $peer_info['astext'];
$i = '1'; foreach (dbFetchRows('SELECT * FROM ipv4_mac AS M, ports AS I WHERE I.port_id = M.port_id AND I.device_id = ?', array($device['device_id'])) as $arp) { if (!is_integer($i / 2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } $arp_host = dbFetchRow('SELECT * FROM ipv4_addresses AS A, ports AS I, devices AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', array($arp['ipv4_address'])); if ($arp_host) { $arp_name = generate_device_link($arp_host); } else { unset($arp_name); } if ($arp_host) { $arp_if = generate_port_link($arp_host); } else { unset($arp_if); } if ($arp_host['device_id'] == $device['device_id']) { $arp_name = 'Localhost'; } if ($arp_host['port_id'] == $arp['port_id']) { $arp_if = 'Local Port'; } echo "\n <tr bgcolor={$bg_colour}>\n <td width=200><b>" . generate_port_link(array_merge($arp, $device)) . '</b></td> <td width=160>' . formatmac($arp['mac_address']) . '</td> <td width=160>' . $arp['ipv4_address'] . "</td>\n <td width=280>{$arp_name}</td>\n <td>{$arp_if}</td>\n </tr>"; $i++; } //end foreach echo '</table>';
if (!is_integer($i / 2)) { $bg_colour = $list_colour_a; } else { $bg_colour = $list_colour_b; } $fdb_host = dbFetchRow("SELECT * FROM `ports` AS P, devices AS D WHERE P.ifPhysAddress = ? AND D.device_id = P.device_id", array($fdb['mac_address'])); if ($fdb_host) { $fdb_name = generate_device_link($fdb_host); } else { unset($fdb_name); } if ($fdb_host) { $fdb_if = generate_port_link($fdb_host); } else { unset($fdb_if); } if ($fdb_host['device_id'] == $device['device_id']) { $fdb_name = "Localhost"; } if ($fdb_host['port_id'] == $fdb['port_id']) { $fdb_if = "Local Port"; } echo "\n <tr bgcolor={$bg_colour}>\n <td width=160>VLAN" . $fdb['vlan_id'] . "</td>\n <td width=160>" . formatmac($fdb['mac_address']) . "</td>\n <td width=200><b>" . generate_port_link(array_merge($fdb, $device)) . "</b></td>\n <td width=280>{$fdb_name}</td>\n <td><strong>{$fdb_if}</strong></td>\n <td width=160>"; foreach (dbFetchRows("SELECT ip_address FROM ip_mac WHERE mac_address = ? GROUP BY ip_address", array($fdb['mac_address'])) as $ip) { echo $ip['ip_address'] . "<br />"; } echo "</td>\n\n </tr>"; $i++; } echo " </tbody>\n"; echo "</table>\n";