Esempio n. 1
0
function mactrack_format_interface_row($stat)
{
    global $colors, $config;
    /* we will make a row string */
    $row = "";
    /* calculate a human readable uptime */
    if ($stat["ifOperStatus"] == 0) {
        if ($stat["last_up_time"] == '0000-00-00 00:00:00') {
            $upTime = "Since Restart";
        } else {
            $lastUp = $stat["last_up_time"];
            $now = date("Y-m-d H:i:s");
            $time = strtotime($now) - strtotime($lastUp);
            $days = intval($time / (60 * 60 * 24));
            $remainder = $time % (60 * 60 * 24);
            $hours = intval($remainder / (60 * 60));
            $remainder = $remainder % (60 * 60);
            $minutes = intval($remainder / 60);
            $upTime = $days . "d:" . $hours . "h:" . $minutes . "m";
        }
    } else {
        if ($stat["last_down_time"] == '0000-00-00 00:00:00') {
            $upTime = "Since Restart";
        } else {
            $lastUp = $stat["last_down_time"];
            $now = date("Y-m-d H:i:s");
            $time = strtotime($now) - strtotime($lastUp);
            $days = intval($time / (60 * 60 * 24));
            $remainder = $time % (60 * 60 * 24);
            $hours = intval($remainder / (60 * 60));
            $remainder = $remainder % (60 * 60);
            $minutes = intval($remainder / 60);
            $upTime = $days . "d:" . $hours . "h:" . $minutes . "m";
        }
    }
    $row .= "<td nowrap style='width:1%;white-space:nowrap;'>" . mactrack_interface_actions($stat["device_id"], $stat["ifName"]) . "</td>";
    $row .= "<td><b>" . $stat["device_name"] . "</b></td>";
    $row .= "<td>" . strtoupper($stat["device_type"]) . "</td>";
    $row .= "<td><b>" . $stat["ifName"] . "</b></td>";
    $row .= "<td>" . $stat["ifDescr"] . "</td>";
    $row .= "<td>" . $stat["ifAlias"] . "</td>";
    $row .= "<td>" . round($stat["inBound"], 1) . " %" . "</td>";
    $row .= "<td>" . round($stat["outBound"], 1) . " %" . "</td>";
    $row .= "<td>" . mactrack_display_Octets($stat["int_ifHCInOctets"]) . "</td>";
    $row .= "<td>" . mactrack_display_Octets($stat["int_ifHCOutOctets"]) . "</td>";
    if ($_REQUEST["totals"] == "true" || $_REQUEST["totals"] == "on") {
        $row .= "<td>" . $stat["ifInErrors"] . "</td>";
        $row .= "<td>" . $stat["ifInDiscards"] . "</td>";
        $row .= "<td>" . $stat["ifInUnknownProtos"] . "</td>";
        $row .= "<td>" . $stat["ifOutErrors"] . "</td>";
        $row .= "<td>" . $stat["ifOutDiscards"] . "</td>";
    } else {
        $row .= "<td>" . round($stat["int_ifInErrors"], 1) . "</td>";
        $row .= "<td>" . round($stat["int_ifInDiscards"], 1) . "</td>";
        $row .= "<td>" . round($stat["int_ifInUnknownProtos"], 1) . "</td>";
        $row .= "<td>" . round($stat["int_ifOutErrors"], 1) . "</td>";
        $row .= "<td>" . round($stat["int_ifOutDiscards"], 1) . "</td>";
    }
    $row .= "<td>" . ($stat["ifOperStatus"] == 1 ? "Up" : "Down") . "</td>";
    $row .= "<td style='white-space:nowrap;'>" . $upTime . "</td>";
    $row .= "<td style='white-space:nowrap;'>" . mactrack_date($stat["last_rundate"]) . "</td>";
    return $row;
}
function mactrack_format_interface_row($stat)
{
    global $config;
    /* we will make a row string */
    $row = '';
    /* calculate a human readable uptime */
    if ($stat['ifLastChange'] == 0) {
        $upTime = __('Since Restart');
    } else {
        if ($stat['ifLastChange'] > $stat['sysUptime']) {
            $upTime = __('Since Restart');
        } else {
            $time = $stat['sysUptime'] - $stat['ifLastChange'];
            $days = intval($time / (60 * 60 * 24 * 100));
            $remainder = $time % (60 * 60 * 24 * 100);
            $hours = intval($remainder / (60 * 60 * 100));
            $remainder = $remainder % (60 * 60 * 100);
            $minutes = intval($remainder / (60 * 100));
            $upTime = $days . 'd:' . $hours . 'h:' . $minutes . 'm';
        }
    }
    $row .= "<td nowrap style='width:1%;white-space:nowrap;'>" . mactrack_interface_actions($stat['device_id'], $stat['ifName']) . '</td>';
    $row .= '<td><b>' . $stat['device_name'] . '</b></td>';
    $row .= '<td>' . strtoupper($stat['device_type']) . '</td>';
    $row .= '<td><b>' . $stat['ifName'] . '</b></td>';
    $row .= '<td>' . $stat['ifDescr'] . '</td>';
    $row .= '<td>' . $stat['ifAlias'] . '</td>';
    $row .= '<td>' . round($stat['inBound'], 1) . ' %' . '</td>';
    $row .= '<td>' . round($stat['outBound'], 1) . ' %' . '</td>';
    $row .= '<td>' . mactrack_display_Octets($stat['int_ifHCInOctets']) . '</td>';
    $row .= '<td>' . mactrack_display_Octets($stat['int_ifHCOutOctets']) . '</td>';
    if (get_request_var('totals') == 'true' || get_request_var('totals') == 'on') {
        $row .= '<td>' . $stat['ifInErrors'] . '</td>';
        $row .= '<td>' . $stat['ifInDiscards'] . '</td>';
        $row .= '<td>' . $stat['ifInUnknownProtos'] . '</td>';
        $row .= '<td>' . $stat['ifOutErrors'] . '</td>';
        $row .= '<td>' . $stat['ifOutDiscards'] . '</td>';
    } else {
        $row .= '<td>' . round($stat['int_ifInErrors'], 1) . '</td>';
        $row .= '<td>' . round($stat['int_ifInDiscards'], 1) . '</td>';
        $row .= '<td>' . round($stat['int_ifInUnknownProtos'], 1) . '</td>';
        $row .= '<td>' . round($stat['int_ifOutErrors'], 1) . '</td>';
        $row .= '<td>' . round($stat['int_ifOutDiscards'], 1) . '</td>';
    }
    $row .= '<td>' . ($stat['ifOperStatus'] == 1 ? 'Up' : 'Down') . '</td>';
    $row .= "<td style='white-space:nowrap;'>" . $upTime . '</td>';
    $row .= "<td style='white-space:nowrap;'>" . mactrack_date($stat['last_rundate']) . '</td>';
    return $row;
}
function mactrack_view_macs()
{
    global $title, $report, $mactrack_search_types, $rows_selector, $config;
    global $mactrack_view_macs_actions, $item_rows;
    mactrack_tabs();
    html_start_box($title, '100%', '', '3', 'center', '');
    mactrack_mac_filter();
    html_end_box();
    $sql_where = '';
    if (get_request_var('rows') == -1) {
        $row_limit = read_config_option('num_rows_table');
    } elseif (get_request_var('rows') == -2) {
        $row_limit = 999999;
    } else {
        $row_limit = get_request_var('rows');
    }
    $port_results = mactrack_view_get_mac_records($sql_where, TRUE, $row_limit);
    /* prevent table scans, either a device or site must be selected */
    if (!strlen($sql_where)) {
        $total_rows = 0;
    } elseif (get_request_var('scan_date') == 1) {
        $rows_query_string = "SELECT\n\t\t\tCOUNT(mac_track_ports.device_id)\n\t\t\tFROM mac_track_ports\n\t\t\tLEFT JOIN mac_track_sites ON (mac_track_ports.site_id = mac_track_sites.site_id)\n\t\t\tLEFT JOIN mac_track_oui_database ON (mac_track_oui_database.vendor_mac = mac_track_ports.vendor_mac)\n\t\t\t{$sql_where}";
        $total_rows = db_fetch_cell($rows_query_string);
    } else {
        $rows_query_string = "SELECT\n\t\t\tCOUNT(DISTINCT device_id, mac_address, port_number, ip_address)\n\t\t\tFROM mac_track_ports\n\t\t\tLEFT JOIN mac_track_sites ON (mac_track_ports.site_id = mac_track_sites.site_id)\n\t\t\tLEFT JOIN mac_track_oui_database ON (mac_track_oui_database.vendor_mac = mac_track_ports.vendor_mac)\n\t\t\t{$sql_where}";
        $total_rows = db_fetch_cell($rows_query_string);
    }
    $nav = html_nav_bar('mactrack_view_macs.php?report=macs', MAX_DISPLAY_PAGES, get_request_var('page'), $row_limit, $total_rows, 12, __('MAC Addresses'));
    print $nav;
    html_start_box('', '100%', '', '3', 'center', '');
    if (read_config_option('mt_reverse_dns') != '') {
        $display_text = array('nosort' => array(__('Actions'), ''), 'device_name' => array(__('Switch Name'), 'ASC'), 'hostname' => array(__('Switch Hostname'), 'ASC'), 'ip_address' => array(__('ED IP Address'), 'ASC'), 'dns_hostname' => array(__('ED DNS Hostname'), 'ASC'), 'mac_address' => array(__('ED MAC Address'), 'ASC'), 'vendor_name' => array(__('Vendor Name'), 'ASC'), 'port_number' => array(__('Port Number'), 'DESC'), 'port_name' => array(__('Port Name'), 'ASC'), 'vlan_id' => array(__('VLAN ID'), 'DESC'), 'vlan_name' => array(__('VLAN Name'), 'ASC'), 'max_scan_date' => array(__('Last Scan Date'), 'DESC'));
        if (mactrack_check_user_realm(2122)) {
            html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
        } else {
            html_header_sort($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
        }
    } else {
        $display_text = array('nosort' => array(__('Actions'), ''), 'device_name' => array(__('Switch Name'), 'ASC'), 'hostname' => array(__('Switch Hostname'), 'ASC'), 'ip_address' => array(__('ED IP Address'), 'ASC'), 'mac_address' => array(__('ED MAC Address'), 'ASC'), 'vendor_name' => array(__('Vendor Name'), 'ASC'), 'port_number' => array(__('Port Number'), 'DESC'), 'port_name' => array(__('Port Name'), 'ASC'), 'vlan_id' => array(__('VLAN ID'), 'DESC'), 'vlan_name' => array(__('VLAN Name'), 'ASC'), 'scan_date' => array(__('Last Scan Date'), 'DESC'));
        if (mactrack_check_user_realm(2122)) {
            html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
        } else {
            html_header_sort($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
        }
    }
    $delim = read_config_option('mt_mac_delim');
    if (sizeof($port_results)) {
        foreach ($port_results as $port_result) {
            if (get_request_var('scan_date') != 2) {
                $scan_date = $port_result['scan_date'];
            } else {
                $scan_date = $port_result['max_scan_date'];
            }
            $key = str_replace($delim, '_', $port_result['mac_address']) . '-' . $port_result['device_id'] . $port_result['port_number'] . '-' . strtotime($scan_date);
            form_alternate_row('line' . $key, true);
            form_selectable_cell(mactrack_interface_actions($port_result['device_id'], $port_result['port_number'], FALSE), $key);
            form_selectable_cell($port_result['device_name'], $key);
            form_selectable_cell($port_result['hostname'], $key);
            form_selectable_cell(filter_value($port_result['ip_address'], get_request_var('filter')), $key);
            if (strlen(read_config_option('mt_reverse_dns')) > 0) {
                form_selectable_cell(filter_value($port_result['dns_hostname'], get_request_var('filter')), $key);
            }
            form_selectable_cell(filter_value($port_result['mac_address'], get_request_var('filter')), $key);
            form_selectable_cell(filter_value($port_result['vendor_name'], get_request_var('filter')), $key);
            form_selectable_cell($port_result['port_number'], $key);
            form_selectable_cell(filter_value($port_result['port_name'], get_request_var('filter')), $key);
            form_selectable_cell($port_result['vlan_id'], $key);
            form_selectable_cell(filter_value($port_result['vlan_name'], get_request_var('filter')), $key);
            form_selectable_cell($scan_date, $key);
            if (mactrack_check_user_realm(2122)) {
                form_checkbox_cell($port_result['mac_address'], $key);
            }
            form_end_row();
        }
    } else {
        if (get_request_var('site_id') == -1 && get_request_var('device_id') == -1) {
            print "<tr><td colspan='10'><em>" . __('You must choose a Site, Device or other search criteria.') . "</em></td></tr>";
        } else {
            print "<tr><td colspan='10'><em>" . __('No MacTrack Port Results.') . "</em></td></tr>";
        }
    }
    html_end_box(false);
    if (sizeof($port_results)) {
        print $nav;
    }
    if (mactrack_check_user_realm(2122)) {
        draw_actions_dropdown($mactrack_view_macs_actions);
    }
}
Esempio n. 4
0
function mactrack_view_macs() {
	global $title, $report, $colors, $mactrack_search_types, $rows_selector, $config;
	global $mactrack_view_macs_actions, $item_rows;

	/* ================= input validation ================= */
	input_validate_input_number(get_request_var_request("site_id"));
	input_validate_input_number(get_request_var_request("device_id"));
	input_validate_input_number(get_request_var_request("mac_filter_type_id"));
	input_validate_input_number(get_request_var_request("port_name_filter_type_id"));
	input_validate_input_number(get_request_var_request("ip_filter_type_id"));
	input_validate_input_number(get_request_var_request("rows"));
	input_validate_input_number(get_request_var_request("authorized"));
	input_validate_input_number(get_request_var_request("vlan"));
	input_validate_input_number(get_request_var_request("page"));
	/* ==================================================== */

	/* clean up filter string */
	if (isset($_REQUEST["ip_filter"])) {
		$_REQUEST["ip_filter"] = sanitize_search_string(get_request_var("ip_filter"));
	}

	/* clean up search string */
	if (isset($_REQUEST["mac_filter"])) {
		$_REQUEST["mac_filter"] = sanitize_search_string(get_request_var("mac_filter"));
	}

	/* clean up search string */
	if (isset($_REQUEST["port_name_filter"])) {
		$_REQUEST["port_name_filter"] = sanitize_search_string(get_request_var("port_name_filter"));
	}

	/* clean up sort_column */
	if (isset($_REQUEST["sort_column"])) {
		$_REQUEST["sort_column"] = sanitize_search_string(get_request_var("sort_column"));
	}

	/* clean up search string */
	if (isset($_REQUEST["sort_direction"])) {
		$_REQUEST["sort_direction"] = sanitize_search_string(get_request_var("sort_direction"));
	}

	if (isset($_REQUEST["mac_filter_type_id"])) {
		if ($_REQUEST["mac_filter_type_id"] == 1) {
			unset($_REQUEST["mac_filter"]);
		}
	}

	if (isset($_REQUEST["port_name_filter_type_id"])) {
		if ($_REQUEST["port_name_filter_type_id"] == 1) {
			unset($_REQUEST["port_name_filter"]);
		}
	}

	/* clean up search string */
	if (isset($_REQUEST["scan_date"])) {
		$_REQUEST["scan_date"] = sanitize_search_string(get_request_var("scan_date"));
	}

	/* clean up search string */
	if (isset($_REQUEST["filter"])) {
		$_REQUEST["filter"] = sanitize_search_string(get_request_var("filter"));
	}

	if (isset($_REQUEST["ip_filter_type_id"])) {
		if ($_REQUEST["ip_filter_type_id"] == 1) {
			unset($_REQUEST["ip_filter"]);
		}
	}

	/* if the user pushed the 'clear' button */
	if (isset($_REQUEST["clear_x"]) || isset($_REQUEST["reset"])) {
		kill_session_var("sess_mactrack_view_macs_current_page");
		kill_session_var("sess_mactrack_view_macs_rowstoshow");
		kill_session_var("sess_mactrack_view_macs_filter");
		kill_session_var("sess_mactrack_view_macs_mac_filter_type_id");
		kill_session_var("sess_mactrack_view_macs_mac_filter");
		kill_session_var("sess_mactrack_view_macs_port_name_filter_type_id");
		kill_session_var("sess_mactrack_view_macs_port_name_filter");
		kill_session_var("sess_mactrack_view_macs_ip_filter_type_id");
		kill_session_var("sess_mactrack_view_macs_ip_filter");
		kill_session_var("sess_mactrack_view_macs_rows_selector");
		kill_session_var("sess_mactrack_view_macs_site_id");
		kill_session_var("sess_mactrack_view_macs_vlan_id");
		kill_session_var("sess_mactrack_view_macs_authorized");
		kill_session_var("sess_mactrack_view_macs_device_id");
		kill_session_var("sess_mactrack_view_macs_sort_column");
		kill_session_var("sess_mactrack_view_macs_sort_direction");

		$_REQUEST["page"] = 1;

		if (isset($_REQUEST["clear_x"])) {
			unset($_REQUEST["scan_date"]);
			unset($_REQUEST["mac_filter"]);
			unset($_REQUEST["mac_filter_type_id"]);
			unset($_REQUEST["port_name_filter"]);
			unset($_REQUEST["port_name_filter_type_id"]);
			unset($_REQUEST["ip_filter"]);
			unset($_REQUEST["ip_filter_type_id"]);
			unset($_REQUEST["rows"]);
			unset($_REQUEST["filter"]);
			unset($_REQUEST["site_id"]);
			unset($_REQUEST["vlan"]);
			unset($_REQUEST["authorized"]);
			unset($_REQUEST["device_id"]);
			unset($_REQUEST["sort_column"]);
			unset($_REQUEST["sort_direction"]);
		}
	}else{
		/* if any of the settings changed, reset the page number */
		$changed = 0;
		$changed += mactrack_check_changed("scan_date",          "sess_mactrack_view_macs_rowstoshow");
		$changed += mactrack_check_changed("mac_filter",         "sess_mactrack_view_macs_mac_filter");
		$changed += mactrack_check_changed("mac_filter_type_id", "sess_mactrack_view_macs_mac_filter_type_id");
		$changed += mactrack_check_changed("port_name_filter",         "sess_mactrack_view_macs_port_name_filter");
		$changed += mactrack_check_changed("port_name_filter_type_id", "sess_mactrack_view_macs_port_name_filter_type_id");
		$changed += mactrack_check_changed("ip_filter",          "sess_mactrack_view_macs_ip_filter");
		$changed += mactrack_check_changed("ip_filter_type_id",  "sess_mactrack_view_macs_ip_filter_type_id");
		$changed += mactrack_check_changed("filter",             "sess_mactrack_view_macs_filter");
		$changed += mactrack_check_changed("rows",               "sess_mactrack_view_macs_rows_selector");
		$changed += mactrack_check_changed("site_id",            "sess_mactrack_view_macs_site_id");
		$changed += mactrack_check_changed("vlan",               "sess_mactrack_view_macs_vlan_id");
		$changed += mactrack_check_changed("authorized",         "sess_mactrack_view_macs_authorized");
		$changed += mactrack_check_changed("device_id",          "sess_mactrack_view_macs_device_id");

		if ($changed) {
			$_REQUEST["page"] = "1";
		}
	}

	/* reset some things if the user has made changes */
	if ((!empty($_REQUEST["site_id"]))&&(!empty($_SESSION["sess_mactrack_view_macs_site_id"]))) {
		if ($_REQUEST["site_id"] <> $_SESSION["sess_mactrack_view_macs_site_id"]) {
			$_REQUEST["device_id"] = "-1";
		}
	}

	/* remember these search fields in session vars so we don't have to keep passing them around */
	load_current_session_value("page",               "sess_mactrack_view_macs_current_page", "1");
	load_current_session_value("scan_date",          "sess_mactrack_view_macs_rowstoshow", "2");
	load_current_session_value("mac_filter",         "sess_mactrack_view_macs_mac_filter", "");
	load_current_session_value("mac_filter_type_id", "sess_mactrack_view_macs_mac_filter_type_id", "1");
	load_current_session_value("port_name_filter",         "sess_mactrack_view_macs_port_name_filter", "");
	load_current_session_value("port_name_filter_type_id", "sess_mactrack_view_macs_port_name_filter_type_id", "1");
	load_current_session_value("ip_filter",          "sess_mactrack_view_macs_ip_filter", "");
	load_current_session_value("ip_filter_type_id",  "sess_mactrack_view_macs_ip_filter_type_id", "1");
	load_current_session_value("filter",             "sess_mactrack_view_macs_filter", "");
	load_current_session_value("rows",               "sess_mactrack_view_macs_rows_selector", "-1");
	load_current_session_value("site_id",            "sess_mactrack_view_macs_site_id", "-1");
	load_current_session_value("vlan",               "sess_mactrack_view_macs_vlan_id", "-1");
	load_current_session_value("authorized",         "sess_mactrack_view_macs_authorized", "-1");
	load_current_session_value("device_id",          "sess_mactrack_view_macs_device_id", "-1");
	load_current_session_value("sort_column",        "sess_mactrack_view_macs_sort_column", "device_name");
	load_current_session_value("sort_direction",     "sess_mactrack_view_macs_sort_direction", "ASC");

	mactrack_tabs();
	mactrack_view_header();
	mactrack_mac_filter();
	mactrack_view_footer();
	html_start_box("", "100%", $colors["header"], "3", "center", "");

	$sql_where = "";

	if ($_REQUEST["rows"] == -1) {
		$row_limit = read_config_option("num_rows_mactrack");
	}elseif ($_REQUEST["rows"] == -2) {
		$row_limit = 999999;
	}else{
		$row_limit = $_REQUEST["rows"];
	}

	$port_results = mactrack_view_get_mac_records($sql_where, TRUE, $row_limit);

	/* prevent table scans, either a device or site must be selected */
	if (!strlen($sql_where)) {
		$total_rows = 0;
	}elseif ($_REQUEST["scan_date"] == 1) {
		$rows_query_string = "SELECT
			COUNT(mac_track_ports.device_id)
			FROM mac_track_ports
			LEFT JOIN mac_track_sites ON (mac_track_ports.site_id = mac_track_sites.site_id)
			LEFT JOIN mac_track_oui_database ON (mac_track_oui_database.vendor_mac = mac_track_ports.vendor_mac)
			$sql_where";

		$total_rows = db_fetch_cell($rows_query_string);
	}else{
		$rows_query_string = "SELECT
			COUNT(DISTINCT device_id, mac_address, port_number, ip_address)
			FROM mac_track_ports
			LEFT JOIN mac_track_sites ON (mac_track_ports.site_id = mac_track_sites.site_id)
			LEFT JOIN mac_track_oui_database ON (mac_track_oui_database.vendor_mac = mac_track_ports.vendor_mac)
			$sql_where";

		$total_rows = db_fetch_cell($rows_query_string);
	}

	/* generate page list */
	$url_page_select = get_page_list($_REQUEST["page"], MAX_DISPLAY_PAGES, $row_limit, $total_rows, "mactrack_view_macs.php?report=macs");

	if (isset($config["base_path"])) {
		if ($total_rows > 0) {
			$nav = "<tr bgcolor='#" . $colors["header"] . "'>
						<td colspan='13'>
							<table width='100%' cellspacing='0' cellpadding='0' border='0'>
								<tr>
									<td align='left' class='textHeaderDark'>
										<strong>&lt;&lt; "; if ($_REQUEST["page"] > 1) { $nav .= "<a class='linkOverDark' href='mactrack_view_macs.php?report=macs&page=" . ($_REQUEST["page"]-1) . "'>"; } $nav .= "Previous"; if ($_REQUEST["page"] > 1) { $nav .= "</a>"; } $nav .= "</strong>
									</td>\n
									<td align='center' class='textHeaderDark'>
										Showing Rows " . ($total_rows == 0 ? "None" : (($row_limit*($_REQUEST["page"]-1))+1) . " to " . ((($total_rows < $row_limit) || ($total_rows < ($row_limit*$_REQUEST["page"]))) ? $total_rows : ($row_limit*$_REQUEST["page"])) . " of $total_rows [$url_page_select]") . "
									</td>\n
									<td align='right' class='textHeaderDark'>
										<strong>"; if (($_REQUEST["page"] * $row_limit) < $total_rows) { $nav .= "<a class='linkOverDark' href='mactrack_view_macs.php?report=macs&page=" . ($_REQUEST["page"]+1) . "'>"; } $nav .= "Next"; if (($_REQUEST["page"] * $row_limit) < $total_rows) { $nav .= "</a>"; } $nav .= " &gt;&gt;</strong>
									</td>\n
								</tr>
							</table>
						</td>
					</tr>\n";
		}else{
			$nav = "<tr bgcolor='#" . $colors["header"] . "' class='noprint'>
						<td colspan='22'>
							<table width='100%' cellspacing='0' cellpadding='0' border='0'>
								<tr>
									<td align='center' class='textHeaderDark'>
										No Rows Found
									</td>\n
								</tr>
							</table>
						</td>
					</tr>\n";
		}
	}else{
		$nav = html_create_nav($_REQUEST["page"], MAX_DISPLAY_PAGES, $_REQUEST["rows"], $total_rows, 13, "mactrack_view_macs.php?report=macs");
	}

	print $nav;

	if (strlen(read_config_option("mt_reverse_dns")) > 0) {
		if ($_REQUEST["rows"] == 1) {
			$display_text = array(
				"nosort" => array("Actions", ""),
				"device_name" => array("Switch Name", "ASC"),
				"hostname" => array("Switch Hostname", "ASC"),
				"ip_address" => array("ED IP Address", "ASC"),
				"dns_hostname" => array("ED DNS Hostname", "ASC"),
				"mac_address" => array("ED MAC Address", "ASC"),
				"vendor_name" => array("Vendor Name", "ASC"),
				"port_number" => array("Port Number", "DESC"),
				"port_name" => array("Port Name", "ASC"),
				"vlan_id" => array("VLAN ID", "DESC"),
				"vlan_name" => array("VLAN Name", "ASC"),
				"max_scan_date" => array("Last Scan Date", "DESC"));
		}else{
			$display_text = array(
				"nosort" => array("Actions", ""),
				"device_name" => array("Switch Name", "ASC"),
				"hostname" => array("Switch Hostname", "ASC"),
				"ip_address" => array("ED IP Address", "ASC"),
				"dns_hostname" => array("ED DNS Hostname", "ASC"),
				"mac_address" => array("ED MAC Address", "ASC"),
				"vendor_name" => array("Vendor Name", "ASC"),
				"port_number" => array("Port Number", "DESC"),
				"port_name" => array("Port Name", "ASC"),
				"vlan_id" => array("VLAN ID", "DESC"),
				"vlan_name" => array("VLAN Name", "ASC"),
				"scan_date" => array("Last Scan Date", "DESC"));
		}

		if (mactrack_check_user_realm(2122)) {
			html_header_sort_checkbox($display_text, $_REQUEST["sort_column"], $_REQUEST["sort_direction"]);
		}else{
			html_header_sort($display_text, $_REQUEST["sort_column"], $_REQUEST["sort_direction"]);
		}
	}else{
		if ($_REQUEST["rows"] == 1) {
			$display_text = array(
				"nosort" => array("Actions", ""),
				"device_name" => array("Switch Name", "ASC"),
				"hostname" => array("Switch Hostname", "ASC"),
				"ip_address" => array("ED IP Address", "ASC"),
				"mac_address" => array("ED MAC Address", "ASC"),
				"vendor_name" => array("Vendor Name", "ASC"),
				"port_number" => array("Port Number", "DESC"),
				"port_name" => array("Port Name", "ASC"),
				"vlan_id" => array("VLAN ID", "DESC"),
				"vlan_name" => array("VLAN Name", "ASC"),
				"max_scan_date" => array("Last Scan Date", "DESC"));
		}else{
			$display_text = array(
				"nosort" => array("Actions", ""),
				"device_name" => array("Switch Device", "ASC"),
				"hostname" => array("Switch Hostname", "ASC"),
				"ip_address" => array("ED IP Address", "ASC"),
				"mac_address" => array("ED MAC Address", "ASC"),
				"vendor_name" => array("Vendor Name", "ASC"),
				"port_number" => array("Port Number", "DESC"),
				"port_name" => array("Port Name", "ASC"),
				"vlan_id" => array("VLAN ID", "DESC"),
				"vlan_name" => array("VLAN Name", "ASC"),
				"scan_date" => array("Last Scan Date", "DESC"));
		}

		if (mactrack_check_user_realm(2122)) {
			html_header_sort_checkbox($display_text, $_REQUEST["sort_column"], $_REQUEST["sort_direction"]);
		}else{
			html_header_sort($display_text, $_REQUEST["sort_column"], $_REQUEST["sort_direction"]);
		}
	}

	$i = 0;
	$delim = read_config_option("mt_mac_delim");
	if (sizeof($port_results) > 0) {
		foreach ($port_results as $port_result) {
			if ($_REQUEST["scan_date"] != 2) {
				$scan_date = $port_result["scan_date"];
			}else{
				$scan_date = $port_result["max_scan_date"];
			}

			$key =  str_replace($delim, "_", $port_result["mac_address"]) . "-" . $port_result["device_id"] .
					$port_result["port_number"] . "-" . strtotime($scan_date);

			form_alternate_row_color($colors["alternate"], $colors["light"], $i, 'line' . $key); $i++;
			form_selectable_cell(mactrack_interface_actions($port_result["device_id"], $port_result["port_number"], FALSE), $key);
			form_selectable_cell($port_result["device_name"], $key);
			form_selectable_cell($port_result["hostname"], $key);
			form_selectable_cell((strlen($_REQUEST["filter"]) ? preg_replace("/(" . preg_quote($_REQUEST["filter"]) . ")/i", "<span style='background-color: #F8D93D;'>\\1</span>", $port_result["ip_address"]) : $port_result["ip_address"]), $key);
			if (strlen(read_config_option("mt_reverse_dns")) > 0) {
			form_selectable_cell((strlen($_REQUEST["filter"]) ? preg_replace("/(" . preg_quote($_REQUEST["filter"]) . ")/i", "<span style='background-color: #F8D93D;'>\\1</span>", $port_result["dns_hostname"]) : $port_result["dns_hostname"]), $key);
			}
			form_selectable_cell((strlen($_REQUEST["filter"]) ? preg_replace("/(" . preg_quote($_REQUEST["filter"]) . ")/i", "<span style='background-color: #F8D93D;'>\\1</span>", $port_result["mac_address"]) : $port_result["mac_address"]), $key);
			form_selectable_cell((strlen($_REQUEST["filter"]) ? preg_replace("/(" . preg_quote($_REQUEST["filter"]) . ")/i", "<span style='background-color: #F8D93D;'>\\1</span>", $port_result["vendor_name"]) : $port_result["vendor_name"]), $key);
			form_selectable_cell($port_result["port_number"], $key);
			form_selectable_cell((strlen($_REQUEST["filter"]) ? preg_replace("/(" . preg_quote($_REQUEST["filter"]) . ")/i", "<span style='background-color: #F8D93D;'>\\1</span>", $port_result["port_name"]) : $port_result["port_name"]), $key);
			form_selectable_cell($port_result["vlan_id"], $key);
			form_selectable_cell((strlen($_REQUEST["filter"]) ? preg_replace("/(" . preg_quote($_REQUEST["filter"]) . ")/i", "<span style='background-color: #F8D93D;'>\\1</span>", $port_result["vlan_name"]) : $port_result["vlan_name"]), $key);
			form_selectable_cell($scan_date, $key);
			if (mactrack_check_user_realm(2122)) {
			form_checkbox_cell($port_result["mac_address"], $key);
			}
			form_end_row();
		}
	}else{
		if ($_REQUEST["site_id"] == -1 && $_REQUEST["device_id"] == -1) {
			print "<tr><td colspan='10'><em>You must choose a Site, Device or other search criteria</em></td></tr>";
		}else{
			print "<tr><td colspan='10'><em>No MacTrack Port Results</em></td></tr>";
		}
	}

	print $nav;

	html_end_box(false);

	if (mactrack_check_user_realm(2122)) {
		/* draw the dropdown containing a list of available actions for this form */
		mactrack_draw_actions_dropdown($mactrack_view_macs_actions);
	}
}