mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Migrate xDSL code to module, and add support for VDSL2 MIB (#14207)
* use component to discover if xDSL polling is needed use component to discover if xDSL polling is needed * Components OK, Polling in correct files, no DB for VDSL * GUI GUI_suite * per port as well * rename * interface listing * draytek_snmpsim * fix arraymerge fix names and max value * schema schema style * remove one dbFetchRows remove 2x dbFetchCell style style remove Legacy dbFetchRow tests tests eloquent more eloquent more eloquent one more gone * fix properties access eloquent_insert_update style tests tests tests tests * tests tests tests * adslLineCoding * Models * fix not nullable cols in DB from code default values typo rename typo schema fix fix vdsl fix now typo typo fix size fix size * Power values for VDSL Power values for VDSL Power values for VDSL DB * cleanup * Rrd::checkRrdExists * always enable DSL discovery style * xdsl module * cleanup and move to Module cleanup and move to Module cleanup and move to Module cleanup and move to Module * Fix display * fix polling and tenth * remove legacy poller * Style and Cosmetics Cosmetics Cleanup * Translations Translations * exists exists * add test support for xdsl * remove last component call unused * translations * remove non standard onclick event on xdsl line * Update Discovery Support.md Update Poller Support.md toner_gone * Notification for removal of lnms config:set enable_ports_adsl true * enable on devices with potential DSL interfaces * tests are working now fix teldat tests * os_schema * teldat * move to new module structure * move to new module structure * wrong dump function * wrong dump function * laravel_through_key hidden * Update notifications.rss * Update notifications.rss Co-authored-by: Tony Murray <murraytony@gmail.com>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
namespace LibreNMS\DB;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
trait SyncsModels
|
||||
@@ -63,7 +64,13 @@ trait SyncsModels
|
||||
}
|
||||
|
||||
$new = $models->diffKeys($existing);
|
||||
$device->$relationship()->saveMany($new);
|
||||
if (is_a($device->$relationship(), HasManyThrough::class)) {
|
||||
// if this is a distant relation, the models need the intermediate relationship set
|
||||
// just save assuming things are correct
|
||||
$new->each->save();
|
||||
} else {
|
||||
$device->$relationship()->saveMany($new);
|
||||
}
|
||||
|
||||
return $existing->map->first()->merge($new);
|
||||
}
|
||||
|
296
LibreNMS/Modules/Xdsl.php
Normal file
296
LibreNMS/Modules/Xdsl.php
Normal file
@@ -0,0 +1,296 @@
|
||||
<?php
|
||||
/**
|
||||
* Xdsl.php
|
||||
*
|
||||
* -Description-
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @link https://www.librenms.org
|
||||
*
|
||||
* @copyright 2022 Tony Murray
|
||||
* @author Tony Murray <murraytony@gmail.com>
|
||||
*/
|
||||
|
||||
namespace LibreNMS\Modules;
|
||||
|
||||
use App\Facades\Rrd;
|
||||
use App\Models\Device;
|
||||
use App\Models\PortAdsl;
|
||||
use App\Models\PortVdsl;
|
||||
use App\Observers\ModuleModelObserver;
|
||||
use Illuminate\Support\Collection;
|
||||
use LibreNMS\DB\SyncsModels;
|
||||
use LibreNMS\Interfaces\Module;
|
||||
use LibreNMS\OS;
|
||||
use LibreNMS\RRD\RrdDefinition;
|
||||
use LibreNMS\Util\Number;
|
||||
|
||||
class Xdsl implements Module
|
||||
{
|
||||
use SyncsModels;
|
||||
|
||||
/** @var string[] */
|
||||
private $trimAdminString = ['adslAtucInvVendorID', 'adslAturInvVendorID', 'adslAturInvVersionNumber', 'adslAtucInvVersionNumber'];
|
||||
/** @var string[] */
|
||||
private $adslTenthValues = ['adslAtucCurrSnrMgn', 'adslAtucCurrAtn', 'adslAtucCurrOutputPwr', 'adslAturCurrSnrMgn', 'adslAturCurrAtn', 'adslAturCurrOutputPwr'];
|
||||
/** @var string[] */
|
||||
private $vdslTenthValues = ['xdsl2LineStatusActAtpDs', 'xdsl2LineStatusActAtpUs'];
|
||||
/** @var string[] */
|
||||
private $ifNameMap;
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function dependencies(): array
|
||||
{
|
||||
return ['ports'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function discover(OS $os): void
|
||||
{
|
||||
//discover if any port has dsl data. We use the pollXdsl functions, with the store parameter set to false
|
||||
$this->pollAdsl($os, false);
|
||||
$this->pollVdsl($os, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Poll data for this module and update the DB / RRD.
|
||||
* Try to keep this efficient and only run if discovery has indicated there is a reason to run.
|
||||
* Run frequently (default every 5 minutes)
|
||||
*
|
||||
* @param \LibreNMS\OS $os
|
||||
*/
|
||||
public function poll(OS $os): void
|
||||
{
|
||||
//only do polling if at least one portAdsl was discovered
|
||||
if ($os->getDevice()->portsAdsl()->exists()) {
|
||||
$this->pollAdsl($os);
|
||||
}
|
||||
|
||||
if ($os->getDevice()->portsVdsl()->exists()) {
|
||||
$this->pollVdsl($os);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function cleanup(Device $device): void
|
||||
{
|
||||
$device->portsAdsl()->delete();
|
||||
$device->portsVdsl()->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function dump(Device $device)
|
||||
{
|
||||
return [
|
||||
'ports_adsl' => $device->portsAdsl()->orderBy('ifIndex')
|
||||
->select(['ports_adsl.*', 'ifIndex'])
|
||||
->get()->map->makeHidden(['laravel_through_key', 'port_adsl_updated', 'port_id']),
|
||||
'ports_vdsl' => $device->portsVdsl()->orderBy('ifIndex')
|
||||
->select(['ports_vdsl.*', 'ifIndex'])
|
||||
->get()->map->makeHidden(['laravel_through_key', 'port_vdsl_updated', 'port_id']),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Poll data for this module and update the DB / RRD.
|
||||
* Try to keep this efficient and only run if discovery has indicated there is a reason to run.
|
||||
* Run frequently (default every 5 minutes)
|
||||
*
|
||||
* @param \LibreNMS\OS $os
|
||||
* @param bool $store
|
||||
*/
|
||||
private function pollAdsl(OS $os, $store = true): Collection
|
||||
{
|
||||
$adsl = \SnmpQuery::hideMib()->walk('ADSL-LINE-MIB::adslMibObjects')->table(1);
|
||||
$adslPorts = new Collection;
|
||||
|
||||
foreach ($adsl as $ifIndex => $data) {
|
||||
// Values are 1/10
|
||||
foreach ($this->adslTenthValues as $oid) {
|
||||
if (isset($data[$oid])) {
|
||||
$data[$oid] = $data[$oid] / 10;
|
||||
}
|
||||
}
|
||||
|
||||
$portAdsl = new PortAdsl($data);
|
||||
|
||||
// trim SnmpAdminStrings
|
||||
foreach ($this->trimAdminString as $oid) {
|
||||
$portAdsl->$oid = rtrim($portAdsl->$oid, '.');
|
||||
}
|
||||
|
||||
$portAdsl->port_id = $os->ifIndexToId($ifIndex);
|
||||
|
||||
if ($store) {
|
||||
$this->storeAdsl($portAdsl, $data, (int) $ifIndex, $os);
|
||||
echo ' ADSL(' . $portAdsl->adslLineCoding . '/' . Number::formatSi($portAdsl->adslAtucChanCurrTxRate, 2, 3, 'bps') . '/' . Number::formatSi($portAdsl->adslAturChanCurrTxRate, 2, 3, 'bps') . ') ';
|
||||
}
|
||||
|
||||
$adslPorts->push($portAdsl);
|
||||
}
|
||||
|
||||
ModuleModelObserver::observe(PortAdsl::class);
|
||||
|
||||
return $this->syncModels($os->getDevice(), 'portsAdsl', $adslPorts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Poll data for this module and update the DB / RRD.
|
||||
* Try to keep this efficient and only run if discovery has indicated there is a reason to run.
|
||||
* Run frequently (default every 5 minutes)
|
||||
*
|
||||
* @param \LibreNMS\OS $os
|
||||
* @param bool $store
|
||||
*/
|
||||
private function pollVdsl(OS $os, $store = true): Collection
|
||||
{
|
||||
$vdsl = \SnmpQuery::hideMib()->walk(['VDSL2-LINE-MIB::xdsl2ChannelStatusTable', 'VDSL2-LINE-MIB::xdsl2LineTable'])->table(1);
|
||||
$vdslPorts = new Collection;
|
||||
|
||||
foreach ($vdsl as $ifIndex => $data) {
|
||||
$portVdsl = new PortVdsl([
|
||||
'port_id' => $os->ifIndexToId($ifIndex),
|
||||
'xdsl2ChStatusActDataRateXtur' => $data['xdsl2ChStatusActDataRate']['xtur'] ?? 0,
|
||||
'xdsl2ChStatusActDataRateXtuc' => $data['xdsl2ChStatusActDataRate']['xtuc'] ?? 0,
|
||||
]);
|
||||
|
||||
foreach ($this->vdslTenthValues as $oid) {
|
||||
if (isset($data[$oid])) {
|
||||
$data[$oid] = $data[$oid] / 10;
|
||||
}
|
||||
}
|
||||
|
||||
$portVdsl->fill($data); // fill oids that are one to one
|
||||
|
||||
if ($store) {
|
||||
$this->storeVdsl($portVdsl, $data, (int) $ifIndex, $os);
|
||||
echo ' VDSL(' . $os->ifIndexToName($ifIndex) . '/' . Number::formatSi($portVdsl->xdsl2LineStatusAttainableRateDs, 2, 3, 'bps') . '/' . Number::formatSi($portVdsl->xdsl2LineStatusAttainableRateUs, 2, 3, 'bps') . ') ';
|
||||
}
|
||||
|
||||
$vdslPorts->push($portVdsl);
|
||||
}
|
||||
|
||||
ModuleModelObserver::observe(PortVdsl::class);
|
||||
|
||||
return $this->syncModels($os->getDevice(), 'portsVdsl', $vdslPorts);
|
||||
}
|
||||
|
||||
private function storeAdsl(PortAdsl $port, array $data, int $ifIndex, OS $os): void
|
||||
{
|
||||
$rrd_def = RrdDefinition::make()
|
||||
->addDataset('AtucCurrSnrMgn', 'GAUGE', 0, 635)
|
||||
->addDataset('AtucCurrAtn', 'GAUGE', 0, 635)
|
||||
->addDataset('AtucCurrOutputPwr', 'GAUGE', 0, 635)
|
||||
->addDataset('AtucCurrAttainableR', 'GAUGE', 0)
|
||||
->addDataset('AtucChanCurrTxRate', 'GAUGE', 0)
|
||||
->addDataset('AturCurrSnrMgn', 'GAUGE', 0, 635)
|
||||
->addDataset('AturCurrAtn', 'GAUGE', 0, 635)
|
||||
->addDataset('AturCurrOutputPwr', 'GAUGE', 0, 635)
|
||||
->addDataset('AturCurrAttainableR', 'GAUGE', 0)
|
||||
->addDataset('AturChanCurrTxRate', 'GAUGE', 0)
|
||||
->addDataset('AtucPerfLofs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfLoss', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfLprs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfESs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfInits', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfLofs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfLoss', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfLprs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfESs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucChanCorrectedBl', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucChanUncorrectBl', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturChanCorrectedBl', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturChanUncorrectBl', 'COUNTER', null, 100000000000);
|
||||
|
||||
$fields = [
|
||||
'AtucCurrSnrMgn' => ($data['adslAtucCurrSnrMgn'] ?? 0) > 1280 ? null : ($data['adslAtucCurrSnrMgn'] ?? null),
|
||||
'AtucCurrAtn' => $data['adslAtucCurrAtn'] ?? null,
|
||||
'AtucCurrOutputPwr' => $data['adslAtucCurrOutputPwr'] ?? null,
|
||||
'AtucCurrAttainableRate' => $data['adslAtucCurrAttainableRate'] ?? null,
|
||||
'AtucChanCurrTxRate' => $data['adslAtucChanCurrTxRate'] ?? null,
|
||||
'AturCurrSnrMgn' => ($data['adslAturCurrSnrMgn'] ?? 0) > 1280 ? null : ($data['adslAturCurrSnrMgn'] ?? null),
|
||||
'AturCurrAtn' => $data['adslAturCurrAtn'] ?? null,
|
||||
'AturCurrOutputPwr' => $data['adslAturCurrOutputPwr'] ?? null,
|
||||
'AturCurrAttainableRate' => $data['adslAturCurrAttainableRate'] ?? null,
|
||||
'AturChanCurrTxRate' => $data['adslAturChanCurrTxRate'] ?? null,
|
||||
'AtucPerfLofs' => $data['adslAtucPerfLofs'] ?? null,
|
||||
'AtucPerfLoss' => $data['adslAtucPerfLoss'] ?? null,
|
||||
'AtucPerfLprs' => $data['adslAtucPerfLprs'] ?? null,
|
||||
'AtucPerfESs' => $data['adslAtucPerfESs'] ?? null,
|
||||
'AtucPerfInits' => $data['adslAtucPerfInits'] ?? null,
|
||||
'AturPerfLofs' => $data['adslAturPerfLofs'] ?? null,
|
||||
'AturPerfLoss' => $data['adslAturPerfLoss'] ?? null,
|
||||
'AturPerfLprs' => $data['adslAturPerfLprs'] ?? null,
|
||||
'AturPerfESs' => $data['adslAturPerfESs'] ?? null,
|
||||
'AtucChanCorrectedBlks' => $data['adslAtucChanCorrectedBlks'] ?? null,
|
||||
'AtucChanUncorrectBlks' => $data['adslAtucChanUncorrectBlks'] ?? null,
|
||||
'AturChanCorrectedBlks' => $data['adslAturChanCorrectedBlks'] ?? null,
|
||||
'AturChanUncorrectBlks' => $data['adslAturChanUncorrectBlks'] ?? null,
|
||||
];
|
||||
|
||||
data_update($os->getDeviceArray(), 'adsl', [
|
||||
'ifName' => $os->ifIndexToName($ifIndex),
|
||||
'rrd_name' => Rrd::portName($port->port_id, 'adsl'),
|
||||
'rrd_def' => $rrd_def,
|
||||
], $fields);
|
||||
}
|
||||
|
||||
private function storeVdsl(PortVdsl $port, array $data, int $ifIndex, OS $os): void
|
||||
{
|
||||
// Attainable
|
||||
data_update($os->getDeviceArray(), 'xdsl2LineStatusAttainableRate', [
|
||||
'ifName' => $os->ifIndexToName($ifIndex),
|
||||
'rrd_name' => Rrd::portName($port->port_id, 'xdsl2LineStatusAttainableRate'),
|
||||
'rrd_def' => RrdDefinition::make()
|
||||
->addDataset('ds', 'GAUGE', 0)
|
||||
->addDataset('us', 'GAUGE', 0),
|
||||
], [
|
||||
'ds' => $data['xdsl2LineStatusAttainableRateDs'] ?? null,
|
||||
'us' => $data['xdsl2LineStatusAttainableRateUs'] ?? null,
|
||||
]);
|
||||
|
||||
// actual data rates
|
||||
data_update($os->getDeviceArray(), 'xdsl2LineStatusActRate', [
|
||||
'ifName' => $os->ifIndexToName($ifIndex),
|
||||
'rrd_name' => Rrd::portName($port->port_id, 'xdsl2ChStatusActDataRate'),
|
||||
'rrd_dev' => RrdDefinition::make()
|
||||
->addDataset('xtuc', 'GAUGE', 0)
|
||||
->addDataset('xtur', 'GAUGE', 0),
|
||||
], [
|
||||
'xtuc' => $data['xdsl2ChStatusActDataRate']['xtuc'] ?? null,
|
||||
'xtur' => $data['xdsl2ChStatusActDataRate']['xtur'] ?? null,
|
||||
]);
|
||||
|
||||
// power levels
|
||||
data_update($os->getDeviceArray(), 'xdsl2LineStatusActAtp', [
|
||||
'ifName' => $os->ifIndexToName($ifIndex),
|
||||
'rrd_name' => Rrd::portName($port->port_id, 'xdsl2LineStatusActAtp'),
|
||||
'rrd_def' => RrdDefinition::make()
|
||||
->addDataset('ds', 'GAUGE', 0)
|
||||
->addDataset('us', 'GAUGE', 0),
|
||||
], [
|
||||
'ds' => $data['xdsl2LineStatusActAtpDs'] ?? null,
|
||||
'us' => $data['xdsl2LineStatusActAtpUs'] ?? null,
|
||||
]);
|
||||
}
|
||||
}
|
@@ -35,6 +35,8 @@ trait ResolvesPortIds
|
||||
* @var array
|
||||
*/
|
||||
private $basePortIdMap;
|
||||
/** @var string[] */
|
||||
private $ifIndexToNameMap;
|
||||
|
||||
/**
|
||||
* Figure out the port_id from the BRIDGE-MIB::dot1dBasePort
|
||||
@@ -58,6 +60,21 @@ trait ResolvesPortIds
|
||||
return $this->ifIndexToPortIdMap()[$ifIndex] ?? 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get IF-MIB::ifName from IF-MIB::ifIndex
|
||||
*
|
||||
* @param int|string $ifIndex
|
||||
* @return string
|
||||
*/
|
||||
public function ifIndexToName($ifIndex): string
|
||||
{
|
||||
if ($this->ifIndexToNameMap === null) {
|
||||
$this->ifIndexToNameMap = $this->getDevice()->ports()->pluck('ifName', 'ifIndex')->all();
|
||||
}
|
||||
|
||||
return $this->ifIndexToNameMap[$ifIndex] ?? '';
|
||||
}
|
||||
|
||||
private function ifIndexToPortIdMap(): array
|
||||
{
|
||||
if ($this->ifIndexPortIdMap === null) {
|
||||
|
@@ -782,6 +782,11 @@ class Device extends BaseModel
|
||||
return $this->hasMany(\App\Models\Port::class, 'device_id', 'device_id');
|
||||
}
|
||||
|
||||
public function portsAdsl(): HasManyThrough
|
||||
{
|
||||
return $this->hasManyThrough(\App\Models\PortAdsl::class, \App\Models\Port::class, 'device_id', 'port_id');
|
||||
}
|
||||
|
||||
public function portsFdb(): HasMany
|
||||
{
|
||||
return $this->hasMany(\App\Models\PortsFdb::class, 'device_id', 'device_id');
|
||||
@@ -797,6 +802,11 @@ class Device extends BaseModel
|
||||
return $this->hasMany(\App\Models\PortStp::class, 'device_id', 'device_id');
|
||||
}
|
||||
|
||||
public function portsVdsl(): HasManyThrough
|
||||
{
|
||||
return $this->hasManyThrough(\App\Models\PortVdsl::class, \App\Models\Port::class, 'device_id', 'port_id');
|
||||
}
|
||||
|
||||
public function portsVlan(): HasMany
|
||||
{
|
||||
return $this->hasMany(\App\Models\PortVlan::class, 'device_id', 'device_id');
|
||||
|
@@ -29,6 +29,7 @@ class Port extends DeviceRelatedModel
|
||||
static::deleting(function (Port $port) {
|
||||
// delete related data
|
||||
$port->adsl()->delete();
|
||||
$port->vdsl()->delete();
|
||||
$port->fdbEntries()->delete();
|
||||
$port->ipv4()->delete();
|
||||
$port->ipv6()->delete();
|
||||
@@ -279,6 +280,11 @@ class Port extends DeviceRelatedModel
|
||||
return $this->hasMany(PortAdsl::class, 'port_id');
|
||||
}
|
||||
|
||||
public function vdsl(): HasMany
|
||||
{
|
||||
return $this->hasMany(PortVdsl::class, 'port_id');
|
||||
}
|
||||
|
||||
public function events(): MorphMany
|
||||
{
|
||||
return $this->morphMany(Eventlog::class, 'events', 'type', 'reference');
|
||||
|
@@ -2,9 +2,39 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
class PortAdsl extends PortRelatedModel
|
||||
use LibreNMS\Interfaces\Models\Keyable;
|
||||
|
||||
class PortAdsl extends PortRelatedModel implements Keyable
|
||||
{
|
||||
protected $table = 'ports_adsl';
|
||||
protected $primaryKey = 'port_id';
|
||||
public $timestamps = false;
|
||||
protected $fillable = [
|
||||
'port_id',
|
||||
'adslLineCoding',
|
||||
'adslLineType',
|
||||
'adslAtucInvVendorID',
|
||||
'adslAtucInvVersionNumber',
|
||||
'adslAtucCurrSnrMgn',
|
||||
'adslAtucCurrAtn',
|
||||
'adslAtucCurrOutputPwr',
|
||||
'adslAtucCurrAttainableRate',
|
||||
'adslAtucChanCurrTxRate',
|
||||
'adslAturInvSerialNumber',
|
||||
'adslAturInvVendorID',
|
||||
'adslAturInvVersionNumber',
|
||||
'adslAturChanCurrTxRate',
|
||||
'adslAturCurrSnrMgn',
|
||||
'adslAturCurrAtn',
|
||||
'adslAturCurrOutputPwr',
|
||||
'adslAturCurrAttainableRate',
|
||||
];
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getCompositeKey()
|
||||
{
|
||||
return $this->port_id;
|
||||
}
|
||||
}
|
||||
|
29
app/Models/PortVdsl.php
Normal file
29
app/Models/PortVdsl.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use LibreNMS\Interfaces\Models\Keyable;
|
||||
|
||||
class PortVdsl extends PortRelatedModel implements Keyable
|
||||
{
|
||||
protected $table = 'ports_vdsl';
|
||||
protected $primaryKey = 'port_id';
|
||||
public $timestamps = false;
|
||||
protected $fillable = [
|
||||
'port_id',
|
||||
'xdsl2LineStatusAttainableRateDs',
|
||||
'xdsl2LineStatusAttainableRateUs',
|
||||
'xdsl2ChStatusActDataRateXtur',
|
||||
'xdsl2ChStatusActDataRateXtuc',
|
||||
'xdsl2LineStatusActAtpDs',
|
||||
'xdsl2LineStatusActAtpUs',
|
||||
];
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function getCompositeKey()
|
||||
{
|
||||
return $this->port_id;
|
||||
}
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
class CreatePortsVdslTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('ports_vdsl', function (Blueprint $table) {
|
||||
$table->unsignedInteger('port_id')->unique();
|
||||
$table->timestamp('port_vdsl_updated')->useCurrent();
|
||||
$table->integer('xdsl2LineStatusAttainableRateDs')->default(0);
|
||||
$table->integer('xdsl2LineStatusAttainableRateUs')->default(0);
|
||||
$table->integer('xdsl2ChStatusActDataRateXtur')->default(0);
|
||||
$table->integer('xdsl2ChStatusActDataRateXtuc')->default(0);
|
||||
$table->decimal('xdsl2LineStatusActAtpDs')->default(0);
|
||||
$table->decimal('xdsl2LineStatusActAtpUs')->default(0);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::drop('ports_vdsl');
|
||||
}
|
||||
}
|
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
class UpdatePortsAdslTableWithDefaults extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('ports_adsl', function (Blueprint $table) {
|
||||
$table->string('adslLineCoding', 8)->default('')->change();
|
||||
$table->string('adslLineType', 16)->default('')->change();
|
||||
$table->string('adslAtucInvVendorID', 16)->default('')->change();
|
||||
$table->string('adslAtucInvVersionNumber', 16)->default('')->change();
|
||||
$table->decimal('adslAtucCurrSnrMgn', 5, 1)->default(0)->change();
|
||||
$table->decimal('adslAtucCurrAtn', 5, 1)->default(0)->change();
|
||||
$table->decimal('adslAtucCurrOutputPwr', 5, 1)->default(0)->change();
|
||||
$table->integer('adslAtucCurrAttainableRate')->default(0)->change();
|
||||
$table->integer('adslAtucChanCurrTxRate')->default(0)->change();
|
||||
$table->string('adslAturInvSerialNumber', 32)->default('')->change();
|
||||
$table->string('adslAturInvVendorID', 16)->default('')->change();
|
||||
$table->string('adslAturInvVersionNumber', 16)->default('')->change();
|
||||
$table->integer('adslAturChanCurrTxRate')->default(0)->change();
|
||||
$table->decimal('adslAturCurrSnrMgn', 5, 1)->default(0)->change();
|
||||
$table->decimal('adslAturCurrAtn', 5, 1)->default(0)->change();
|
||||
$table->decimal('adslAturCurrOutputPwr', 5, 1)->default(0)->change();
|
||||
$table->integer('adslAturCurrAttainableRate')->default(0)->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('ports_adsl', function (Blueprint $table) {
|
||||
$table->string('adslLineCoding', 8)->change();
|
||||
$table->string('adslLineType', 16)->change();
|
||||
$table->string('adslAtucInvVendorID', 8)->change();
|
||||
$table->string('adslAtucInvVersionNumber', 8)->change();
|
||||
$table->decimal('adslAtucCurrSnrMgn', 5, 1)->change();
|
||||
$table->decimal('adslAtucCurrAtn', 5, 1)->change();
|
||||
$table->decimal('adslAtucCurrOutputPwr', 5, 1)->change();
|
||||
$table->integer('adslAtucCurrAttainableRate')->change();
|
||||
$table->integer('adslAtucChanCurrTxRate')->change();
|
||||
$table->string('adslAturInvSerialNumber', 8)->change();
|
||||
$table->string('adslAturInvVendorID', 8)->change();
|
||||
$table->string('adslAturInvVersionNumber', 8)->change();
|
||||
$table->integer('adslAturChanCurrTxRate')->change();
|
||||
$table->decimal('adslAturCurrSnrMgn', 5, 1)->change();
|
||||
$table->decimal('adslAturCurrAtn', 5, 1)->change();
|
||||
$table->decimal('adslAturCurrOutputPwr', 5, 1)->change();
|
||||
$table->integer('adslAturCurrAttainableRate')->change();
|
||||
});
|
||||
}
|
||||
}
|
@@ -639,7 +639,6 @@ Please refer to [Port-Description-Parser](../Extensions/Interface-Description-Pa
|
||||
```bash
|
||||
lnms config:set enable_ports_etherlike false
|
||||
lnms config:set enable_ports_junoseatmvp false
|
||||
lnms config:set enable_ports_adsl true
|
||||
lnms config:set enable_ports_poe false
|
||||
```
|
||||
|
||||
|
@@ -93,7 +93,7 @@ $config['discovery_modules']['bgp-peers'] = true;
|
||||
$config['discovery_modules']['vlans'] = true;
|
||||
$config['discovery_modules']['vmware-vminfo'] = false;
|
||||
$config['discovery_modules']['libvirt-vminfo'] = false;
|
||||
$config['discovery_modules']['toner'] = false;
|
||||
$config['discovery_modules']['printer-supplies'] = false;
|
||||
$config['discovery_modules']['ucd-diskio'] = true;
|
||||
$config['discovery_modules']['applications'] = false;
|
||||
$config['discovery_modules']['services'] = true;
|
||||
@@ -103,6 +103,7 @@ $config['discovery_modules']['loadbalancers'] = false;
|
||||
$config['discovery_modules']['mef'] = false;
|
||||
$config['discovery_modules']['wireless'] = true;
|
||||
$config['discovery_modules']['fdb-table'] = true;
|
||||
$config['discovery_modules']['xdsl'] = false;
|
||||
```
|
||||
|
||||
## OS based Discovery config
|
||||
@@ -130,6 +131,8 @@ configured to be ignored by config options.
|
||||
|
||||
`ports-stack`: Same as ports except for stacks.
|
||||
|
||||
`xdsl`: Module to collect more metrics for xDSL interfaces.
|
||||
|
||||
`entity-physical`: Module to pick up the devices hardware support.
|
||||
|
||||
`processors`: Processor support for devices.
|
||||
@@ -181,7 +184,7 @@ device, with history data.
|
||||
|
||||
`libvirt-vminfo`: Detection of libvirt guests.
|
||||
|
||||
`toner`: Toner levels support.
|
||||
`printer-supplies`: Toner levels support.
|
||||
|
||||
`ucd-diskio`: Disk I/O support.
|
||||
|
||||
|
@@ -74,7 +74,7 @@ $config['poller_modules']['ports'] = true;
|
||||
$config['poller_modules']['nac'] = false;
|
||||
$config['poller_modules']['bgp-peers'] = true;
|
||||
$config['poller_modules']['junose-atm-vp'] = false;
|
||||
$config['poller_modules']['toner'] = false;
|
||||
$config['poller_modules']['printer-supplies'] = false;
|
||||
$config['poller_modules']['ucd-diskio'] = true;
|
||||
$config['poller_modules']['wireless'] = true;
|
||||
$config['poller_modules']['ospf'] = true;
|
||||
@@ -102,6 +102,7 @@ $config['poller_modules']['ntp'] = true;
|
||||
$config['poller_modules']['services'] = true;
|
||||
$config['poller_modules']['loadbalancers'] = false;
|
||||
$config['poller_modules']['mef'] = false;
|
||||
$config['poller_modules']['mef'] = false;
|
||||
```
|
||||
|
||||
## OS based Poller config
|
||||
@@ -149,13 +150,15 @@ $config['os']['linux']['poller_modules']['unix-agent'] = true;
|
||||
`ports`: This module will detect all ports on a device excluding ones
|
||||
configured to be ignored by config options.
|
||||
|
||||
`xdsl`: This module will collect more metrics for xdsl interfaces.
|
||||
|
||||
`nac`: Network Access Control (NAC) or 802.1X support.
|
||||
|
||||
`bgp-peers`: BGP detection and support.
|
||||
|
||||
`junose-atm-vp`: Juniper ATM support.
|
||||
|
||||
`toner`: Toner levels support.
|
||||
`printer-supplies`: Toner levels support.
|
||||
|
||||
`ucd-diskio`: Disk I/O support.
|
||||
|
||||
|
@@ -5,12 +5,12 @@
|
||||
"/css/app.css": "/css/app.css?id=bd093a6a2e2682bb59ef",
|
||||
"/js/vendor.js": "/js/vendor.js?id=c5fd3d75a63757080dbb",
|
||||
"/js/lang/de.js": "/js/lang/de.js?id=613b5ca9cd06ca15e384",
|
||||
"/js/lang/en.js": "/js/lang/en.js?id=b4dc5539b25bf7a31718",
|
||||
"/js/lang/fr.js": "/js/lang/fr.js?id=982d149de32e1867610c",
|
||||
"/js/lang/it.js": "/js/lang/it.js?id=e24bb9bad83e288b4617",
|
||||
"/js/lang/en.js": "/js/lang/en.js?id=efa23897934359283288",
|
||||
"/js/lang/fr.js": "/js/lang/fr.js?id=4540d71a19d8ca7c824b",
|
||||
"/js/lang/it.js": "/js/lang/it.js?id=71c68fae57a4a3647e43",
|
||||
"/js/lang/ru.js": "/js/lang/ru.js?id=f6b7c078755312a0907c",
|
||||
"/js/lang/sr.js": "/js/lang/sr.js?id=388e38b41f63e3517506",
|
||||
"/js/lang/uk.js": "/js/lang/uk.js?id=34f8698ff09b869db2f5",
|
||||
"/js/lang/uk.js": "/js/lang/uk.js?id=72f81fcbf77df09d0c82",
|
||||
"/js/lang/zh-CN.js": "/js/lang/zh-CN.js?id=4e081fbac70d969894bf",
|
||||
"/js/lang/zh-TW.js": "/js/lang/zh-TW.js?id=ed26425647721a42ee9d"
|
||||
}
|
||||
|
@@ -12,3 +12,7 @@ discovery:
|
||||
sysDescr:
|
||||
- 'AATO'
|
||||
- 'AAJZ'
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -13,3 +13,7 @@ discovery:
|
||||
-
|
||||
sysDescr_regex:
|
||||
- '/^DrayTek/'
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -20,3 +20,7 @@ discovery:
|
||||
mib_dir: checkpoint
|
||||
op: contains
|
||||
value: Gaia
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -11,3 +11,7 @@ discovery:
|
||||
- .1.3.6.1.4.1.890.1.5.13.7
|
||||
sysDescr:
|
||||
- IES
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -8,4 +8,7 @@ discovery:
|
||||
sysObjectID:
|
||||
- .1.3.6.1.4.1.890.1.5.13.7
|
||||
- .1.3.6.1.4.1.890.1.5.13.10
|
||||
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -14,3 +14,7 @@ discovery:
|
||||
- .1.3.6.1.4.1.890.1.5.13.15
|
||||
- .1.3.6.1.4.1.890.1.5.13.13
|
||||
- .1.3.6.1.4.1.890.1.5.13.16
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -39,6 +39,7 @@ poller_modules:
|
||||
cisco-otv: true
|
||||
cisco-vpdn: true
|
||||
ipmi: false
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
cisco-cef: true
|
||||
slas: true
|
||||
@@ -47,3 +48,4 @@ discovery_modules:
|
||||
cisco-pw: true
|
||||
vrf: true
|
||||
cisco-vrf-lite: true
|
||||
xdsl: true
|
||||
|
@@ -24,6 +24,7 @@ poller_modules:
|
||||
ipmi: false
|
||||
cisco-vpdn: true
|
||||
cisco-qfp: true
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
cisco-cef: true
|
||||
slas: true
|
||||
@@ -33,6 +34,7 @@ discovery_modules:
|
||||
vrf: true
|
||||
cisco-vrf-lite: true
|
||||
cisco-qfp: true
|
||||
xdsl: true
|
||||
discovery:
|
||||
-
|
||||
sysDescr:
|
||||
|
@@ -10,3 +10,7 @@ discovery:
|
||||
-
|
||||
sysObjectID:
|
||||
- .1.3.6.1.4.1.6066.1.
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -10,3 +10,7 @@ over:
|
||||
discovery:
|
||||
- sysObjectID:
|
||||
- .1.3.6.1.4.1.13191.
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -10,3 +10,7 @@ discovery:
|
||||
-
|
||||
sysObjectID:
|
||||
- .1.3.6.1.4.1.6368.2
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -11,3 +11,7 @@ discovery:
|
||||
-
|
||||
sysObjectID:
|
||||
- .1.3.6.1.4.1.2007.
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -17,5 +17,7 @@ discovery:
|
||||
- Versatile Routing Platform Software
|
||||
poller_modules:
|
||||
slas: true
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
slas: true
|
||||
xdsl: true
|
||||
|
@@ -9,3 +9,7 @@ over:
|
||||
discovery:
|
||||
-
|
||||
sysObjectID: [ .1.3.6.1.4.1.3902.1004., .1.3.6.1.4.1.3902.1015. ]
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
@@ -9,3 +9,7 @@ discovery:
|
||||
- '/^AC/'
|
||||
sysObjectID:
|
||||
- '.1.3.6.1.4.1.890'
|
||||
poller_modules:
|
||||
xdsl: true
|
||||
discovery_modules:
|
||||
xdsl: true
|
||||
|
8
includes/discovery/xdsl.inc.php
Normal file
8
includes/discovery/xdsl.inc.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
use LibreNMS\OS;
|
||||
|
||||
if (! $os instanceof OS) {
|
||||
$os = OS::make($device);
|
||||
}
|
||||
(new \LibreNMS\Modules\Xdsl())->discover($os);
|
25
includes/html/graphs/port/vdsl_attainable.inc.php
Normal file
25
includes/html/graphs/port/vdsl_attainable.inc.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
$rrd_filename = get_port_rrdfile_path($device['hostname'], $port['port_id'], 'xdsl2LineStatusAttainableRate');
|
||||
|
||||
$rrd_list[0]['filename'] = $rrd_filename;
|
||||
$rrd_list[0]['descr'] = 'Central to CPE';
|
||||
$rrd_list[0]['ds'] = 'ds';
|
||||
|
||||
$rrd_list[1]['filename'] = $rrd_filename;
|
||||
$rrd_list[1]['descr'] = 'CPE to Central';
|
||||
$rrd_list[1]['ds'] = 'us';
|
||||
|
||||
$unit_text = 'Bits/sec';
|
||||
|
||||
$units = '';
|
||||
$total_units = '';
|
||||
$colours = 'mixed';
|
||||
|
||||
$scale_min = '0';
|
||||
|
||||
$nototal = 1;
|
||||
|
||||
if ($rrd_list) {
|
||||
include 'includes/html/graphs/generic_multi_line.inc.php';
|
||||
}
|
25
includes/html/graphs/port/vdsl_power.inc.php
Normal file
25
includes/html/graphs/port/vdsl_power.inc.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
$rrd_filename = get_port_rrdfile_path($device['hostname'], $port['port_id'], 'xdsl2LineStatusActAtp');
|
||||
|
||||
$rrd_list[0]['filename'] = $rrd_filename;
|
||||
$rrd_list[0]['descr'] = 'Central to CPE';
|
||||
$rrd_list[0]['ds'] = 'ds';
|
||||
|
||||
$rrd_list[1]['filename'] = $rrd_filename;
|
||||
$rrd_list[1]['descr'] = 'CPE to Central';
|
||||
$rrd_list[1]['ds'] = 'us';
|
||||
|
||||
$unit_text = 'Dbm';
|
||||
|
||||
$units = '';
|
||||
$total_units = '';
|
||||
$colours = 'mixed';
|
||||
|
||||
$scale_min = '0';
|
||||
|
||||
$nototal = 1;
|
||||
|
||||
if ($rrd_list) {
|
||||
include 'includes/html/graphs/generic_multi_line.inc.php';
|
||||
}
|
25
includes/html/graphs/port/vdsl_speed.inc.php
Normal file
25
includes/html/graphs/port/vdsl_speed.inc.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
$rrd_filename = get_port_rrdfile_path($device['hostname'], $port['port_id'], 'xdsl2ChStatusActDataRate');
|
||||
|
||||
$rrd_list[0]['filename'] = $rrd_filename;
|
||||
$rrd_list[0]['descr'] = 'Central to CPE';
|
||||
$rrd_list[0]['ds'] = 'xtur';
|
||||
|
||||
$rrd_list[1]['filename'] = $rrd_filename;
|
||||
$rrd_list[1]['descr'] = 'CPE to Central';
|
||||
$rrd_list[1]['ds'] = 'xtuc';
|
||||
|
||||
$unit_text = 'Bits/sec';
|
||||
|
||||
$units = '';
|
||||
$total_units = '';
|
||||
$colours = 'mixed';
|
||||
|
||||
$scale_min = '0';
|
||||
|
||||
$nototal = 1;
|
||||
|
||||
if ($rrd_list) {
|
||||
include 'includes/html/graphs/generic_multi_line.inc.php';
|
||||
}
|
@@ -1,5 +1,9 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Device;
|
||||
use App\Models\Port;
|
||||
use App\Models\PortAdsl;
|
||||
use App\Models\PortVdsl;
|
||||
use App\Plugins\Hooks\PortTabHook;
|
||||
use LibreNMS\Util\Rewrite;
|
||||
use LibreNMS\Util\Url;
|
||||
@@ -81,11 +85,13 @@ if (dbFetchCell("SELECT COUNT(*) FROM `sensors` WHERE `device_id` = ? AND `entPh
|
||||
$menu_options['sensors'] = 'Health';
|
||||
}
|
||||
|
||||
if (dbFetchCell("SELECT COUNT(*) FROM `ports_adsl` WHERE `port_id` = '" . $port->port_id . "'")) {
|
||||
$menu_options['adsl'] = 'ADSL';
|
||||
if (PortAdsl::where('port_id', $port->port_id)->exists()) {
|
||||
$menu_options['xdsl'] = 'xDSL';
|
||||
} elseif (PortVdsl::where('port_id', $port->port_id)->exists()) {
|
||||
$menu_options['xdsl'] = 'xDSL';
|
||||
}
|
||||
|
||||
if (dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE `pagpGroupIfIndex` = '" . $port->ifIndex . "' and `device_id` = '" . $device['device_id'] . "'")) {
|
||||
if (DeviceCache::getPrimary()->ports()->where('pagpGroupIfIndex', $port->ifIndex)->exists()) {
|
||||
$menu_options['pagp'] = 'PAgP';
|
||||
}
|
||||
|
||||
@@ -103,7 +109,7 @@ if (count($components) > 0) {
|
||||
$menu_options['cbqos'] = 'CBQoS';
|
||||
}
|
||||
|
||||
$portModel = \App\Models\Port::find($port->port_id);
|
||||
$portModel = Port::find($port->port_id);
|
||||
|
||||
if (LibreNMS\Plugins::countHooks('port_container') || \PluginManager::hasHooks(PortTabHook::class, ['port' => $portModel])) {
|
||||
// Checking if any plugin implements the port_container. If yes, allow to display the menu_option
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
if (file_exists(get_port_rrdfile_path($device['hostname'], $port['port_id'], 'adsl'))) {
|
||||
if (Rrd::checkRrdExists(Rrd::name($device['hostname'], Rrd::portName($port['port_id'], 'adsl')))) {
|
||||
echo '<div class=graphhead>ADSL Current Line Speed</div>';
|
||||
$graph_type = 'port_adsl_speed';
|
||||
|
||||
@@ -26,3 +26,20 @@ if (file_exists(get_port_rrdfile_path($device['hostname'], $port['port_id'], 'ad
|
||||
|
||||
include 'includes/html/print-interface-graphs.inc.php';
|
||||
}
|
||||
|
||||
if (Rrd::checkRrdExists(Rrd::name($device['hostname'], Rrd::portName($port['port_id'], 'xdsl2LineStatusAttainableRate')))) {
|
||||
echo '<div class=graphhead>VDSL Current Line Speed</div>';
|
||||
$graph_type = 'port_vdsl_speed';
|
||||
|
||||
include 'includes/html/print-interface-graphs.inc.php';
|
||||
|
||||
echo '<div class=graphhead>VDSL Attainable Speed</div>';
|
||||
$graph_type = 'port_vdsl_attainable';
|
||||
|
||||
include 'includes/html/print-interface-graphs.inc.php';
|
||||
|
||||
echo '<div class=graphhead>VDSL Output Powers</div>';
|
||||
$graph_type = 'port_vdsl_power';
|
||||
|
||||
include 'includes/html/print-interface-graphs.inc.php';
|
||||
}
|
@@ -33,8 +33,8 @@ if (dbFetchCell("SELECT * FROM links AS L, ports AS I WHERE I.device_id = '" . $
|
||||
$menu_options['neighbours'] = 'Neighbours';
|
||||
}
|
||||
|
||||
if (dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE `ifType` = 'adsl'")) {
|
||||
$menu_options['adsl'] = 'ADSL';
|
||||
if (DeviceCache::getPrimary()->portsAdsl()->exists() || DeviceCache::getPrimary()->portsVdsl()->exists()) {
|
||||
$menu_options['xdsl'] = 'xDSL';
|
||||
}
|
||||
|
||||
$sep = '';
|
||||
@@ -123,7 +123,7 @@ if ($vars['view'] == 'minigraphs') {
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
} elseif ($vars['view'] == 'arp' || $vars['view'] == 'adsl' || $vars['view'] == 'neighbours' || $vars['view'] == 'fdb') {
|
||||
} elseif ($vars['view'] == 'arp' || $vars['view'] == 'xdsl' || $vars['view'] == 'neighbours' || $vars['view'] == 'fdb') {
|
||||
include 'ports/' . $vars['view'] . '.inc.php';
|
||||
} else {
|
||||
if ($vars['view'] == 'details') {
|
||||
|
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
|
||||
echo "<div style='margin: 5px;'><table border=0 cellspacing=0 cellpadding=5 width=100%>";
|
||||
|
||||
echo '<tr><th>Port</th><th>Traffic</th><th>Sync Speed</th><th>Attainable Speed</th><th>Attenuation</th><th>SNR Margin</th><th>Output Powers</th></tr>';
|
||||
$i = '0';
|
||||
$ports = dbFetchRows("select * from `ports` AS P, `ports_adsl` AS A WHERE P.device_id = ? AND A.port_id = P.port_id AND P.deleted = '0' ORDER BY `ifIndex` ASC", [$device['device_id']]);
|
||||
|
||||
foreach ($ports as $port) {
|
||||
include 'includes/html/print-interface-adsl.inc.php';
|
||||
$i++;
|
||||
}
|
||||
|
||||
echo '</table></div>';
|
||||
echo "<div style='min-height: 150px;'></div>";
|
28
includes/html/pages/device/ports/xdsl.inc.php
Normal file
28
includes/html/pages/device/ports/xdsl.inc.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
echo "<div style='margin: 5px;'><table border=0 cellspacing=0 cellpadding=5 width=100%>";
|
||||
|
||||
echo '<tr><th>Port</th><th>Traffic</th><th>Sync Speed</th><th>Attainable Speed</th><th>Attenuation</th><th>SNR Margin</th><th>Output Powers</th></tr>';
|
||||
$i = '0';
|
||||
|
||||
$ports = DeviceCache::getPrimary()->ports()->join('ports_adsl', 'ports.port_id', 'ports_adsl.port_id')
|
||||
->where('ports.deleted', '0')
|
||||
->orderby('ports.ifIndex', 'ASC')
|
||||
->get();
|
||||
|
||||
foreach ($ports as $port) {
|
||||
include 'includes/html/print-interface-adsl.inc.php';
|
||||
$i++;
|
||||
}
|
||||
|
||||
$ports = DeviceCache::getPrimary()->ports()->join('ports_vdsl', 'ports.port_id', '=', 'ports_vdsl.port_id')
|
||||
->where('ports.deleted', '0')
|
||||
->orderby('ports.ifIndex', 'ASC')
|
||||
->get();
|
||||
|
||||
foreach ($ports as $port) {
|
||||
include 'includes/html/print-interface-vdsl.inc.php';
|
||||
$i++;
|
||||
}
|
||||
echo '</table></div>';
|
||||
echo "<div style='min-height: 150px;'></div>";
|
@@ -13,6 +13,7 @@
|
||||
* @author LibreNMS Contributors
|
||||
*/
|
||||
|
||||
use App\Models\Device;
|
||||
use App\Models\Port;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
|
||||
@@ -92,11 +93,11 @@ if ((isset($vars['searchbar']) && $vars['searchbar'] != 'hide') || ! isset($vars
|
||||
$output .= "<select name='device_id' id='device_id' class='form-control input-sm'>";
|
||||
$output .= "<option value=''>All Devices</option>";
|
||||
|
||||
if (Auth::user()->hasGlobalRead()) {
|
||||
$results = dbFetchRows('SELECT `device_id`,`hostname`, `sysName` FROM `devices` ORDER BY `hostname`');
|
||||
} else {
|
||||
$results = dbFetchRows('SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysname` FROM `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` ORDER BY `hostname`', [Auth::id()]);
|
||||
}
|
||||
// if (Auth::user()->hasGlobalRead()) {
|
||||
$results = Device::hasAccess(Auth::user())->select('device_id', 'hostname', 'sysName')->orderBy('hostname');
|
||||
// } else {
|
||||
// $results = dbFetchRows('SELECT `D`.`device_id`,`D`.`hostname`, `D`.`sysname` FROM `devices` AS `D`, `devices_perms` AS `P` WHERE `P`.`user_id` = ? AND `P`.`device_id` = `D`.`device_id` ORDER BY `hostname`', [Auth::id()]);
|
||||
// }
|
||||
foreach ($results as $data) {
|
||||
$deviceselected = isset($vars['device_id']) && $data['device_id'] == $vars['device_id'] ? 'selected' : '';
|
||||
$ui_device = strlen(format_hostname($data)) > 15 ? substr(format_hostname($data), 0, 15) . '...' : format_hostname($data);
|
||||
|
@@ -23,8 +23,7 @@ if ($port['ifInErrors_delta'] > 0 || $port['ifOutErrors_delta'] > 0) {
|
||||
$error_img = '';
|
||||
}
|
||||
|
||||
echo "<tr style=\"background-color: $row_colour; padding: 5px;\" valign=top onmouseover=\"this.style.backgroundColor='" . Config::get('list_colour.highlight') . "';\" onmouseout=\"this.style.backgroundColor='$row_colour';\"
|
||||
onclick=\"location.href='device/" . $device['device_id'] . '/port/' . $port['port_id'] . "/'\" style='cursor: pointer;'>
|
||||
echo "<tr style=\"background-color: $row_colour; padding: 5px;\" valign=top onmouseover=\"this.style.backgroundColor='" . Config::get('list_colour.highlight') . "';\" onmouseout=\"this.style.backgroundColor='$row_colour';\" style='cursor: pointer;'>
|
||||
<td valign=top width=350>";
|
||||
echo ' <span class=list-large>
|
||||
' . generate_port_link($port, $port['ifIndex'] . '. ' . $port['label']) . '
|
||||
@@ -64,7 +63,7 @@ echo generate_port_link(
|
||||
);
|
||||
|
||||
echo '</td><td width=135>';
|
||||
echo '' . \LibreNMS\Util\Number::formatSi($port['adslAturChanCurrTxRate'], 2, 3, 'bps') . '/' . \LibreNMS\Util\Number::formatSi($port['adslAtucChanCurrTxRate'], 2, 3, 'bps');
|
||||
echo '' . \LibreNMS\Util\Number::formatSi($port['adslAtucChanCurrTxRate'], 2, 3, 'bps') . '/' . \LibreNMS\Util\Number::formatSi($port['adslAturChanCurrTxRate'], 2, 3, 'bps');
|
||||
echo '<br />';
|
||||
$port['graph_type'] = 'port_adsl_speed';
|
||||
echo generate_port_link(
|
||||
|
117
includes/html/print-interface-vdsl.inc.php
Normal file
117
includes/html/print-interface-vdsl.inc.php
Normal file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
// This file prints a table row for each interface
|
||||
use app\Models\Ipv4Address;
|
||||
use app\Models\Ipv6Address;
|
||||
use LibreNMS\Config;
|
||||
use LibreNMS\Util\IP;
|
||||
|
||||
$port['device_id'] = $device['device_id'];
|
||||
$port['hostname'] = $device['hostname'];
|
||||
|
||||
$if_id = $port['port_id'];
|
||||
|
||||
$port = cleanPort($port);
|
||||
|
||||
if (! is_integer($i / 2)) {
|
||||
$row_colour = Config::get('list_colour.even');
|
||||
} else {
|
||||
$row_colour = Config::get('list_colour.odd');
|
||||
}
|
||||
|
||||
if ($port['ifInErrors_delta'] > 0 || $port['ifOutErrors_delta'] > 0) {
|
||||
$error_img = generate_port_link($port, "<i class='fa fa-flag fa-lg' style='color:red' aria-hidden='true'></i>", 'port_errors');
|
||||
} else {
|
||||
$error_img = '';
|
||||
}
|
||||
|
||||
echo "<tr style=\"background-color: $row_colour; padding: 5px;\" valign=top onmouseover=\"this.style.backgroundColor='" . Config::get('list_colour.highlight') . "';\" onmouseout=\"this.style.backgroundColor='$row_colour';\" style='cursor: pointer;'>
|
||||
<td valign=top width=350>";
|
||||
echo ' <span class=list-large>
|
||||
' . generate_port_link($port, $port['ifIndex'] . '. ' . $port['label']) . '
|
||||
</span><br /><span class=interface-desc>' . \LibreNMS\Util\Clean::html($port['ifAlias'], []) . '</span>';
|
||||
|
||||
if ($port['ifAlias']) {
|
||||
echo '<br />';
|
||||
}
|
||||
|
||||
$break = '';
|
||||
if ($port_details) {
|
||||
foreach (Ipv4Address::where('port_id', (string) $port['port_id']) as $ip) {
|
||||
echo "$break <a class=interface-desc href=\"javascript:popUp('ajax/netcmd?cmd=whois&query=" . $ip['ipv4_address'] . "')\">" . $ip['ipv4_address'] . '/' . $ip['ipv4_prefixlen'] . '</a>';
|
||||
$break = ',';
|
||||
}
|
||||
|
||||
foreach (Ipv6Address::where('port_id', (string) $port['port_id']) as $ip6) {
|
||||
echo "$break <a class=interface-desc href=\"javascript:popUp('ajax/netcmd?cmd=whois&query=" . $ip6['ipv6_address'] . "')\">" . IP::parse($ip6['ipv6_address'], true) . '/' . $ip6['ipv6_prefixlen'] . '</a>';
|
||||
$break = ',';
|
||||
}
|
||||
}
|
||||
|
||||
echo '</span>';
|
||||
|
||||
$width = '120';
|
||||
$height = '40';
|
||||
$from = Config::get('time.day');
|
||||
|
||||
echo '</td><td width=135>';
|
||||
echo \LibreNMS\Util\Number::formatSi(($port['ifInOctets_rate'] * 8), 2, 3, 'bps') . " <i class='fa fa-arrows-v fa-lg icon-theme' aria-hidden='true'></i> " . \LibreNMS\Util\Number::formatSi(($port['ifOutOctets_rate'] * 8), 2, 3, 'bps');
|
||||
echo '<br />';
|
||||
$port['graph_type'] = 'port_bits';
|
||||
echo generate_port_link(
|
||||
$port,
|
||||
"<img src='graph.php?type=" . $port['graph_type'] . '&id=' . $port['port_id'] . '&from=' . $from . '&to=' . Config::get('time.now') . '&width=' . $width . '&height=' . $height . '&legend=no&bg=' . str_replace('#', '', $row_colour) . "'>",
|
||||
$port['graph_type']
|
||||
);
|
||||
|
||||
echo '</td><td width=135>';
|
||||
echo '' . \LibreNMS\Util\Number::formatSi($port['xdsl2ChStatusActDataRateXtur'], 2, 3, 'bps') . '/' . \LibreNMS\Util\Number::formatSi($port['xdsl2ChStatusActDataRateXtuc'], 2, 3, 'bps');
|
||||
echo '<br />';
|
||||
$port['graph_type'] = 'port_vdsl_speed';
|
||||
echo generate_port_link(
|
||||
$port,
|
||||
"<img src='graph.php?type=" . $port['graph_type'] . '&id=' . $port['port_id'] . '&from=' . $from . '&to=' . Config::get('time.now') . '&width=' . $width . '&height=' . $height . '&legend=no&bg=' . str_replace('#', '', $row_colour) . "'>",
|
||||
$port['graph_type']
|
||||
);
|
||||
|
||||
echo '</td><td width=135>';
|
||||
echo '' . \LibreNMS\Util\Number::formatSi($port['xdsl2LineStatusAttainableRateDs'], 2, 3, 'bps') . '/' . \LibreNMS\Util\Number::formatSi($port['xdsl2LineStatusAttainableRateUs'], 2, 3, 'bps');
|
||||
echo '<br />';
|
||||
$port['graph_type'] = 'port_vdsl_attainable';
|
||||
echo generate_port_link(
|
||||
$port,
|
||||
"<img src='graph.php?type=" . $port['graph_type'] . '&id=' . $port['port_id'] . '&from=' . $from . '&to=' . Config::get('time.now') . '&width=' . $width . '&height=' . $height . '&legend=no&bg=' . str_replace('#', '', $row_colour) . "'>",
|
||||
$port['graph_type']
|
||||
);
|
||||
|
||||
echo '</td><td width=135>';
|
||||
//echo '' . $port['adslAturCurrAtn'] . 'dB/' . $port['adslAtucCurrAtn'] . 'dB';
|
||||
//echo '<br />';
|
||||
//$port['graph_type'] = 'port_adsl_attenuation';
|
||||
//echo generate_port_link(
|
||||
// $port,
|
||||
// "<img src='graph.php?type=" . $port['graph_type'] . '&id=' . $port['port_id'] . '&from=' . $from . '&to=' . Config::get('time.now') . '&width=' . $width . '&height=' . $height . '&legend=no&bg=' . str_replace('#', '', $row_colour) . "'>",
|
||||
// $port['graph_type']
|
||||
//);
|
||||
|
||||
echo '</td><td width=135>';
|
||||
//echo '' . $port['adslAturCurrSnrMgn'] . 'dB/' . $port['adslAtucCurrSnrMgn'] . 'dB';
|
||||
//echo '<br />';
|
||||
//$port['graph_type'] = 'port_adsl_snr';
|
||||
//echo generate_port_link(
|
||||
// $port,
|
||||
// "<img src='graph.php?type=" . $port['graph_type'] . '&id=' . $port['port_id'] . '&from=' . $from . '&to=' . Config::get('time.now') . '&width=' . $width . '&height=' . $height . '&legend=no&bg=' . str_replace('#', '', $row_colour) . "'>",
|
||||
// $port['graph_type']
|
||||
//);
|
||||
|
||||
echo '</td><td width=135>';
|
||||
echo '' . $port['xdsl2LineStatusActAtpDs'] . 'dBm/' . $port['xdsl2LineStatusActAtpUs'] . 'dBm';
|
||||
echo '<br />';
|
||||
$port['graph_type'] = 'port_vdsl_power';
|
||||
echo generate_port_link(
|
||||
$port,
|
||||
"<img src='graph.php?type=" . $port['graph_type'] . '&id=' . $port['port_id'] . '&from=' . $from . '&to=' . Config::get('time.now') . '&width=' . $width . '&height=' . $height . '&legend=no&bg=' . str_replace('#', '', $row_colour) . "'>",
|
||||
$port['graph_type']
|
||||
);
|
||||
|
||||
echo '</td>';
|
@@ -6,6 +6,8 @@ $(function () {
|
||||
<?php
|
||||
|
||||
use App\Models\Port;
|
||||
use App\Models\PortAdsl;
|
||||
use App\Models\PortVdsl;
|
||||
use LibreNMS\Config;
|
||||
use LibreNMS\Util\IP;
|
||||
use LibreNMS\Util\Number;
|
||||
@@ -30,7 +32,8 @@ if (isset($int_colour)) {
|
||||
$i++;
|
||||
}
|
||||
|
||||
$port_adsl = dbFetchRow('SELECT * FROM `ports_adsl` WHERE `port_id` = ?', [$port['port_id']]);
|
||||
$port_adsl = PortAdsl::where('port_id', '=', $port['port_id']);
|
||||
$port_vdsl = PortVdsl::where('port_id', '=', $port['port_id']);
|
||||
|
||||
if ($port['ifInErrors_delta'] > 0 || $port['ifOutErrors_delta'] > 0) {
|
||||
$error_img = generate_port_link($port, "<i class='fa fa-flag fa-lg' style='color:red' aria-hidden='true'></i>", 'port_errors');
|
||||
@@ -141,22 +144,30 @@ if ($vlan_count > 1) {
|
||||
echo "<p style='color: green;'>" . $vrf['vrf_name'] . '</p>';
|
||||
}//end if
|
||||
|
||||
if (! empty($port_adsl['adslLineCoding'])) {
|
||||
if (! empty($port_adsl->adslLineCoding)) {
|
||||
echo "</td><td width=150 onclick=\"location.href='" . generate_port_url($port) . "'\" >";
|
||||
echo $port_adsl['adslLineCoding'] . '/' . rewrite_adslLineType($port_adsl['adslLineType']);
|
||||
echo $port_adsl->adslLineCoding . '/' . rewrite_adslLineType($port_adsl->adslLineType);
|
||||
echo '<br />';
|
||||
// ATU-C is CO -> ATU-C TX is the download speed for the CPE
|
||||
// ATU-R is the CPE -> ATU-R TX is the upload speed of the CPE
|
||||
echo 'Sync:' . Number::formatSi($port_adsl['adslAtucChanCurrTxRate'], 2, 3, 'bps') . '/' . Number::formatSi($port_adsl['adslAturChanCurrTxRate'], 2, 3, 'bps');
|
||||
echo 'Sync:' . Number::formatSi($port_adsl->adslAtucChanCurrTxRate, 2, 3, 'bps') . '/' . Number::formatSi($port_adsl->adslAturChanCurrTxRate, 2, 3, 'bps');
|
||||
echo '<br />';
|
||||
// This is the Receive Max AttainableRate, so :
|
||||
// adslAturCurrAttainableRate is DownloadMaxRate
|
||||
// adslAtucCurrAttainableRate is UploadMaxRate
|
||||
echo 'Max:' . Number::formatSi($port_adsl['adslAturCurrAttainableRate'], 2, 3, 'bps') . '/' . Number::formatSi($port_adsl['adslAtucCurrAttainableRate'], 2, 3, 'bps');
|
||||
echo 'Max:' . Number::formatSi($port_adsl->adslAturCurrAttainableRate, 2, 3, 'bps') . '/' . Number::formatSi($port_adsl->adslAtucCurrAttainableRate, 2, 3, 'bps');
|
||||
echo "</td><td width=150 onclick=\"location.href='" . generate_port_url($port) . "'\" >";
|
||||
echo 'Atten:' . $port_adsl['adslAturCurrAtn'] . 'dB/' . $port_adsl['adslAtucCurrAtn'] . 'dB';
|
||||
echo 'Atten:' . $port_adsl->adslAturCurrAtn . 'dB/' . $port_adsl->adslAtucCurrAtn . 'dB';
|
||||
echo '<br />';
|
||||
echo 'SNR:' . $port_adsl['adslAturCurrSnrMgn'] . 'dB/' . $port_adsl['adslAtucCurrSnrMgn'] . 'dB';
|
||||
echo 'SNR:' . $port_adsl->adslAturCurrSnrMgn . 'dB/' . $port_adsl->adslAtucCurrSnrMgn . 'dB';
|
||||
} elseif (! empty($port_vdsl->xdsl2LineStatusAttainableRateDs)) {
|
||||
echo "</td><td width=150 onclick=\"location.href='" . generate_port_url($port) . "'\" >";
|
||||
echo '<br />';
|
||||
// ATU-C is CO -> ATU-C TX is the download speed for the CPE
|
||||
// ATU-R is the CPE -> ATU-R TX is the upload speed of the CPE
|
||||
echo 'Sync:' . Number::formatSi($port_vdsl->xdsl2ChStatusActDataRateXtur, 2, 3, 'bps') . '/' . Number::formatSi($port_vdsl->xdsl2ChStatusActDataRateXtuc, 2, 3, 'bps');
|
||||
echo '<br />';
|
||||
echo 'Max:' . Number::formatSi($port_vdsl->xdsl2LineStatusAttainableRateDs, 2, 3, 'bps') . '/' . Number::formatSi($port_vdsl->xdsl2LineStatusAttainableRateUs, 2, 3, 'bps');
|
||||
} else {
|
||||
echo "</td><td width=150 onclick=\"location.href='" . generate_port_url($port) . "'\" >";
|
||||
if ($port['ifType'] && $port['ifType'] != '') {
|
||||
|
@@ -331,15 +331,6 @@ if (file_exists($os_file)) {
|
||||
require $os_file;
|
||||
}
|
||||
|
||||
if (Config::get('enable_ports_adsl')) {
|
||||
$device['xdsl_count'] = dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE `device_id` = ? AND `ifType` in ('adsl','vdsl','vdsl2')", [$device['device_id']]);
|
||||
}
|
||||
|
||||
if ($device['xdsl_count'] > '0') {
|
||||
echo 'ADSL ';
|
||||
$port_stats = snmpwalk_cache_oid($device, '.1.3.6.1.2.1.10.94.1', $port_stats, 'ADSL-LINE-MIB');
|
||||
}//end if
|
||||
|
||||
if (Config::get('enable_ports_poe')) {
|
||||
// Code by OS device
|
||||
|
||||
@@ -913,11 +904,6 @@ foreach ($ports as $port) {
|
||||
include 'ports/port-etherlike.inc.php';
|
||||
}
|
||||
|
||||
// Do ADSL MIB
|
||||
if (Config::get('enable_ports_adsl')) {
|
||||
include 'ports/port-adsl.inc.php';
|
||||
}
|
||||
|
||||
// Do PoE MIBs
|
||||
if (Config::get('enable_ports_poe')) {
|
||||
include 'ports/port-poe.inc.php';
|
||||
|
@@ -1,167 +0,0 @@
|
||||
<?php
|
||||
|
||||
use LibreNMS\RRD\RrdDefinition;
|
||||
use LibreNMS\Util\Number;
|
||||
|
||||
// Example snmpwalk with units
|
||||
// "Interval" oids have been filtered out
|
||||
// adslLineCoding.1 = dmt
|
||||
// adslLineType.1 = fastOrInterleaved
|
||||
// adslLineSpecific.1 = zeroDotZero
|
||||
// adslLineConfProfile.1 = "qwer"
|
||||
// adslAtucInvSerialNumber.1 = "IES-1000 AAM1008-61"
|
||||
// adslAtucInvVendorID.1 = "4"
|
||||
// adslAtucInvVersionNumber.1 = "0"
|
||||
// adslAtucCurrSnrMgn.1 = 150 tenth dB
|
||||
// adslAtucCurrAtn.1 = 20 tenth dB
|
||||
// adslAtucCurrStatus.1 = "00 00 "
|
||||
// adslAtucCurrOutputPwr.1 = 100 tenth dBm
|
||||
// adslAtucCurrAttainableRate.1 = 10272000 bps
|
||||
// adslAturInvVendorID.1 = "0"
|
||||
// adslAturInvVersionNumber.1 = "0"
|
||||
// adslAturCurrSnrMgn.1 = 210 tenth dB
|
||||
// adslAturCurrAtn.1 = 20 tenth dB
|
||||
// adslAturCurrStatus.1 = "00 00 "
|
||||
// adslAturCurrOutputPwr.1 = 0 tenth dBm
|
||||
// adslAturCurrAttainableRate.1 = 1056000 bps
|
||||
// adslAtucChanInterleaveDelay.1 = 6 milli-seconds
|
||||
// adslAtucChanCurrTxRate.1 = 8064000 bps
|
||||
// adslAtucChanPrevTxRate.1 = 0 bps
|
||||
// adslAturChanInterleaveDelay.1 = 9 milli-seconds
|
||||
// adslAturChanCurrTxRate.1 = 512000 bps
|
||||
// adslAturChanPrevTxRate.1 = 0 bps
|
||||
// adslAtucPerfLofs.1 = 0
|
||||
// adslAtucPerfLoss.1 = 0
|
||||
// adslAtucPerfLols.1 = 0
|
||||
// adslAtucPerfLprs.1 = 0
|
||||
// adslAtucPerfESs.1 = 0
|
||||
// adslAtucPerfInits.1 = 1
|
||||
// adslAtucPerfValidIntervals.1 = 0
|
||||
// adslAtucPerfInvalidIntervals.1 = 0
|
||||
// adslAturPerfLoss.1 = 0 seconds
|
||||
// adslAturPerfESs.1 = 0 seconds
|
||||
// adslAturPerfValidIntervals.1 = 0
|
||||
// adslAturPerfInvalidIntervals.1 = 0
|
||||
if (isset($this_port['adslLineCoding'])) {
|
||||
$rrd_name = Rrd::portName($port_id, 'adsl');
|
||||
$rrd_def = RrdDefinition::make()->disableNameChecking()
|
||||
->addDataset('AtucCurrSnrMgn', 'GAUGE', 0, 635)
|
||||
->addDataset('AtucCurrAtn', 'GAUGE', 0, 635)
|
||||
->addDataset('AtucCurrOutputPwr', 'GAUGE', 0, 635)
|
||||
->addDataset('AtucCurrAttainableR', 'GAUGE', 0)
|
||||
->addDataset('AtucChanCurrTxRate', 'GAUGE', 0)
|
||||
->addDataset('AturCurrSnrMgn', 'GAUGE', 0, 635)
|
||||
->addDataset('AturCurrAtn', 'GAUGE', 0, 635)
|
||||
->addDataset('AturCurrOutputPwr', 'GAUGE', 0, 635)
|
||||
->addDataset('AturCurrAttainableR', 'GAUGE', 0)
|
||||
->addDataset('AturChanCurrTxRate', 'GAUGE', 0)
|
||||
->addDataset('AtucPerfLofs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfLoss', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfLprs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfESs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucPerfInits', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfLofs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfLoss', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfLprs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturPerfESs', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucChanCorrectedBl', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AtucChanUncorrectBl', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturChanCorrectedBl', 'COUNTER', null, 100000000000)
|
||||
->addDataset('AturChanUncorrectBl', 'COUNTER', null, 100000000000);
|
||||
|
||||
$adsl_oids = [
|
||||
'AtucCurrSnrMgn',
|
||||
'AtucCurrAtn',
|
||||
'AtucCurrOutputPwr',
|
||||
'AtucCurrAttainableRate',
|
||||
'AtucChanCurrTxRate',
|
||||
'AturCurrSnrMgn',
|
||||
'AturCurrAtn',
|
||||
'AturCurrOutputPwr',
|
||||
'AturCurrAttainableRate',
|
||||
'AturChanCurrTxRate',
|
||||
'AtucPerfLofs',
|
||||
'AtucPerfLoss',
|
||||
'AtucPerfLprs',
|
||||
'AtucPerfESs',
|
||||
'AtucPerfInits',
|
||||
'AturPerfLofs',
|
||||
'AturPerfLoss',
|
||||
'AturPerfLprs',
|
||||
'AturPerfESs',
|
||||
'AtucChanCorrectedBlks',
|
||||
'AtucChanUncorrectBlks',
|
||||
'AturChanCorrectedBlks',
|
||||
'AturChanUncorrectBlks',
|
||||
];
|
||||
|
||||
$adsl_db_oids = [
|
||||
'adslLineCoding',
|
||||
'adslLineType',
|
||||
'adslAtucInvVendorID',
|
||||
'adslAtucInvVersionNumber',
|
||||
'adslAtucCurrSnrMgn',
|
||||
'adslAtucCurrAtn',
|
||||
'adslAtucCurrOutputPwr',
|
||||
'adslAtucCurrAttainableRate',
|
||||
'adslAturInvSerialNumber',
|
||||
'adslAturInvVendorID',
|
||||
'adslAturInvVersionNumber',
|
||||
'adslAtucChanCurrTxRate',
|
||||
'adslAturChanCurrTxRate',
|
||||
'adslAturCurrSnrMgn',
|
||||
'adslAturCurrAtn',
|
||||
'adslAturCurrOutputPwr',
|
||||
'adslAturCurrAttainableRate',
|
||||
];
|
||||
|
||||
$adsl_tenth_oids = [
|
||||
'adslAtucCurrSnrMgn',
|
||||
'adslAtucCurrAtn',
|
||||
'adslAtucCurrOutputPwr',
|
||||
'adslAturCurrSnrMgn',
|
||||
'adslAturCurrAtn',
|
||||
'adslAturCurrOutputPwr',
|
||||
];
|
||||
|
||||
foreach ($adsl_tenth_oids as $oid) {
|
||||
$this_port[$oid] = ($this_port[$oid] / 10);
|
||||
}
|
||||
|
||||
if (dbFetchCell('SELECT COUNT(*) FROM `ports_adsl` WHERE `port_id` = ?', [$port_id]) == '0') {
|
||||
dbInsert(['port_id' => $port_id], 'ports_adsl');
|
||||
}
|
||||
|
||||
$port['adsl_update'] = ['port_adsl_updated' => ['NOW()']];
|
||||
foreach ($adsl_db_oids as $oid) {
|
||||
$data = str_replace('"', '', $this_port[$oid]);
|
||||
// FIXME - do we need this?
|
||||
$port['adsl_update'][$oid] = $data;
|
||||
}
|
||||
|
||||
dbUpdate($port['adsl_update'], 'ports_adsl', '`port_id` = ?', [$port_id]);
|
||||
|
||||
if ($this_port['adslAtucCurrSnrMgn'] > '1280') {
|
||||
$this_port['adslAtucCurrSnrMgn'] = 'U';
|
||||
}
|
||||
|
||||
if ($this_port['adslAturCurrSnrMgn'] > '1280') {
|
||||
$this_port['adslAturCurrSnrMgn'] = 'U';
|
||||
}
|
||||
|
||||
$fields = [];
|
||||
foreach ($adsl_oids as $oid) {
|
||||
$oid = 'adsl' . $oid;
|
||||
$data = str_replace('"', '', $this_port[$oid]);
|
||||
// Set data to be "unknown" if it's garbled, unexistant or zero
|
||||
if (! is_numeric($data)) {
|
||||
$data = 'U';
|
||||
}
|
||||
$fields[$oid] = $data;
|
||||
}
|
||||
|
||||
$tags = compact('ifName', 'rrd_name', 'rrd_def');
|
||||
data_update($device, 'adsl', $tags, $fields);
|
||||
|
||||
echo 'ADSL (' . $this_port['adslLineCoding'] . '/' . Number::formatSi($this_port['adslAtucChanCurrTxRate'], 2, 3, 'bps') . '/' . Number::formatSi($this_port['adslAturChanCurrTxRate'], 2, 3, 'bps') . ')';
|
||||
}//end if
|
8
includes/polling/xdsl.inc.php
Normal file
8
includes/polling/xdsl.inc.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
use LibreNMS\OS;
|
||||
|
||||
if (! $os instanceof OS) {
|
||||
$os = OS::make($device);
|
||||
}
|
||||
(new \LibreNMS\Modules\Xdsl())->poll($os);
|
@@ -1066,6 +1066,13 @@
|
||||
"default": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"discovery_modules.xdsl": {
|
||||
"order": 255,
|
||||
"group": "discovery",
|
||||
"section": "discovery_modules",
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"discovery_modules.entity-physical": {
|
||||
"order": 110,
|
||||
"group": "discovery",
|
||||
@@ -4505,6 +4512,13 @@
|
||||
"default": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"poller_modules.xdsl": {
|
||||
"order": 345,
|
||||
"group": "poller",
|
||||
"section": "poller_modules",
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"poller_modules.customoid": {
|
||||
"default": true,
|
||||
"type": "boolean"
|
||||
|
@@ -1505,23 +1505,23 @@ ports_adsl:
|
||||
Columns:
|
||||
- { Field: port_id, Type: 'int unsigned', 'Null': false, Extra: '' }
|
||||
- { Field: port_adsl_updated, Type: timestamp, 'Null': false, Extra: '', Default: CURRENT_TIMESTAMP }
|
||||
- { Field: adslLineCoding, Type: varchar(8), 'Null': false, Extra: '' }
|
||||
- { Field: adslLineType, Type: varchar(16), 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucInvVendorID, Type: varchar(8), 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucInvVersionNumber, Type: varchar(8), 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucCurrSnrMgn, Type: 'decimal(5,1)', 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucCurrAtn, Type: 'decimal(5,1)', 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucCurrOutputPwr, Type: 'decimal(5,1)', 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucCurrAttainableRate, Type: int, 'Null': false, Extra: '' }
|
||||
- { Field: adslAtucChanCurrTxRate, Type: int, 'Null': false, Extra: '' }
|
||||
- { Field: adslAturInvSerialNumber, Type: varchar(8), 'Null': false, Extra: '' }
|
||||
- { Field: adslAturInvVendorID, Type: varchar(8), 'Null': false, Extra: '' }
|
||||
- { Field: adslAturInvVersionNumber, Type: varchar(8), 'Null': false, Extra: '' }
|
||||
- { Field: adslAturChanCurrTxRate, Type: int, 'Null': false, Extra: '' }
|
||||
- { Field: adslAturCurrSnrMgn, Type: 'decimal(5,1)', 'Null': false, Extra: '' }
|
||||
- { Field: adslAturCurrAtn, Type: 'decimal(5,1)', 'Null': false, Extra: '' }
|
||||
- { Field: adslAturCurrOutputPwr, Type: 'decimal(5,1)', 'Null': false, Extra: '' }
|
||||
- { Field: adslAturCurrAttainableRate, Type: int, 'Null': false, Extra: '' }
|
||||
- { Field: adslLineCoding, Type: varchar(8), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslLineType, Type: varchar(16), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslAtucInvVendorID, Type: varchar(16), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslAtucInvVersionNumber, Type: varchar(16), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslAtucCurrSnrMgn, Type: 'decimal(5,1)', 'Null': false, Extra: '', Default: '0.0' }
|
||||
- { Field: adslAtucCurrAtn, Type: 'decimal(5,1)', 'Null': false, Extra: '', Default: '0.0' }
|
||||
- { Field: adslAtucCurrOutputPwr, Type: 'decimal(5,1)', 'Null': false, Extra: '', Default: '0.0' }
|
||||
- { Field: adslAtucCurrAttainableRate, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: adslAtucChanCurrTxRate, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: adslAturInvSerialNumber, Type: varchar(32), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslAturInvVendorID, Type: varchar(16), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslAturInvVersionNumber, Type: varchar(16), 'Null': false, Extra: '', Default: '' }
|
||||
- { Field: adslAturChanCurrTxRate, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: adslAturCurrSnrMgn, Type: 'decimal(5,1)', 'Null': false, Extra: '', Default: '0.0' }
|
||||
- { Field: adslAturCurrAtn, Type: 'decimal(5,1)', 'Null': false, Extra: '', Default: '0.0' }
|
||||
- { Field: adslAturCurrOutputPwr, Type: 'decimal(5,1)', 'Null': false, Extra: '', Default: '0.0' }
|
||||
- { Field: adslAturCurrAttainableRate, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
Indexes:
|
||||
ports_adsl_port_id_unique: { Name: ports_adsl_port_id_unique, Columns: [port_id], Unique: true, Type: BTREE }
|
||||
ports_fdb:
|
||||
@@ -1637,6 +1637,18 @@ ports_stp:
|
||||
Indexes:
|
||||
PRIMARY: { Name: PRIMARY, Columns: [port_stp_id], Unique: true, Type: BTREE }
|
||||
ports_stp_device_id_vlan_port_index_unique: { Name: ports_stp_device_id_vlan_port_index_unique, Columns: [device_id, vlan, port_index], Unique: true, Type: BTREE }
|
||||
ports_vdsl:
|
||||
Columns:
|
||||
- { Field: port_id, Type: 'int unsigned', 'Null': false, Extra: '' }
|
||||
- { Field: port_vdsl_updated, Type: timestamp, 'Null': false, Extra: '', Default: CURRENT_TIMESTAMP }
|
||||
- { Field: xdsl2LineStatusAttainableRateDs, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: xdsl2LineStatusAttainableRateUs, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: xdsl2ChStatusActDataRateXtur, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: xdsl2ChStatusActDataRateXtuc, Type: int, 'Null': false, Extra: '', Default: '0' }
|
||||
- { Field: xdsl2LineStatusActAtpDs, Type: 'decimal(8,2)', 'Null': false, Extra: '', Default: '0.00' }
|
||||
- { Field: xdsl2LineStatusActAtpUs, Type: 'decimal(8,2)', 'Null': false, Extra: '', Default: '0.00' }
|
||||
Indexes:
|
||||
ports_vdsl_port_id_unique: { Name: ports_vdsl_port_id_unique, Columns: [port_id], Unique: true, Type: BTREE }
|
||||
ports_vlans:
|
||||
Columns:
|
||||
- { Field: port_vlan_id, Type: 'int unsigned', 'Null': false, Extra: auto_increment }
|
||||
|
@@ -83,5 +83,10 @@
|
||||
<description>Improvements to routeros wireless polling will lose historical data for 60GHz rate, frequency, and distance wireless sensors. See https://github.com/librenms/librenms/pull/12976 for more information.</description>
|
||||
<pubDate>Wed, 19 Oct 2021 18:00:00 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>ADSL discovery and polling moved to a new module</title>
|
||||
<description>Adsl statistics are now discovered and polled in a new module. Vdsl stats were also added. `lnms config:set enable_ports_adsl true`is not supported anymore. See https://github.com/librenms/librenms/pull/14207 for more information.</description>
|
||||
<pubDate>Wed, 7 Sept 2022 18:00:00 +0000</pubDate>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
@@ -212,6 +212,9 @@
|
||||
},
|
||||
"netscaler-vsvr": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"xdsl": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
@@ -353,6 +356,9 @@
|
||||
},
|
||||
"ip6-addresses": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"xdsl": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@@ -586,9 +586,6 @@ return [
|
||||
'stp' => [
|
||||
'description' => 'STP',
|
||||
],
|
||||
'toner' => [
|
||||
'description' => 'Toner',
|
||||
],
|
||||
'ucd-diskio' => [
|
||||
'description' => 'UCD DiskIO',
|
||||
],
|
||||
@@ -604,6 +601,12 @@ return [
|
||||
'wireless' => [
|
||||
'description' => 'Wireless',
|
||||
],
|
||||
'xdsl' => [
|
||||
'description' => 'xDSL',
|
||||
],
|
||||
'printer-supplies' => [
|
||||
'description' => 'Printer Supplies',
|
||||
],
|
||||
],
|
||||
'distributed_poller' => [
|
||||
'description' => 'Enable Distributed Polling (requires additional setup)',
|
||||
@@ -1095,9 +1098,6 @@ return [
|
||||
'junose-atm-vp' => [
|
||||
'description' => 'JunOS ATM VP',
|
||||
],
|
||||
'toner' => [
|
||||
'description' => 'Toner',
|
||||
],
|
||||
'ucd-diskio' => [
|
||||
'description' => 'UCD DiskIO',
|
||||
],
|
||||
@@ -1191,6 +1191,12 @@ return [
|
||||
'mpls' => [
|
||||
'description' => 'MPLS',
|
||||
],
|
||||
'xdsl' => [
|
||||
'description' => 'xDSL',
|
||||
],
|
||||
'printer-supplies' => [
|
||||
'description' => 'Printer Supplies',
|
||||
],
|
||||
],
|
||||
'ports_fdb_purge' => [
|
||||
'description' => 'Port FDB entries older than',
|
||||
|
@@ -373,13 +373,13 @@ return [
|
||||
],
|
||||
'discovery_modules' => [
|
||||
'arp-table' => [
|
||||
'description' => 'ARP Table',
|
||||
'description' => 'Table ARP',
|
||||
],
|
||||
'applications' => [
|
||||
'description' => 'Applications',
|
||||
],
|
||||
'bgp-peers' => [
|
||||
'description' => 'BGP Peers',
|
||||
'description' => 'Adjacences BGP',
|
||||
],
|
||||
'cisco-cbqos' => [
|
||||
'description' => 'Cisco CBQOS',
|
||||
@@ -406,10 +406,10 @@ return [
|
||||
'description' => 'Cisco VRF Lite',
|
||||
],
|
||||
'discovery-arp' => [
|
||||
'description' => 'Discovery ARP',
|
||||
'description' => 'Découverte ARP',
|
||||
],
|
||||
'discovery-protocols' => [
|
||||
'description' => 'Discovery Protocols',
|
||||
'description' => 'Protocoles de découverte',
|
||||
],
|
||||
'entity-physical' => [
|
||||
'description' => 'Entity Physical',
|
||||
@@ -459,8 +459,11 @@ return [
|
||||
'ports-stack' => [
|
||||
'description' => 'Ports Stack',
|
||||
],
|
||||
'printer-supplies' => [
|
||||
'description' => 'Ressources d\'impression',
|
||||
],
|
||||
'processors' => [
|
||||
'description' => 'Processors',
|
||||
'description' => 'Processeurs',
|
||||
],
|
||||
|
||||
'route' => [
|
||||
@@ -475,15 +478,11 @@ return [
|
||||
'description' => 'Services',
|
||||
],
|
||||
'storage' => [
|
||||
'description' => 'Storage',
|
||||
'description' => 'Stockage',
|
||||
],
|
||||
|
||||
'stp' => [
|
||||
'description' => 'STP',
|
||||
],
|
||||
'toner' => [
|
||||
'description' => 'Toner',
|
||||
],
|
||||
'ucd-diskio' => [
|
||||
'description' => 'UCD DiskIO',
|
||||
],
|
||||
@@ -499,6 +498,9 @@ return [
|
||||
'wireless' => [
|
||||
'description' => 'Wireless',
|
||||
],
|
||||
'xdsl' => [
|
||||
'description' => 'xDSL',
|
||||
],
|
||||
],
|
||||
'distributed_poller' => [
|
||||
'description' => 'Activation des sondeurs distribués (`Distributed Pollers`, nécessite des configurations additionnelles)',
|
||||
@@ -778,6 +780,146 @@ return [
|
||||
'ping' => [
|
||||
'description' => 'Chemin vers `ping`',
|
||||
],
|
||||
'poller_modules' => [
|
||||
'unix-agent' => [
|
||||
'description' => 'Unix Agent',
|
||||
],
|
||||
'os' => [
|
||||
'description' => 'OS',
|
||||
],
|
||||
'ipmi' => [
|
||||
'description' => 'IPMI',
|
||||
],
|
||||
'sensors' => [
|
||||
'description' => 'Sensors',
|
||||
],
|
||||
'processors' => [
|
||||
'description' => 'Processeurs',
|
||||
],
|
||||
'mempools' => [
|
||||
'description' => 'Mempools',
|
||||
],
|
||||
'storage' => [
|
||||
'description' => 'Stockage',
|
||||
],
|
||||
'netstats' => [
|
||||
'description' => 'Netstats',
|
||||
],
|
||||
'hr-mib' => [
|
||||
'description' => 'HR Mib',
|
||||
],
|
||||
'ucd-mib' => [
|
||||
'description' => 'Ucd Mib',
|
||||
],
|
||||
'ipSystemStats' => [
|
||||
'description' => 'ipSystemStats',
|
||||
],
|
||||
'ports' => [
|
||||
'description' => 'Ports',
|
||||
],
|
||||
'bgp-peers' => [
|
||||
'description' => 'Adjacences BGP',
|
||||
],
|
||||
'junose-atm-vp' => [
|
||||
'description' => 'JunOS ATM VP',
|
||||
],
|
||||
'ucd-diskio' => [
|
||||
'description' => 'UCD DiskIO',
|
||||
],
|
||||
'wifi' => [
|
||||
'description' => 'Wifi',
|
||||
],
|
||||
'wireless' => [
|
||||
'description' => 'Wireless',
|
||||
],
|
||||
'ospf' => [
|
||||
'description' => 'OSPF',
|
||||
],
|
||||
'isis' => [
|
||||
'description' => 'ISIS',
|
||||
],
|
||||
'cisco-ipsec-flow-monitor' => [
|
||||
'description' => 'Cisco IPSec flow Monitor',
|
||||
],
|
||||
'cisco-remote-access-monitor' => [
|
||||
'description' => 'Cisco remote access Monitor',
|
||||
],
|
||||
'cisco-cef' => [
|
||||
'description' => 'Cisco CEF',
|
||||
],
|
||||
'slas' => [
|
||||
'description' => 'Service Level Agreement Tracking',
|
||||
],
|
||||
'cisco-mac-accounting' => [
|
||||
'description' => 'Cisco MAC Accounting',
|
||||
],
|
||||
'cipsec-tunnels' => [
|
||||
'description' => 'Ipsec Tunnels',
|
||||
],
|
||||
'cisco-ace-serverfarms' => [
|
||||
'description' => 'Cisco ACE Serverfarms',
|
||||
],
|
||||
'cisco-asa-firewall' => [
|
||||
'description' => 'Cisco ASA Firewall',
|
||||
],
|
||||
'cisco-voice' => [
|
||||
'description' => 'Cisco Voice',
|
||||
],
|
||||
'cisco-cbqos' => [
|
||||
'description' => 'Cisco CBQOS',
|
||||
],
|
||||
'cisco-otv' => [
|
||||
'description' => 'Cisco OTV',
|
||||
],
|
||||
'cisco-qfp' => [
|
||||
'description' => 'Cisco QFP',
|
||||
],
|
||||
'cisco-vpdn' => [
|
||||
'description' => 'Cisco VPDN',
|
||||
],
|
||||
'nac' => [
|
||||
'description' => 'NAC',
|
||||
],
|
||||
'netscaler-vsvr' => [
|
||||
'description' => 'Netscaler VSVR',
|
||||
],
|
||||
'aruba-controller' => [
|
||||
'description' => 'Contrôleur Aruba',
|
||||
],
|
||||
'availability' => [
|
||||
'description' => 'Disponibilité',
|
||||
],
|
||||
'entity-physical' => [
|
||||
'description' => 'Entity Physical',
|
||||
],
|
||||
'entity-state' => [
|
||||
'description' => 'Entity State',
|
||||
],
|
||||
'applications' => [
|
||||
'description' => 'Applications',
|
||||
],
|
||||
'stp' => [
|
||||
'description' => 'STP',
|
||||
],
|
||||
'ntp' => [
|
||||
'description' => 'NTP',
|
||||
],
|
||||
'loadbalancers' => [
|
||||
'description' => 'Loadbalancers',
|
||||
],
|
||||
'mef' => [
|
||||
'description' => 'MEF',
|
||||
],
|
||||
'mpls' => [
|
||||
'description' => 'MPLS',
|
||||
],
|
||||
'xdsl' => [
|
||||
'description' => 'xDSL',
|
||||
],
|
||||
'printer-supplies' => [
|
||||
'description' => 'Ressources d\'impression',
|
||||
],
|
||||
],
|
||||
'ports_fdb_purge' => [
|
||||
'description' => 'Table port FDB, entrées plus anciennes que',
|
||||
'help' => 'Nettoyage effectué par daily.sh',
|
||||
|
2399
tests/data/draytek_vdsl.json
Normal file
2399
tests/data/draytek_vdsl.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1822,8 +1822,8 @@
|
||||
"ifName": "cellular1/0",
|
||||
"portName": null,
|
||||
"ifIndex": 3,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "true",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "down",
|
||||
@@ -1927,8 +1927,8 @@
|
||||
"ifName": "cellular1/1",
|
||||
"portName": null,
|
||||
"ifIndex": 4,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "true",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "down",
|
||||
@@ -2032,8 +2032,8 @@
|
||||
"ifName": "loopback600",
|
||||
"portName": null,
|
||||
"ifIndex": 5,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "false",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "up",
|
||||
@@ -2767,8 +2767,8 @@
|
||||
"ifName": "ethernet0/0",
|
||||
"portName": null,
|
||||
"ifIndex": 64537,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "true",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "up",
|
||||
@@ -2872,8 +2872,8 @@
|
||||
"ifName": "ethernet0/0",
|
||||
"portName": null,
|
||||
"ifIndex": 64538,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "true",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "down",
|
||||
@@ -2977,8 +2977,8 @@
|
||||
"ifName": "ethernet0/0",
|
||||
"portName": null,
|
||||
"ifIndex": 64539,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "true",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "down",
|
||||
@@ -3082,8 +3082,8 @@
|
||||
"ifName": "ethernet0/0",
|
||||
"portName": null,
|
||||
"ifIndex": 64540,
|
||||
"ifSpeed": null,
|
||||
"ifSpeed_prev": 0,
|
||||
"ifSpeed": 0,
|
||||
"ifSpeed_prev": null,
|
||||
"ifConnectorPresent": "true",
|
||||
"ifPromiscuousMode": "false",
|
||||
"ifOperStatus": "down",
|
||||
|
@@ -6192,5 +6192,26 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"os": {
|
||||
"discovery": {
|
||||
"devices": [
|
||||
{
|
||||
"sysName": "<private>",
|
||||
"sysObjectID": ".1.3.6.1.4.1.2007.1.1.236",
|
||||
"sysDescr": "Router model RS123w-4G S/N: RNPFDK019380272 SWL: BASE Teldat (c)1996 - 2019",
|
||||
"sysContact": null,
|
||||
"version": null,
|
||||
"hardware": null,
|
||||
"features": null,
|
||||
"os": "teldat",
|
||||
"type": "network",
|
||||
"serial": "RNPFDK019380272",
|
||||
"icon": "teldat.png",
|
||||
"location": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"poller": "matches discovery"
|
||||
}
|
||||
}
|
||||
|
@@ -4962,5 +4962,72 @@
|
||||
]
|
||||
},
|
||||
"poller": "matches discovery"
|
||||
},
|
||||
"xdsl": {
|
||||
"discovery": {
|
||||
"ports_adsl": [
|
||||
{
|
||||
"adslLineCoding": "2",
|
||||
"adslLineType": "0",
|
||||
"adslAtucInvVendorID": "",
|
||||
"adslAtucInvVersionNumber": "",
|
||||
"adslAtucCurrSnrMgn": "0.0",
|
||||
"adslAtucCurrAtn": "0.0",
|
||||
"adslAtucCurrOutputPwr": "0.0",
|
||||
"adslAtucCurrAttainableRate": 0,
|
||||
"adslAtucChanCurrTxRate": 0,
|
||||
"adslAturInvSerialNumber": "<private>",
|
||||
"adslAturInvVendorID": "",
|
||||
"adslAturInvVersionNumber": "",
|
||||
"adslAturChanCurrTxRate": 0,
|
||||
"adslAturCurrSnrMgn": "0.0",
|
||||
"adslAturCurrAtn": "0.0",
|
||||
"adslAturCurrOutputPwr": "13.0",
|
||||
"adslAturCurrAttainableRate": 0,
|
||||
"ifIndex": 17
|
||||
},
|
||||
{
|
||||
"adslLineCoding": "",
|
||||
"adslLineType": "",
|
||||
"adslAtucInvVendorID": "",
|
||||
"adslAtucInvVersionNumber": "",
|
||||
"adslAtucCurrSnrMgn": "0.0",
|
||||
"adslAtucCurrAtn": "0.0",
|
||||
"adslAtucCurrOutputPwr": "0.0",
|
||||
"adslAtucCurrAttainableRate": 0,
|
||||
"adslAtucChanCurrTxRate": 0,
|
||||
"adslAturInvSerialNumber": "",
|
||||
"adslAturInvVendorID": "",
|
||||
"adslAturInvVersionNumber": "",
|
||||
"adslAturChanCurrTxRate": 0,
|
||||
"adslAturCurrSnrMgn": "0.0",
|
||||
"adslAturCurrAtn": "0.0",
|
||||
"adslAturCurrOutputPwr": "0.0",
|
||||
"adslAturCurrAttainableRate": 0,
|
||||
"ifIndex": 18
|
||||
},
|
||||
{
|
||||
"adslLineCoding": "",
|
||||
"adslLineType": "",
|
||||
"adslAtucInvVendorID": "",
|
||||
"adslAtucInvVersionNumber": "",
|
||||
"adslAtucCurrSnrMgn": "0.0",
|
||||
"adslAtucCurrAtn": "0.0",
|
||||
"adslAtucCurrOutputPwr": "0.0",
|
||||
"adslAtucCurrAttainableRate": 0,
|
||||
"adslAtucChanCurrTxRate": 0,
|
||||
"adslAturInvSerialNumber": "",
|
||||
"adslAturInvVendorID": "",
|
||||
"adslAturInvVersionNumber": "",
|
||||
"adslAturChanCurrTxRate": 0,
|
||||
"adslAturCurrSnrMgn": "0.0",
|
||||
"adslAturCurrAtn": "0.0",
|
||||
"adslAturCurrOutputPwr": "0.0",
|
||||
"adslAturCurrAttainableRate": 0,
|
||||
"ifIndex": 19
|
||||
}
|
||||
]
|
||||
},
|
||||
"poller": "matches discovery"
|
||||
}
|
||||
}
|
||||
|
@@ -3630,5 +3630,93 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"os": {
|
||||
"discovery": {
|
||||
"devices": [
|
||||
{
|
||||
"sysName": "<private>",
|
||||
"sysObjectID": ".1.3.6.1.4.1.2007.1.1.191",
|
||||
"sysDescr": "Router model TV BASE VDSL2/ADSL WLAN 30 10 CPU MIPS32 S/N: 792/09606 Teldat (c)1996 - 2017",
|
||||
"sysContact": null,
|
||||
"version": null,
|
||||
"hardware": null,
|
||||
"features": null,
|
||||
"os": "teldat",
|
||||
"type": "network",
|
||||
"serial": "792/09606",
|
||||
"icon": "teldat.png",
|
||||
"location": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"poller": "matches discovery"
|
||||
},
|
||||
"xdsl": {
|
||||
"discovery": {
|
||||
"ports_adsl": [
|
||||
{
|
||||
"adslLineCoding": "2",
|
||||
"adslLineType": "0",
|
||||
"adslAtucInvVendorID": "",
|
||||
"adslAtucInvVersionNumber": "",
|
||||
"adslAtucCurrSnrMgn": "0.0",
|
||||
"adslAtucCurrAtn": "0.0",
|
||||
"adslAtucCurrOutputPwr": "0.0",
|
||||
"adslAtucCurrAttainableRate": 0,
|
||||
"adslAtucChanCurrTxRate": 0,
|
||||
"adslAturInvSerialNumber": "792/09606",
|
||||
"adslAturInvVendorID": "",
|
||||
"adslAturInvVersionNumber": "",
|
||||
"adslAturChanCurrTxRate": 0,
|
||||
"adslAturCurrSnrMgn": "0.0",
|
||||
"adslAturCurrAtn": "0.0",
|
||||
"adslAturCurrOutputPwr": "13.0",
|
||||
"adslAturCurrAttainableRate": 0,
|
||||
"ifIndex": 11
|
||||
},
|
||||
{
|
||||
"adslLineCoding": "",
|
||||
"adslLineType": "",
|
||||
"adslAtucInvVendorID": "",
|
||||
"adslAtucInvVersionNumber": "",
|
||||
"adslAtucCurrSnrMgn": "0.0",
|
||||
"adslAtucCurrAtn": "0.0",
|
||||
"adslAtucCurrOutputPwr": "0.0",
|
||||
"adslAtucCurrAttainableRate": 0,
|
||||
"adslAtucChanCurrTxRate": 0,
|
||||
"adslAturInvSerialNumber": "",
|
||||
"adslAturInvVendorID": "",
|
||||
"adslAturInvVersionNumber": "",
|
||||
"adslAturChanCurrTxRate": 0,
|
||||
"adslAturCurrSnrMgn": "0.0",
|
||||
"adslAturCurrAtn": "0.0",
|
||||
"adslAturCurrOutputPwr": "0.0",
|
||||
"adslAturCurrAttainableRate": 0,
|
||||
"ifIndex": 12
|
||||
},
|
||||
{
|
||||
"adslLineCoding": "",
|
||||
"adslLineType": "",
|
||||
"adslAtucInvVendorID": "",
|
||||
"adslAtucInvVersionNumber": "",
|
||||
"adslAtucCurrSnrMgn": "0.0",
|
||||
"adslAtucCurrAtn": "0.0",
|
||||
"adslAtucCurrOutputPwr": "0.0",
|
||||
"adslAtucCurrAttainableRate": 0,
|
||||
"adslAtucChanCurrTxRate": 0,
|
||||
"adslAturInvSerialNumber": "",
|
||||
"adslAturInvVendorID": "",
|
||||
"adslAturInvVersionNumber": "",
|
||||
"adslAturChanCurrTxRate": 0,
|
||||
"adslAturCurrSnrMgn": "0.0",
|
||||
"adslAturCurrAtn": "0.0",
|
||||
"adslAturCurrOutputPwr": "0.0",
|
||||
"adslAturCurrAttainableRate": 0,
|
||||
"ifIndex": 13
|
||||
}
|
||||
]
|
||||
},
|
||||
"poller": "matches discovery"
|
||||
}
|
||||
}
|
||||
|
415
tests/snmpsim/draytek_vdsl.snmprec
Normal file
415
tests/snmpsim/draytek_vdsl.snmprec
Normal file
@@ -0,0 +1,415 @@
|
||||
1.3.6.1.2.1.1.1.0|4|DrayTek Corporation, Router Model: Vigor165, Version: r13107_788_b947ce1af_beta, Build Date/Time:Jul 25 2022 15:55:31
|
||||
1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.7367
|
||||
1.3.6.1.2.1.1.3.0|67|24800
|
||||
1.3.6.1.2.1.1.4.0|4|
|
||||
1.3.6.1.2.1.1.5.0|4|modem01
|
||||
1.3.6.1.2.1.1.6.0|4|
|
||||
1.3.6.1.2.1.1.7.0|2|78
|
||||
1.3.6.1.2.1.2.1.0|2|11
|
||||
1.3.6.1.2.1.2.2.1.1.1|2|1
|
||||
1.3.6.1.2.1.2.2.1.1.4|2|4
|
||||
1.3.6.1.2.1.2.2.1.1.5|2|5
|
||||
1.3.6.1.2.1.2.2.1.1.6|2|6
|
||||
1.3.6.1.2.1.2.2.1.1.7|2|7
|
||||
1.3.6.1.2.1.2.2.1.1.8|2|8
|
||||
1.3.6.1.2.1.2.2.1.1.9|2|9
|
||||
1.3.6.1.2.1.2.2.1.1.10|2|10
|
||||
1.3.6.1.2.1.2.2.1.1.11|2|11
|
||||
1.3.6.1.2.1.2.2.1.1.12|2|12
|
||||
1.3.6.1.2.1.2.2.1.1.13|2|13
|
||||
1.3.6.1.2.1.2.2.1.2.1|4|LAN
|
||||
1.3.6.1.2.1.2.2.1.2.4|4|VDSL 08-0B-00-0F-00-07
|
||||
1.3.6.1.2.1.2.2.1.2.5|4|Resrved
|
||||
1.3.6.1.2.1.2.2.1.2.6|4|V-WAN3
|
||||
1.3.6.1.2.1.2.2.1.2.7|4|V-WAN4
|
||||
1.3.6.1.2.1.2.2.1.2.8|4|V-WAN5
|
||||
1.3.6.1.2.1.2.2.1.2.9|4|PVC channel 6
|
||||
1.3.6.1.2.1.2.2.1.2.10|4|PVC channel 7
|
||||
1.3.6.1.2.1.2.2.1.2.11|4|PVC channel 8
|
||||
1.3.6.1.2.1.2.2.1.2.12|4|LAN_PORT1
|
||||
1.3.6.1.2.1.2.2.1.2.13|4|LAN_PORT2
|
||||
1.3.6.1.2.1.2.2.1.3.1|2|6
|
||||
1.3.6.1.2.1.2.2.1.3.4|2|251
|
||||
1.3.6.1.2.1.2.2.1.3.5|2|6
|
||||
1.3.6.1.2.1.2.2.1.3.6|2|53
|
||||
1.3.6.1.2.1.2.2.1.3.7|2|53
|
||||
1.3.6.1.2.1.2.2.1.3.8|2|53
|
||||
1.3.6.1.2.1.2.2.1.3.9|2|53
|
||||
1.3.6.1.2.1.2.2.1.3.10|2|53
|
||||
1.3.6.1.2.1.2.2.1.3.11|2|53
|
||||
1.3.6.1.2.1.2.2.1.3.12|2|6
|
||||
1.3.6.1.2.1.2.2.1.3.13|2|6
|
||||
1.3.6.1.2.1.2.2.1.4.1|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.4|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.5|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.6|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.7|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.8|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.9|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.10|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.11|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.12|2|1500
|
||||
1.3.6.1.2.1.2.2.1.4.13|2|1500
|
||||
1.3.6.1.2.1.2.2.1.5.1|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.5.4|66|110162000
|
||||
1.3.6.1.2.1.2.2.1.5.5|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.5.6|66|0
|
||||
1.3.6.1.2.1.2.2.1.5.7|66|0
|
||||
1.3.6.1.2.1.2.2.1.5.8|66|0
|
||||
1.3.6.1.2.1.2.2.1.5.9|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.5.10|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.5.11|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.5.12|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.5.13|66|1000000000
|
||||
1.3.6.1.2.1.2.2.1.6.1|4x|001daa943004
|
||||
1.3.6.1.2.1.2.2.1.6.4|4x|001daa943005
|
||||
1.3.6.1.2.1.2.2.1.6.5|4|
|
||||
1.3.6.1.2.1.2.2.1.6.6|4x|001daa943007
|
||||
1.3.6.1.2.1.2.2.1.6.7|4x|001daa943008
|
||||
1.3.6.1.2.1.2.2.1.6.8|4x|001daa943009
|
||||
1.3.6.1.2.1.2.2.1.6.9|4|
|
||||
1.3.6.1.2.1.2.2.1.6.10|4|
|
||||
1.3.6.1.2.1.2.2.1.6.11|4|
|
||||
1.3.6.1.2.1.2.2.1.6.12|4x|001daa943004
|
||||
1.3.6.1.2.1.2.2.1.6.13|4x|001daa943004
|
||||
1.3.6.1.2.1.2.2.1.7.1|2|1
|
||||
1.3.6.1.2.1.2.2.1.7.4|2|1
|
||||
1.3.6.1.2.1.2.2.1.7.5|2|2
|
||||
1.3.6.1.2.1.2.2.1.7.6|2|2
|
||||
1.3.6.1.2.1.2.2.1.7.7|2|2
|
||||
1.3.6.1.2.1.2.2.1.7.8|2|2
|
||||
1.3.6.1.2.1.2.2.1.7.9|2|0
|
||||
1.3.6.1.2.1.2.2.1.7.10|2|0
|
||||
1.3.6.1.2.1.2.2.1.7.11|2|0
|
||||
1.3.6.1.2.1.2.2.1.7.12|2|1
|
||||
1.3.6.1.2.1.2.2.1.7.13|2|2
|
||||
1.3.6.1.2.1.2.2.1.8.1|2|1
|
||||
1.3.6.1.2.1.2.2.1.8.4|2|1
|
||||
1.3.6.1.2.1.2.2.1.8.5|2|2
|
||||
1.3.6.1.2.1.2.2.1.8.6|2|2
|
||||
1.3.6.1.2.1.2.2.1.8.7|2|2
|
||||
1.3.6.1.2.1.2.2.1.8.8|2|2
|
||||
1.3.6.1.2.1.2.2.1.8.9|2|0
|
||||
1.3.6.1.2.1.2.2.1.8.10|2|0
|
||||
1.3.6.1.2.1.2.2.1.8.11|2|0
|
||||
1.3.6.1.2.1.2.2.1.8.12|2|1
|
||||
1.3.6.1.2.1.2.2.1.8.13|2|2
|
||||
1.3.6.1.2.1.2.2.1.9.1|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.4|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.5|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.6|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.7|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.8|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.9|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.10|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.11|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.12|67|0
|
||||
1.3.6.1.2.1.2.2.1.9.13|67|0
|
||||
1.3.6.1.2.1.2.2.1.10.1|65|4509363
|
||||
1.3.6.1.2.1.2.2.1.10.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.10.12|65|4518898
|
||||
1.3.6.1.2.1.2.2.1.10.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.1|65|1277
|
||||
1.3.6.1.2.1.2.2.1.11.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.11.12|65|13763
|
||||
1.3.6.1.2.1.2.2.1.11.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.1|65|801
|
||||
1.3.6.1.2.1.2.2.1.12.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.12.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.1|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.13.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.1|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.14.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.1|65|137
|
||||
1.3.6.1.2.1.2.2.1.15.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.15.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.1|65|12229826
|
||||
1.3.6.1.2.1.2.2.1.16.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.16.12|65|12232151
|
||||
1.3.6.1.2.1.2.2.1.16.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.1|65|1432
|
||||
1.3.6.1.2.1.2.2.1.17.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.17.12|65|15596
|
||||
1.3.6.1.2.1.2.2.1.17.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.1|65|25
|
||||
1.3.6.1.2.1.2.2.1.18.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.18.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.1|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.19.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.1|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.4|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.5|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.6|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.7|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.8|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.9|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.10|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.11|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.12|65|0
|
||||
1.3.6.1.2.1.2.2.1.20.13|65|0
|
||||
1.3.6.1.2.1.2.2.1.21.1|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.4|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.5|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.6|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.7|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.8|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.9|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.10|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.11|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.12|66|0
|
||||
1.3.6.1.2.1.2.2.1.21.13|66|0
|
||||
1.3.6.1.2.1.2.2.1.22.1|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.4|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.5|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.6|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.7|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.8|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.9|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.10|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.11|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.12|6|0.0
|
||||
1.3.6.1.2.1.2.2.1.22.13|6|0.0
|
||||
1.3.6.1.2.1.4.1.0|2|1
|
||||
1.3.6.1.2.1.4.2.0|2|255
|
||||
1.3.6.1.2.1.4.3.0|65|2342
|
||||
1.3.6.1.2.1.4.4.0|65|0
|
||||
1.3.6.1.2.1.4.5.0|65|0
|
||||
1.3.6.1.2.1.4.6.0|65|0
|
||||
1.3.6.1.2.1.4.7.0|65|0
|
||||
1.3.6.1.2.1.4.8.0|65|125
|
||||
1.3.6.1.2.1.4.9.0|65|2299
|
||||
1.3.6.1.2.1.4.10.0|65|1503
|
||||
1.3.6.1.2.1.4.11.0|65|0
|
||||
1.3.6.1.2.1.4.12.0|65|0
|
||||
1.3.6.1.2.1.4.13.0|2|0
|
||||
1.3.6.1.2.1.4.14.0|65|0
|
||||
1.3.6.1.2.1.4.15.0|65|0
|
||||
1.3.6.1.2.1.4.16.0|65|0
|
||||
1.3.6.1.2.1.4.17.0|65|0
|
||||
1.3.6.1.2.1.4.18.0|65|0
|
||||
1.3.6.1.2.1.4.19.0|65|0
|
||||
1.3.6.1.2.1.4.20.1.1.10.30.0.2|64x|0a1e0002
|
||||
1.3.6.1.2.1.4.20.1.2.10.30.0.2|2|1
|
||||
1.3.6.1.2.1.4.20.1.3.10.30.0.2|64x|ffffff00
|
||||
1.3.6.1.2.1.4.20.1.4.10.30.0.2|2|1
|
||||
1.3.6.1.2.1.4.20.1.5.10.30.0.2|2|65535
|
||||
1.3.6.1.2.1.4.23.0|65|0
|
||||
1.3.6.1.2.1.5.1.0|65|35
|
||||
1.3.6.1.2.1.5.2.0|65|0
|
||||
1.3.6.1.2.1.5.3.0|65|14
|
||||
1.3.6.1.2.1.5.4.0|65|0
|
||||
1.3.6.1.2.1.5.5.0|65|0
|
||||
1.3.6.1.2.1.5.6.0|65|0
|
||||
1.3.6.1.2.1.5.7.0|65|0
|
||||
1.3.6.1.2.1.5.8.0|65|21
|
||||
1.3.6.1.2.1.5.9.0|65|0
|
||||
1.3.6.1.2.1.5.10.0|65|0
|
||||
1.3.6.1.2.1.5.11.0|65|0
|
||||
1.3.6.1.2.1.5.12.0|65|0
|
||||
1.3.6.1.2.1.5.13.0|65|0
|
||||
1.3.6.1.2.1.5.14.0|65|21
|
||||
1.3.6.1.2.1.5.15.0|65|0
|
||||
1.3.6.1.2.1.5.16.0|65|0
|
||||
1.3.6.1.2.1.5.17.0|65|0
|
||||
1.3.6.1.2.1.5.18.0|65|0
|
||||
1.3.6.1.2.1.5.19.0|65|0
|
||||
1.3.6.1.2.1.5.20.0|65|0
|
||||
1.3.6.1.2.1.5.21.0|65|0
|
||||
1.3.6.1.2.1.5.22.0|65|21
|
||||
1.3.6.1.2.1.5.23.0|65|0
|
||||
1.3.6.1.2.1.5.24.0|65|0
|
||||
1.3.6.1.2.1.5.25.0|65|0
|
||||
1.3.6.1.2.1.5.26.0|65|0
|
||||
1.3.6.1.2.1.6.1.0|2|1
|
||||
1.3.6.1.2.1.6.2.0|2|0
|
||||
1.3.6.1.2.1.6.3.0|2|0
|
||||
1.3.6.1.2.1.6.4.0|2|-1
|
||||
1.3.6.1.2.1.6.5.0|65|0
|
||||
1.3.6.1.2.1.6.6.0|65|73
|
||||
1.3.6.1.2.1.6.7.0|65|0
|
||||
1.3.6.1.2.1.6.8.0|65|0
|
||||
1.3.6.1.2.1.6.9.0|66|0
|
||||
1.3.6.1.2.1.6.10.0|65|1111
|
||||
1.3.6.1.2.1.6.11.0|65|1104
|
||||
1.3.6.1.2.1.6.12.0|65|4
|
||||
1.3.6.1.2.1.6.14.0|65|0
|
||||
1.3.6.1.2.1.6.15.0|65|0
|
||||
1.3.6.1.2.1.7.1.0|65|328
|
||||
1.3.6.1.2.1.7.2.0|65|0
|
||||
1.3.6.1.2.1.7.3.0|65|0
|
||||
1.3.6.1.2.1.7.4.0|65|355
|
||||
1.3.6.1.2.1.10.94.1.1.1.1.1.4|2|2
|
||||
1.3.6.1.2.1.10.94.1.1.1.1.2.4|2|2
|
||||
1.3.6.1.2.1.10.94.1.1.1.1.3.4|6|0.0
|
||||
1.3.6.1.2.1.10.94.1.1.1.1.4.4|4x|44454656414c0000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.1.1.5.4|4x|44454656414c0000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.1.4|4x|0000000000000000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.2.4|4x|4452415954454b00000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.3.4|4x|0000000000000000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.4.4|2|5
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.5.4|66|13
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.6.4|4x|53484f5754494d45000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.7.4|2|12
|
||||
1.3.6.1.2.1.10.94.1.1.2.1.8.4|66|113648992
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.1.4|4x|0000000000000000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.2.4|4x|0000000000000000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.3.4|4x|0000000000000000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.4.4|2|5
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.5.4|66|16
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.6.4|4x|0000000000000000000000000000000000
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.7.4|2|9
|
||||
1.3.6.1.2.1.10.94.1.1.3.1.8.4|66|34066000
|
||||
1.3.6.1.2.1.10.94.1.1.4.1.1.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.4.1.2.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.4.1.3.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.4.1.4.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.5.1.1.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.5.1.2.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.5.1.3.4|66|0
|
||||
1.3.6.1.2.1.10.94.1.1.5.1.4.4|66|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.1.4.1|2|1
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.1.4.2|2|2
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.2.4.1|66|110162000
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.2.4.2|66|33029000
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.3.4.1|66|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.3.4.2|66|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.4.4.1|2|13
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.4.4.2|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.5.4.1|2|340
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.5.4.2|2|400
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.6.4.1|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.6.4.2|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.7.4.1|2|32
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.7.4.2|2|32
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.8.4.1|2|16
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.8.4.2|2|16
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.9.4.1|2|16
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.9.4.2|2|16
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.10.4.1|2|1
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.10.4.2|2|1
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.11.4.1|2|32
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.11.4.2|2|32
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.12.4.1|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.12.4.2|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.13.4.1|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.13.4.2|2|0
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.14.4.1|2|1
|
||||
1.3.6.1.2.1.10.251.1.2.2.1.14.4.2|2|1
|
||||
1.3.6.1.2.1.11.1.0|65|377
|
||||
1.3.6.1.2.1.11.2.0|65|377
|
||||
1.3.6.1.2.1.11.3.0|65|0
|
||||
1.3.6.1.2.1.11.4.0|65|0
|
||||
1.3.6.1.2.1.11.5.0|65|0
|
||||
1.3.6.1.2.1.11.6.0|65|0
|
||||
1.3.6.1.2.1.11.8.0|65|0
|
||||
1.3.6.1.2.1.11.9.0|65|0
|
||||
1.3.6.1.2.1.11.10.0|65|0
|
||||
1.3.6.1.2.1.11.11.0|65|0
|
||||
1.3.6.1.2.1.11.12.0|65|0
|
||||
1.3.6.1.2.1.11.13.0|65|387
|
||||
1.3.6.1.2.1.11.14.0|65|0
|
||||
1.3.6.1.2.1.11.15.0|65|0
|
||||
1.3.6.1.2.1.11.16.0|65|391
|
||||
1.3.6.1.2.1.11.17.0|65|0
|
||||
1.3.6.1.2.1.11.18.0|65|0
|
||||
1.3.6.1.2.1.11.19.0|65|0
|
||||
1.3.6.1.2.1.11.20.0|65|0
|
||||
1.3.6.1.2.1.11.21.0|65|0
|
||||
1.3.6.1.2.1.11.22.0|65|0
|
||||
1.3.6.1.2.1.11.24.0|65|0
|
||||
1.3.6.1.2.1.11.25.0|65|0
|
||||
1.3.6.1.2.1.11.26.0|65|0
|
||||
1.3.6.1.2.1.11.27.0|65|0
|
||||
1.3.6.1.2.1.11.28.0|65|401
|
||||
1.3.6.1.2.1.11.29.0|65|0
|
||||
1.3.6.1.2.1.11.30.0|2|1
|
||||
1.3.6.1.2.1.25.2.3.1.0|2|73
|
||||
1.3.6.1.2.1.25.3.3.1.1.0|2|1
|
||||
1.3.6.1.2.1.25.3.3.1.2.0|2|3
|
||||
1.3.6.1.4.1.7367.3.1.0|4|Vigor165
|
||||
1.3.6.1.4.1.7367.3.2.0|4|r13107_788_b947ce1af_beta V421_165166_423FW
|
||||
1.3.6.1.4.1.7367.3.3.0|4|Jul 25 2022 15:55:31
|
||||
1.3.6.1.4.1.7367.3.4.0|4|VDSL 08-0B-00-0F-00-07
|
||||
1.3.6.1.4.1.7367.3.5.0|4|Netherlands
|
||||
1.3.6.1.4.1.7367.3.7.0|2|73
|
||||
1.3.6.1.4.1.7367.3.8.0|4|001DAA943004
|
||||
1.3.6.1.6.3.15.1.2.1.0|2|1
|
Reference in New Issue
Block a user