Index: html/includes/graphs/port/sec_addresses.inc.php
===================================================================
--- html/includes/graphs/port/sec_addresses.inc.php (nonexistent)
+++ html/includes/graphs/port/sec_addresses.inc.php (working copy)
@@ -0,0 +1,43 @@
+ 'MaxSecureMacAddr', 'descr' => 'Max allowed'),
+ array('ds' => 'CurSecureMacAddr', 'descr' => 'Current'),
+);
+
+$i = 0;
+$rrd_filename = get_port_rrdfilename($port, "security", TRUE);
+
+if (is_file($rrd_filename))
+{
+ foreach ($datasets as $dataset)
+ {
+ $rrd_list[$i]['filename'] = $rrd_filename;
+ $rrd_list[$i]['descr'] = $dataset['descr'];
+ $rrd_list[$i]['ds'] = $dataset['ds'];
+ $i++;
+ }
+}
+
+$colours = "mixed";
+$nototal = 1;
+$unit_text = "MAC Addresses";
+$simple_rrd = 1;
+$scale_min = 0;
+
+include($config['html_dir']."/includes/graphs/generic_multi_line.inc.php");
+
+// EOF
Index: html/includes/graphs/port/sec_violations.inc.php
===================================================================
--- html/includes/graphs/port/sec_violations.inc.php (nonexistent)
+++ html/includes/graphs/port/sec_violations.inc.php (working copy)
@@ -0,0 +1,42 @@
+ 'ViolationCount', 'descr' => 'Violations'),
+);
+
+$i = 0;
+$rrd_filename = get_port_rrdfilename($port, "security", TRUE);
+
+if (is_file($rrd_filename))
+{
+ foreach ($datasets as $dataset)
+ {
+ $rrd_list[$i]['filename'] = $rrd_filename;
+ $rrd_list[$i]['descr'] = $dataset['descr'];
+ $rrd_list[$i]['ds'] = $dataset['ds'];
+ $i++;
+ }
+}
+
+$colours = "mixed";
+$nototal = 1;
+$unit_text = "Violations/sec";
+$simple_rrd = 1;
+$scale_min = 0;
+
+include($config['html_dir']."/includes/graphs/generic_multi_simplex_separated.inc.php");
+
+// EOF
Index: html/pages/device/port/graphs.inc.php
===================================================================
--- html/pages/device/port/graphs.inc.php (revision 9786)
+++ html/pages/device/port/graphs.inc.php (working copy)
@@ -101,6 +101,23 @@
print_graph_row_port($graph_array, $port);
echo('');
}
+
+ if (is_file(get_port_rrdfilename($port, "security", TRUE)))
+ {
+ echo('
');
+ echo("Port Security MAC Addresses");
+ $graph_array['type'] = "port_sec_addresses";
+
+ print_graph_row_port($graph_array, $port);
+ echo(' |
');
+
+ echo('');
+ echo("Port Security Violations");
+ $graph_array['type'] = "port_sec_violations";
+
+ print_graph_row_port($graph_array, $port);
+ echo(' |
');
+ }
}
?>
Index: includes/defaults.inc.php
===================================================================
--- includes/defaults.inc.php (revision 9786)
+++ includes/defaults.inc.php (working copy)
@@ -953,6 +953,7 @@
$config['enable_ports_adsl'] = 1; // Enable ADSL-LINE-MIB
$config['enable_ports_vlan'] = 1; // Enable Vlan collection
$config['enable_ports_fdbcount'] = 0; // Enable count of FDB per-port.
+$config['enable_ports_port_security'] = 0; // Enable port security counters
$config['enable_ports_ipifstats'] = 1; // Enable graphing of IP-MIB::ipIfStats.
$config['enable_ports_jnx_cos_qstat'] = 1; // Enable graphing of CoS queues per-port.
$config['enable_ports_sros_egress_qstat'] = 1; // Enable graphing of egress queues per-port.
Index: includes/definitions/graphtypes.inc.php
===================================================================
--- includes/definitions/graphtypes.inc.php (revision 9786)
+++ includes/definitions/graphtypes.inc.php (working copy)
@@ -41,6 +41,8 @@
$config['graph_types']['port']['discards'] = array('name' => 'Discards', 'descr' => "Discards/sec");
$config['graph_types']['port']['etherlike'] = array('name' => 'Ethernet Errors', 'descr' => "Detailed Errors/sec for Ethernet-like interfaces");
$config['graph_types']['port']['fdb_count'] = array('name' => 'FDB counts', 'descr' => "FDB usage");
+$config['graph_types']['port']['sec_addresses'] = array('name' => 'MAC Addresses', 'descr' => "Port Security limits");
+$config['graph_types']['port']['sec_violations'] = array('name' => 'MAC Violations', 'descr' => "Port Security violations");
$config['graph_types']['oid_entry']['graph'] = array('name' => 'OID Graph', 'descr' => 'Custom OID Graph');
Index: includes/definitions/mibs/cisco.inc.php
===================================================================
--- includes/definitions/mibs/cisco.inc.php (revision 9786)
+++ includes/definitions/mibs/cisco.inc.php (working copy)
@@ -410,6 +410,12 @@
$config['mibs'][$mib]['mib_dir'] = 'cisco';
$config['mibs'][$mib]['descr'] = '';
+$mib = 'CISCO-PORT-SECURITY-MIB';
+$config['mibs'][$mib]['enable'] = 1;
+$config['mibs'][$mib]['identity_num'] = '.1.3.6.1.4.1.9.9.315';
+$config['mibs'][$mib]['mib_dir'] = 'cisco';
+$config['mibs'][$mib]['descr'] = 'Port Security';
+
$mib = 'CISCO-POWER-ETHERNET-EXT-MIB';
$config['mibs'][$mib]['enable'] = 1;
$config['mibs'][$mib]['identity_num'] = '.1.3.6.1.4.1.9.9.402';
Index: includes/definitions/os.inc.php
===================================================================
--- includes/definitions/os.inc.php (revision 9786)
+++ includes/definitions/os.inc.php (working copy)
@@ -221,6 +221,7 @@
$config['os_group'][$os_group]['mibs'][] = "CISCO-BGP4-MIB";
$config['os_group'][$os_group]['mibs'][] = "CISCO-RTTMON-MIB"; // SLA
$config['os_group'][$os_group]['mibs'][] = "CISCO-FLASH-MIB";
+$config['os_group'][$os_group]['mibs'][] = "CISCO-PORT-SECURITY-MIB";
$config['os_group'][$os_group]['mibs'][] = "CISCO-POWER-ETHERNET-EXT-MIB";
$config['os_group'][$os_group]['mibs'][] = "CISCO-AAA-SESSION-MIB";
$config['os_group'][$os_group]['mibs'][] = "CISCO-RF-MIB";
Index: includes/definitions/rrdtypes.inc.php
===================================================================
--- includes/definitions/rrdtypes.inc.php (revision 9786)
+++ includes/definitions/rrdtypes.inc.php (working copy)
@@ -286,6 +286,15 @@
),
);
+config['rrd_types']['port-security'] = array(
+ 'file' => 'port-%index%-security.rrd',
+ 'ds' => array(
+ 'MaxSecureMacAddr' => array('type' => 'GAUGE', 'min' => 0),
+ 'CurSecureMacAddr' => array('type' => 'GAUGE', 'min' => 0),
+ 'ViolationCount' => array('type' => 'COUNTER', 'max' => 100000000000),
+ ),
+);
+
$config['rrd_types']['port-adsl'] = array(
'file' => 'port-%index%-adsl.rrd',
// 'graphs' => array('port_adsl'), // not a device graph
Index: includes/polling/ports/cisco-port-security-mib.inc.php
===================================================================
--- includes/polling/ports/cisco-port-security-mib.inc.php (nonexistent)
+++ includes/polling/ports/cisco-port-security-mib.inc.php (working copy)
@@ -0,0 +1,30 @@
+ $this_port['cpsIfMaxSecureMacAddr'],
+ 'CurSecureMacAddr' => $this_port['cpsIfCurrentSecureMacAddrCount'],
+ 'ViolationCount' => $this_port['cpsIfViolationCount'],
+ ), get_port_rrdindex($port));
+
+ if ($GLOBALS['config']['statsd']['enable'] == TRUE)
+ {
+ foreach ($portsec_oids as $oid)
+ {
+ // Update StatsD/Carbon
+ StatsD::gauge(str_replace(".", "_", $device['hostname']).'.'.'port'.'.'.$this_port['ifIndex'].'.'.$oid, $this_port[$oid]);
+ }
+ }
+ }
+}
+
+// EOF