mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	In some scenarios $options was already set with a previous filter. - Remove RRD file checking, test for existance of components instead.
		
			
				
	
	
		
			120 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/*
 | 
						|
 * LibreNMS module to display Cisco Class-Based QoS Details
 | 
						|
 *
 | 
						|
 * Copyright (c) 2015 Aaron Daniels <aaron@daniels.id.au>
 | 
						|
 *
 | 
						|
 * This program is free software: you can redistribute it and/or modify it
 | 
						|
 * under the terms of the GNU General Public License as published by the
 | 
						|
 * Free Software Foundation, either version 3 of the License, or (at your
 | 
						|
 * option) any later version.  Please see LICENSE.txt at the top level of
 | 
						|
 * the source code distribution for details.
 | 
						|
 */
 | 
						|
 | 
						|
function find_child($components,$parent,$level) {
 | 
						|
    global $vars;
 | 
						|
 | 
						|
    foreach($components as $id => $array) {
 | 
						|
        if ($array['qos-type'] == 3) {
 | 
						|
            continue;
 | 
						|
        }
 | 
						|
        if (($array['parent'] == $components[$parent]['sp-obj']) && ($array['sp-id'] == $components[$parent]['sp-id'])) {
 | 
						|
            echo "<ul>";
 | 
						|
            echo "<li>";
 | 
						|
            if ($array['qos-type'] == 1) {
 | 
						|
                // Its a policy, we need to make it a link.
 | 
						|
                echo('<a href="' . generate_url($vars, array('policy' => $id)) . '">' . $array['label'] . '</a>');
 | 
						|
            }
 | 
						|
            else {
 | 
						|
                // No policy, no link
 | 
						|
                echo $array['label'];
 | 
						|
            }
 | 
						|
            if (isset($array['match'])) {
 | 
						|
                echo ' ('.$array['match'].')';
 | 
						|
            }
 | 
						|
 | 
						|
            find_child($components,$id,$level+1);
 | 
						|
 | 
						|
            echo "</li>";
 | 
						|
            echo "</ul>";
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
if (!isset($vars['policy'])) {
 | 
						|
    // not set, find the first parent and use it.
 | 
						|
    foreach ($components as $id => $array) {
 | 
						|
        if ( ($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex'])  && ($array['parent'] == 0) ) {
 | 
						|
            // Found the first policy
 | 
						|
            $vars['policy'] = $id;
 | 
						|
            continue;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
echo "\n\n";
 | 
						|
 | 
						|
// Display the ingress policy at the top of the page.
 | 
						|
echo "<div class='col-md-6'><ul class='mktree' id='ingress'>";
 | 
						|
echo '<div><strong><i class="fa fa-sign-in"></i> Ingress Policy:</strong></div>';
 | 
						|
$found = false;
 | 
						|
foreach ($components as $id => $array) {
 | 
						|
    if ( ($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($array['direction'] == 1)  && ($array['parent'] == 0) ) {
 | 
						|
        echo "<li class='liOpen'>";
 | 
						|
        echo('<a href="' . generate_url($vars, array('policy' => $id)) . '">' . $array['label'] . '</a>');
 | 
						|
        find_child($components,$id,1);
 | 
						|
        echo "</li>";
 | 
						|
        $found = true;
 | 
						|
    }
 | 
						|
}
 | 
						|
if (!$found) {
 | 
						|
    // No Ingress policies
 | 
						|
    echo '<div><i>No Policies</i></div>';
 | 
						|
}
 | 
						|
echo '</ul></div>';
 | 
						|
 | 
						|
// Display the egress policy at the top of the page.
 | 
						|
echo "<div class='col-md-6'><ul class='mktree' id='egress'>";
 | 
						|
echo '<div><strong><i class="fa fa-sign-out"></i> Egress Policy:</strong></div>';
 | 
						|
$found = false;
 | 
						|
foreach ($components as $id => $array) {
 | 
						|
    if ( ($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($array['direction'] == 2)  && ($array['parent'] == 0) ) {
 | 
						|
        echo "<li class='liOpen'>";
 | 
						|
        echo('<a href="' . generate_url($vars, array('policy' => $id)) . '">' . $array['label'] . '</a>');
 | 
						|
        find_child($components,$id,1);
 | 
						|
        echo "</li>";
 | 
						|
        $found = true;
 | 
						|
    }
 | 
						|
}
 | 
						|
if (!$found) {
 | 
						|
    // No Egress policies
 | 
						|
    echo '<div><i>No Policies</i></div>';
 | 
						|
}
 | 
						|
echo "</ul></div>\n\n";
 | 
						|
 | 
						|
// Let's make sure the policy we are trying to access actually exists.
 | 
						|
foreach ($components as $id => $array) {
 | 
						|
    if ( ($array['qos-type'] == 1) && ($array['ifindex'] == $port['ifIndex']) && ($id == $vars['policy']) ) {
 | 
						|
        // The policy exists.
 | 
						|
 | 
						|
        echo "<div class='col-md-12'> </div>\n\n";
 | 
						|
 | 
						|
        // Display each graph row.
 | 
						|
        echo "<div class='col-md-12'>";
 | 
						|
        echo "<div class='graphhead'>Traffic by CBQoS Class - ".$components[$vars['policy']]['label']."</div>";
 | 
						|
        $graph_array['policy'] = $vars['policy'];
 | 
						|
        $graph_type = 'port_cbqos_traffic';
 | 
						|
        include 'includes/print-interface-graphs.inc.php';
 | 
						|
 | 
						|
        echo "<div class='graphhead'>QoS Drops by CBQoS Class - ".$components[$vars['policy']]['label']."</div>";
 | 
						|
        $graph_array['policy'] = $vars['policy'];
 | 
						|
        $graph_type = 'port_cbqos_bufferdrops';
 | 
						|
        include 'includes/print-interface-graphs.inc.php';
 | 
						|
 | 
						|
        echo "<div class='graphhead'>Buffer Drops by CBQoS Class - ".$components[$vars['policy']]['label']."</div>";
 | 
						|
        $graph_array['policy'] = $vars['policy'];
 | 
						|
        $graph_type = 'port_cbqos_qosdrops';
 | 
						|
        include 'includes/print-interface-graphs.inc.php';
 | 
						|
        echo "</div>\n\n";
 | 
						|
    }
 | 
						|
}
 |