mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-28 00:24:21 +02:00
Merge branch 'master' into issue-2193
This commit is contained in:
+1
-1
@@ -6,6 +6,7 @@ LibreNMS core team:
|
||||
- Daniel Preussker <f0o@librenms.org> (f0o)
|
||||
- Søren Friis Rosiak <sorenrosiak@gmail.com> (rosiak)
|
||||
- Mike Rostermund <mike@kollegienet.dk> (SaaldjorMike)
|
||||
- Tony Murray <tonym@librenms.org> (murrant)
|
||||
|
||||
LibreNMS contributors:
|
||||
- Bohdan Sanders <git@bohdans.com> (bohdan-s)
|
||||
@@ -67,7 +68,6 @@ LibreNMS contributors:
|
||||
- Robert Gornall <roblnm@khobbits.co.uk> (KHobbits)
|
||||
- Rob Gormley <robert@gormley.me> (rgormley)
|
||||
- Richard Kojedzinszky <krichy@nmdps.net> (rkojedzinszky)
|
||||
- Tony Murray <murraytony@gmail.com> (murrant)
|
||||
- Peter Lamperud <peter.lamperud@gmail.com> (vizay)
|
||||
- Louis Bailleul <louis.bailleul@gmail.com> (alucardfh)
|
||||
- Rick Hodger <rick@fuzzi.org.uk> (Tatermen)
|
||||
|
||||
+9
-4
@@ -121,8 +121,6 @@ function IssueAlert($alert) {
|
||||
$obj = DescribeAlert($alert);
|
||||
if (is_array($obj)) {
|
||||
echo 'Issuing Alert-UID #'.$alert['id'].'/'.$alert['state'].': ';
|
||||
$msg = FormatAlertTpl($obj);
|
||||
$obj['msg'] = $msg;
|
||||
if (!empty($config['alert']['transports'])) {
|
||||
ExtTransports($obj);
|
||||
}
|
||||
@@ -338,20 +336,27 @@ function ExtTransports($obj) {
|
||||
$opts = array_filter($opts);
|
||||
}
|
||||
if (($opts === true || !empty($opts)) && $opts != false && file_exists($config['install_dir'].'/includes/alerts/transport.'.$transport.'.php')) {
|
||||
$obj['transport'] = $transport;
|
||||
$msg = FormatAlertTpl($obj);
|
||||
$obj['msg'] = $msg;
|
||||
echo $transport.' => ';
|
||||
eval('$tmp = function($obj,$opts) { global $config; '.file_get_contents($config['install_dir'].'/includes/alerts/transport.'.$transport.'.php').' return false; };');
|
||||
$tmp = $tmp($obj,$opts);
|
||||
$prefix = array( 0=>"recovery", 1=>$obj['severity']." alert", 2=>"acknowledgment" );
|
||||
$prefix[3] = &$prefix[0];
|
||||
$prefix[4] = &$prefix[0];
|
||||
if ($tmp) {
|
||||
if ($tmp === true) {
|
||||
echo 'OK';
|
||||
log_event('Issued '.$prefix[$obj['state']]." for rule '".$obj['name']."' to transport '".$transport."'", $obj['device_id']);
|
||||
}
|
||||
else {
|
||||
elseif ($tmp === false) {
|
||||
echo 'ERROR';
|
||||
log_event('Could not issue '.$prefix[$obj['state']]." for rule '".$obj['name']."' to transport '".$transport."'", $obj['device_id']);
|
||||
}
|
||||
else {
|
||||
echo 'ERROR: '.$tmp."\r\n";
|
||||
log_event('Could not issue '.$prefix[$obj['state']]." for rule '".$obj['name']."' to transport '".$transport."' Error: ".$tmp, $obj['device_id']);
|
||||
}
|
||||
}
|
||||
|
||||
echo '; ';
|
||||
|
||||
@@ -19,11 +19,11 @@ cp check_mk_agent /usr/bin/check_mk_agent
|
||||
chmod +x /usr/bin/check_mk_agent
|
||||
```
|
||||
|
||||
* Copy the xinetd config file into place.
|
||||
* Copy the service file(s) into place.
|
||||
|
||||
```shell
|
||||
cp check_mk_xinetd /etc/xinetd.d/check_mk
|
||||
```
|
||||
| xinetd | systemd |
|
||||
| --- | --- |
|
||||
| `cp check_mk_xinetd /etc/xinetd.d/check_mk` | `cp check_mk@.service check_mk.socket /etc/systemd/system` |
|
||||
|
||||
* Create the relevant directories.
|
||||
|
||||
@@ -33,11 +33,12 @@ mkdir -p /usr/lib/check_mk_agent/plugins /usr/lib/check_mk_agent/local
|
||||
|
||||
* Copy each of the scripts from `agent-local/` into `/usr/lib/check_mk_agent/local` that you require to be graphed.
|
||||
* Make each one executable that you want to use with `chmod +x /usr/lib/check_mk_agent/local/$script`
|
||||
* And restart xinetd.
|
||||
* Enable service scripts
|
||||
|
||||
| xinetd | systemd |
|
||||
| --- | --- |
|
||||
| `/etc/init.d/xinetd restart` | `systemctl enable --now check_mk.socket` |
|
||||
|
||||
```shell
|
||||
/etc/init.d/xinetd restart
|
||||
```
|
||||
|
||||
* Login to the LibreNMS web interface and edit the device you want to monitor. Under the modules section, ensure that unix-agent is enabled.
|
||||
* Then under Applications, enable the apps that you plan to monitor.
|
||||
|
||||
@@ -99,7 +99,7 @@ The template-parser understands `if` and `foreach` controls and replaces certain
|
||||
Controls:
|
||||
|
||||
- if-else (Else can be omitted):
|
||||
`{if %placeholder == 'value'}Some Text{else}Other Text{/if}`
|
||||
`{if %placeholder == value}Some Text{else}Other Text{/if}`
|
||||
- foreach-loop:
|
||||
`{foreach %placeholder}Key: %key<br/>Value: %value{/foreach}`
|
||||
|
||||
@@ -116,6 +116,7 @@ Placeholders:
|
||||
- Rule: `%rule`
|
||||
- Rule-Name: `%name`
|
||||
- Timestamp: `%timestamp`
|
||||
- Transport name: `%transport`
|
||||
- Contacts, must be iterated in a foreach, `%key` holds email and `%value` holds name: `%contacts`
|
||||
|
||||
The Default Template is a 'one-size-fit-all'. We highly recommend defining own templates for your rules to include more specific information.
|
||||
@@ -136,6 +137,14 @@ Rule: {if %name}%name{else}%rule{/if}\r\n
|
||||
Alert sent to: {foreach %contacts}%value <%key> {/foreach}
|
||||
```
|
||||
|
||||
Conditional formatting example, will display a link to the host in email or just the hostname in any other transport:
|
||||
```text
|
||||
{if %transport == mail}<a href="https://my.librenms.install/device/device=%hostname/">%hostname</a>{else}%hostname{/if}
|
||||
```
|
||||
|
||||
Note the use of double-quotes. Single quotes (`'`) in templates will be escaped (replaced with `\'`) in the output and should therefore be avoided.
|
||||
|
||||
|
||||
# <a name="transports">Transports</a>
|
||||
|
||||
Transports are located within `$config['install_dir']/includes/alerts/transports.*.php` and defined as well as configured via ~~`$config['alert']['transports']['Example'] = 'Some Options'`~~.
|
||||
@@ -178,6 +187,7 @@ $config['email_backend'] = 'mail'; // Mail backe
|
||||
$config['email_from'] = NULL; // Mail from. Default: "ProjectName" <projectid@`hostname`>
|
||||
$config['email_user'] = $config['project_id'];
|
||||
$config['email_sendmail_path'] = '/usr/sbin/sendmail'; // The location of the sendmail program.
|
||||
$config['email_html'] = FALSE; // Whether to send HTML email as opposed to plaintext
|
||||
$config['email_smtp_host'] = 'localhost'; // Outgoing SMTP server name.
|
||||
$config['email_smtp_port'] = 25; // The port to connect.
|
||||
$config['email_smtp_timeout'] = 10; // SMTP connection timeout in seconds.
|
||||
|
||||
@@ -12,6 +12,12 @@ $config['geoloc']['latlng'] = true;
|
||||
$config['geoloc']['engine'] = "google";//Only one available at present
|
||||
```
|
||||
|
||||
Location resolution happens as follows (when `$config['geoloc']['latlng'] == true;`):
|
||||
1. if `device['location']` contains `[lat, lng]` (note the square brackets), that is used
|
||||
1. if there is a location overide in the `locations` table where `locations.location == device['location']`, that is used
|
||||
* currently, no web UI
|
||||
1. attempt to resolve lat, lng using `$config['geoloc']['engine']`
|
||||
|
||||
We have two current mapping engines available:
|
||||
|
||||
- Leaflet (default)
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
@@ -11,8 +11,16 @@
|
||||
* the source code distribution for details.
|
||||
*/
|
||||
if(is_admin() !== false) {
|
||||
|
||||
require 'includes/javascript-interfacepicker.inc.php';
|
||||
|
||||
$port_device_id = -1;
|
||||
if (is_numeric($vars['port'])) {
|
||||
$port = dbFetchRow('SELECT * FROM `ports` AS P, `devices` AS D WHERE `port_id` = ? AND D.device_id = P.device_id', array($vars['port']));
|
||||
$bill_data['bill_name'] = $port['port_descr_descr'];
|
||||
$bill_data['bill_ref'] = $port['port_descr_circuit'];
|
||||
$bill_data['bill_notes'] = $port['port_descr_speed'];
|
||||
$port_device_id = $port['device_id'];
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -27,34 +35,50 @@ if(is_admin() !== false) {
|
||||
<form method="post" role="form" action="bills/" class="form-horizontal alerts-form">
|
||||
<input type="hidden" name="addbill" value="yes" />
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="device">Device</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control input-sm" id="device" name="device" onchange="getInterfaceList(this)">
|
||||
<option value=''>Select a device</option>
|
||||
<?php
|
||||
$devices = dbFetchRows('SELECT * FROM `devices` ORDER BY hostname');
|
||||
foreach ($devices as $device) {
|
||||
$selected = $device['device_id'] == $port_device_id ? " selected" : "";
|
||||
echo "<option value='${device['device_id']}' $selected>${device['hostname']}</option>\n";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label" for="port_id">Port</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-control input-sm" id="port_id" name="port_id">
|
||||
<?php if (is_array($port)) {
|
||||
// Need to pre-populate port as we've got a port pre-selected
|
||||
foreach (dbFetch('SELECT * FROM ports WHERE device_id = ?', array($port_device_id)) as $interface) {
|
||||
$interface = ifNameDescr($interface);
|
||||
$string = $interface['label'].' - '.$interface['ifAlias'];
|
||||
$selected = $interface['port_id'] === $port['port_id'] ? " selected" : "";
|
||||
echo "<option value='${interface['port_id']}' $selected>$string</option>\n";
|
||||
}
|
||||
} ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
if (is_array($port)) {
|
||||
$portalias = (empty($port['ifAlias']) ? '' : ' - '.$port['ifAlias'].'');
|
||||
?>
|
||||
<div class="well">
|
||||
<input type="hidden" name="port" value="<?php echo $port['port_id'] ?>" />
|
||||
<p>
|
||||
<?php echo generate_device_link($port) ?>
|
||||
<i class="fa fa-random"></i>
|
||||
<?php echo generate_port_link($port, $port['ifName'] . $portalias) ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
$bill_data['bill_name'] = $port['port_descr_descr'];
|
||||
$bill_data['bill_ref'] = $port['port_descr_circuit'];
|
||||
$bill_data['bill_notes'] = $port['port_descr_speed'];
|
||||
}
|
||||
|
||||
$bill_data['bill_type'] = 'cdr';
|
||||
$quota = array('select_gb' => ' selected');
|
||||
$cdr = array('select_mbps' => ' selected');
|
||||
include 'pages/bill/addoreditbill.inc.php';
|
||||
?>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-4 col-sm-4">
|
||||
<button type="submit" class="btn btn-primary"><i class="fa fa-check"></i> Add Bill</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-4 col-sm-4">
|
||||
<button type="submit" class="btn btn-primary"><i class="fa fa-check"></i> Add Bill</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -100,7 +100,7 @@ if ($rowCount != -1) {
|
||||
$sql .= " LIMIT $limit_low,$limit_high";
|
||||
}
|
||||
|
||||
$sql = "SELECT `alerts`.*, `devices`.`hostname` AS `hostname`,`alert_rules`.`rule` AS `rule`, `alert_rules`.`name` AS `name`, `alert_rules`.`severity` AS `severity` $sql";
|
||||
$sql = "SELECT `alerts`.*, `devices`.`hostname` AS `hostname`, `devices`.`sysName` AS `sysName`,`alert_rules`.`rule` AS `rule`, `alert_rules`.`name` AS `name`, `alert_rules`.`severity` AS `severity` $sql";
|
||||
|
||||
$rulei = 0;
|
||||
$format = $_POST['format'];
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
<?php
|
||||
|
||||
// Calculate filters
|
||||
$prev = !empty($_POST['period']) && ($_POST['period'] == 'prev');
|
||||
$wheres = array();
|
||||
$param = array();
|
||||
if (isset($searchPhrase) && !empty($searchPhrase)) {
|
||||
$wheres[] = 'bills.bill_name LIKE ?';
|
||||
$param[] = "%$searchPhrase%";
|
||||
}
|
||||
if (!empty($_POST['bill_type'])) {
|
||||
if ($prev) {
|
||||
$wheres[] = 'bill_history.bill_type = ?';
|
||||
}
|
||||
else {
|
||||
$wheres[] = 'bill_type = ?';
|
||||
}
|
||||
$param[] = $_POST['bill_type'];
|
||||
}
|
||||
if (!empty($_POST['state'])) {
|
||||
if ($_POST['state'] === 'under') {
|
||||
if ($prev) {
|
||||
$wheres[] = "((bill_history.bill_type = 'cdr' AND bill_history.rate_95th <= bill_history.bill_allowed) OR (bill_history.bill_type = 'quota' AND bill_history.traf_total <= bill_history.bill_allowed))";
|
||||
}
|
||||
else {
|
||||
$wheres[] = "((bill_type = 'cdr' AND rate_95th <= bill_cdr) OR (bill_type = 'quota' AND total_data <= bill_quota))";
|
||||
}
|
||||
}
|
||||
else if ($_POST['state'] === 'over') {
|
||||
if ($prev) {
|
||||
$wheres[] = "((bill_history.bill_type = 'cdr' AND bill_history.rate_95th > bill_history.bill_allowed) OR (bill_history.bill_type = 'quota' AND bill_history.traf_total > bill_allowed))";
|
||||
}
|
||||
else {
|
||||
$wheres[] = "((bill_type = 'cdr' AND rate_95th > bill_cdr) OR (bill_type = 'quota' AND total_data > bill_quota))";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($prev) {
|
||||
$select = "SELECT bills.bill_name, bills.bill_notes, bill_history.*, bill_history.traf_total as total_data, bill_history.traf_in as total_data_in, bill_history.traf_out as total_data_out ";
|
||||
$query = 'FROM `bills`
|
||||
INNER JOIN (SELECT bill_id, MAX(bill_hist_id) AS bill_hist_id FROM bill_history WHERE bill_dateto < NOW() AND bill_dateto > subdate(NOW(), 40) GROUP BY bill_id) qLastBills ON bills.bill_id = qLastBills.bill_id
|
||||
INNER JOIN bill_history ON qLastBills.bill_hist_id = bill_history.bill_hist_id
|
||||
';
|
||||
}
|
||||
else {
|
||||
$select = "SELECT bills.*,
|
||||
IF(bills.bill_type = 'CDR', bill_cdr, bill_quota) AS bill_allowed
|
||||
";
|
||||
$query = "FROM `bills`\n";
|
||||
}
|
||||
|
||||
// Permissions check
|
||||
if (is_admin() === false && is_read() === false) {
|
||||
$query .= ' INNER JOIN `bill_perms` AS `BP` ON `bills`.`bill_id` = `BP`.`bill_id` ';
|
||||
$wheres[] = '`BP`.`user_id`=?';
|
||||
$param[] = $_SESSION['user_id'];
|
||||
}
|
||||
|
||||
if (sizeof($wheres) > 0) {
|
||||
$query .= "WHERE " . implode(' AND ', $wheres) . "\n";
|
||||
}
|
||||
$orderby = "ORDER BY bills.bill_name";
|
||||
|
||||
$total = dbFetchCell("SELECT COUNT(bills.bill_id) $query", $param);
|
||||
|
||||
$sql = "$select
|
||||
$query";
|
||||
|
||||
if (!isset($sort) || empty($sort)) {
|
||||
$sort = 'bills.bill_name';
|
||||
}
|
||||
|
||||
$sql .= "\nORDER BY $sort";
|
||||
|
||||
if (isset($current)) {
|
||||
$limit_low = (($current * $rowCount) - ($rowCount));
|
||||
$limit_high = $rowCount;
|
||||
}
|
||||
|
||||
if ($rowCount != -1) {
|
||||
$sql .= " LIMIT $limit_low,$limit_high";
|
||||
}
|
||||
|
||||
foreach (dbFetchRows($sql, $param) as $bill) {
|
||||
if ($prev) {
|
||||
$datefrom = $bill['bill_datefrom'];
|
||||
$dateto = $bill['bill_dateto'];
|
||||
}
|
||||
else {
|
||||
$day_data = getDates($bill['bill_day']);
|
||||
$datefrom = $day_data['0'];
|
||||
$dateto = $day_data['1'];
|
||||
}
|
||||
$rate_95th = format_si($bill['rate_95th']) . 'bps';
|
||||
$dir_95th = $bill['dir_95th'];
|
||||
$total_data = format_bytes_billing($bill['total_data']);
|
||||
$rate_average = $bill['rate_average'];
|
||||
$url = generate_url(array('page' => 'bill', 'bill_id' => $bill['bill_id']));
|
||||
$used95th = format_si($bill['rate_95th']).'bps';
|
||||
$notes = $bill['bill_notes'];
|
||||
|
||||
if ($prev) {
|
||||
$percent = $bill['bill_percent'];
|
||||
$overuse = $bill['bill_overuse'];
|
||||
}
|
||||
else {
|
||||
}
|
||||
|
||||
if (strtolower($bill['bill_type']) == 'cdr') {
|
||||
$type = 'CDR';
|
||||
$allowed = format_si($bill['bill_allowed']).'bps';
|
||||
$in = format_si($bill['rate_95th_in']).'bps';
|
||||
$out = format_si($bill['rate_95th_out']).'bps';
|
||||
if (!$prev) {
|
||||
$percent = round((($bill['rate_95th'] / $bill['bill_allowed']) * 100), 2);
|
||||
$overuse = ($bill['rate_95th'] - $bill['bill_allowed']);
|
||||
}
|
||||
|
||||
$overuse_formatted = format_si($overuse).'bps';
|
||||
$used = $rate_95th;
|
||||
$rate_95th = "<b>$rate_95th</b>";
|
||||
}
|
||||
else if (strtolower($bill['bill_type']) == 'quota') {
|
||||
$type = 'Quota';
|
||||
$allowed = format_bytes_billing($bill['bill_allowed']);
|
||||
$in = format_bytes_billing($bill['traf_in']);
|
||||
$out = format_bytes_billing($bill['traf_out']);
|
||||
if (!$prev) {
|
||||
$percent = round((($bill['total_data'] / ($bill['bill_allowed'])) * 100), 2);
|
||||
$overuse = ($bill['total_data'] - $bill['bill_allowed']);
|
||||
}
|
||||
|
||||
$overuse_formatted = format_bytes_billing($overuse);
|
||||
$used = $total_data;
|
||||
$total_data = "<b>$total_data</b>";
|
||||
}
|
||||
|
||||
$background = get_percentage_colours($percent);
|
||||
$right_background = $background['right'];
|
||||
$left_background = $background['left'];
|
||||
$overuse_formatted = (($overuse <= 0) ? '-' : "<span style='color: #${background['left']}; font-weight: bold;'>$overuse_formatted</span>");
|
||||
|
||||
$bill_name = "<a href='$url'><span style='font-weight: bold;' class='interface'>${bill['bill_name']}</span></a><br />" .
|
||||
strftime('%F', strtotime($datefrom)) . " to " . strftime('%F', strtotime($dateto));
|
||||
$bar = print_percentage_bar(250, 20, $percent, null, 'ffffff', $background['left'], $percent.'%', 'ffffff', $background['right']);
|
||||
$actions = "";
|
||||
|
||||
if (!$prev && is_admin()) {
|
||||
$actions .= "<a href='" . generate_url(array('page' => 'bill', 'bill_id' => $bill['bill_id'], 'view' => 'edit')) .
|
||||
"'><img src='images/16/wrench.png' align=absmiddle alt='Edit'> Edit</a> ";
|
||||
}
|
||||
|
||||
$response[] = array(
|
||||
'bill_name' => $bill_name,
|
||||
'notes' => $notes,
|
||||
'bill_type' => $type,
|
||||
'bill_allowed' => $allowed,
|
||||
'total_data_in' => $in,
|
||||
'total_data_out'=> $out,
|
||||
'total_data' => $total_data,
|
||||
'rate_95th' => $rate_95th,
|
||||
'used' => $used,
|
||||
'overusage' => $overuse_formatted,
|
||||
'graph' => $bar,
|
||||
'actions' => $actions
|
||||
);
|
||||
}
|
||||
|
||||
$output = array('current' => $current, 'rowCount' => $rowCount, 'rows' => $response, 'total' => $total);
|
||||
echo _json_encode($output);
|
||||
@@ -1,3 +1,4 @@
|
||||
<h4>Bill Information</h4>
|
||||
<div class="form-group">
|
||||
<label for="bill_name" class="col-sm-4 control-label">Description</label>
|
||||
<div class="col-sm-8">
|
||||
|
||||
@@ -150,16 +150,7 @@
|
||||
<?php
|
||||
$devices = dbFetchRows('SELECT * FROM `devices` ORDER BY hostname');
|
||||
foreach ($devices as $device) {
|
||||
unset($done);
|
||||
foreach ($access_list as $ac) {
|
||||
if ($ac == $device['device_id']) {
|
||||
$done = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$done) {
|
||||
echo " <option value='".$device['device_id']."'>".$device['hostname']."</option>\n";
|
||||
}
|
||||
echo "<option value='${device['device_id']}'>${device['hostname']}</option>\n";
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
+80
-106
@@ -75,8 +75,8 @@ if ($_POST['addbill'] == 'yes') {
|
||||
|
||||
$bill_id = dbInsert($insert, 'bills');
|
||||
|
||||
if (is_numeric($bill_id) && is_numeric($_POST['port'])) {
|
||||
dbInsert(array('bill_id' => $bill_id, 'port_id' => $_POST['port']), 'bill_ports');
|
||||
if (is_numeric($bill_id) && is_numeric($_POST['port_id'])) {
|
||||
dbInsert(array('bill_id' => $bill_id, 'port_id' => $_POST['port_id']), 'bill_ports');
|
||||
}
|
||||
|
||||
header('Location: /' . generate_url(array('page' => 'bill', 'bill_id' => $bill_id, 'view' => 'edit')));
|
||||
@@ -87,116 +87,90 @@ $pagetitle[] = 'Billing';
|
||||
|
||||
echo "<meta http-equiv='refresh' content='10000'>";
|
||||
|
||||
if ($vars['view'] == 'history') {
|
||||
include 'pages/bills/search.inc.php';
|
||||
include 'pages/bills/pmonth.inc.php';
|
||||
}
|
||||
else {
|
||||
include 'pages/bills/search.inc.php';
|
||||
include 'includes/modal/new_bill.inc.php';
|
||||
include 'includes/modal/new_bill.inc.php';
|
||||
?>
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<th>Billing name</th>
|
||||
<th></th>
|
||||
<th>Type</th>
|
||||
<th>Allowed</th>
|
||||
<th>Used</th>
|
||||
<th>Overusage</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$wheres = array();
|
||||
$params = array();
|
||||
|
||||
if (!empty($_GET['search'])) {
|
||||
$wheres[] = 'bills.bill_name LIKE ?';
|
||||
$params[] = '%'.$_GET['search'].'%';
|
||||
}
|
||||
if (!empty($_GET['bill_type'])) {
|
||||
$wheres[] = 'bill_type = ?';
|
||||
$params[] = $_GET['bill_type'];
|
||||
}
|
||||
if ($_GET['state'] === 'under') {
|
||||
$wheres[] = "((bill_type = 'cdr' AND rate_95th <= bill_cdr) OR (bill_type = 'quota' AND total_data <= bill_quota))";
|
||||
} else if ($_GET['state'] === 'over') {
|
||||
$wheres[] = "((bill_type = 'cdr' AND rate_95th > bill_cdr) OR (bill_type = 'quota' AND total_data > bill_quota))";
|
||||
}
|
||||
<div class="panel panel-default panel-condensed">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover" id="bills-list">
|
||||
<thead>
|
||||
<th data-column-id="bill_name">Billing name</th>
|
||||
<th data-column-id="notes" data-sortable="false"></th>
|
||||
<th data-column-id="bill_type">Type</th>
|
||||
<th data-column-id="bill_allowed" data-align="right">Allowed</th>
|
||||
<th data-column-id="total_data_in" data-align="right">Inbound</th>
|
||||
<th data-column-id="total_data_out" data-align="right">Outbound</th>
|
||||
<th data-column-id="total_data" data-align="right">Total</th>
|
||||
<th data-column-id="rate_95th" data-align="right">95th Percentile</th>
|
||||
<th data-column-id="overusage" data-sortable="false" data-align="center">Overusage</th>
|
||||
<th data-column-id="graph" data-sortable="false"></th>
|
||||
<th data-column-id="actions" data-sortable="false"></th>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="table-header">
|
||||
<div id="{{ctx.id}}" class="{{css.header}}">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<?php if ($_SESSION['userlevel'] >= 10) { ?>
|
||||
<button type="button" class="btn btn-default btn-sm" data-toggle="modal" data-target="#create-bill"><i class="fa fa-plus"></i> Create Bill</button>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<div class="col-sm-8 actionBar">
|
||||
<span class="form-inline" id="table-filters">
|
||||
<fieldset class="form-group">
|
||||
<select name='period' id='period' class="form-control input-sm">
|
||||
<option value=''>Current Billing Period</option>
|
||||
<option value='prev'>Previous Billing Period</option>
|
||||
</select>
|
||||
<select name='bill_type' id='bill_type' class="form-control input-sm">
|
||||
<option value=''>All Types</option>
|
||||
<option value='cdr' <?php if ($_GET['bill_type'] === 'cdr') { echo 'selected'; } ?>>CDR</option>
|
||||
<option value='quota' <?php if ($_GET['bill_type'] === 'quota') { echo 'selected'; } ?>>Quota</option>
|
||||
</select>
|
||||
<select name='state' id='state' class="form-control input-sm">
|
||||
<option value=''>All States</option>
|
||||
<option value='under' <?php if ($_GET['state'] === 'under') { echo 'selected'; } ?>>Under Quota</option>
|
||||
<option value='over' <?php if ($_GET['state'] === 'over') { echo 'selected'; } ?>>Over Quota</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
</span>
|
||||
<p class="{{css.search}}"></p>
|
||||
<p class="{{css.actions}}"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var grid = $('#bills-list').bootgrid({
|
||||
ajax: true,
|
||||
templates: {
|
||||
header: $('#table-header').html()
|
||||
},
|
||||
columnSelection: false,
|
||||
rowCount: [10,20,50,100,-1],
|
||||
post: function() {
|
||||
return {
|
||||
id: 'bills',
|
||||
bill_type: $('select#bill_type').val(),
|
||||
state: $('select#state').val(),
|
||||
period: $('select#period').val()
|
||||
};
|
||||
},
|
||||
url: "/ajax_table.php"
|
||||
}).on("loaded.rs.jquery.bootgrid", function() {
|
||||
});
|
||||
$('#table-filters select').on('change', function() { grid.bootgrid('reload'); });
|
||||
|
||||
$query = 'SELECT *
|
||||
FROM `bills`
|
||||
';
|
||||
if (sizeof($wheres) > 0) {
|
||||
$query .= 'WHERE ' . implode(' AND ', $wheres) . "\n";
|
||||
}
|
||||
$query .= 'ORDER BY bills.bill_name';
|
||||
|
||||
foreach (dbFetchRows($query, $params) as $bill) {
|
||||
if (bill_permitted($bill['bill_id'])) {
|
||||
unset($class);
|
||||
$day_data = getDates($bill['bill_day']);
|
||||
$datefrom = $day_data['0'];
|
||||
$dateto = $day_data['1'];
|
||||
$rate_data = $bill;
|
||||
$rate_95th = $rate_data['rate_95th'];
|
||||
$dir_95th = $rate_data['dir_95th'];
|
||||
$total_data = $rate_data['total_data'];
|
||||
$rate_average = $rate_data['rate_average'];
|
||||
|
||||
if ($bill['bill_type'] == 'cdr') {
|
||||
$type = 'CDR';
|
||||
$allowed = format_si($bill['bill_cdr']).'bps';
|
||||
$used = format_si($rate_data['rate_95th']).'bps';
|
||||
$percent = round((($rate_data['rate_95th'] / $bill['bill_cdr']) * 100), 2);
|
||||
$background = get_percentage_colours($percent);
|
||||
$overuse = ($rate_data['rate_95th'] - $bill['bill_cdr']);
|
||||
$overuse = (($overuse <= 0) ? '-' : '<span style="color: #'.$background['left'].'; font-weight: bold;">'.format_si($overuse).'bps</span>');
|
||||
}
|
||||
else if ($bill['bill_type'] == 'quota') {
|
||||
$type = 'Quota';
|
||||
$allowed = format_bytes_billing($bill['bill_quota']);
|
||||
$used = format_bytes_billing($rate_data['total_data']);
|
||||
$percent = round((($rate_data['total_data'] / ($bill['bill_quota'])) * 100), 2);
|
||||
$background = get_percentage_colours($percent);
|
||||
$overuse = ($rate_data['total_data'] - $bill['bill_quota']);
|
||||
$overuse = (($overuse <= 0) ? '-' : '<span style="color: #'.$background['left'].'; font-weight: bold;">'.format_bytes_billing($overuse).'</span>');
|
||||
}
|
||||
|
||||
$right_background = $background['right'];
|
||||
$left_background = $background['left'];
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='<?php echo generate_url(array('page' => 'bill', 'bill_id' => $bill['bill_id'])) ?>'><span style='font-weight: bold;' class=interface><?php echo $bill['bill_name'] ?></span></a>
|
||||
<br />
|
||||
<?php echo strftime('%F', strtotime($datefrom)) ?> to <?php echo strftime('%F', strtotime($dateto)) ?>
|
||||
</td>
|
||||
<td><?php echo $notes ?></td>
|
||||
<td><?php echo $type ?></td>
|
||||
<td><?php echo $allowed ?></td>
|
||||
<td><?php echo $used ?></td>
|
||||
<td style="text-align: center;"><?php echo $overuse ?></td>
|
||||
<td><?php echo print_percentage_bar(250, 20, $percent, null, 'ffffff', $background['left'], $percent.'%', 'ffffff', $background['right'])?></td>
|
||||
<td>
|
||||
<?php if ($_SESSION['userlevel'] >= 10) { ?>
|
||||
<a href='<?php echo generate_url(array('page' => 'bill', 'bill_id' => $bill['bill_id'], 'view' => 'edit')) ?>'><img src='images/16/wrench.png' align=absmiddle alt='Edit'> Edit</a>
|
||||
<?php } ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php }
|
||||
}?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php
|
||||
if ($vars['view'] == 'add') {
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('#create-bill').modal('show');
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
</script>
|
||||
@@ -1,98 +0,0 @@
|
||||
<?php
|
||||
|
||||
$no_refresh = true;
|
||||
$pagetitle[] = 'Previous Billing Period';
|
||||
|
||||
echo '<table class="table table-condensed table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Billing name</th>
|
||||
<th>Type</th>
|
||||
<th>Allowed</th>
|
||||
<th>Inbound</th>
|
||||
<th>Outbound</th>
|
||||
<th>Total</th>
|
||||
<th>95 percentile</th>
|
||||
<th>Overusage</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>';
|
||||
|
||||
$wheres = array();
|
||||
$params = array();
|
||||
|
||||
if (!empty($_GET['search'])) {
|
||||
$wheres[] = 'bills.bill_name LIKE ?';
|
||||
$params[] = '%'.$_GET['search'].'%';
|
||||
}
|
||||
if (!empty($_GET['bill_type'])) {
|
||||
$wheres[] = 'bill_history.bill_type = ?';
|
||||
$params[] = $_GET['bill_type'];
|
||||
}
|
||||
if ($_GET['state'] === 'under') {
|
||||
$wheres[] = 'bill_history.bill_overuse = 0';
|
||||
} else if ($_GET['state'] === 'over') {
|
||||
$wheres[] = 'bill_history.bill_overuse > 0';
|
||||
}
|
||||
|
||||
$query = 'SELECT bills.bill_name, bill_history.*
|
||||
FROM `bills`
|
||||
INNER JOIN (SELECT bill_id, MAX(bill_hist_id) AS bill_hist_id FROM bill_history WHERE bill_dateto < NOW() AND bill_dateto > subdate(NOW(), 40) GROUP BY bill_id) qLastBills ON bills.bill_id = qLastBills.bill_id
|
||||
INNER JOIN bill_history ON qLastBills.bill_hist_id = bill_history.bill_hist_id
|
||||
';
|
||||
if (sizeof($wheres) > 0) {
|
||||
$query .= 'WHERE ' . implode(' AND ', $wheres) . "\n";
|
||||
}
|
||||
$query .= 'ORDER BY bills.bill_name';
|
||||
|
||||
foreach (dbFetchRows($query, $params) as $bill) {
|
||||
if (bill_permitted($bill['bill_id'])) {
|
||||
$datefrom = $bill['bill_datefrom'];
|
||||
$dateto = $bill['bill_dateto'];
|
||||
|
||||
unset($class);
|
||||
$type = $bill['bill_type'];
|
||||
$percent = $bill['bill_percent'];
|
||||
$dir_95th = $bill['dir_95th'];
|
||||
$rate_95th = format_si($bill['rate_95th']).'bps';
|
||||
$total_data = format_bytes_billing($bill['traf_total']);
|
||||
|
||||
$background = get_percentage_colours($percent);
|
||||
|
||||
if ($type == 'CDR') {
|
||||
$allowed = format_si($bill['bill_allowed']).'bps';
|
||||
$used = format_si($bill['rate_95th']).'bps';
|
||||
$in = format_si($bill['rate_95th_in']).'bps';
|
||||
$out = format_si($bill['rate_95th_out']).'bps';
|
||||
$overuse = (($bill['bill_overuse'] <= 0) ? '-' : '<span style="color: #'.$background['left'].'; font-weight: bold;">'.format_si($bill['bill_overuse']).'bps</span>');
|
||||
}
|
||||
else if ($type == 'Quota') {
|
||||
$allowed = format_bytes_billing($bill['bill_allowed']);
|
||||
$used = format_bytes_billing($bill['total_data']);
|
||||
$in = format_bytes_billing($bill['traf_in']);
|
||||
$out = format_bytes_billing($bill['traf_out']);
|
||||
$overuse = (($bill['bill_overuse'] <= 0) ? '-' : '<span style="color: #'.$background['left'].'; font-weight: bold;">'.format_bytes_billing($bill['bill_overuse']).'</span>');
|
||||
}
|
||||
|
||||
$total_data = (($type == 'Quota') ? '<b>'.$total_data.'</b>' : $total_data);
|
||||
$rate_95th = (($type == 'CDR') ? '<b>'.$rate_95th.'</b>' : $rate_95th);
|
||||
|
||||
echo "
|
||||
<tr>
|
||||
<td><a href=\"".generate_url(array('page' => 'bill', 'bill_id' => $bill['bill_id'], 'view' => 'history', detail => $bill['bill_hist_id'])).'"><span style="font-weight: bold;" class="interface">'.$bill['bill_name'].'</a></span><br />from '.strftime('%x', strtotime($datefrom)).' to '.strftime('%x', strtotime($dateto))."</td>
|
||||
<td>$type</td>
|
||||
<td>$allowed</td>
|
||||
<td>$in</td>
|
||||
<td>$out</td>
|
||||
<td>$total_data</td>
|
||||
<td>$rate_95th</td>
|
||||
<td style=\"text-align: center;\">$overuse</td>
|
||||
<td>".print_percentage_bar(250, 20, $percent, null, 'ffffff', $background['left'], $percent.'%', 'ffffff', $background['right']).'</td>
|
||||
</tr>';
|
||||
|
||||
}//end if
|
||||
}//end foreach
|
||||
|
||||
echo '</tbody>
|
||||
</table>';
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
print_optionbar_start('40');
|
||||
|
||||
?>
|
||||
|
||||
<form method='get' action='' class="form-inline" role="form">
|
||||
<fieldset class="form-group">
|
||||
Bills
|
||||
<input type="text" name="search" id="search" class="form-control input-sm" value="<?php echo $_GET['search']; ?>" />
|
||||
<select name='bill_type' id='bill_type' class="form-control input-sm">
|
||||
<option value=''>All Types</option>
|
||||
<option value='cdr' <?php if ($_GET['bill_type'] === 'cdr') { echo 'selected'; } ?>>CDR</option>
|
||||
<option value='quota' <?php if ($_GET['bill_type'] === 'quota') { echo 'selected'; } ?>>Quota</option>
|
||||
</select>
|
||||
<select name='state' id='state' class="form-control input-sm">
|
||||
<option value=''>All States</option>
|
||||
<option value='under' <?php if ($_GET['state'] === 'under') { echo 'selected'; } ?>>Under Quota</option>
|
||||
<option value='over' <?php if ($_GET['state'] === 'over') { echo 'selected'; } ?>>Over Quota</option>
|
||||
</select>
|
||||
<button type="submit" class="btn btn-default input-sm">Search</button>
|
||||
</fieldset>
|
||||
<div class="form-group pull-right">
|
||||
<?php
|
||||
if ($vars['view'] == 'history') {
|
||||
echo '<a class="btn btn-default btn-sm" href="bills/"><i class="fa fa-clock-o"></i> Current Billing Period</a>';
|
||||
}
|
||||
else {
|
||||
echo '<a class="btn btn-default btn-sm" href="bills/view=history/"><i class="fa fa-history"></i> Previous Billing Period</a>';
|
||||
}
|
||||
|
||||
?>
|
||||
<?php if ($_SESSION['userlevel'] >= 10) { ?>
|
||||
<button type="button" class="btn btn-default btn-sm" data-toggle="modal" data-target="#create-bill"><i class="fa fa-plus"></i> Create Bill</button>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<?php
|
||||
print_optionbar_end();
|
||||
@@ -248,6 +248,10 @@ $mail_conf = array(
|
||||
'descr' => 'From email address',
|
||||
'type' => 'text',
|
||||
),
|
||||
array('name' => 'email_html',
|
||||
'descr' => 'Use HTML emails',
|
||||
'type' => 'checkbox',
|
||||
),
|
||||
array('name' => 'email_sendmail_path',
|
||||
'descr' => 'Sendmail path',
|
||||
'type' => 'text',
|
||||
@@ -854,7 +858,7 @@ echo '
|
||||
var transport = $this.data("transport");
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/ajax_form.php',
|
||||
url: 'ajax_form.php',
|
||||
data: { type: "test-transport", transport: transport },
|
||||
dataType: "json",
|
||||
success: function(data){
|
||||
|
||||
@@ -41,7 +41,7 @@ foreach( $opts as $method=>$apis ) {
|
||||
var_dump("API '$host' returned Error"); //FIXME: propper debuging
|
||||
var_dump("Params: ".$api); //FIXME: propper debuging
|
||||
var_dump("Return: ".$ret); //FIXME: propper debuging
|
||||
return false;
|
||||
return 'HTTP Status code '.$code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,10 @@ foreach($opts as $option) {
|
||||
}
|
||||
$curl = curl_init();
|
||||
|
||||
if (empty($obj["msg"])) {
|
||||
return "Empty Message";
|
||||
}
|
||||
|
||||
if (empty($option["message_format"])) {
|
||||
$option["message_format"] = 'text';
|
||||
}
|
||||
@@ -60,7 +64,7 @@ foreach($opts as $option) {
|
||||
var_dump("API '$url' returned Error");
|
||||
var_dump("Params: " . $message);
|
||||
var_dump("Return: " . $ret);
|
||||
return false;
|
||||
return 'HTTP Status code '.$code;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
* @subpackage Alerts
|
||||
*/
|
||||
|
||||
return send_mail($obj['contacts'], $obj['title'], $obj['msg'], $opts['html'] ? true : false );
|
||||
return send_mail($obj['contacts'], $obj['title'], $obj['msg'], ($config['email_html'] == 'true') ? true : false );
|
||||
|
||||
@@ -48,6 +48,6 @@ $ret = curl_exec($curl);
|
||||
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
if( $code != 200 ) {
|
||||
var_dump("PagerDuty returned Error, retry later"); //FIXME: propper debuging
|
||||
return false;
|
||||
return 'HTTP Status code '.$code;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -42,6 +42,6 @@ if( $code > 201 ) {
|
||||
if( $debug ) {
|
||||
var_dump($ret);
|
||||
}
|
||||
return false;
|
||||
return 'HTTP Status code '.$code;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -86,7 +86,7 @@ foreach( $opts as $api ) {
|
||||
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
if( $code != 200 ) {
|
||||
var_dump("Pushover returned error"); //FIXME: proper debugging
|
||||
return false;
|
||||
return 'HTTP Status code '.$code;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -45,7 +45,7 @@ foreach( $opts as $tmp_api ) {
|
||||
var_dump("API '$host' returned Error"); //FIXME: propper debuging
|
||||
var_dump("Params: ".$alert_message); //FIXME: propper debuging
|
||||
var_dump("Return: ".$ret); //FIXME: propper debuging
|
||||
return false;
|
||||
return 'HTTP Status code '.$code;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -240,6 +240,18 @@ $config['os'][$os]['over'][1]['text'] = 'Processor Usage';
|
||||
$config['os'][$os]['over'][2]['graph'] = 'device_mempool';
|
||||
$config['os'][$os]['over'][2]['text'] = 'Memory Usage';
|
||||
|
||||
$os = 'cumulus';
|
||||
$config['os'][$os]['type'] = 'network';
|
||||
$config['os'][$os]['group'] = 'unix';
|
||||
$config['os'][$os]['text'] = 'Cumulus Linux';
|
||||
$config['os'][$os]['icon'] = 'cumulus';
|
||||
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
|
||||
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
|
||||
$config['os'][$os]['over'][1]['graph'] = 'device_processor';
|
||||
$config['os'][$os]['over'][1]['text'] = 'Processor Usage';
|
||||
$config['os'][$os]['over'][2]['graph'] = 'device_mempool';
|
||||
$config['os'][$os]['over'][2]['text'] = 'Memory Usage';
|
||||
|
||||
// Other Unix-based OSes here please.
|
||||
$os = 'freebsd';
|
||||
$config['os'][$os]['type'] = 'server';
|
||||
@@ -639,6 +651,13 @@ $config['os'][$os]['over'][1]['text'] = 'CPU Usage';
|
||||
$config['os'][$os]['over'][2]['graph'] = 'device_mempool';
|
||||
$config['os'][$os]['over'][2]['text'] = 'Memory Usage';
|
||||
|
||||
$os = 'juniperex2500os';
|
||||
$config['os'][$os]['text'] = 'Juniper EX2500';
|
||||
$config['os'][$os]['type'] = 'network';
|
||||
$config['os'][$os]['icon'] = 'junos';
|
||||
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
|
||||
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
|
||||
|
||||
// Pulse Secure OS definition
|
||||
$os = 'pulse';
|
||||
$config['os'][$os]['text'] = 'Pulse Secure';
|
||||
@@ -1538,6 +1557,14 @@ $config['os'][$os]['over'][1]['text'] = 'CPU Usage';
|
||||
$config['os'][$os]['over'][2]['graph'] = 'device_mempool';
|
||||
$config['os'][$os]['over'][2]['text'] = 'Memory Usage';
|
||||
|
||||
// Deliberant WiFi
|
||||
$os = 'deliberant';
|
||||
$config['os'][$os]['text'] = 'Deliberant OS';
|
||||
$config['os'][$os]['type'] = 'wireless';
|
||||
$config['os'][$os]['icon'] = 'deliberant';
|
||||
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
|
||||
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
|
||||
|
||||
// Graph Types
|
||||
require_once $config['install_dir'].'/includes/load_db_graph_types.inc.php';
|
||||
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
|
||||
echo 'OS: ';
|
||||
|
||||
// MYSQL Check - FIXME
|
||||
// 1 UPDATE
|
||||
$os = getHostOS($device);
|
||||
if ($os != $device['os'] || empty($device['icon'])) {
|
||||
$os = getHostOS($device);
|
||||
if ($os != $device['os']) {
|
||||
$device['os'] = $os;
|
||||
|
||||
// update icon
|
||||
$icon = getImageName($device, false);
|
||||
$device['icon'] = $icon;
|
||||
|
||||
|
||||
$sql = dbUpdate(array('os' => $os, 'icon' => $icon), 'devices', 'device_id=?', array($device['device_id']));
|
||||
$sql = dbUpdate(array('os' => $os), 'devices', 'device_id=?', array($device['device_id']));
|
||||
echo "Changed OS! : $os\n";
|
||||
log_event('Device OS changed '.$device['os']." => $os", $device, 'system');
|
||||
}
|
||||
|
||||
$icon = getImageName($device, false);
|
||||
if ($icon != $device['icon']) {
|
||||
$device['icon'] = $icon;
|
||||
$sql = dbUpdate(array('icon' => $icon), 'devices', 'device_id=?', array($device['device_id']));
|
||||
echo "Changed Icon! : $icon\n";
|
||||
log_event('Device Icon changed '.$device['icon']." => $icon", $device, 'system');
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS
|
||||
*
|
||||
* Copyright (c) 2016 Søren Friis Rosiak <sorenrosiak@gmail.com>
|
||||
* 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.
|
||||
*/
|
||||
if(!$os) {
|
||||
if (strstr($sysDescr, 'Deliberant')) {
|
||||
$os = 'deliberant';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
if (!$os) {
|
||||
if (strstr($sysObjectId, '.1.3.6.1.4.1.1411.102')) {
|
||||
$os = 'juniperex2500os';
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,9 @@ if (!$os) {
|
||||
);
|
||||
register_mibs($device, $pktj_mibs, "include/discovery/os/linux.inc.php");
|
||||
}
|
||||
elseif (stristr($sysObjectId, 'cumulusMib') || strstr($sysObjectId, '.1.3.6.1.4.1.40310')) {
|
||||
$os = 'cumulus';
|
||||
}
|
||||
else {
|
||||
// Check for Synology DSM
|
||||
$hrSystemInitialLoadParameters = trim(snmp_get($device, 'HOST-RESOURCES-MIB::hrSystemInitialLoadParameters.0', '-Osqnv'));
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
// LMSensors Fanspeeds
|
||||
if ($device['os'] == 'linux' || $device['os'] == 'pktj') {
|
||||
if ($device['os'] == 'linux' || $device['os'] == 'pktj' || $device['os'] == 'cumulus') {
|
||||
$oids = snmp_walk($device, 'lmFanSensorsDevice', '-OsqnU', 'LM-SENSORS-MIB');
|
||||
d_echo($oids."\n");
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
if ($device['os'] == 'linux' || $device['os'] == 'pktj') {
|
||||
if ($device['os'] == 'linux' || $device['os'] == 'pktj' || $device['os'] == 'cumulus') {
|
||||
$oids = snmp_walk($device, 'lmTempSensorsDevice', '-Osqn', 'LM-SENSORS-MIB');
|
||||
d_echo($oids."\n");
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
// LMSensors Voltages
|
||||
if ($device['os'] == 'linux' || $device['os'] == 'pktj') {
|
||||
if ($device['os'] == 'linux' || $device['os'] == 'pktj' || $device['os'] == 'cumulus') {
|
||||
$oids = snmp_walk($device, 'lmVoltSensorsDevice', '-OsqnU', 'LM-SENSORS-MIB');
|
||||
d_echo($oids."\n");
|
||||
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
|
||||
unset($poll_device);
|
||||
|
||||
$snmpdata = snmp_get_multi($device, 'sysUpTime.0 sysLocation.0 sysContact.0 sysName.0 sysDescr.0 sysObjectID.0', '-OQnUst', 'SNMPv2-MIB:HOST-RESOURCES-MIB:SNMP-FRAMEWORK-MIB');
|
||||
$snmpdata = snmp_get_multi($device, 'sysUpTime.0 sysLocation.0 sysContact.0 sysName.0 sysObjectID.0', '-OQnUst', 'SNMPv2-MIB:HOST-RESOURCES-MIB:SNMP-FRAMEWORK-MIB');
|
||||
$poll_device = $snmpdata[0];
|
||||
$poll_device['sysName'] = strtolower($poll_device['sysName']);
|
||||
|
||||
$poll_device['sysDescr'] = snmp_get($device, 'sysDescr.0', '-OvQ', 'SNMPv2-MIB:HOST-RESOURCES-MIB:SNMP-FRAMEWORK-MIB');
|
||||
|
||||
if (!empty($agent_data['uptime'])) {
|
||||
list($uptime) = explode(' ', $agent_data['uptime']);
|
||||
$uptime = round($uptime);
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/*
|
||||
* LibreNMS
|
||||
*
|
||||
* Copyright (c) 2016 Søren Friis Rosiak <sorenrosiak@gmail.com>
|
||||
* 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.
|
||||
*/
|
||||
$hardware = snmp_get($device, '.1.3.6.1.4.1.32761.3.1.1.1.3.0', '-Osqv');
|
||||
@@ -21,7 +21,12 @@ if (is_numeric($users)) {
|
||||
if (!is_file($usersrrd)) {
|
||||
rrdtool_create($usersrrd, ' DS:users:GAUGE:600:0:U'.$config['rrd_rra']);
|
||||
}
|
||||
rrdtool_update($usersrrd, "N:$users");
|
||||
|
||||
$fields = array(
|
||||
'users' => $users,
|
||||
);
|
||||
|
||||
rrdtool_update($usersrrd, $fields);
|
||||
$graphs['pulse_users'] = true;
|
||||
}
|
||||
|
||||
@@ -32,6 +37,11 @@ if (is_numeric($sessions)) {
|
||||
if (!is_file($sessrrd)) {
|
||||
rrdtool_create($sessrrd, ' DS:sessions:GAUGE:600:0:U '.$config['rrd_rra']);
|
||||
}
|
||||
rrdtool_update($sessrrd, "N:$sessions");
|
||||
|
||||
$fields = array(
|
||||
'sessions' => $sessions,
|
||||
);
|
||||
|
||||
rrdtool_update($sessrrd, $fields);
|
||||
$graphs['pulse_sessions'] = true;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ if ($device['type'] == 'network' || $device['type'] == 'firewall' || $device['ty
|
||||
// FIXME Also interesting to poll? dhcpNumber.0 for number of active dhcp leases
|
||||
}
|
||||
|
||||
if ($device['os'] == 'ios' and substr($device['hardware'], 0, 4) == 'AIR-') {
|
||||
if ($device['os'] == 'ios' and substr($device['hardware'], 0, 4) == 'AIR-' || ($device['os'] == 'ios' && strpos($device['hardware'], 'ciscoAIR') !== false)) {
|
||||
echo 'Checking Aironet Wireless clients... ';
|
||||
|
||||
$wificlients1 = snmp_get($device, 'cDot11ActiveWirelessClients.1', '-OUqnv', 'CISCO-DOT11-ASSOCIATION-MIB');
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
CUMULUS-COUNTERS-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
--
|
||||
-- Top-level infrastructure of the Cumulus enterprise MIB tree
|
||||
--
|
||||
|
||||
IMPORTS
|
||||
OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
|
||||
enterprises, Counter32 FROM SNMPv2-SMI
|
||||
InterfaceIndex, ifIndex FROM IF-MIB
|
||||
DateAndTime, DisplayString,
|
||||
cumulusMib FROM CUMULUS-SNMP-MIB
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
|
||||
--
|
||||
-- Cumulus enterprise-specific counters
|
||||
--
|
||||
|
||||
sysSpecificCounters OBJECT IDENTIFIER ::= { cumulusMib 2 }
|
||||
|
||||
-- the discardCounters group
|
||||
|
||||
-- The discardCounters group lists certain selected detailed discard
|
||||
-- counters, counters that are not called out in standard MIBs.
|
||||
|
||||
discardCounters OBJECT IDENTIFIER ::= {sysSpecificCounters 1}
|
||||
|
||||
discardCountersTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF DiscardCountersEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This table breaks out ingress packet discards into more
|
||||
reason-specific discard counters."
|
||||
::= { discardCounters 1 }
|
||||
|
||||
discardCountersEntry OBJECT-TYPE
|
||||
SYNTAX DiscardCountersEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Reason-specific ingress discard counters indexed by ifIndex"
|
||||
INDEX { ifIndex }
|
||||
::= { discardCountersTable 1 }
|
||||
|
||||
--
|
||||
-- The counters are all Counter32 instead of Counter64 because of
|
||||
-- limitations in the pass persist protocol.
|
||||
--
|
||||
|
||||
DiscardCountersEntry ::=
|
||||
SEQUENCE {
|
||||
portName DisplayString,
|
||||
l3v4InDiscards Counter32,
|
||||
bufferOverflowDiscards Counter32,
|
||||
l3AclDiscards Counter32,
|
||||
egressQOverflowDiscards Counter32,
|
||||
egressNonQDiscards Counter32
|
||||
}
|
||||
|
||||
portName OBJECT-TYPE
|
||||
SYNTAX DisplayString
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Port name"
|
||||
::= { discardCountersEntry 1 }
|
||||
|
||||
|
||||
l3v4InDiscards OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of inbound IPv4 packets discarded
|
||||
by the routing engine."
|
||||
DEFVAL { 0 }
|
||||
::= { discardCountersEntry 2 }
|
||||
|
||||
bufferOverflowDiscards OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of inbound packets discarded due to
|
||||
ingress buffer overflow."
|
||||
DEFVAL { 0 }
|
||||
::= { discardCountersEntry 3 }
|
||||
|
||||
l3AclDiscards OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of inbound IPv4 packets discarded
|
||||
due to ingress ACL table."
|
||||
DEFVAL { 0 }
|
||||
::= { discardCountersEntry 4 }
|
||||
|
||||
egressQOverflowDiscards OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets discarded due to egress queue overflow."
|
||||
DEFVAL { 0 }
|
||||
::= { discardCountersEntry 6 }
|
||||
|
||||
egressNonQDiscards OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Total number of packets discarded on egress due to reasons
|
||||
reasons other than queue overflow. With IF MIB's ifOutDiscards
|
||||
not accounting for certain specific drops, this one accounts
|
||||
for drops seen in the egress pipeline of the system that were
|
||||
not because of egress queue overflow drops."
|
||||
DEFVAL { 0 }
|
||||
::= { discardCountersEntry 7 }
|
||||
|
||||
END
|
||||
|
||||
@@ -0,0 +1,265 @@
|
||||
CUMULUS-RESOURCES-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
--
|
||||
-- Top-level infrastructure of the Cumulus enterprise MIB tree
|
||||
--
|
||||
|
||||
IMPORTS
|
||||
OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
|
||||
Integer32, enterprises FROM SNMPv2-SMI
|
||||
InterfaceIndex, ifIndex FROM IF-MIB
|
||||
DateAndTime, DisplayString,
|
||||
cumulusMib FROM CUMULUS-SNMP-MIB
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
|
||||
-- Resource groups in cumulusMib
|
||||
|
||||
resourceUtilization OBJECT IDENTIFIER ::= { cumulusMib 1 }
|
||||
|
||||
-- the resourceUtilization group
|
||||
|
||||
-- The resourceUtilization group lists the current utilization
|
||||
-- of various tables and buffers in the system.
|
||||
|
||||
-- the l3 tables group
|
||||
|
||||
l3Tables OBJECT IDENTIFIER ::= {resourceUtilization 1}
|
||||
|
||||
l3HostTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of L3 Host table entries currently in use"
|
||||
::= { l3Tables 1 }
|
||||
|
||||
l3HostTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the L3 Host table. The
|
||||
Host table is defined as the table holding the ARP/ND cache."
|
||||
::= {l3Tables 2 }
|
||||
|
||||
l3RoutingTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of L3 Routing table entries currently in use."
|
||||
::= { l3Tables 3 }
|
||||
|
||||
l3RoutingTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the L3 Routing table.
|
||||
L3 Routing table is defined as the table holding the
|
||||
longest prefix match (LPM) entries."
|
||||
::= { l3Tables 4 }
|
||||
|
||||
l3NextHopTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of L3 Next Hop table entries currently in use."
|
||||
::= { l3Tables 5 }
|
||||
|
||||
l3NextHopTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the L3 Next Hop table.
|
||||
The L3 Next Hop table holds information about the next hop(s)
|
||||
associated with a routing table entry."
|
||||
::= { l3Tables 6 }
|
||||
|
||||
l3EcmpGroupTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of ECMP Group table entries currently in use."
|
||||
::= { l3Tables 7 }
|
||||
|
||||
l3EcmpGroupTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the ECMP Group table.
|
||||
The ECMP Group table holds information about "
|
||||
::= { l3Tables 8 }
|
||||
|
||||
l3EcmpNextHopTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of ECMP Next Hop table entries currently in use."
|
||||
::= { l3Tables 9 }
|
||||
|
||||
l3EcmpNextHopTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the ECMP Next Hop
|
||||
table. ECMP Next Hop table stores information about the next
|
||||
hop associated with a routing table entry that has multiple equal
|
||||
cost next hop neighbors."
|
||||
::= { l3Tables 10 }
|
||||
|
||||
-- the l2 tables group
|
||||
|
||||
l2Tables OBJECT IDENTIFIER ::= {resourceUtilization 2}
|
||||
|
||||
l2MacTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of L2 Mac table entries currently in use."
|
||||
::= { l2Tables 1 }
|
||||
|
||||
l2MacTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the L2 Mac table."
|
||||
::= { l2Tables 2 }
|
||||
|
||||
l2CacheTableCurrentEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of Cache table currently entries in use"
|
||||
::= { l2Tables 3 }
|
||||
|
||||
l2CacheTableMaxEntries OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum possible entries in the Cache table. The Cache table
|
||||
holds entries that are to be redirected to the CPU because they are
|
||||
control packets, specifically L2 protocol control packets. Examples
|
||||
are STP BPDUs, LLDP BPDUs etc."
|
||||
::= { l2Tables 4 }
|
||||
|
||||
-- the buffer utilization group
|
||||
|
||||
bufferUtilizn OBJECT IDENTIFIER ::= {resourceUtilization 3}
|
||||
|
||||
bufUtiliznComputeTime OBJECT-TYPE
|
||||
SYNTAX DisplayString
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The time when the buffer utilization statistic was computed."
|
||||
DEFVAL { "0" }
|
||||
::= { bufferUtilizn 1 }
|
||||
|
||||
bufUtiliznPollInterval OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The periodicity at which the buffer utilization data
|
||||
is pulled from the hardware. This is specified in milliseconds."
|
||||
::= { bufferUtilizn 2 }
|
||||
|
||||
|
||||
bufUtiliznMeasureInterval OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The time interval over which the buffer utilization
|
||||
statistics is computed. This is specified in minutes."
|
||||
::= { bufferUtilizn 3 }
|
||||
|
||||
bufUtiliznTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF BufUtiliznEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Table describes the ingress buffer utilization per service pool"
|
||||
::= { bufferUtilizn 4 }
|
||||
|
||||
bufUtiliznEntry OBJECT-TYPE
|
||||
SYNTAX BufUtiliznEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
""
|
||||
INDEX { bufServicePoolID }
|
||||
::= { bufUtiliznTable 1 }
|
||||
|
||||
BufUtiliznEntry ::=
|
||||
SEQUENCE {
|
||||
bufServicePoolID INTEGER,
|
||||
bufMin INTEGER,
|
||||
bufMax INTEGER,
|
||||
bufAvg DisplayString,
|
||||
bufVariance DisplayString,
|
||||
bufStdDev DisplayString
|
||||
}
|
||||
|
||||
bufServicePoolID OBJECT-TYPE
|
||||
SYNTAX INTEGER (1..8)
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The service pool number."
|
||||
::= { bufUtiliznEntry 1 }
|
||||
|
||||
bufMin OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The minimum number of cells used in this service pool."
|
||||
::= { bufUtiliznEntry 2 }
|
||||
|
||||
bufMax OBJECT-TYPE
|
||||
SYNTAX INTEGER
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The maximum number of cells used in this service pool"
|
||||
::= { bufUtiliznEntry 3 }
|
||||
|
||||
bufAvg OBJECT-TYPE
|
||||
SYNTAX DisplayString
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The average number of cells used in this service pool"
|
||||
::= { bufUtiliznEntry 4 }
|
||||
|
||||
bufVariance OBJECT-TYPE
|
||||
SYNTAX DisplayString
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The variance of the buffer pool utilization for this service pool
|
||||
over the last measured interval."
|
||||
::= { bufUtiliznEntry 5 }
|
||||
|
||||
bufStdDev OBJECT-TYPE
|
||||
SYNTAX DisplayString
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The Standard Deviation of the buffer pool utilization for this
|
||||
service pool over the last measured interval."
|
||||
::= { bufUtiliznEntry 6 }
|
||||
END
|
||||
@@ -0,0 +1,37 @@
|
||||
CUMULUS-SNMP-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
--
|
||||
-- Top-level infrastructure of the Cumulus enterprise MIB tree
|
||||
--
|
||||
|
||||
IMPORTS
|
||||
OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
|
||||
Integer32, enterprises FROM SNMPv2-SMI
|
||||
InterfaceIndex, ifIndex FROM IF-MIB
|
||||
DateAndTime, DisplayString,
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
|
||||
cumulusMib MODULE-IDENTITY
|
||||
LAST-UPDATED "201207230000Z"
|
||||
ORGANIZATION "www.cumulusnetworks.com"
|
||||
CONTACT-INFO
|
||||
"postal: Dinesh Dutt
|
||||
650 Castro Street,
|
||||
suite 120-245
|
||||
Mountain View, CA 94041
|
||||
|
||||
email: ddutt@cumulusnetworks.com"
|
||||
DESCRIPTION
|
||||
"Top-level infrastructure of the Cumulus enterprise MIB tree"
|
||||
REVISION "201207230000Z"
|
||||
DESCRIPTION
|
||||
"Second version with new Enterprise number and discard counters"
|
||||
::= { enterprises 40310 }
|
||||
|
||||
--
|
||||
-- This is just the placeholder for the cumulusMib definition.
|
||||
-- The actual objects are defined in separate, appropriately named files.
|
||||
-- This way, we keep an overall MIB definition and add extensions as needed.
|
||||
--
|
||||
END
|
||||
@@ -0,0 +1,36 @@
|
||||
--
|
||||
-- Deliberant 802.11 Central Configuration Module
|
||||
--
|
||||
|
||||
DELIBERANT-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, enterprises
|
||||
FROM SNMPv2-SMI;
|
||||
|
||||
deliberant MODULE-IDENTITY
|
||||
LAST-UPDATED "200809050000Z"
|
||||
ORGANIZATION "Deliberant"
|
||||
CONTACT-INFO "
|
||||
Deliberant Customer Support
|
||||
E-mail: support@deliberant.com"
|
||||
DESCRIPTION
|
||||
"Deliberant central configuration module."
|
||||
REVISION "200809050000Z"
|
||||
DESCRIPTION
|
||||
"First revision."
|
||||
::= { enterprises 32761 }
|
||||
|
||||
-- subtree for product specific MIBs
|
||||
dlbProducts OBJECT IDENTIFIER ::= { deliberant 1 }
|
||||
|
||||
-- subtree for administrative information about product
|
||||
dlbAdmin OBJECT IDENTIFIER ::= { deliberant 2 }
|
||||
|
||||
-- subtree for management objects
|
||||
dlbMgmt OBJECT IDENTIFIER ::= { deliberant 3 }
|
||||
|
||||
-- subtree for experiments
|
||||
dlbExperimental OBJECT IDENTIFIER ::= { deliberant 7 }
|
||||
END
|
||||
|
||||
@@ -0,0 +1,452 @@
|
||||
--
|
||||
-- Deliberant 802.11 Extension MIB
|
||||
--
|
||||
|
||||
DLB-802DOT11-EXT-MIB DEFINITIONS ::= BEGIN
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
|
||||
Counter32, Integer32, Gauge32
|
||||
FROM SNMPv2-SMI
|
||||
MacAddress, TruthValue
|
||||
FROM SNMPv2-TC
|
||||
sysLocation
|
||||
FROM SNMPv2-MIB
|
||||
ifIndex, InterfaceIndex, ifPhysAddress
|
||||
FROM IF-MIB
|
||||
dlbMgmt
|
||||
FROM DELIBERANT-MIB;
|
||||
|
||||
dlb802dot11ExtMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "201003310000Z"
|
||||
ORGANIZATION "Deliberant"
|
||||
CONTACT-INFO "
|
||||
Deliberant Customer Support
|
||||
E-mail: support@deliberant.com"
|
||||
DESCRIPTION
|
||||
"The Deliberant 802.11 Extension MIB."
|
||||
REVISION "201003310000Z"
|
||||
DESCRIPTION
|
||||
"Added dlbDot11IfAssocNodeCount."
|
||||
REVISION "200905150000Z"
|
||||
DESCRIPTION
|
||||
"Added dlbDot11RemoteNodeStatsTable and dlbRemoteNodeConnected,
|
||||
dlbRemoteNodeDisconnected notifications."
|
||||
REVISION "200812120000Z"
|
||||
DESCRIPTION
|
||||
"First revision."
|
||||
::= { dlbMgmt 5 }
|
||||
|
||||
dlb802dot11ExtMIBObjects
|
||||
OBJECT IDENTIFIER ::= { dlb802dot11ExtMIB 1 }
|
||||
|
||||
dlbDot11Notifs
|
||||
OBJECT IDENTIFIER ::= { dlb802dot11ExtMIBObjects 0 }
|
||||
dlbDot11Info
|
||||
OBJECT IDENTIFIER ::= { dlb802dot11ExtMIBObjects 1 }
|
||||
dlbDot11Conf
|
||||
OBJECT IDENTIFIER ::= { dlb802dot11ExtMIBObjects 2 }
|
||||
dlbDot11Stats
|
||||
OBJECT IDENTIFIER ::= { dlb802dot11ExtMIBObjects 3 }
|
||||
|
||||
dlbDot11IfConfTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF DlbDot11IfConfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless interface configuration table."
|
||||
::= { dlbDot11Conf 1 }
|
||||
|
||||
dlbDot11IfConfEntry OBJECT-TYPE
|
||||
SYNTAX DlbDot11IfConfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless interface configuration table entry."
|
||||
INDEX { ifIndex }
|
||||
::= { dlbDot11IfConfTable 1 }
|
||||
|
||||
DlbDot11IfConfEntry ::=
|
||||
SEQUENCE {
|
||||
dlbDot11IfParentIndex InterfaceIndex,
|
||||
dlbDot11IfProtocol OCTET STRING,
|
||||
dlbDot11IfMode INTEGER,
|
||||
dlbDot11IfESSID OCTET STRING,
|
||||
dlbDot11IfAccessPoint MacAddress,
|
||||
dlbDot11IfCountryCode Integer32,
|
||||
dlbDot11IfFrequency Integer32,
|
||||
dlbDot11IfChannel Integer32,
|
||||
dlbDot11IfChannelBandwidth Integer32,
|
||||
dlbDot11IfTxPower Gauge32,
|
||||
dlbDot11IfBitRate Gauge32,
|
||||
dlbDot11IfLinkQuality Gauge32,
|
||||
dlbDot11IfMaxLinkQuality Gauge32,
|
||||
dlbDot11IfSignalLevel Integer32,
|
||||
dlbDot11IfNoiseLevel Integer32,
|
||||
dlbDot11IfAssocNodeCount Gauge32
|
||||
}
|
||||
|
||||
dlbDot11IfParentIndex OBJECT-TYPE
|
||||
SYNTAX InterfaceIndex
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless interface's parent index, which corresponds to ifIndex in MIB-II interfaces table.
|
||||
This is only applicable if the interface is virtual and it is created under some other interface, like
|
||||
it is for Atheros cards when using MadWiFi driver, where parent interfaces are wifi0, wifi1, etc."
|
||||
::= { dlbDot11IfConfEntry 1 }
|
||||
|
||||
dlbDot11IfProtocol OBJECT-TYPE
|
||||
SYNTAX OCTET STRING (SIZE(0..15))
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Protocol string, for example 'IEEE 802.11g'."
|
||||
::= { dlbDot11IfConfEntry 2 }
|
||||
|
||||
dlbDot11IfMode OBJECT-TYPE
|
||||
SYNTAX INTEGER {
|
||||
auto(0),
|
||||
adhoc(1),
|
||||
managed(2),
|
||||
master(3),
|
||||
repeater(4),
|
||||
secondary(5),
|
||||
monitor(6)
|
||||
}
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless interface operation mode"
|
||||
::= { dlbDot11IfConfEntry 3 }
|
||||
|
||||
dlbDot11IfESSID OBJECT-TYPE
|
||||
SYNTAX OCTET STRING (SIZE(0..32))
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"ESSID"
|
||||
::= { dlbDot11IfConfEntry 4 }
|
||||
|
||||
dlbDot11IfAccessPoint OBJECT-TYPE
|
||||
SYNTAX MacAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Access point's MAC address if working in managed mode and connected.
|
||||
Current interface's MAC address, when working in master mode."
|
||||
::= { dlbDot11IfConfEntry 5 }
|
||||
|
||||
dlbDot11IfCountryCode OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Country code."
|
||||
::= { dlbDot11IfConfEntry 6 }
|
||||
|
||||
dlbDot11IfFrequency OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
UNITS "MHz"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Current frequency as reported by driver."
|
||||
::= { dlbDot11IfConfEntry 7 }
|
||||
|
||||
dlbDot11IfChannel OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Channel number."
|
||||
::= { dlbDot11IfConfEntry 8 }
|
||||
|
||||
dlbDot11IfChannelBandwidth OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
UNITS "MHz"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Channel bandwidth."
|
||||
::= { dlbDot11IfConfEntry 9 }
|
||||
|
||||
dlbDot11IfTxPower OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
UNITS "dBm"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Transmit power in dBm."
|
||||
::= { dlbDot11IfConfEntry 10 }
|
||||
|
||||
dlbDot11IfBitRate OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
UNITS "kbit/s"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Transmission bitrate."
|
||||
::= { dlbDot11IfConfEntry 11 }
|
||||
|
||||
dlbDot11IfLinkQuality OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Link quality value."
|
||||
::= { dlbDot11IfConfEntry 12 }
|
||||
|
||||
dlbDot11IfMaxLinkQuality OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Maximum possible link quality value for current wireless card."
|
||||
::= { dlbDot11IfConfEntry 13 }
|
||||
|
||||
dlbDot11IfSignalLevel OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
UNITS "dBm"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Signal level."
|
||||
::= { dlbDot11IfConfEntry 14 }
|
||||
|
||||
dlbDot11IfNoiseLevel OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
UNITS "dBm"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Noise level."
|
||||
::= { dlbDot11IfConfEntry 15 }
|
||||
|
||||
dlbDot11IfAssocNodeCount OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of associated nodes when working in access point mode.
|
||||
1 - if associated to remote access point in client mode."
|
||||
::= { dlbDot11IfConfEntry 16 }
|
||||
|
||||
dlbDot11IfErrStatsTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF DlbDot11IfErrStatsEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless interface statistics table."
|
||||
::= { dlbDot11Stats 1 }
|
||||
|
||||
dlbDot11IfErrStatsEntry OBJECT-TYPE
|
||||
SYNTAX DlbDot11IfErrStatsEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless interface statistics table entry."
|
||||
INDEX { ifIndex }
|
||||
::= { dlbDot11IfErrStatsTable 1 }
|
||||
|
||||
DlbDot11IfErrStatsEntry ::=
|
||||
SEQUENCE {
|
||||
dlbDot11IfRxInvalidNWID Counter32,
|
||||
dlbDot11IfRxInvalidCrypt Counter32,
|
||||
dlbDot11IfRxInvalidFrag Counter32,
|
||||
dlbDot11IfTxExcessiveRetries Counter32,
|
||||
dlbDot11IfInvalidMisc Counter32,
|
||||
dlbDot11IfMissedBeacons Counter32
|
||||
}
|
||||
|
||||
dlbDot11IfRxInvalidNWID OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets with invalid NWID/ESSID. Increasing value usually means that there are
|
||||
other stations transmitting on the same channel or adjacent channels."
|
||||
::= { dlbDot11IfErrStatsEntry 1 }
|
||||
|
||||
dlbDot11IfRxInvalidCrypt OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets the hardware was unable to decrypt."
|
||||
::= { dlbDot11IfErrStatsEntry 2 }
|
||||
|
||||
dlbDot11IfRxInvalidFrag OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets that were missing link layer fragments for complete re-assembly."
|
||||
::= { dlbDot11IfErrStatsEntry 3 }
|
||||
|
||||
dlbDot11IfTxExcessiveRetries OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets hardware failed to deliver."
|
||||
::= { dlbDot11IfErrStatsEntry 4 }
|
||||
|
||||
dlbDot11IfInvalidMisc OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Other packets lost in relation with specific wireless operations."
|
||||
::= { dlbDot11IfErrStatsEntry 5 }
|
||||
|
||||
dlbDot11IfMissedBeacons OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of beacons that should have been sent by remote access point but were not received.
|
||||
Increasing number usually means that communicating peers moved out of range."
|
||||
::= { dlbDot11IfErrStatsEntry 6 }
|
||||
|
||||
dlbDot11RemoteNodeStatsTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF DlbDot11RemoteNodeStatsEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Remote node statistics table. This table shows statistics for associated or already disconnected clients
|
||||
on wireless interfaces which are operating in access point mode. For interfaces operating in client mode and
|
||||
associated to remote access point information about access point is shown."
|
||||
::= { dlbDot11Stats 2 }
|
||||
|
||||
dlbDot11RemoteNodeStatsEntry OBJECT-TYPE
|
||||
SYNTAX DlbDot11RemoteNodeStatsEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Wireless remote node statistics table entry."
|
||||
INDEX { ifIndex, dlbDot11RmtNodeMacAddress }
|
||||
::= { dlbDot11RemoteNodeStatsTable 1 }
|
||||
|
||||
DlbDot11RemoteNodeStatsEntry ::=
|
||||
SEQUENCE {
|
||||
dlbDot11RmtNodeMacAddress MacAddress,
|
||||
dlbDot11RmtNodeAssociated TruthValue,
|
||||
dlbDot11RmtNodeTxBytes Counter32,
|
||||
dlbDot11RmtNodeRxBytes Counter32,
|
||||
dlbDot11RmtNodeAssocTime Integer32,
|
||||
dlbDot11RmtNodeDisassocTime Integer32
|
||||
}
|
||||
|
||||
dlbDot11RmtNodeMacAddress OBJECT-TYPE
|
||||
SYNTAX MacAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Remote node MAC address."
|
||||
::= { dlbDot11RemoteNodeStatsEntry 1 }
|
||||
|
||||
dlbDot11RmtNodeAssociated OBJECT-TYPE
|
||||
SYNTAX TruthValue
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Remote node is currently associated."
|
||||
::= { dlbDot11RemoteNodeStatsEntry 2 }
|
||||
|
||||
dlbDot11RmtNodeTxBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
UNITS "bytes"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Bytes transmitted to remote node. This object is optional."
|
||||
::= { dlbDot11RemoteNodeStatsEntry 3 }
|
||||
|
||||
dlbDot11RmtNodeRxBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
UNITS "bytes"
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Bytes received from remote node. This object is optional."
|
||||
::= { dlbDot11RemoteNodeStatsEntry 4 }
|
||||
|
||||
dlbDot11RmtNodeAssocTime OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"UNIX timestamp of the association. This object is optional."
|
||||
::= { dlbDot11RemoteNodeStatsEntry 5 }
|
||||
|
||||
dlbDot11RmtNodeDisassocTime OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"UNIX timestamp of the disassociation (if remote node recently dissasociated).
|
||||
This object is optional."
|
||||
::= { dlbDot11RemoteNodeStatsEntry 6 }
|
||||
|
||||
--
|
||||
-- Notifications
|
||||
--
|
||||
|
||||
dlbFrequencyChange NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifIndex,
|
||||
dlbDot11IfFrequency
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent on frequency change."
|
||||
::= { dlbDot11Notifs 1 }
|
||||
|
||||
dlbNoiseThresholdReached NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifIndex,
|
||||
dlbDot11IfNoiseLevel
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent when noise becomes bigger than threshold."
|
||||
::= { dlbDot11Notifs 2 }
|
||||
|
||||
dlbRemoteNodeConnected NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifPhysAddress,
|
||||
ifIndex,
|
||||
dlbDot11RmtNodeMacAddress
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent when remote node associates."
|
||||
::= { dlbDot11Notifs 3 }
|
||||
|
||||
dlbRemoteNodeDisconnected NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifPhysAddress,
|
||||
ifIndex,
|
||||
dlbDot11RmtNodeMacAddress
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent when remote node dissasociates."
|
||||
::= { dlbDot11Notifs 4 }
|
||||
|
||||
dlbLinkQualThresholdReached NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifIndex,
|
||||
dlbDot11IfLinkQuality
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent when link quality crosses the specified threshold."
|
||||
::= { dlbDot11Notifs 5 }
|
||||
|
||||
END
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,54 @@
|
||||
--
|
||||
-- Deliberant Generic MIB
|
||||
--
|
||||
|
||||
DLB-GENERIC-MIB DEFINITIONS ::= BEGIN
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, NOTIFICATION-TYPE
|
||||
FROM SNMPv2-SMI
|
||||
sysLocation
|
||||
FROM SNMPv2-MIB
|
||||
dlbMgmt
|
||||
FROM DELIBERANT-MIB;
|
||||
|
||||
dlbGenericMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "200902130000Z"
|
||||
ORGANIZATION "Deliberant"
|
||||
CONTACT-INFO "
|
||||
Deliberant Customer Support
|
||||
E-mail: support@deliberant.com"
|
||||
DESCRIPTION
|
||||
"The Deliberant Generic MIB."
|
||||
REVISION "200902130000Z"
|
||||
DESCRIPTION
|
||||
"First revision."
|
||||
::= { dlbMgmt 1 }
|
||||
|
||||
dlbGenericMIBObjects
|
||||
OBJECT IDENTIFIER ::= { dlbGenericMIB 1 }
|
||||
|
||||
dlbGenericNotifs
|
||||
OBJECT IDENTIFIER ::= { dlbGenericMIBObjects 0 }
|
||||
dlbGenericInfo
|
||||
OBJECT IDENTIFIER ::= { dlbGenericMIBObjects 1 }
|
||||
|
||||
|
||||
--
|
||||
-- Notifications
|
||||
--
|
||||
|
||||
dlbPowerLoss NOTIFICATION-TYPE
|
||||
OBJECTS { sysLocation }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent on device boot after power loss or device crash."
|
||||
::= { dlbGenericNotifs 1 }
|
||||
|
||||
dlbAdministrativeReboot NOTIFICATION-TYPE
|
||||
OBJECTS { sysLocation }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent on device boot after administrator rebooted device."
|
||||
::= { dlbGenericNotifs 2 }
|
||||
|
||||
END
|
||||
@@ -0,0 +1,811 @@
|
||||
--
|
||||
-- Deliberant 3 series radio driver MIB
|
||||
--
|
||||
|
||||
DLB-RADIO3-DRV-MIB DEFINITIONS ::= BEGIN
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
|
||||
Integer32, Counter32, Gauge32, IpAddress, TimeTicks
|
||||
FROM SNMPv2-SMI
|
||||
MacAddress
|
||||
FROM SNMPv2-TC
|
||||
sysLocation
|
||||
FROM SNMPv2-MIB
|
||||
ifIndex
|
||||
FROM IF-MIB
|
||||
dlbMgmt
|
||||
FROM DELIBERANT-MIB;
|
||||
|
||||
dlbRadio3DrvMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "201001060000Z"
|
||||
ORGANIZATION "Deliberant"
|
||||
CONTACT-INFO "
|
||||
Deliberant Customer Support
|
||||
E-mail: support@deliberant.com"
|
||||
DESCRIPTION
|
||||
"Deliberant 3 series radio driver MIB."
|
||||
REVISION "201001060000Z"
|
||||
DESCRIPTION
|
||||
"First revision."
|
||||
::= { dlbMgmt 8 }
|
||||
|
||||
dlbRadio3DrvMIBObjects
|
||||
OBJECT IDENTIFIER ::= { dlbRadio3DrvMIB 1 }
|
||||
|
||||
dlbRdo3DrvNotifs
|
||||
OBJECT IDENTIFIER ::= { dlbRadio3DrvMIBObjects 0 }
|
||||
dlbRdo3DrvInfo
|
||||
OBJECT IDENTIFIER ::= { dlbRadio3DrvMIBObjects 1 }
|
||||
dlbRdo3DrvConf
|
||||
OBJECT IDENTIFIER ::= { dlbRadio3DrvMIBObjects 2 }
|
||||
dlbRdo3DrvStats
|
||||
OBJECT IDENTIFIER ::= { dlbRadio3DrvMIBObjects 3 }
|
||||
|
||||
dlbRdo3StatsTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF dlbRdo3StatsEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Radio driver's information and network traffic statistics table."
|
||||
::= { dlbRdo3DrvStats 1 }
|
||||
|
||||
dlbRdo3StatsEntry OBJECT-TYPE
|
||||
SYNTAX dlbRdo3StatsEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Radio driver's information and network traffic statistics table entry."
|
||||
INDEX { ifIndex, dlbRdo3Endpoint }
|
||||
::= { dlbRdo3StatsTable 1 }
|
||||
|
||||
dlbRdo3StatsEntry ::=
|
||||
SEQUENCE {
|
||||
dlbRdo3Endpoint Integer32,
|
||||
dlbRdo3LastUpdate TimeTicks,
|
||||
dlbRdo3MacAddress MacAddress,
|
||||
dlbRdo3IpAddress IpAddress,
|
||||
dlbRdo3CountryCode OCTET STRING,
|
||||
dlbRdo3Encryption OCTET STRING,
|
||||
dlbRdo3Parameters OCTET STRING,
|
||||
dlbRdo3Capabilities OCTET STRING,
|
||||
dlbRdo3TxPower Gauge32,
|
||||
dlbRdo3TxPackets Counter32,
|
||||
dlbRdo3TxBytes Counter32,
|
||||
dlbRdo3TxXmitFailed Counter32,
|
||||
dlbRdo3TxXmitDropped Counter32,
|
||||
dlbRdo3TxOverruns Counter32,
|
||||
dlbRdo3TxSuccess Counter32,
|
||||
dlbRdo3TxFailed Counter32,
|
||||
dlbRdo3TxRetried Counter32,
|
||||
dlbRdo3TxNotRetried Counter32,
|
||||
dlbRdo3TxPacketsPerMcs OCTET STRING,
|
||||
dlbRdo3TxMsdus Counter32,
|
||||
dlbRdo3TxNotAggregated Counter32,
|
||||
dlbRdo3TxAckRequired Counter32,
|
||||
dlbRdo3TxNoAckRequired Counter32,
|
||||
dlbRdo3TxAltRate Counter32,
|
||||
dlbRdo3TxManagement Counter32,
|
||||
dlbRdo3TxLegacy Counter32,
|
||||
dlbRdo3TxLegacyBytes Counter32,
|
||||
dlbRdo3TxAmsdus Counter32,
|
||||
dlbRdo3TxPktsInAmsdus Counter32,
|
||||
dlbRdo3TxAmsduBytes Counter32,
|
||||
dlbRdo3TxMpdus Counter32,
|
||||
dlbRdo3TxMpduBytes Counter32,
|
||||
dlbRdo3TxFragmented Counter32,
|
||||
dlbRdo3TxFragBytes Counter32,
|
||||
dlbRdo3RxPackets Counter32,
|
||||
dlbRdo3RxBytes Counter32,
|
||||
dlbRdo3RxDropped Counter32,
|
||||
dlbRdo3RxCrcErrors Counter32,
|
||||
dlbRdo3RxIcvErrors Counter32,
|
||||
dlbRdo3RxMicErrors Counter32,
|
||||
dlbRdo3RxKeyNotValid Counter32,
|
||||
dlbRdo3RxAclDiscarded Counter32,
|
||||
dlbRdo3RxManagement Counter32,
|
||||
dlbRdo3RxControl Counter32,
|
||||
dlbRdo3RxData Counter32,
|
||||
dlbRdo3RxUnknown Counter32,
|
||||
dlbRdo3RxNullData Counter32,
|
||||
dlbRdo3RxBroadcast Counter32,
|
||||
dlbRdo3RxMulticast Counter32,
|
||||
dlbRdo3RxUnicast Counter32,
|
||||
dlbRdo3RxCck Counter32,
|
||||
dlbRdo3RxOfdm Counter32,
|
||||
dlbRdo3RxHtMixedMode Counter32,
|
||||
dlbRdo3RxHtGreenfield Counter32,
|
||||
dlbRdo3RxAmsdus Counter32,
|
||||
dlbRdo3RxPacketsInAmsdus Counter32,
|
||||
dlbRdo3RxAmpdus Counter32,
|
||||
dlbRdo3RxMpduBytes Counter32,
|
||||
dlbRdo3RxRoBufTotal Counter32,
|
||||
dlbRdo3RxRoBufInSeq Counter32,
|
||||
dlbRdo3RxRoBufDup Counter32,
|
||||
dlbRdo3RxRoBufExpired Counter32,
|
||||
dlbRdo3RxRoBufBuffered Counter32,
|
||||
dlbRdo3RxRoBufReordered Counter32,
|
||||
dlbRdo3RxRoBufFlushed Counter32,
|
||||
dlbRdo3RxRoBufTooBig Counter32,
|
||||
dlbRdo3RxL2Pad Counter32,
|
||||
dlbRdo3RxBlockAcks Counter32,
|
||||
dlbRdo3RxFragments Counter32,
|
||||
dlbRdo3RxStbc Counter32,
|
||||
dlbRdo3RxShortGuardInt Counter32,
|
||||
dlbRdo3Rx40MhzBandwidth Counter32,
|
||||
dlbRdo3RxHtControl Counter32,
|
||||
dlbRdo3RxPacketsPerMcs OCTET STRING,
|
||||
dlbRdo3RxLastSigLevel0 Integer32,
|
||||
dlbRdo3RxLastSigLevel1 Integer32,
|
||||
dlbRdo3RxLastSigLevel2 Integer32,
|
||||
dlbRdo3RxNoise Integer32,
|
||||
dlbRdo3RxLastSnr0 Integer32,
|
||||
dlbRdo3RxLastSnr1 Integer32
|
||||
}
|
||||
|
||||
dlbRdo3Endpoint OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Peer index. Local device has index 0."
|
||||
::= { dlbRdo3StatsEntry 1 }
|
||||
|
||||
dlbRdo3LastUpdate OBJECT-TYPE
|
||||
SYNTAX TimeTicks
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"sysUptime value of time point when statistics was gathered."
|
||||
::= { dlbRdo3StatsEntry 2 }
|
||||
|
||||
dlbRdo3MacAddress OBJECT-TYPE
|
||||
SYNTAX MacAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Device's MAC address."
|
||||
::= { dlbRdo3StatsEntry 3 }
|
||||
|
||||
dlbRdo3IpAddress OBJECT-TYPE
|
||||
SYNTAX IpAddress
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Device's IP address."
|
||||
::= { dlbRdo3StatsEntry 4 }
|
||||
|
||||
dlbRdo3CountryCode OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Country code."
|
||||
::= { dlbRdo3StatsEntry 5 }
|
||||
|
||||
dlbRdo3Encryption OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Encryption type."
|
||||
::= { dlbRdo3StatsEntry 6 }
|
||||
|
||||
dlbRdo3Parameters OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Radio parameters."
|
||||
::= { dlbRdo3StatsEntry 7 }
|
||||
|
||||
dlbRdo3Capabilities OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Radio capabilities."
|
||||
::= { dlbRdo3StatsEntry 8 }
|
||||
|
||||
dlbRdo3TxPower OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Transmission power."
|
||||
::= { dlbRdo3StatsEntry 9 }
|
||||
|
||||
dlbRdo3TxPackets OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted packets."
|
||||
::= { dlbRdo3StatsEntry 10 }
|
||||
|
||||
dlbRdo3TxBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted bytes."
|
||||
::= { dlbRdo3StatsEntry 11 }
|
||||
|
||||
dlbRdo3TxXmitFailed OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets failing initial checks before sending them to radio hardware."
|
||||
::= { dlbRdo3StatsEntry 12 }
|
||||
|
||||
dlbRdo3TxXmitDropped OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets dropped because radio was offline or in reset state."
|
||||
::= { dlbRdo3StatsEntry 13 }
|
||||
|
||||
dlbRdo3TxOverruns OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmission overruns."
|
||||
::= { dlbRdo3StatsEntry 14 }
|
||||
|
||||
dlbRdo3TxSuccess OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of successfully transmitted packets."
|
||||
::= { dlbRdo3StatsEntry 15 }
|
||||
|
||||
dlbRdo3TxFailed OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmission failures."
|
||||
::= { dlbRdo3StatsEntry 16 }
|
||||
|
||||
dlbRdo3TxRetried OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmission retries."
|
||||
::= { dlbRdo3StatsEntry 17 }
|
||||
|
||||
dlbRdo3TxNotRetried OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets sent without retries."
|
||||
::= { dlbRdo3StatsEntry 18 }
|
||||
|
||||
dlbRdo3TxPacketsPerMcs OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets sent using each of Modulation and Coding Schemes."
|
||||
::= { dlbRdo3StatsEntry 19 }
|
||||
|
||||
dlbRdo3TxMsdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted MAC Service Data Units."
|
||||
::= { dlbRdo3StatsEntry 20 }
|
||||
|
||||
dlbRdo3TxNotAggregated OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets transmitted without aggregation."
|
||||
::= { dlbRdo3StatsEntry 21 }
|
||||
|
||||
dlbRdo3TxAckRequired OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets transmitted which required acknowledgment."
|
||||
::= { dlbRdo3StatsEntry 22 }
|
||||
|
||||
dlbRdo3TxNoAckRequired OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets transmitted which did not require acknowledgment."
|
||||
::= { dlbRdo3StatsEntry 23 }
|
||||
|
||||
dlbRdo3TxAltRate OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of data rate alterations."
|
||||
::= { dlbRdo3StatsEntry 24 }
|
||||
|
||||
dlbRdo3TxManagement OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted management frames."
|
||||
::= { dlbRdo3StatsEntry 25 }
|
||||
|
||||
dlbRdo3TxLegacy OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted legacy packets."
|
||||
::= { dlbRdo3StatsEntry 26 }
|
||||
|
||||
dlbRdo3TxLegacyBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of bytes transmitted in legacy mode."
|
||||
::= { dlbRdo3StatsEntry 27 }
|
||||
|
||||
dlbRdo3TxAmsdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted aggregated MAC Service Data Units."
|
||||
::= { dlbRdo3StatsEntry 28 }
|
||||
|
||||
dlbRdo3TxPktsInAmsdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets contained in transmitted aggregated MAC Service Data Units."
|
||||
::= { dlbRdo3StatsEntry 29 }
|
||||
|
||||
dlbRdo3TxAmsduBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of bytes transmitted in aggregated MAC Service Data Units."
|
||||
::= { dlbRdo3StatsEntry 30 }
|
||||
|
||||
dlbRdo3TxMpdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted MAC Protocol Data Units."
|
||||
::= { dlbRdo3StatsEntry 31 }
|
||||
|
||||
dlbRdo3TxMpduBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of bytes transmitted in MAC Protocol Data Units."
|
||||
::= { dlbRdo3StatsEntry 32 }
|
||||
|
||||
dlbRdo3TxFragmented OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of transmitted fragmented packets."
|
||||
::= { dlbRdo3StatsEntry 33 }
|
||||
|
||||
dlbRdo3TxFragBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of bytes transmitted in fragmented packets."
|
||||
::= { dlbRdo3StatsEntry 34 }
|
||||
|
||||
dlbRdo3RxPackets OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets."
|
||||
::= { dlbRdo3StatsEntry 35 }
|
||||
|
||||
dlbRdo3RxBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received bytes."
|
||||
::= { dlbRdo3StatsEntry 36 }
|
||||
|
||||
dlbRdo3RxDropped OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of dropped packets."
|
||||
::= { dlbRdo3StatsEntry 37 }
|
||||
|
||||
dlbRdo3RxCrcErrors OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets that failed CRC check."
|
||||
::= { dlbRdo3StatsEntry 38 }
|
||||
|
||||
dlbRdo3RxIcvErrors OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets with invalid Integrity Check Value."
|
||||
::= { dlbRdo3StatsEntry 39 }
|
||||
|
||||
dlbRdo3RxMicErrors OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets failing Message Integrity Code check."
|
||||
::= { dlbRdo3StatsEntry 40 }
|
||||
|
||||
dlbRdo3RxKeyNotValid OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets with encryption key errors."
|
||||
::= { dlbRdo3StatsEntry 41 }
|
||||
|
||||
dlbRdo3RxAclDiscarded OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets discarded by Access Control List check."
|
||||
::= { dlbRdo3StatsEntry 42 }
|
||||
|
||||
dlbRdo3RxManagement OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received management packets."
|
||||
::= { dlbRdo3StatsEntry 43 }
|
||||
|
||||
dlbRdo3RxControl OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received control packets."
|
||||
::= { dlbRdo3StatsEntry 44 }
|
||||
|
||||
dlbRdo3RxData OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received data packets."
|
||||
::= { dlbRdo3StatsEntry 45 }
|
||||
|
||||
dlbRdo3RxUnknown OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received packets of unknown type."
|
||||
::= { dlbRdo3StatsEntry 46 }
|
||||
|
||||
dlbRdo3RxNullData OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received NULL DATA frames."
|
||||
::= { dlbRdo3StatsEntry 47 }
|
||||
|
||||
dlbRdo3RxBroadcast OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received broadcast packets."
|
||||
::= { dlbRdo3StatsEntry 48 }
|
||||
|
||||
dlbRdo3RxMulticast OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received multicast packets."
|
||||
::= { dlbRdo3StatsEntry 49 }
|
||||
|
||||
dlbRdo3RxUnicast OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received unicast packets."
|
||||
::= { dlbRdo3StatsEntry 50 }
|
||||
|
||||
dlbRdo3RxCck OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using Complementary Code Keying modulation."
|
||||
::= { dlbRdo3StatsEntry 51 }
|
||||
|
||||
dlbRdo3RxOfdm OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using Orthogonal Frequency-Division Multiplexing modulation."
|
||||
::= { dlbRdo3StatsEntry 52 }
|
||||
|
||||
dlbRdo3RxHtMixedMode OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using High Throughput mixed mode."
|
||||
::= { dlbRdo3StatsEntry 53 }
|
||||
|
||||
dlbRdo3RxHtGreenfield OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using High Throughput Greenfield mode."
|
||||
::= { dlbRdo3StatsEntry 54 }
|
||||
|
||||
dlbRdo3RxAmsdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received aggregated MAC Service Data Units."
|
||||
::= { dlbRdo3StatsEntry 55 }
|
||||
|
||||
dlbRdo3RxPacketsInAmsdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received in aggregated MAC Service Data Units."
|
||||
::= { dlbRdo3StatsEntry 56 }
|
||||
|
||||
dlbRdo3RxAmpdus OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received aggregated MAC Protocol Data Units."
|
||||
::= { dlbRdo3StatsEntry 57 }
|
||||
|
||||
dlbRdo3RxMpduBytes OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of bytes received in MAC Protocol Data Units."
|
||||
::= { dlbRdo3StatsEntry 58 }
|
||||
|
||||
dlbRdo3RxRoBufTotal OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Total number of received packets moved into reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 59 }
|
||||
|
||||
dlbRdo3RxRoBufInSeq OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets in reordering buffer which are in sequence."
|
||||
::= { dlbRdo3StatsEntry 60 }
|
||||
|
||||
dlbRdo3RxRoBufDup OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of duplicate packets in reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 61 }
|
||||
|
||||
dlbRdo3RxRoBufExpired OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of expired packets in reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 62 }
|
||||
|
||||
dlbRdo3RxRoBufBuffered OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets held in reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 63 }
|
||||
|
||||
dlbRdo3RxRoBufReordered OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets reordered in reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 64 }
|
||||
|
||||
dlbRdo3RxRoBufFlushed OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets flushed from reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 65 }
|
||||
|
||||
dlbRdo3RxRoBufTooBig OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of oversized packets dropped from reordering buffer."
|
||||
::= { dlbRdo3StatsEntry 66 }
|
||||
|
||||
dlbRdo3RxL2Pad OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received with padding between header and payload."
|
||||
::= { dlbRdo3StatsEntry 67 }
|
||||
|
||||
dlbRdo3RxBlockAcks OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received block acknowledgments."
|
||||
::= { dlbRdo3StatsEntry 68 }
|
||||
|
||||
dlbRdo3RxFragments OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of received fragmented packets."
|
||||
::= { dlbRdo3StatsEntry 69 }
|
||||
|
||||
dlbRdo3RxStbc OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using Space-Time Block Coding technique."
|
||||
::= { dlbRdo3StatsEntry 70 }
|
||||
|
||||
dlbRdo3RxShortGuardInt OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received with Short Guard Interval."
|
||||
::= { dlbRdo3StatsEntry 71 }
|
||||
|
||||
dlbRdo3Rx40MhzBandwidth OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using 40MHz bandwidth."
|
||||
::= { dlbRdo3StatsEntry 72 }
|
||||
|
||||
dlbRdo3RxHtControl OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using High Throughput encoding."
|
||||
::= { dlbRdo3StatsEntry 73 }
|
||||
|
||||
dlbRdo3RxPacketsPerMcs OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Number of packets received using each of Modulation and Coding Schemes."
|
||||
::= { dlbRdo3StatsEntry 74 }
|
||||
|
||||
dlbRdo3RxLastSigLevel0 OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Reception signal level on antenna 0."
|
||||
::= { dlbRdo3StatsEntry 75 }
|
||||
|
||||
dlbRdo3RxLastSigLevel1 OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Reception signal level on antenna 1."
|
||||
::= { dlbRdo3StatsEntry 76 }
|
||||
|
||||
dlbRdo3RxLastSigLevel2 OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Reception signal level on antenna 2."
|
||||
::= { dlbRdo3StatsEntry 77 }
|
||||
|
||||
dlbRdo3RxNoise OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Reception noise."
|
||||
::= { dlbRdo3StatsEntry 78 }
|
||||
|
||||
dlbRdo3RxLastSnr0 OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Last registered signal-to-noise level on antenna 0."
|
||||
::= { dlbRdo3StatsEntry 79 }
|
||||
|
||||
dlbRdo3RxLastSnr1 OBJECT-TYPE
|
||||
SYNTAX Integer32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Last registered signal-to-noise level on antenna 1."
|
||||
::= { dlbRdo3StatsEntry 80 }
|
||||
|
||||
dlbRdo3RxDropsThreshold NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifIndex,
|
||||
dlbRdo3MacAddress,
|
||||
dlbRdo3RxDropped
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent when percentage of frames dropped in relation
|
||||
to number of frames received over the same time period reaches the threshold."
|
||||
::= { dlbRdo3DrvNotifs 1 }
|
||||
|
||||
dlbRdo3TxRetriesThreshold NOTIFICATION-TYPE
|
||||
OBJECTS {
|
||||
sysLocation,
|
||||
ifIndex,
|
||||
dlbRdo3MacAddress,
|
||||
dlbRdo3TxRetried
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This notification is sent when percentage of transmission retries in relation
|
||||
to number of frames transmitted over the same time period reaches the threshold."
|
||||
::= { dlbRdo3DrvNotifs 2 }
|
||||
|
||||
END
|
||||
@@ -0,0 +1 @@
|
||||
INSERT INTO config (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) values ('email_html', 'false', 'false', 'Send HTML emails', 'alerting',0,'general',0,'0','0');
|
||||
@@ -0,0 +1,5 @@
|
||||
CREATE TABLE tmp_table LIKE config;
|
||||
ALTER IGNORE TABLE tmp_table ADD UNIQUE INDEX uniqueindex_configname (config_name);
|
||||
INSERT IGNORE INTO tmp_table SELECT * FROM config;
|
||||
DROP TABLE config;
|
||||
RENAME TABLE tmp_table TO config;
|
||||
+11
-9
@@ -43,7 +43,7 @@ if (strstr(`php -ln config.php`, 'No syntax errors detected')) {
|
||||
print_fail('config.php contains a new line at the end, please remove any whitespace at the end of the file and also remove ?>');
|
||||
}
|
||||
else if ($last_lines[1] == '?>') {
|
||||
print_warn("It looks like you have ?> at the end of config.php, it's suggested you remove this");
|
||||
print_warn("It looks like you have ?> at the end of config.php, it is suggested you remove this");
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -139,7 +139,7 @@ if(strstr($strict_mode, 'STRICT_TRANS_TABLES')) {
|
||||
// Test for MySQL InnoDB buffer size
|
||||
$innodb_buffer = innodb_buffer_check();
|
||||
if ($innodb_buffer['used'] > $innodb_buffer['size']) {
|
||||
print_warn("Your Innodb buffer is full, consider increasing it's size");
|
||||
print_warn("Your Innodb buffer is full, consider increasing its size");
|
||||
echo warn_innodb_buffer($innodb_buffer);
|
||||
}
|
||||
|
||||
@@ -213,24 +213,26 @@ foreach ($modules as $module) {
|
||||
$run_test = 0;
|
||||
}
|
||||
else if ($config['email_backend'] == 'sendmail') {
|
||||
if (empty($config['email_sendmail_path']) || !file_exists($config['email_sendmail_path'])) {
|
||||
print_fail("You have selected sendmail but not configured email_sendmail_path or it's not valid");
|
||||
if (empty($config['email_sendmail_path'])) {
|
||||
print_fail("You have selected sendmail but not configured email_sendmail_path");
|
||||
$run_test = 0;
|
||||
}
|
||||
elseif (!file_exists($config['email_sendmail_path'])) {
|
||||
print_fail("The configured email_sendmail_path is not valid");
|
||||
$run_test = 0;
|
||||
}
|
||||
}
|
||||
else if ($config['email_backend'] == 'smtp') {
|
||||
if (empty($config['email_smtp_host'])) {
|
||||
print_fail('You have selected smtp but not configured an smtp host');
|
||||
print_fail('You have selected SMTP but not configured an SMTP host');
|
||||
$run_test = 0;
|
||||
}
|
||||
|
||||
if (empty($config['email_smtp_port'])) {
|
||||
print_fail('You have selected smtp but not configured an smtp port');
|
||||
print_fail('You have selected SMTP but not configured an SMTP port');
|
||||
$run_test = 0;
|
||||
}
|
||||
|
||||
if (($config['email_smtp_auth'] === true) && (empty($config['email_smtp_username']) || empty($config['email_smtp_password']))) {
|
||||
print_fail('You have selected smtp but not configured a username or password');
|
||||
print_fail('You have selected SMTP auth but have not configured both username and password');
|
||||
$run_test = 0;
|
||||
}
|
||||
}//end if
|
||||
|
||||
Reference in New Issue
Block a user