function mactrack_view_ip_ranges()
{
    global $title, $config, $item_rows;
    mactrack_view_ips_validate_request_vars();
    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');
    }
    $webroot = $config['url_path'] . 'plugins/mactrack/';
    mactrack_tabs();
    html_start_box($title, '100%', '', '3', 'center', '');
    mactrack_ips_filter();
    html_end_box();
    $sql_where = '';
    $ip_ranges = mactrack_view_get_ip_range_records($sql_where, $row_limit);
    $total_rows = db_fetch_cell("SELECT\n\t\tCOUNT(mac_track_ip_ranges.ip_range)\n\t\tFROM mac_track_ip_ranges\n\t\tINNER JOIN mac_track_sites ON (mac_track_ip_ranges.site_id=mac_track_sites.site_id)\n\t\t{$sql_where}");
    $nav = html_nav_bar('mactrack_view_ips.php', MAX_DISPLAY_PAGES, get_request_var('page'), $row_limit, $total_rows, 7, __('IP Address Ranges'));
    print $nav;
    html_start_box('', '100%', '', '3', 'center', '');
    $display_text = array('nosort' => array(__('Actions'), ''), 'site_name' => array(__('Site Name'), 'ASC'), 'ip_range' => array(__('IP Range'), 'ASC'), 'ips_current' => array(__('Current IP Addresses'), 'DESC'), 'ips_current_date' => array(__('Current Date'), 'DESC'), 'ips_max' => array(__('Maximum IP Addresses'), 'DESC'), 'ips_max_date' => array(__('Maximum Date'), 'DESC'));
    html_header_sort($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
    if (sizeof($ip_ranges)) {
        foreach ($ip_ranges as $ip_range) {
            form_alternate_row();
            ?>
				<td width=80>
					<a href='<?php 
            print htmlspecialchars($webroot . 'mactrack_sites.php?action=edit&site_id=' . $ip_range['site_id']);
            ?>
' title='Edit Site'><img border='0' src='<?php 
            print $webroot;
            ?>
images/edit_object.png'></a>
					<a href='<?php 
            print htmlspecialchars($webroot . 'mactrack_view_macs.php?report=macs&reset&ip_filter_type_id=3&ip_filter=' . $ip_range['ip_range'] . '&device_id=-1&scan_date=3&site_id=' . $ip_range['site_id']);
            ?>
' title='View MAC Addresses'><img border='0' src='<?php 
            print $webroot;
            ?>
images/view_macs.gif'></a>
					<a href='<?php 
            print htmlspecialchars($webroot . 'mactrack_view_arp.php?report=arp&reset&ip_filter_type_id=3&ip_filter=' . $ip_range['ip_range'] . '.' . '&device_id=-1&scan_date=3&site_id=' . $ip_range['site_id']);
            ?>
' title='View IP Addresses'><img border='0' src='<?php 
            print $webroot;
            ?>
images/view_ipaddresses.gif'></a>
				</td>
				<td class='hyperLink'>
					<?php 
            print $ip_range['site_name'];
            ?>
				</td>
				<td><?php 
            print $ip_range['ip_range'] . '.*';
            ?>
</td>
				<td><?php 
            print number_format_i18n($ip_range['ips_current']);
            ?>
</td>
				<td><?php 
            print $ip_range['ips_current_date'];
            ?>
</td>
				<td><?php 
            print number_format_i18n($ip_range['ips_max']);
            ?>
</td>
				<td><?php 
            print $ip_range['ips_max_date'];
            ?>
</td>
			</tr>
			<?php 
        }
    } else {
        print '<tr><td colspan="10"><em>' . __('No MacTrack Site IP Ranges Found') . '</em></td></tr>';
    }
    html_end_box(false);
    if (sizeof($ip_ranges)) {
        print $nav;
        mactrack_display_stats();
    }
}
function mactrack_view_ips()
{
    global $title, $report, $mactrack_search_types, $rows_selector, $config;
    global $item_rows;
    mactrack_view_ips_validate_request_vars();
    mactrack_tabs();
    html_start_box($title, '100%', '', '3', 'center', '');
    mactrack_ip_address_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_ip_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('rows') == 1) {
        $rows_query_string = "SELECT\n\t\t\tCOUNT(mac_track_ips.device_id)\n\t\t\tFROM mac_track_ips\n\t\t\tLEFT JOIN mac_track_sites ON (mac_track_ips.site_id=mac_track_sites.site_id)\n\t\t\tLEFT JOIN mac_track_oui_database ON (mac_track_oui_database.vendor_mac=SUBSTRING(mac_track_ips.mac_address,1,8))\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_ips\n\t\t\tLEFT JOIN mac_track_sites ON (mac_track_ips.site_id=mac_track_sites.site_id)\n\t\t\tLEFT JOIN mac_track_oui_database ON (mac_track_oui_database.vendor_mac=SUBSTRING(mac_track_ips.mac_address,1,8))\n\t\t\t{$sql_where}";
        $total_rows = db_fetch_cell($rows_query_string);
    }
    $nav = html_nav_bar('mactrack_view_arp.php', MAX_DISPLAY_PAGES, get_request_var('page'), $row_limit, $total_rows, 13, __('ARP Cache'));
    print $nav;
    html_start_box('', '100%', '', '3', 'center', '');
    if (strlen(read_config_option('mt_reverse_dns')) > 0) {
        if (get_request_var('rows') == 1) {
            $display_text = array('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'));
        } else {
            $display_text = array('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'));
        }
        html_header_sort($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
    } else {
        if (get_request_var('rows') == 1) {
            $display_text = array('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'));
        } else {
            $display_text = array('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'));
        }
        html_header_sort($display_text, get_request_var('sort_column'), get_request_var('sort_direction'));
    }
    $i = 0;
    $delim = read_config_option('mt_mac_delim');
    if (sizeof($port_results) > 0) {
        foreach ($port_results as $port_result) {
            form_alternate_row();
            echo '<td>' . $port_result['device_name'] . '</td>';
            echo '<td>' . $port_result['hostname'] . '</td>';
            echo '<td>' . filter_value($port_result['ip_address'], get_request_var('filter')) . '</td>';
            if (strlen(read_config_option('mt_reverse_dns')) > 0) {
                echo '<td>' . filter_value($port_result['dns_hostname'], get_request_var('filter')) . '</td>';
            }
            echo '<td>' . filter_value($port_result['mac_address'], get_request_var('filter')) . '</td>';
            echo '<td>' . filter_value($port_result['vendor_name'], get_request_var('filter')) . '</td>';
            echo '<td>' . $port_result['port_number'] . '</td>';
            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 first choose a Site, Device or other search criteria.') . '</em></td></tr>';
        } else {
            print '<tr><td colspan="10"><em>' . __('No MacTrack IP Results Found') . '</em></td></tr>';
        }
    }
    html_end_box(false);
    if (sizeof($port_results)) {
        print $nav;
        mactrack_display_stats();
    }
}