Add MPLS Support (#10263)

* WIP - Add MPLS Support
This introduce the generic MPLS support
- New database tables for MPLS LSPs
- actually discovery and polling on NOKIA SR OS (Timetra) devices
- new routing->MPLS HTML pages

- ToDo MPLS LSP paths table and views
Suggestions and improvements are welcome

* add db schema

* some fixes

* add path table, discovery and polling

* add path views

* add test data

* Convert MPLS module to new style
Implement a SyncsModels trait to simplify code a lot

* abs() for negative value from snmp (bug?), test data

* fix db schema

* Fix up test data, remove uneeded data in json

* fix whitespace
This commit is contained in:
Vitali Kari 2019-06-06 23:12:13 +02:00 committed by Tony Murray
parent 2f96570c3f
commit 00b148dbd3
29 changed files with 17012 additions and 3899 deletions

View File

@ -0,0 +1,60 @@
<?php
/**
* SyncsModels.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Tony Murray
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\DB;
trait SyncsModels
{
/**
* Sync several models for a device's relationship
* Model must implement \LibreNMS\Interfaces\Models\Keyable interface
*
* @param \App\Models\Device $device
* @param string $relationship
* @param \Illuminate\Support\Collection $models
* @return \Illuminate\Support\Collection
*/
protected function syncModels($device, $relationship, $models)
{
$models = $models->keyBy->getCompositeKey();
$existing = $device->$relationship->keyBy->getCompositeKey();
foreach ($existing as $key => $existing_lsp) {
if ($models->offsetExists($key)) {
// update
$existing_lsp->fill($models->get($key)->getAttributes())->save();
} else {
// delete
$existing_lsp->delete();
$existing->forget($key);
}
}
$new = $models->diffKeys($existing);
$device->$relationship()->saveMany($new);
return $existing->merge($new);
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* MplisDiscovery.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Tony Murray
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\Interfaces\Discovery;
use Illuminate\Support\Collection;
interface MplsDiscovery
{
/**
* @return Collection MplsLsp objects
*/
public function discoverMplsLsps();
/**
* @param Collection $lsps collecton of synchronized lsp objects from discoverMplsLsps()
* @return Collection MplsLspPath objects
*/
public function discoverMplsPaths($lsps);
}

View File

@ -0,0 +1,35 @@
<?php
/**
* Keyable.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Tony Murray
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\Interfaces\Models;
interface Keyable
{
/**
* Get a string that can identify a unique instance of this model
* @return string
*/
public function getCompositeKey();
}

View File

@ -0,0 +1,42 @@
<?php
/**
* MplsPolling.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Tony Murray
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\Interfaces\Polling;
use Illuminate\Support\Collection;
interface MplsPolling
{
/**
* @return Collection MplsLsp objects
*/
public function pollMplsLsps();
/**
* @param Collection $lsps collecton of synchronized lsp objects from pollMplsLsps()
* @return Collection MplsLspPath objects
*/
public function pollMplsPaths($lsps);
}

95
LibreNMS/Modules/Mpls.php Normal file
View File

@ -0,0 +1,95 @@
<?php
/**
* Mpls.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Vitali Kari
* @copyright 2019 Tony Murray
* @author Vitali Kari <vitali.kari@gmail.com>
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\Modules;
use LibreNMS\DB\SyncsModels;
use LibreNMS\Interfaces\Discovery\MplsDiscovery;
use LibreNMS\Interfaces\Module;
use LibreNMS\Interfaces\Polling\MplsPolling;
use LibreNMS\OS;
use LibreNMS\Util\ModuleModelObserver;
class Mpls implements Module
{
use SyncsModels;
/**
* Discover this module. Heavier processes can be run here
* Run infrequently (default 4 times a day)
*
* @param OS $os
*/
public function discover(OS $os)
{
if ($os instanceof MplsDiscovery) {
echo "\nMPLS LSPs: ";
ModuleModelObserver::observe('\App\Models\MplsLsp');
$lsps = $this->syncModels($os->getDeviceModel(), 'mplsLsps', $os->discoverMplsLsps());
echo "\nMPLS LSP Paths: ";
ModuleModelObserver::observe('\App\Models\MplsLspPath');
$this->syncModels($os->getDeviceModel(), 'mplsLspPaths', $os->discoverMplsPaths($lsps));
echo PHP_EOL;
}
}
/**
* 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 OS $os
*/
public function poll(OS $os)
{
if ($os instanceof MplsPolling) {
echo "\nMPLS LSPs: ";
ModuleModelObserver::observe('\App\Models\MplsLsp');
$lsps = $this->syncModels($os->getDeviceModel(), 'mplsLsps', $os->pollMplsLsps());
echo "\nMPLS LSP Paths: ";
ModuleModelObserver::observe('\App\Models\MplsLspPath');
$this->syncModels($os->getDeviceModel(), 'mplsLspPaths', $os->pollMplsPaths($lsps));
echo PHP_EOL;
}
}
/**
* Remove all DB data for this module.
* This will be run when the module is disabled.
*
* @param OS $os
*/
public function cleanup(OS $os)
{
$os->getDeviceModel()->mplsLsps()->delete();
$os->getDeviceModel()->mplsLspPaths()->delete();
}
}

191
LibreNMS/OS/Timos.php Normal file
View File

@ -0,0 +1,191 @@
<?php
/**
* Timos.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Vitali Kari
* @copyright 2019 Tony Murray
* @author Vitali Kari <vitali.kari@gmail.com>
* @author Tony Murray <murraytony@gmail.com>
*/
namespace LibreNMS\OS;
use App\Models\MplsLsp;
use App\Models\MplsLspPath;
use Illuminate\Support\Collection;
use LibreNMS\Interfaces\Discovery\MplsDiscovery;
use LibreNMS\Interfaces\Polling\MplsPolling;
use LibreNMS\OS;
class Timos extends OS implements MplsDiscovery, MplsPolling
{
/**
* @return Collection MplsLsp objects
*/
public function discoverMplsLsps()
{
$mplsLspCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspTable', [], 'TIMETRA-MPLS-MIB', 'nokia');
if (!empty($mplsLspCache)) {
$mplsLspCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspLastChange', $mplsLspCache, 'TIMETRA-MPLS-MIB', 'nokia', '-OQUst');
}
$lsps = collect();
foreach ($mplsLspCache as $key => $value) {
list($vrf_oid, $lsp_oid) = explode('.', $key);
$lsps->push(new MplsLsp([
'vrf_oid' => $vrf_oid,
'lsp_oid' => $lsp_oid,
'device_id' => $this->getDeviceId(),
'mplsLspRowStatus' => $value['vRtrMplsLspRowStatus'],
'mplsLspLastChange' => round($value['vRtrMplsLspLastChange'] / 100),
'mplsLspName' => $value['vRtrMplsLspName'],
'mplsLspAdminState' => $value['vRtrMplsLspAdminState'],
'mplsLspOperState' => $value['vRtrMplsLspOperState'],
'mplsLspFromAddr' => $value['vRtrMplsLspFromAddr'],
'mplsLspToAddr' => $value['vRtrMplsLspToAddr'],
'mplsLspType' => $value['vRtrMplsLspType'],
'mplsLspFastReroute' => $value['vRtrMplsLspFastReroute'],
]));
}
return $lsps;
}
/**
* @param Collection $lsps collecton of synchronized lsp objects from discoverMplsLsps()
* @return Collection MplsLspPath objects
*/
public function discoverMplsPaths($lsps)
{
$mplsPathCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspPathTable', [], 'TIMETRA-MPLS-MIB', 'nokia');
if (!empty($mplsPathCache)) {
$mplsPathCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspPathLastChange', $mplsPathCache, 'TIMETRA-MPLS-MIB', 'nokia', '-OQUst');
}
$paths = collect();
foreach ($mplsPathCache as $key => $value) {
list($vrf_oid, $lsp_oid, $path_oid) = explode('.', $key);
$lsp_id = $lsps->where('lsp_oid', $lsp_oid)->firstWhere('vrf_oid', $vrf_oid)->lsp_id;
$paths->push(new MplsLspPath([
'lsp_id' => $lsp_id,
'path_oid' => $path_oid,
'device_id' => $this->getDeviceId(),
'mplsLspPathRowStatus' => $value['vRtrMplsLspPathRowStatus'],
'mplsLspPathLastChange' => round($value['vRtrMplsLspPathLastChange'] / 100),
'mplsLspPathType' => $value['vRtrMplsLspPathType'],
'mplsLspPathBandwidth' => $value['vRtrMplsLspPathBandwidth'],
'mplsLspPathOperBandwidth' => $value['vRtrMplsLspPathOperBandwidth'],
'mplsLspPathAdminState' => $value['vRtrMplsLspPathAdminState'],
'mplsLspPathOperState' => $value['vRtrMplsLspPathOperState'],
'mplsLspPathState' => $value['vRtrMplsLspPathState'],
'mplsLspPathFailCode' => $value['vRtrMplsLspPathFailCode'],
'mplsLspPathFailNodeAddr' => $value['vRtrMplsLspPathFailNodeAddr'],
'mplsLspPathMetric' => $value['vRtrMplsLspPathMetric'],
'mplsLspPathOperMetric' => $value['vRtrMplsLspPathOperMetric'],
]));
}
return $paths;
}
/**
* @return Collection MplsLsp objects
*/
public function pollMplsLsps()
{
$mplsLspCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspTable', [], 'TIMETRA-MPLS-MIB', 'nokia');
if (!empty($mplsLspCache)) {
$mplsLspCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspLastChange', $mplsLspCache, 'TIMETRA-MPLS-MIB', 'nokia', '-OQUst');
$mplsLspCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspStatTable', $mplsLspCache, 'TIMETRA-MPLS-MIB', 'nokia');
}
$lsps = collect();
foreach ($mplsLspCache as $key => $value) {
list($vrf_oid, $lsp_oid) = explode('.', $key);
$lsps->push(new MplsLsp([
'vrf_oid' => $vrf_oid,
'lsp_oid' => $lsp_oid,
'device_id' => $this->getDeviceId(),
'mplsLspRowStatus' => $value['vRtrMplsLspRowStatus'],
'mplsLspLastChange' => round($value['vRtrMplsLspLastChange'] / 100),
'mplsLspName' => $value['vRtrMplsLspName'],
'mplsLspAdminState' => $value['vRtrMplsLspAdminState'],
'mplsLspOperState' => $value['vRtrMplsLspOperState'],
'mplsLspFromAddr' => $value['vRtrMplsLspFromAddr'],
'mplsLspToAddr' => $value['vRtrMplsLspToAddr'],
'mplsLspType' => $value['vRtrMplsLspType'],
'mplsLspFastReroute' => $value['vRtrMplsLspFastReroute'],
'mplsLspAge' => abs($value['vRtrMplsLspAge']),
'mplsLspTimeUp' => abs($value['vRtrMplsLspTimeUp']),
'mplsLspTimeDown' => abs($value['vRtrMplsLspTimeDown']),
'mplsLspPrimaryTimeUp' => abs($value['vRtrMplsLspPrimaryTimeUp']),
'mplsLspTransitions' => $value['vRtrMplsLspTransitions'],
'mplsLspLastTransition' => abs(round($value['vRtrMplsLspLastTransition'] / 100)),
'mplsLspConfiguredPaths' => $value['vRtrMplsLspConfiguredPaths'],
'mplsLspStandbyPaths' => $value['vRtrMplsLspStandbyPaths'],
'mplsLspOperationalPaths' => $value['vRtrMplsLspOperationalPaths'],
]));
}
return $lsps;
}
/**
* @param Collection $lsps collecton of synchronized lsp objects from pollMplsLsps()
* @return Collection MplsLspPath objects
*/
public function pollMplsPaths($lsps)
{
$mplsPathCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspPathTable', [], 'TIMETRA-MPLS-MIB', 'nokia');
if (!empty($mplsPathCache)) {
$mplsPathCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspPathLastChange', $mplsPathCache, 'TIMETRA-MPLS-MIB', 'nokia', '-OQUst');
$mplsPathCache = snmpwalk_cache_multi_oid($this->getDevice(), 'vRtrMplsLspPathStatTable', $mplsPathCache, 'TIMETRA-MPLS-MIB', 'nokia');
}
$paths = collect();
foreach ($mplsPathCache as $key => $value) {
list($vrf_oid, $lsp_oid, $path_oid) = explode('.', $key);
$lsp_id = $lsps->where('lsp_oid', $lsp_oid)->firstWhere('vrf_oid', $vrf_oid)->lsp_id;
$paths->push(new MplsLspPath([
'lsp_id' => $lsp_id,
'path_oid' => $path_oid,
'device_id' => $this->getDeviceId(),
'mplsLspPathRowStatus' => $value['vRtrMplsLspPathRowStatus'],
'mplsLspPathLastChange' => round($value['vRtrMplsLspPathLastChange'] / 100),
'mplsLspPathType' => $value['vRtrMplsLspPathType'],
'mplsLspPathBandwidth' => $value['vRtrMplsLspPathBandwidth'],
'mplsLspPathOperBandwidth' => $value['vRtrMplsLspPathOperBandwidth'],
'mplsLspPathAdminState' => $value['vRtrMplsLspPathAdminState'],
'mplsLspPathOperState' => $value['vRtrMplsLspPathOperState'],
'mplsLspPathState' => $value['vRtrMplsLspPathState'],
'mplsLspPathFailCode' => $value['vRtrMplsLspPathFailCode'],
'mplsLspPathFailNodeAddr' => $value['vRtrMplsLspPathFailNodeAddr'],
'mplsLspPathMetric' => $value['vRtrMplsLspPathMetric'],
'mplsLspPathOperMetric' => $value['vRtrMplsLspPathOperMetric'],
'mplsLspPathTimeUp' => abs($value['vRtrMplsLspPathTimeUp']),
'mplsLspPathTimeDown' => abs($value['vRtrMplsLspPathTimeDown']),
'mplsLspPathTransitionCount' => $value['vRtrMplsLspPathTransitionCount'],
]));
}
return $paths;
}
}

View File

@ -26,9 +26,24 @@
namespace LibreNMS\Util;
use Illuminate\Database\Eloquent\Model as Eloquent;
use Illuminate\Support\Str;
class ModuleModelObserver
{
/**
* Install observers to output +, -, U for models being created, deleted, and updated
*
* @param string $model The model name including namespace
*/
public static function observe($model)
{
$model = Str::start($model, '\\');
// discovery output (but don't install it twice (testing can can do this)
if (!$model::getEventDispatcher()->hasListeners('eloquent.created: ' . ltrim('\\', $model))) {
$model::observe(new ModuleModelObserver());
}
}
public function saving(Eloquent $model)
{
if (!$model->isDirty()) {

View File

@ -56,6 +56,7 @@ class ModuleTestHelper
'fdb-table' => ['ports', 'vlans', 'fdb-table'],
'vlans' => ['ports', 'vlans'],
'vrf' => ['ports', 'vrf'],
'mpls' => ['ports', 'vrf', 'mpls'],
'nac' => ['ports', 'nac'],
'cisco-mac-accounting' => ['ports', 'cisco-mac-accounting'],
];

View File

@ -38,6 +38,7 @@ use App\Models\Service;
use App\Models\Toner;
use App\Models\User;
use App\Models\Vrf;
use App\Models\Mpls;
use Cache;
class ObjectCache
@ -62,6 +63,7 @@ class ObjectCache
$user = auth()->user();
return [
'vrf' => Vrf::hasAccess($user)->count(),
'mpls' => Mpls::hasAccess($user)->count(),
'ospf' => OspfInstance::hasAccess($user)->count(),
'cisco-otv' => Component::hasAccess($user)->where('type', 'Cisco-OTV')->count(),
'bgp' => BgpPeer::hasAccess($user)->count(),

View File

@ -125,6 +125,16 @@ class MenuComposer
];
}
if ($routing_count['mpls']) {
$routing_menu[] = [
[
'url' => 'mpls',
'icon' => 'tag',
'text' => 'MPLS',
]
];
}
if ($routing_count['ospf']) {
$routing_menu[] = [
[

View File

@ -574,6 +574,16 @@ class Device extends BaseModel
return $this->hasMany('App\Models\Mempool', 'device_id');
}
public function mplsLsps()
{
return $this->hasMany('App\Models\MplsLsp', 'device_id');
}
public function mplsLspPaths()
{
return $this->hasMany('App\Models\MplsLspPath', 'device_id');
}
public function syslogs()
{
return $this->hasMany('App\Models\Syslog', 'device_id', 'device_id');

33
app/Models/Mpls.php Normal file
View File

@ -0,0 +1,33 @@
<?php
/**
* Mpls.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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 2019 Vitali Kari
* @author Vitali Kari <vitali.kari@gmail.com>
*/
namespace App\Models;
class Mpls extends DeviceRelatedModel
{
public $timestamps = false;
protected $table = 'mpls_lsps';
protected $primaryKey = 'lsp_id';
}

53
app/Models/MplsLsp.php Normal file
View File

@ -0,0 +1,53 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use LibreNMS\Interfaces\Models\Keyable;
class MplsLsp extends Model implements Keyable
{
protected $primaryKey = 'lsp_id';
public $timestamps = false;
protected $fillable = [
'vrf_oid',
'lsp_oid',
'device_id',
'mplsLspRowStatus',
'mplsLspLastChange',
'mplsLspName',
'mplsLspAdminState',
'mplsLspOperState',
'mplsLspFromAddr',
'mplsLspToAddr',
'mplsLspType',
'mplsLspFastReroute',
'mplsLspAge',
'mplsLspTimeUp',
'mplsLspTimeDown',
'mplsLspPrimaryTimeUp',
'mplsLspTransitions',
'mplsLspLastTransition',
'mplsLspConfiguredPaths',
'mplsLspStandbyPaths',
'mplsLspOperationalPaths',
];
// ---- Helper Functions ----
/**
* Get a string that can identify a unique instance of this model
* @return string
*/
public function getCompositeKey()
{
return $this->vrf_oid . '-' . $this->lsp_oid;
}
// ---- Define Relationships ----
public function paths()
{
return $this->hasMany('App\Models\MplsLspPath', 'lsp_id');
}
}

View File

@ -0,0 +1,50 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use LibreNMS\Interfaces\Models\Keyable;
class MplsLspPath extends Model implements Keyable
{
protected $primaryKey = 'lsp_path_id';
public $timestamps = false;
protected $fillable = [
'lsp_id',
'path_oid',
'device_id',
'mplsLspPathRowStatus',
'mplsLspPathLastChange',
'mplsLspPathType',
'mplsLspPathBandwidth',
'mplsLspPathOperBandwidth',
'mplsLspPathAdminState',
'mplsLspPathOperState',
'mplsLspPathState',
'mplsLspPathFailCode',
'mplsLspPathFailNodeAddr',
'mplsLspPathMetric',
'mplsLspPathOperMetric',
'mplsLspPathTimeUp',
'mplsLspPathTimeDown',
'mplsLspPathTransitionCount',
];
// ---- Helper Functions ----
/**
* Get a string that can identify a unique instance of this model
* @return string
*/
public function getCompositeKey()
{
return $this->lsp_id . '-' . $this->path_oid;
}
// ---- Define Relationships ----
public function lsp()
{
return $this->belongsTo('App\Models\MplsLsp', 'lsp_id');
}
}

View File

@ -0,0 +1,51 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMplsLspsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('mpls_lsps', function (Blueprint $table) {
$table->increments('lsp_id');
$table->unsignedInteger('vrf_oid');
$table->unsignedInteger('lsp_oid');
$table->unsignedInteger('device_id')->index('device_id');
$table->enum('mplsLspRowStatus', array('active','notInService','notReady','createAndGo','createAndWait','destroy'));
$table->bigInteger('mplsLspLastChange')->nullable();
$table->string('mplsLspName', 64);
$table->enum('mplsLspAdminState', array('noop','inService','outOfService'));
$table->enum('mplsLspOperState', array('unknown','inService','outOfService','transition'));
$table->string('mplsLspFromAddr', 32);
$table->string('mplsLspToAddr', 32);
$table->enum('mplsLspType', array('unknown','dynamic','static','bypassOnly','p2mpLsp','p2mpAuto','mplsTp','meshP2p','oneHopP2p','srTe','meshP2pSrTe','oneHopP2pSrTe'));
$table->enum('mplsLspFastReroute', array('true','false'));
$table->bigInteger('mplsLspAge')->nullable();
$table->bigInteger('mplsLspTimeUp')->nullable();
$table->bigInteger('mplsLspTimeDown')->nullable();
$table->bigInteger('mplsLspPrimaryTimeUp')->nullable();
$table->unsignedInteger('mplsLspTransitions')->nullable();
$table->bigInteger('mplsLspLastTransition')->nullable();
$table->unsignedInteger('mplsLspConfiguredPaths')->nullable();
$table->unsignedInteger('mplsLspStandbyPaths')->nullable();
$table->unsignedInteger('mplsLspOperationalPaths')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('mpls_lsps');
}
}

View File

@ -0,0 +1,48 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateMplsLspPathsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('mpls_lsp_paths', function (Blueprint $table) {
$table->increments('lsp_path_id');
$table->unsignedInteger('lsp_id');
$table->unsignedInteger('path_oid');
$table->unsignedInteger('device_id')->index('device_id');
$table->enum('mplsLspPathRowStatus', array('active','notInService','notReady','createAndGo','createAndWait','destroy'));
$table->bigInteger('mplsLspPathLastChange');
$table->enum('mplsLspPathType', array('other', 'primary', 'standby', 'secondary'));
$table->unsignedInteger('mplsLspPathBandwidth');
$table->unsignedInteger('mplsLspPathOperBandwidth');
$table->enum('mplsLspPathAdminState', array('noop', 'inService', 'outOfService'));
$table->enum('mplsLspPathOperState', array('unknown','inService','outOfService','transition'));
$table->enum('mplsLspPathState', array('unknown', 'active', 'inactive'));
$table->string('mplsLspPathFailCode', 64);
$table->string('mplsLspPathFailNodeAddr', 32);
$table->unsignedInteger('mplsLspPathMetric');
$table->unsignedInteger('mplsLspPathOperMetric');
$table->bigInteger('mplsLspPathTimeUp')->nullable();
$table->bigInteger('mplsLspPathTimeDown')->nullable();
$table->unsignedInteger('mplsLspPathTransitionCount')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('mpls_lsp_paths');
}
}

View File

@ -802,6 +802,7 @@ $config['poller_modules']['stp'] = true;
$config['poller_modules']['ntp'] = true;
$config['poller_modules']['loadbalancers'] = false;
$config['poller_modules']['mef'] = false;
$config['poller_modules']['mpls'] = true;
// List of discovery modules. Need to be in this array to be
// considered for execution.
@ -844,6 +845,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']['mpls'] = true;
// Enable daily updates
$config['update'] = 1;

View File

@ -0,0 +1,31 @@
<?php
/**
* mpls.inc.php
*
* Discover MPLS LSPs
*
* 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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 20169 Vitali Kari
* @author Vitali Kari <vitali.kari@gmail.com>
*/
use LibreNMS\OS;
if (!$os instanceof OS) {
$os = OS::make($device);
}
(new \LibreNMS\Modules\Mpls())->discover($os);

View File

@ -258,6 +258,11 @@ if (device_permitted($vars['device']) || $permitted_by_port) {
$routing_tabs[] = 'vrf';
}
$device_routing_count['mpls'] = @dbFetchCell('SELECT COUNT(*) FROM `mpls_lsps` WHERE `device_id` = ?', array($device['device_id']));
if ($device_routing_count['mpls']) {
$routing_tabs[] = 'mpls';
}
$device_routing_count['cisco-otv'] = $component_count['Cisco-OTV'];
if ($device_routing_count['cisco-otv'] > 0) {
$routing_tabs[] = 'cisco-otv';

View File

@ -21,6 +21,7 @@ $type_text['cef'] = 'CEF';
$type_text['ospf'] = 'OSPF';
$type_text['vrf'] = 'VRFs';
$type_text['cisco-otv'] = 'OTV';
$type_text['mpls'] = 'MPLS';
print_optionbar_start();

View File

@ -0,0 +1,178 @@
<?php
print_optionbar_start();
$link_array = array(
'page' => 'device',
'device' => $device['device_id'],
'tab' => 'routing',
'proto' => 'mpls',
);
if (!isset($vars['view'])) {
$vars['view'] = 'lsp';
}
echo '<span style="font-weight: bold;">MPLS</span> &#187; ';
if ($vars['view'] == 'lsp') {
echo "<span class='pagemenu-selected'>";
}
echo generate_link('LSP', $link_array, array('view' => 'lsp'));
if ($vars['view'] == 'lsp') {
echo '</span>';
}
echo ' | ';
if ($vars['view'] == 'paths') {
echo "<span class='pagemenu-selected'>";
}
echo generate_link('Paths', $link_array, array('view' => 'paths'));
if ($vars['view'] == 'paths') {
echo '</span>';
}
print_optionbar_end();
echo '<div id="content">
<table border="0" cellspacing="0" cellpadding="5" width="100%">';
if ($vars['view'] == 'lsp') {
echo '<tr><th><a title="Administrative name for this Labeled Switch Path">Name</a></th>
<th><a title="Specifies the destination address of this LSP">Destination</a></th>
<th><a title="Virtual Routing Instance">VRF</a></th>
<th><a title="The desired administrative state for this LSP.">Admin State</a></th>
<th><a title="The current operational state of this LSP.">Oper State</a></th>
<th><a title="The sysUpTime when this LSP was last modified.">Last Change at</a></th>
<th><a title="The number of state transitions (up -> down and down -> up) this LSP has undergone.">Transitions</a></th>
<th><a title="The time since the last transition (up -> down and down -> up) occurred on this LSP.">Last Transition</a></th>
<th><a title="The number of paths configured for this LSP / The number of standby paths configured for this LSP / The number of operational paths for this LSP. This includes the path currently active, as well as operational standby paths.">Paths</br>Conf / Stby / Oper</a></th>
<th><a title="The value specifies whether the label value is statically or dynamically assigned or whether the LSP will be used exclusively for bypass protection.">Type</a></th>
<th><a title="When the value of FRR is true, fast reroute is enabled. A pre-computed detour LSP is created from each node in the primary path of this LSP. In case of a failure of a link or LSP between two nodes, traffic is immediately rerouted on the pre-computed detour LSP thus avoiding packet loss.">FRR</a></th>
<th><a title="The percentage up time is calculated by (LSP up time / LSP age * 100 %).">Availability</br>%</a></th>
</tr>';
$i = 0;
foreach (dbFetchRows('SELECT *, `vrf_name` FROM `mpls_lsps` AS l, `vrfs` AS v WHERE `l`.`vrf_oid` = `v`.`vrf_oid` AND `l`.`device_id` = `v`.`device_id` AND `l`.`device_id` = ? ORDER BY `l`.`mplsLspName`', array($device['device_id'])) as $lsp) {
if (!is_integer($i / 2)) {
$bg_colour = $config['list_colour']['even'];
} else {
$bg_colour = $config['list_colour']['odd'];
}
$adminstate_status_color = $operstate_status_color = $path_status_color = 'default';
if ($lsp['mplsLspAdminState'] == 'inService') {
$adminstate_status_color = 'success';
}
if ($lsp['mplsLspOperState'] == 'inService') {
$operstate_status_color = 'success';
} elseif ($lsp['mplsLspAdminState'] == 'inService' && $lsp['mplsLspOperState'] == 'outOfService') {
$operstate_status_color = 'danger';
}
if ($lsp['mplsLspConfiguredPaths'] + $lsp['mplsLspStandbyPaths'] == $lsp['mplsLspOperationalPaths']) {
$path_status_color = 'success';
} elseif ($lsp['mplsLspOperationalPaths'] == '0') {
$path_status_color = 'danger';
} elseif ($lsp['mplsLspConfiguredPaths'] + $lsp['mplsLspStandbyPaths'] > $lsp['mplsLspOperationalPaths']) {
$path_status_color = 'warning';
}
$avail = round($lsp['mplsLspPrimaryTimeUp'] / $lsp['mplsLspAge'] * 100, 5);
$host = @dbFetchRow('SELECT * FROM `ipv4_addresses` AS A, `ports` AS I, `devices` AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', [$lsp['mplsLspToAddr']]);
$destination = $lsp['mplsLspToAddr'];
if (is_array($host)) {
$destination = generate_device_link($host, 0, array('tab' => 'routing', 'proto' => 'mpls'));
}
echo "<tr bgcolor=$bg_colour>
<td>" . $lsp['mplsLspName'] . '</td>
<td>' . $destination . '</td>
<td>' . $lsp['vrf_name'] . '</td>
<td><span class="label label-' . $adminstate_status_color . '">' . $lsp['mplsLspAdminState'] . '</td>
<td><span class="label label-' . $operstate_status_color . '">' . $lsp['mplsLspOperState'] . '</td>
<td>' . formatUptime($lsp['mplsLspLastChange']) . '</td>
<td>' . $lsp['mplsLspTransitions'] . '</td>
<td>' . formatUptime($lsp['mplsLspLastTransition']) . '</td>
<td><span class="label label-' . $path_status_color . '">' . $lsp['mplsLspConfiguredPaths'] . ' / ' . $lsp['mplsLspStandbyPaths'] . ' / ' . $lsp['mplsLspOperationalPaths'] . '</td>
<td>' . $lsp['mplsLspType'] . '</td>
<td>' . $lsp['mplsLspFastReroute'] . '</td>
<td>' . $avail . '</td>';
echo '</tr>';
$i++;
}
echo '</table></div>';
} // endif lsp view
if ($vars['view'] == 'paths') {
echo '<tr><th><a title="Administrative name for LSP this path belongs to">LSP Name</a></th>
<th><a title="The OID index of this path">Index</a></th>
<th><a title="This variable is an enum that represents the role this path is taking within this LSP.">Type</a></th>
<th><a title="The desired administrative state for this LSP Path.">Admin State</a></th>
<th><a title="The current operational state of this LSP Path.">Oper State</a></th>
<th><a title="The sysUpTime when this LSP Path was last modified.">Last Change at</a></th>
<th><a title="The number of transitions that have occurred for this LSP.">Transitions</a></th>
<th><a title="This value specifies the amount of bandwidth in megabits per seconds (Mbps) to be reserved for this LSP path. A value of zero (0) indicates that no bandwidth is reserved.">Bandwidth</a></th>
<th><a title="When make-before-break functionality for the LSP is enabled and if the path bandwidth is changed, the resources allocated to the existing LSP paths will not be released until a new path with the new bandwidth settings has been established. While a new path is being signaled, the administrative value and the operational values of the path bandwidth may differ.">Oper BW</a></th>
<th><a title="The current working state of this path within this LSP.">State</a></th>
<th><a title="This indicates the reason code for LSP path failure. A value of 0 indicates that no failure has occurred.">Failcode</a></th>
<th><a title="This indicates the name of the node in the LSP path at which the LSP path failed.">Fail Node</a></th>
<th><a title="This indicates the cost of the traffic engineered path returned by the IGP.">Metric</a></th>
<th><a title="This indicates the operational metric for the LSP path.">Oper Metric</a></th>
</tr>';
$i = 0;
foreach (dbFetchRows('SELECT *, `mplsLspName` FROM `mpls_lsp_paths` AS `p`, `mpls_lsps` AS `l` WHERE `p`.`lsp_id` = `l`.`lsp_id` AND `p`.`device_id` = ? ORDER BY `l`.`mplsLspName`', array($device['device_id'])) as $path) {
if (!is_integer($i / 2)) {
$bg_colour = $config['list_colour']['even'];
} else {
$bg_colour = $config['list_colour']['odd'];
}
$adminstate_status_color = $operstate_status_color = 'default';
$failcode_status_color = 'warning';
if ($path['mplsLspPathAdminState'] == 'inService') {
$adminstate_status_color = 'success';
}
if ($path['mplsLspPathFailCode'] == 'noError') {
$failcode_status_color = 'success';
}
if ($path['mplsLspPathOperState'] == 'inService') {
$operstate_status_color = 'success';
} elseif ($path['mplsLspPathAdminState'] == 'inService' && $path['mplsLspPathOperState'] == 'outOfService') {
$operstate_status_color = 'danger';
}
$host = @dbFetchRow('SELECT * FROM `ipv4_addresses` AS A, `ports` AS I, `devices` AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', [$path['mplsLspPathFailNodeAddr']]);
$destination = $lsp['mplsLspPathFailNodeAddr'];
if (is_array($host)) {
$destination = generate_device_link($host, 0, array('tab' => 'routing', 'proto' => 'mpls'));
}
echo "<tr bgcolor=$bg_colour>
<td>" . $path['mplsLspName'] . '</td>
<td>' . $path['path_oid'] . '</td>
<td>' . $path['mplsLspPathType'] . '</td>
<td><span class="label label-' . $adminstate_status_color . '">' . $path['mplsLspPathAdminState'] . '</td>
<td><span class="label label-' . $operstate_status_color . '">' . $path['mplsLspPathOperState'] . '</td>
<td>' . formatUptime($path['mplsLspPathLastChange']) . '</td>
<td>' . $path['mplsLspPathTransitionCount'] . '</td>
<td>' . $path['mplsLspPathBandwidth'] . '</td>
<td>' . $path['mplsLspPathOperBandwidth'] . '</td>
<td>' . $path['mplsLspPathState'] . '</td>
<td><span class="label label-' . $failcode_status_color . '">' . $path['mplsLspPathFailCode'] . '</td>
<td>' . $destination . '</td>
<td>' . $path['mplsLspPathMetric'] . '</td>
<td>' . $path['mplsLspPathOperMetric'] . '</td>';
echo '</tr>';
$i++;
}
echo '</table></div>';
} // end lsp path view

View File

@ -21,6 +21,7 @@ $routing_count = \LibreNMS\Util\ObjectCache::routing();
// $type_text['overview'] = "Overview";
$type_text['bgp'] = 'BGP';
$type_text['cef'] = 'CEF';
$type_text['mpls'] = 'MPLS';
$type_text['ospf'] = 'OSPF';
$type_text['vrf'] = 'VRFs';
$type_text['cisco-otv'] = 'OTV';
@ -61,6 +62,7 @@ switch ($vars['protocol']) {
case 'bgp':
case 'vrf':
case 'cef':
case 'mpls':
case 'ospf':
case 'cisco-otv':
include 'includes/html/pages/routing/'.$vars['protocol'].'.inc.php';

View File

@ -0,0 +1,183 @@
<?php
print_optionbar_start();
$link_array = array(
'page' => 'routing',
'protocol' => 'mpls',
);
if (!isset($vars['view'])) {
$vars['view'] = 'lsp';
}
echo '<span style="font-weight: bold;">MPLS</span> &#187; ';
if ($vars['view'] == 'lsp') {
echo "<span class='pagemenu-selected'>";
}
echo generate_link('LSP', $link_array, array('view' => 'lsp'));
if ($vars['view'] == 'lsp') {
echo '</span>';
}
echo ' | ';
if ($vars['view'] == 'paths') {
echo "<span class='pagemenu-selected'>";
}
echo generate_link('Paths', $link_array, array('view' => 'paths'));
if ($vars['view'] == 'paths') {
echo '</span>';
}
print_optionbar_end();
echo '<div id="content">
<table border="0" cellspacing="0" cellpadding="5" width="100%">';
if ($vars['view'] == 'lsp') {
echo '<tr><th><a title="Device">Device</a></th>
<th><a title="Administrative name for this Labeled Switch Path">Name</a></th>
<th><a title="Specifies the destination address of this LSP">Destination</a></th>
<th><a title="Virtual Routing Instance">VRF</a></th>
<th><a title="The desired administrative state for this LSP.">Admin State</a></th>
<th><a title="The current operational state of this LSP.">Oper State</a></th>
<th><a title="The sysUpTime when this LSP was last modified.">Last Change at</a></th>
<th><a title="The number of state transitions (up -> down and down -> up) this LSP has undergone.">Transitions</a></th>
<th><a title="The time since the last transition (up -> down and down -> up) occurred on this LSP.">Last Transition</a></th>
<th><a title="The number of paths configured for this LSP / The number of standby paths configured for this LSP / The number of operational paths for this LSP. This includes the path currently active, as well as operational standby paths.">Paths</br>Conf / Stby / Oper</a></th>
<th><a title="The value specifies whether the label value is statically or dynamically assigned or whether the LSP will be used exclusively for bypass protection.">Type</a></th>
<th><a title="When the value of FRR is true, fast reroute is enabled. A pre-computed detour LSP is created from each node in the primary path of this LSP. In case of a failure of a link or LSP between two nodes, traffic is immediately rerouted on the pre-computed detour LSP thus avoiding packet loss.">FRR</a></th>
<th><a title="The percentage up time is calculated by (LSP up time / LSP age * 100 %).">Availability</br>%</a></th>
</tr>';
$i = 0;
foreach (dbFetchRows('SELECT *, `vrf_name` FROM `mpls_lsps` AS l, `vrfs` AS v WHERE `l`.`vrf_oid` = `v`.`vrf_oid` AND `l`.`device_id` = `v`.`device_id` ORDER BY `l`.`device_id`, `l`.`mplsLspName`') as $lsp) {
$device = device_by_id_cache($lsp['device_id']);
if (!is_integer($i / 2)) {
$bg_colour = $config['list_colour']['even'];
} else {
$bg_colour = $config['list_colour']['odd'];
}
$adminstate_status_color = $operstate_status_color = $path_status_color = 'default';
if ($lsp['mplsLspAdminState'] == 'inService') {
$adminstate_status_color = 'success';
}
if ($lsp['mplsLspOperState'] == 'inService') {
$operstate_status_color = 'success';
} elseif ($lsp['mplsLspAdminState'] == 'inService' && $lsp['mplsLspOperState'] == 'outOfService') {
$operstate_status_color = 'danger';
}
if ($lsp['mplsLspConfiguredPaths'] + $lsp['mplsLspStandbyPaths'] == $lsp['mplsLspOperationalPaths']) {
$path_status_color = 'success';
} elseif ($lsp['mplsLspOperationalPaths'] == '0') {
$path_status_color = 'danger';
} elseif ($lsp['mplsLspConfiguredPaths'] + $lsp['mplsLspStandbyPaths'] > $lsp['mplsLspOperationalPaths']) {
$path_status_color = 'warning';
}
$avail = round($lsp['mplsLspPrimaryTimeUp'] / $lsp['mplsLspAge'] * 100, 5);
$host = @dbFetchRow('SELECT * FROM `ipv4_addresses` AS A, `ports` AS I, `devices` AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', [$lsp['mplsLspToAddr']]);
$destination = $lsp['mplsLspToAddr'];
if (is_array($host)) {
$destination = generate_device_link($host, 0, array('tab' => 'routing', 'proto' => 'mpls'));
}
echo "<tr bgcolor=$bg_colour>
<td>" . generate_device_link($device, 0, array('tab' => 'routing', 'proto' => 'mpls')) . '</td>
<td>' . $lsp['mplsLspName'] . '</td>
<td>' . $destination . '</td>
<td>' . $lsp['vrf_name'] . '</td>
<td><span class="label label-' . $adminstate_status_color . '">' . $lsp['mplsLspAdminState'] . '</td>
<td><span class="label label-' . $operstate_status_color . '">' . $lsp['mplsLspOperState'] . '</td>
<td>' . formatUptime($lsp['mplsLspLastChange']) . '</td>
<td>' . $lsp['mplsLspTransitions'] . '</td>
<td>' . formatUptime($lsp['mplsLspLastTransition']) . '</td>
<td><span class="label label-' . $path_status_color . '">' . $lsp['mplsLspConfiguredPaths'] . ' / ' . $lsp['mplsLspStandbyPaths'] . ' / ' . $lsp['mplsLspOperationalPaths'] . '</td>
<td>' . $lsp['mplsLspType'] . '</td>
<td>' . $lsp['mplsLspFastReroute'] . '</td>
<td>' . $avail . '</td>';
echo '</tr>';
$i++;
}
echo '</table></div>';
} // endif lsp view
if ($vars['view'] == 'paths') {
echo '<tr><th><a title="Device">Device</a></th>
<th><a title="Administrative name for LSP this path belongs to">LSP Name</a></th>
<th><a title="The OID index of this path">Index</a></th>
<th><a title="This variable is an enum that represents the role this path is taking within this LSP.">Type</a></th>
<th><a title="The desired administrative state for this LSP Path.">Admin State</a></th>
<th><a title="The current operational state of this LSP Path.">Oper State</a></th>
<th><a title="The sysUpTime when this LSP Path was last modified.">Last Change at</a></th>
<th><a title="The number of transitions that have occurred for this LSP.">Transitions</a></th>
<th><a title="This value specifies the amount of bandwidth in megabits per seconds (Mbps) to be reserved for this LSP path. A value of zero (0) indicates that no bandwidth is reserved.">Bandwidth</a></th>
<th><a title="When make-before-break functionality for the LSP is enabled and if the path bandwidth is changed, the resources allocated to the existing LSP paths will not be released until a new path with the new bandwidth settings has been established. While a new path is being signaled, the administrative value and the operational values of the path bandwidth may differ.">Oper BW</a></th>
<th><a title="The current working state of this path within this LSP.">State</a></th>
<th><a title="This indicates the reason code for LSP path failure. A value of 0 indicates that no failure has occurred.">Failcode</a></th>
<th><a title="This indicates the name of the node in the LSP path at which the LSP path failed.">Fail Node</a></th>
<th><a title="This indicates the cost of the traffic engineered path returned by the IGP.">Metric</a></th>
<th><a title="This indicates the operational metric for the LSP path.">Oper Metric</a></th>
</tr>';
$i = 0;
foreach (dbFetchRows('SELECT *, `mplsLspName` FROM `mpls_lsp_paths` AS `p`, `mpls_lsps` AS `l` WHERE `p`.`lsp_id` = `l`.`lsp_id` ORDER BY `p`.`device_id`, `l`.`mplsLspName`') as $path) {
$device = device_by_id_cache($path['device_id']);
if (!is_integer($i / 2)) {
$bg_colour = $config['list_colour']['even'];
} else {
$bg_colour = $config['list_colour']['odd'];
}
$adminstate_status_color = $operstate_status_color = 'default';
$failcode_status_color = 'warning';
if ($path['mplsLspPathAdminState'] == 'inService') {
$adminstate_status_color = 'success';
}
if ($path['mplsLspPathFailCode'] == 'noError') {
$failcode_status_color = 'success';
}
if ($path['mplsLspPathOperState'] == 'inService') {
$operstate_status_color = 'success';
} elseif ($path['mplsLspPathAdminState'] == 'inService' && $path['mplsLspPathOperState'] == 'outOfService') {
$operstate_status_color = 'danger';
}
$host = @dbFetchRow('SELECT * FROM `ipv4_addresses` AS A, `ports` AS I, `devices` AS D WHERE A.ipv4_address = ? AND I.port_id = A.port_id AND D.device_id = I.device_id', [$path['mplsLspPathFailNodeAddr']]);
$destination = $lsp['mplsLspPathFailNodeAddr'];
if (is_array($host)) {
$destination = generate_device_link($host, 0, array('tab' => 'routing', 'proto' => 'mpls'));
}
echo "<tr bgcolor=$bg_colour>
<td>" . generate_device_link($device, 0, array('tab' => 'routing', 'proto' => 'mpls')) . '</td>
<td>' . $path['mplsLspName'] . '</td>
<td>' . $path['path_oid'] . '</td>
<td>' . $path['mplsLspPathType'] . '</td>
<td><span class="label label-' . $adminstate_status_color . '">' . $path['mplsLspPathAdminState'] . '</td>
<td><span class="label label-' . $operstate_status_color . '">' . $path['mplsLspPathOperState'] . '</td>
<td>' . formatUptime($path['mplsLspPathLastChange']) . '</td>
<td>' . $path['mplsLspPathTransitionCount'] . '</td>
<td>' . $path['mplsLspPathBandwidth'] . '</td>
<td>' . $path['mplsLspPathOperBandwidth'] . '</td>
<td>' . $path['mplsLspPathState'] . '</td>
<td><span class="label label-' . $failcode_status_color . '">' . $path['mplsLspPathFailCode'] . '</td>
<td>' . $destination . '</td>
<td>' . $path['mplsLspPathMetric'] . '</td>
<td>' . $path['mplsLspPathOperMetric'] . '</td>';
echo '</tr>';
$i++;
}
echo '</table></div>';
}

View File

@ -0,0 +1,31 @@
<?php
/**
* mpls.inc.php
*
* Polling MPLS LSPs
*
* 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 <http://www.gnu.org/licenses/>.
*
* @package LibreNMS
* @link http://librenms.org
* @copyright 20169 Vitali Kari
* @author Vitali Kari <vitali.kari@gmail.com>
*/
use LibreNMS\OS;
if (!$os instanceof OS) {
$os = OS::make($device);
}
(new \LibreNMS\Modules\Mpls())->poll($os);

File diff suppressed because it is too large Load Diff

View File

@ -867,6 +867,57 @@ migrations:
- { Field: batch, Type: int(11), 'Null': false, Extra: '' }
Indexes:
PRIMARY: { Name: PRIMARY, Columns: [id], Unique: true, Type: BTREE }
mpls_lsps:
Columns:
- { Field: lsp_id, Type: 'int(10) unsigned', 'Null': false, Extra: auto_increment }
- { Field: vrf_oid, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: lsp_oid, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: device_id, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: mplsLspRowStatus, Type: 'enum(''active'',''notInService'',''notReady'',''createAndGo'',''createAndWait'',''destroy'')', 'Null': false, Extra: '' }
- { Field: mplsLspLastChange, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspName, Type: varchar(64), 'Null': false, Extra: '' }
- { Field: mplsLspAdminState, Type: 'enum(''noop'',''inService'',''outOfService'')', 'Null': false, Extra: '' }
- { Field: mplsLspOperState, Type: 'enum(''unknown'',''inService'',''outOfService'',''transition'')', 'Null': false, Extra: '' }
- { Field: mplsLspFromAddr, Type: varchar(32), 'Null': false, Extra: '' }
- { Field: mplsLspToAddr, Type: varchar(32), 'Null': false, Extra: '' }
- { Field: mplsLspType, Type: 'enum(''unknown'',''dynamic'',''static'',''bypassOnly'',''p2mpLsp'',''p2mpAuto'',''mplsTp'',''meshP2p'',''oneHopP2p'',''srTe'',''meshP2pSrTe'',''oneHopP2pSrTe'')', 'Null': false, Extra: '' }
- { Field: mplsLspFastReroute, Type: 'enum(''true'',''false'')', 'Null': false, Extra: '' }
- { Field: mplsLspAge, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspTimeUp, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspTimeDown, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspPrimaryTimeUp, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspTransitions, Type: 'int(10) unsigned', 'Null': true, Extra: '' }
- { Field: mplsLspLastTransition, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspConfiguredPaths, Type: 'int(10) unsigned', 'Null': true, Extra: '' }
- { Field: mplsLspStandbyPaths, Type: 'int(10) unsigned', 'Null': true, Extra: '' }
- { Field: mplsLspOperationalPaths, Type: 'int(10) unsigned', 'Null': true, Extra: '' }
Indexes:
PRIMARY: { Name: PRIMARY, Columns: [lsp_id], Unique: true, Type: BTREE }
device_id: { Name: device_id, Columns: [device_id], Unique: false, Type: BTREE }
mpls_lsp_paths:
Columns:
- { Field: lsp_path_id, Type: 'int(10) unsigned', 'Null': false, Extra: auto_increment }
- { Field: lsp_id, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: path_oid, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: device_id, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: mplsLspPathRowStatus, Type: 'enum(''active'',''notInService'',''notReady'',''createAndGo'',''createAndWait'',''destroy'')', 'Null': false, Extra: '' }
- { Field: mplsLspPathLastChange, Type: bigint(20), 'Null': false, Extra: '' }
- { Field: mplsLspPathType, Type: 'enum(''other'',''primary'',''standby'',''secondary'')', 'Null': false, Extra: '' }
- { Field: mplsLspPathBandwidth, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: mplsLspPathOperBandwidth, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: mplsLspPathAdminState, Type: 'enum(''noop'',''inService'',''outOfService'')', 'Null': false, Extra: '' }
- { Field: mplsLspPathOperState, Type: 'enum(''unknown'',''inService'',''outOfService'',''transition'')', 'Null': false, Extra: '' }
- { Field: mplsLspPathState, Type: 'enum(''unknown'',''active'',''inactive'')', 'Null': false, Extra: '' }
- { Field: mplsLspPathFailCode, Type: varchar(64), 'Null': false, Extra: '' }
- { Field: mplsLspPathFailNodeAddr, Type: varchar(32), 'Null': false, Extra: '' }
- { Field: mplsLspPathMetric, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: mplsLspPathOperMetric, Type: 'int(10) unsigned', 'Null': false, Extra: '' }
- { Field: mplsLspPathTimeUp, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspPathTimeDown, Type: bigint(20), 'Null': true, Extra: '' }
- { Field: mplsLspPathTransitionCount, Type: 'int(10) unsigned', 'Null': true, Extra: '' }
Indexes:
PRIMARY: { Name: PRIMARY, Columns: [lsp_path_id], Unique: true, Type: BTREE }
device_id: { Name: device_id, Columns: [device_id], Unique: false, Type: BTREE }
munin_plugins:
Columns:
- { Field: mplug_id, Type: 'int(10) unsigned', 'Null': false, Extra: auto_increment }

View File

@ -8588,5 +8588,523 @@
],
"bgpPeers_cbgp": []
}
},
"mpls": {
"discovery": {
"mpls_lsps": [
{
"vrf_oid": 1,
"lsp_oid": 1,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 8,
"mplsLspName": "l-to_test",
"mplsLspAdminState": "inService",
"mplsLspOperState": "outOfService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.2.0",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": null,
"mplsLspTimeUp": null,
"mplsLspTimeDown": null,
"mplsLspPrimaryTimeUp": null,
"mplsLspTransitions": null,
"mplsLspLastTransition": null,
"mplsLspConfiguredPaths": null,
"mplsLspStandbyPaths": null,
"mplsLspOperationalPaths": null
},
{
"vrf_oid": 1,
"lsp_oid": 2,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 8,
"mplsLspName": "l-to_goe-0-nokia-sw-b",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.1",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": null,
"mplsLspTimeUp": null,
"mplsLspTimeDown": null,
"mplsLspPrimaryTimeUp": null,
"mplsLspTransitions": null,
"mplsLspLastTransition": null,
"mplsLspConfiguredPaths": null,
"mplsLspStandbyPaths": null,
"mplsLspOperationalPaths": null
},
{
"vrf_oid": 1,
"lsp_oid": 3,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 8,
"mplsLspName": "l-to_ber-0-nokia-sw-a",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.2",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": null,
"mplsLspTimeUp": null,
"mplsLspTimeDown": null,
"mplsLspPrimaryTimeUp": null,
"mplsLspTransitions": null,
"mplsLspLastTransition": null,
"mplsLspConfiguredPaths": null,
"mplsLspStandbyPaths": null,
"mplsLspOperationalPaths": null
},
{
"vrf_oid": 1,
"lsp_oid": 5,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 6568308,
"mplsLspName": "l-ks-0-nokia-sw-a",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.5",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": null,
"mplsLspTimeUp": null,
"mplsLspTimeDown": null,
"mplsLspPrimaryTimeUp": null,
"mplsLspTransitions": null,
"mplsLspLastTransition": null,
"mplsLspConfiguredPaths": null,
"mplsLspStandbyPaths": null,
"mplsLspOperationalPaths": null
},
{
"vrf_oid": 1,
"lsp_oid": 6,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 9341769,
"mplsLspName": "l-to_goe-0-bng-a",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.3",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": null,
"mplsLspTimeUp": null,
"mplsLspTimeDown": null,
"mplsLspPrimaryTimeUp": null,
"mplsLspTransitions": null,
"mplsLspLastTransition": null,
"mplsLspConfiguredPaths": null,
"mplsLspStandbyPaths": null,
"mplsLspOperationalPaths": null
},
{
"vrf_oid": 1,
"lsp_oid": 7,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 11924597,
"mplsLspName": "l-to_goe-0-bng-b",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.4",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": null,
"mplsLspTimeUp": null,
"mplsLspTimeDown": null,
"mplsLspPrimaryTimeUp": null,
"mplsLspTransitions": null,
"mplsLspLastTransition": null,
"mplsLspConfiguredPaths": null,
"mplsLspStandbyPaths": null,
"mplsLspOperationalPaths": null
}
],
"mpls_lsp_paths": [
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 8,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "outOfService",
"mplsLspPathState": "inactive",
"mplsLspPathFailCode": "noCspfRouteOwner",
"mplsLspPathFailNodeAddr": "172.17.0.0",
"mplsLspPathMetric": 0,
"mplsLspPathOperMetric": 16777215,
"mplsLspPathTimeUp": null,
"mplsLspPathTimeDown": null,
"mplsLspPathTransitionCount": null,
"vrf_oid": 1,
"lsp_oid": 1
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 8,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 5,
"mplsLspPathOperMetric": 5,
"mplsLspPathTimeUp": 0,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 0,
"vrf_oid": 1,
"lsp_oid": 2
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 8,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 15,
"mplsLspPathOperMetric": 15,
"mplsLspPathTimeUp": 0,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 0,
"vrf_oid": 1,
"lsp_oid": 3
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 6568304,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 20,
"mplsLspPathOperMetric": 20,
"mplsLspPathTimeUp": 0,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 0,
"vrf_oid": 1,
"lsp_oid": 5
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 9341762,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 10,
"mplsLspPathOperMetric": 10,
"mplsLspPathTimeUp": 0,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 0,
"vrf_oid": 1,
"lsp_oid": 6
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 11924596,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 20,
"mplsLspPathOperMetric": 20,
"mplsLspPathTimeUp": 0,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 0,
"vrf_oid": 1,
"lsp_oid": 7
}
]
},
"poller": {
"mpls_lsps": [
{
"vrf_oid": 1,
"lsp_oid": 1,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 8,
"mplsLspName": "l-to_test",
"mplsLspAdminState": "inService",
"mplsLspOperState": "outOfService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.2.0",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": 2126195967,
"mplsLspTimeUp": 0,
"mplsLspTimeDown": 1234414677,
"mplsLspPrimaryTimeUp": 0,
"mplsLspTransitions": 8,
"mplsLspLastTransition": 12344147,
"mplsLspConfiguredPaths": 1,
"mplsLspStandbyPaths": 0,
"mplsLspOperationalPaths": 0
},
{
"vrf_oid": 1,
"lsp_oid": 2,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 8,
"mplsLspName": "l-to_goe-0-nokia-sw-b",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.1",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": 2126195967,
"mplsLspTimeUp": 2126215068,
"mplsLspTimeDown": 0,
"mplsLspPrimaryTimeUp": 2126215066,
"mplsLspTransitions": 1,
"mplsLspLastTransition": 21262151,
"mplsLspConfiguredPaths": 1,
"mplsLspStandbyPaths": 0,
"mplsLspOperationalPaths": 1
},
{
"vrf_oid": 1,
"lsp_oid": 3,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 8,
"mplsLspName": "l-to_ber-0-nokia-sw-a",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.2",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": 2126195968,
"mplsLspTimeUp": 968111927,
"mplsLspTimeDown": 0,
"mplsLspPrimaryTimeUp": 968111932,
"mplsLspTransitions": 13,
"mplsLspLastTransition": 9681119,
"mplsLspConfiguredPaths": 1,
"mplsLspStandbyPaths": 0,
"mplsLspOperationalPaths": 1
},
{
"vrf_oid": 1,
"lsp_oid": 5,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 6568308,
"mplsLspName": "l-ks-0-nokia-sw-a",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.5",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": 1511945458,
"mplsLspTimeUp": 487669328,
"mplsLspTimeDown": 0,
"mplsLspPrimaryTimeUp": 487669332,
"mplsLspTransitions": 19,
"mplsLspLastTransition": 4876693,
"mplsLspConfiguredPaths": 1,
"mplsLspStandbyPaths": 0,
"mplsLspOperationalPaths": 1
},
{
"vrf_oid": 1,
"lsp_oid": 6,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 9341769,
"mplsLspName": "l-to_goe-0-bng-a",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.3",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": 1234599417,
"mplsLspTimeUp": 1234595264,
"mplsLspTimeDown": 0,
"mplsLspPrimaryTimeUp": 1234595266,
"mplsLspTransitions": 1,
"mplsLspLastTransition": 12345953,
"mplsLspConfiguredPaths": 1,
"mplsLspStandbyPaths": 0,
"mplsLspOperationalPaths": 1
},
{
"vrf_oid": 1,
"lsp_oid": 7,
"mplsLspRowStatus": "active",
"mplsLspLastChange": 11924597,
"mplsLspName": "l-to_goe-0-bng-b",
"mplsLspAdminState": "inService",
"mplsLspOperState": "inService",
"mplsLspFromAddr": "0.0.0.0",
"mplsLspToAddr": "172.17.0.4",
"mplsLspType": "dynamic",
"mplsLspFastReroute": "true",
"mplsLspAge": 976312559,
"mplsLspTimeUp": 362844230,
"mplsLspTimeDown": 0,
"mplsLspPrimaryTimeUp": 362844232,
"mplsLspTransitions": 1,
"mplsLspLastTransition": 3628442,
"mplsLspConfiguredPaths": 1,
"mplsLspStandbyPaths": 0,
"mplsLspOperationalPaths": 1
}
],
"mpls_lsp_paths": [
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 8,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "outOfService",
"mplsLspPathState": "inactive",
"mplsLspPathFailCode": "noCspfRouteOwner",
"mplsLspPathFailNodeAddr": "172.17.0.0",
"mplsLspPathMetric": 0,
"mplsLspPathOperMetric": 16777215,
"mplsLspPathTimeUp": 0,
"mplsLspPathTimeDown": 1234414735,
"mplsLspPathTransitionCount": 8,
"vrf_oid": 1,
"lsp_oid": 1
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 8,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 5,
"mplsLspPathOperMetric": 5,
"mplsLspPathTimeUp": 2126215009,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 1,
"vrf_oid": 1,
"lsp_oid": 2
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 8,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 15,
"mplsLspPathOperMetric": 15,
"mplsLspPathTimeUp": 968111987,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 13,
"vrf_oid": 1,
"lsp_oid": 3
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 6568304,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 20,
"mplsLspPathOperMetric": 20,
"mplsLspPathTimeUp": 487669387,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 19,
"vrf_oid": 1,
"lsp_oid": 5
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 9341762,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 10,
"mplsLspPathOperMetric": 10,
"mplsLspPathTimeUp": 1234595321,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 1,
"vrf_oid": 1,
"lsp_oid": 6
},
{
"path_oid": 1,
"mplsLspPathRowStatus": "active",
"mplsLspPathLastChange": 11924596,
"mplsLspPathType": "primary",
"mplsLspPathBandwidth": 0,
"mplsLspPathOperBandwidth": 0,
"mplsLspPathAdminState": "inService",
"mplsLspPathOperState": "inService",
"mplsLspPathState": "active",
"mplsLspPathFailCode": "noError",
"mplsLspPathFailNodeAddr": "0.0.0.0",
"mplsLspPathMetric": 20,
"mplsLspPathOperMetric": 20,
"mplsLspPathTimeUp": 362844288,
"mplsLspPathTimeDown": 0,
"mplsLspPathTransitionCount": 1,
"vrf_oid": 1,
"lsp_oid": 7
}
]
}
}
}

View File

@ -29,6 +29,15 @@ fdb-table:
mempools:
mempools:
excluded_fields: [device_id, mempool_id]
mpls:
mpls_lsps:
excluded_fields: [lsp_id, device_id]
order_by: vrf_oid, lsp_oid
mpls_lsp_paths:
excluded_fields: [lsp_path_id, device_id, lsp_id]
joins:
- { left: mpls_lsp_paths.lsp_id, right: mpls_lsps.lsp_id, select: [vrf_oid, lsp_oid] }
order_by: vrf_oid, lsp_oid, path_oid
ports:
ports:
excluded_fields: [device_id, port_id, poll_time, poll_period, ifVrf]

View File

@ -1980,6 +1980,858 @@
1.3.6.1.4.1.6527.3.1.2.3.74.1.4.3.131074|70|6417281160
1.3.6.1.4.1.6527.3.1.2.3.74.1.4.3.131075|70|629037025
1.3.6.1.4.1.6527.3.1.2.3.74.1.4.4095.1280|70|19668974
1.3.6.1.4.1.6527.3.1.2.6.1.1.2.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.2.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.2.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.2.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.2.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.2.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.3.1.1|67|798
1.3.6.1.4.1.6527.3.1.2.6.1.1.3.1.2|67|798
1.3.6.1.4.1.6527.3.1.2.6.1.1.3.1.3|67|799
1.3.6.1.4.1.6527.3.1.2.6.1.1.3.1.5|67|656830778
1.3.6.1.4.1.6527.3.1.2.6.1.1.3.1.6|67|934176865
1.3.6.1.4.1.6527.3.1.2.6.1.1.3.1.7|67|1192459707
1.3.6.1.4.1.6527.3.1.2.6.1.1.4.1.1|4|l-to_test
1.3.6.1.4.1.6527.3.1.2.6.1.1.4.1.2|4|l-to_goe-0-nokia-sw-b
1.3.6.1.4.1.6527.3.1.2.6.1.1.4.1.3|4|l-to_ber-0-nokia-sw-a
1.3.6.1.4.1.6527.3.1.2.6.1.1.4.1.5|4|l-ks-0-nokia-sw-a
1.3.6.1.4.1.6527.3.1.2.6.1.1.4.1.6|4|l-to_goe-0-bng-a
1.3.6.1.4.1.6527.3.1.2.6.1.1.4.1.7|4|l-to_goe-0-bng-b
1.3.6.1.4.1.6527.3.1.2.6.1.1.5.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.5.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.5.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.5.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.5.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.5.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.6.1.1|2|3
1.3.6.1.4.1.6527.3.1.2.6.1.1.6.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.6.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.6.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.6.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.6.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.7.1.1|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.7.1.2|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.7.1.3|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.7.1.5|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.7.1.6|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.7.1.7|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.8.1.1|64|172.17.2.0
1.3.6.1.4.1.6527.3.1.2.6.1.1.8.1.2|64|172.17.0.1
1.3.6.1.4.1.6527.3.1.2.6.1.1.8.1.3|64|172.17.0.2
1.3.6.1.4.1.6527.3.1.2.6.1.1.8.1.5|64|172.17.0.5
1.3.6.1.4.1.6527.3.1.2.6.1.1.8.1.6|64|172.17.0.3
1.3.6.1.4.1.6527.3.1.2.6.1.1.8.1.7|64|172.17.0.4
1.3.6.1.4.1.6527.3.1.2.6.1.1.9.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.9.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.9.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.9.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.9.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.9.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.10.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.10.1.2|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.10.1.3|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.10.1.5|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.10.1.6|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.10.1.7|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.11.1.1|66|30
1.3.6.1.4.1.6527.3.1.2.6.1.1.11.1.2|66|30
1.3.6.1.4.1.6527.3.1.2.6.1.1.11.1.3|66|30
1.3.6.1.4.1.6527.3.1.2.6.1.1.11.1.5|66|30
1.3.6.1.4.1.6527.3.1.2.6.1.1.11.1.6|66|30
1.3.6.1.4.1.6527.3.1.2.6.1.1.11.1.7|66|30
1.3.6.1.4.1.6527.3.1.2.6.1.1.12.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.12.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.12.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.12.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.12.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.12.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.13.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.13.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.13.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.13.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.13.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.13.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.15.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.15.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.15.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.15.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.15.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.15.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.16.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.16.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.16.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.16.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.16.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.16.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.17.1.1|66|16
1.3.6.1.4.1.6527.3.1.2.6.1.1.17.1.2|66|16
1.3.6.1.4.1.6527.3.1.2.6.1.1.17.1.3|66|16
1.3.6.1.4.1.6527.3.1.2.6.1.1.17.1.5|66|16
1.3.6.1.4.1.6527.3.1.2.6.1.1.17.1.6|66|16
1.3.6.1.4.1.6527.3.1.2.6.1.1.17.1.7|66|16
1.3.6.1.4.1.6527.3.1.2.6.1.1.18.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.18.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.18.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.18.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.18.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.18.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.20.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.1.1.20.1.2|66|7
1.3.6.1.4.1.6527.3.1.2.6.1.1.20.1.3|66|7
1.3.6.1.4.1.6527.3.1.2.6.1.1.20.1.5|66|7
1.3.6.1.4.1.6527.3.1.2.6.1.1.20.1.6|66|7
1.3.6.1.4.1.6527.3.1.2.6.1.1.20.1.7|66|7
1.3.6.1.4.1.6527.3.1.2.6.1.1.21.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.21.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.21.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.21.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.21.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.21.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.22.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.22.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.22.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.22.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.22.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.22.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.26.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.1.1.26.1.2|66|255
1.3.6.1.4.1.6527.3.1.2.6.1.1.26.1.3|66|255
1.3.6.1.4.1.6527.3.1.2.6.1.1.26.1.5|66|255
1.3.6.1.4.1.6527.3.1.2.6.1.1.26.1.6|66|255
1.3.6.1.4.1.6527.3.1.2.6.1.1.26.1.7|66|255
1.3.6.1.4.1.6527.3.1.2.6.1.1.27.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.27.1.2|66|9198
1.3.6.1.4.1.6527.3.1.2.6.1.1.27.1.3|66|9198
1.3.6.1.4.1.6527.3.1.2.6.1.1.27.1.5|66|9194
1.3.6.1.4.1.6527.3.1.2.6.1.1.27.1.6|66|9198
1.3.6.1.4.1.6527.3.1.2.6.1.1.27.1.7|66|9198
1.3.6.1.4.1.6527.3.1.2.6.1.1.28.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.28.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.28.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.28.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.28.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.28.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.29.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.29.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.29.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.29.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.29.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.29.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.30.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.30.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.30.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.30.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.30.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.30.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.31.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.31.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.31.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.31.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.31.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.31.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.32.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.32.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.32.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.32.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.32.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.32.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.33.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.33.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.33.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.33.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.33.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.33.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.34.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.34.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.34.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.34.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.34.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.34.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.35.1.1|66|32
1.3.6.1.4.1.6527.3.1.2.6.1.1.35.1.2|66|32
1.3.6.1.4.1.6527.3.1.2.6.1.1.35.1.3|66|32
1.3.6.1.4.1.6527.3.1.2.6.1.1.35.1.5|66|32
1.3.6.1.4.1.6527.3.1.2.6.1.1.35.1.6|66|32
1.3.6.1.4.1.6527.3.1.2.6.1.1.35.1.7|66|32
1.3.6.1.4.1.6527.3.1.2.6.1.1.36.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.36.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.36.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.36.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.36.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.36.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.37.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.37.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.37.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.37.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.37.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.37.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.38.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.38.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.38.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.38.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.38.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.38.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.39.1.1|66|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.39.1.2|66|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.39.1.3|66|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.39.1.5|66|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.39.1.6|66|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.39.1.7|66|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.40.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.40.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.40.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.40.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.40.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.40.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.41.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.41.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.41.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.41.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.41.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.41.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.42.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.42.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.42.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.42.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.42.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.42.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.43.1.1|66|16777215
1.3.6.1.4.1.6527.3.1.2.6.1.1.43.1.2|66|5
1.3.6.1.4.1.6527.3.1.2.6.1.1.43.1.3|66|15
1.3.6.1.4.1.6527.3.1.2.6.1.1.43.1.5|66|20
1.3.6.1.4.1.6527.3.1.2.6.1.1.43.1.6|66|10
1.3.6.1.4.1.6527.3.1.2.6.1.1.43.1.7|66|20
1.3.6.1.4.1.6527.3.1.2.6.1.1.44.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.44.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.44.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.44.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.44.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.44.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.45.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.45.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.45.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.45.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.45.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.45.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.46.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.46.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.46.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.46.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.46.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.46.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.47.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.47.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.47.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.47.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.47.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.47.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.48.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.48.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.48.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.48.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.48.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.48.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.49.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.1.1.49.1.2|4|
1.3.6.1.4.1.6527.3.1.2.6.1.1.49.1.3|4|
1.3.6.1.4.1.6527.3.1.2.6.1.1.49.1.5|4|
1.3.6.1.4.1.6527.3.1.2.6.1.1.49.1.6|4|
1.3.6.1.4.1.6527.3.1.2.6.1.1.49.1.7|4|
1.3.6.1.4.1.6527.3.1.2.6.1.1.50.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.50.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.50.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.50.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.50.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.50.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.52.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.52.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.52.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.52.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.52.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.52.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.53.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.53.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.53.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.53.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.53.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.53.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.54.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.54.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.54.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.54.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.54.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.54.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.55.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.55.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.55.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.55.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.55.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.55.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.56.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.56.1.2|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.56.1.3|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.56.1.5|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.56.1.6|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.56.1.7|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.57.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.57.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.57.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.57.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.57.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.57.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.58.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.58.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.58.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.58.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.58.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.58.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.59.1.1|4x|00000000
1.3.6.1.4.1.6527.3.1.2.6.1.1.59.1.2|4x|00000000
1.3.6.1.4.1.6527.3.1.2.6.1.1.59.1.3|4x|00000000
1.3.6.1.4.1.6527.3.1.2.6.1.1.59.1.5|4x|00000000
1.3.6.1.4.1.6527.3.1.2.6.1.1.59.1.6|4x|00000000
1.3.6.1.4.1.6527.3.1.2.6.1.1.59.1.7|4x|00000000
1.3.6.1.4.1.6527.3.1.2.6.1.1.60.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.60.1.2|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.60.1.3|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.60.1.5|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.60.1.6|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.60.1.7|2|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.61.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.61.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.61.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.61.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.61.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.61.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.62.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.62.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.62.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.62.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.62.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.62.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.1.1.63.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.63.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.63.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.63.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.63.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.63.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.64.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.64.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.64.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.64.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.64.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.64.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.65.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.65.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.65.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.65.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.65.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.65.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.66.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.66.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.66.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.66.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.66.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.66.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.67.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.67.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.67.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.67.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.67.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.67.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.68.1.1|2|2147483647
1.3.6.1.4.1.6527.3.1.2.6.1.1.68.1.2|2|2147483647
1.3.6.1.4.1.6527.3.1.2.6.1.1.68.1.3|2|2147483647
1.3.6.1.4.1.6527.3.1.2.6.1.1.68.1.5|2|2147483647
1.3.6.1.4.1.6527.3.1.2.6.1.1.68.1.6|2|2147483647
1.3.6.1.4.1.6527.3.1.2.6.1.1.68.1.7|2|2147483647
1.3.6.1.4.1.6527.3.1.2.6.1.1.69.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.69.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.69.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.69.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.69.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.69.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.70.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.70.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.70.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.70.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.70.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.70.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.1.1.72.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.72.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.72.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.72.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.72.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.72.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.1.1.73.1.1|4|00 00
1.3.6.1.4.1.6527.3.1.2.6.1.1.73.1.2|4|00 00
1.3.6.1.4.1.6527.3.1.2.6.1.1.73.1.3|4|00 00
1.3.6.1.4.1.6527.3.1.2.6.1.1.73.1.5|4|00 00
1.3.6.1.4.1.6527.3.1.2.6.1.1.73.1.6|4|00 00
1.3.6.1.4.1.6527.3.1.2.6.1.1.73.1.7|4|00 00
1.3.6.1.4.1.6527.3.1.2.6.2.1.3.1.1|2|-2126195967
1.3.6.1.4.1.6527.3.1.2.6.2.1.3.1.2|2|-2126195967
1.3.6.1.4.1.6527.3.1.2.6.2.1.3.1.3|2|-2126195968
1.3.6.1.4.1.6527.3.1.2.6.2.1.3.1.5|2|1511945458
1.3.6.1.4.1.6527.3.1.2.6.2.1.3.1.6|2|1234599417
1.3.6.1.4.1.6527.3.1.2.6.2.1.3.1.7|2|976312559
1.3.6.1.4.1.6527.3.1.2.6.2.1.4.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.4.1.2|2|-2126215068
1.3.6.1.4.1.6527.3.1.2.6.2.1.4.1.3|2|968111927
1.3.6.1.4.1.6527.3.1.2.6.2.1.4.1.5|2|487669328
1.3.6.1.4.1.6527.3.1.2.6.2.1.4.1.6|2|1234595264
1.3.6.1.4.1.6527.3.1.2.6.2.1.4.1.7|2|362844230
1.3.6.1.4.1.6527.3.1.2.6.2.1.5.1.1|2|1234414677
1.3.6.1.4.1.6527.3.1.2.6.2.1.5.1.2|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.5.1.3|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.5.1.5|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.5.1.6|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.5.1.7|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.6.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.6.1.2|2|-2126215066
1.3.6.1.4.1.6527.3.1.2.6.2.1.6.1.3|2|968111932
1.3.6.1.4.1.6527.3.1.2.6.2.1.6.1.5|2|487669332
1.3.6.1.4.1.6527.3.1.2.6.2.1.6.1.6|2|1234595266
1.3.6.1.4.1.6527.3.1.2.6.2.1.6.1.7|2|362844232
1.3.6.1.4.1.6527.3.1.2.6.2.1.7.1.1|65|8
1.3.6.1.4.1.6527.3.1.2.6.2.1.7.1.2|65|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.7.1.3|65|13
1.3.6.1.4.1.6527.3.1.2.6.2.1.7.1.5|65|19
1.3.6.1.4.1.6527.3.1.2.6.2.1.7.1.6|65|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.7.1.7|65|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.8.1.1|2|1234414682
1.3.6.1.4.1.6527.3.1.2.6.2.1.8.1.2|2|-2126215061
1.3.6.1.4.1.6527.3.1.2.6.2.1.8.1.3|2|968111934
1.3.6.1.4.1.6527.3.1.2.6.2.1.8.1.5|2|487669335
1.3.6.1.4.1.6527.3.1.2.6.2.1.8.1.6|2|1234595269
1.3.6.1.4.1.6527.3.1.2.6.2.1.8.1.7|2|362844235
1.3.6.1.4.1.6527.3.1.2.6.2.1.9.1.1|65|8
1.3.6.1.4.1.6527.3.1.2.6.2.1.9.1.2|65|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.9.1.3|65|13
1.3.6.1.4.1.6527.3.1.2.6.2.1.9.1.5|65|19
1.3.6.1.4.1.6527.3.1.2.6.2.1.9.1.6|65|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.9.1.7|65|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.10.1.1|2|1234414684
1.3.6.1.4.1.6527.3.1.2.6.2.1.10.1.2|2|-2126215059
1.3.6.1.4.1.6527.3.1.2.6.2.1.10.1.3|2|968111936
1.3.6.1.4.1.6527.3.1.2.6.2.1.10.1.5|2|487669337
1.3.6.1.4.1.6527.3.1.2.6.2.1.10.1.6|2|1234595271
1.3.6.1.4.1.6527.3.1.2.6.2.1.10.1.7|2|362844237
1.3.6.1.4.1.6527.3.1.2.6.2.1.11.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.11.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.11.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.11.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.11.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.11.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.12.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.12.1.2|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.12.1.3|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.12.1.5|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.12.1.6|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.12.1.7|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.13.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.13.1.2|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.13.1.3|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.13.1.5|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.13.1.6|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.13.1.7|2|1
1.3.6.1.4.1.6527.3.1.2.6.2.1.14.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.14.1.2|66|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.14.1.3|66|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.14.1.5|66|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.14.1.6|66|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.14.1.7|66|0
1.3.6.1.4.1.6527.3.1.2.6.2.1.15.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.2.1.15.1.2|2|2
1.3.6.1.4.1.6527.3.1.2.6.2.1.15.1.3|2|2
1.3.6.1.4.1.6527.3.1.2.6.2.1.15.1.5|2|2
1.3.6.1.4.1.6527.3.1.2.6.2.1.15.1.6|2|2
1.3.6.1.4.1.6527.3.1.2.6.2.1.15.1.7|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.1.1.1.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.1.1.2.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.1.1.3.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.1.1.5.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.1.1.6.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.1.1.7.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.2.1.1.1.1.1|67|798
1.3.6.1.4.1.6527.3.1.2.6.4.1.2.1.2.1.1.1|67|798
1.3.6.1.4.1.6527.3.1.2.6.4.1.2.1.3.1.1.1|67|799
1.3.6.1.4.1.6527.3.1.2.6.4.1.2.1.5.1.1.1|67|656830437
1.3.6.1.4.1.6527.3.1.2.6.4.1.2.1.6.1.1.1|67|934176246
1.3.6.1.4.1.6527.3.1.2.6.4.1.2.1.7.1.1.1|67|1192459572
1.3.6.1.4.1.6527.3.1.2.6.4.1.3.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.3.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.3.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.3.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.3.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.3.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.5.1.1.1.1.1|4|F8 0 1 2 3 4
1.3.6.1.4.1.6527.3.1.2.6.4.1.5.1.2.1.1.1|4|F8 0 1 2 3 4
1.3.6.1.4.1.6527.3.1.2.6.4.1.5.1.3.1.1.1|4|F8 0 1 2 3 4
1.3.6.1.4.1.6527.3.1.2.6.4.1.5.1.5.1.1.1|4|F8 0 1 2 3 4
1.3.6.1.4.1.6527.3.1.2.6.4.1.5.1.6.1.1.1|4|F8 0 1 2 3 4
1.3.6.1.4.1.6527.3.1.2.6.4.1.5.1.7.1.1.1|4|F8 0 1 2 3 4
1.3.6.1.4.1.6527.3.1.2.6.4.1.6.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.6.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.6.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.6.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.6.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.6.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.8.1.1.1.1.1|2|3
1.3.6.1.4.1.6527.3.1.2.6.4.1.8.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.8.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.8.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.8.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.8.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.9.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.9.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.9.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.9.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.9.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.9.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.12.1.1.1.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.12.1.2.1.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.12.1.3.1.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.12.1.5.1.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.12.1.6.1.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.12.1.7.1.1.1|66|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.13.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.13.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.13.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.13.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.13.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.13.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.14.1.1.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.14.1.2.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.14.1.3.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.14.1.5.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.14.1.6.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.14.1.7.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.15.1.1.1.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.4.1.15.1.2.1.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.4.1.15.1.3.1.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.4.1.15.1.5.1.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.4.1.15.1.6.1.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.4.1.15.1.7.1.1.1|66|255
1.3.6.1.4.1.6527.3.1.2.6.4.1.17.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.17.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.17.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.17.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.17.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.17.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.18.1.1.1.1.1|2|3
1.3.6.1.4.1.6527.3.1.2.6.4.1.18.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.18.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.18.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.18.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.18.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.19.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.19.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.19.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.19.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.19.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.19.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.20.1.1.1.1.1|4x|AC110000D608AC1102000001000000000a303020303020303020303020
1.3.6.1.4.1.6527.3.1.2.6.4.1.20.1.2.1.1.1|4x|AC1100009800AC1100010002000000000a303020303020303020303020
1.3.6.1.4.1.6527.3.1.2.6.4.1.20.1.3.1.1.1|4x|AC110000D80CAC1100020003000000000a303020303020303020303020
1.3.6.1.4.1.6527.3.1.2.6.4.1.20.1.5.1.1.1|4x|AC1100005E1AAC1100050005000000000a303020303020303020303020
1.3.6.1.4.1.6527.3.1.2.6.4.1.20.1.6.1.1.1|4x|AC110000DA00AC1100030006000000000a303020303020303020303020
1.3.6.1.4.1.6527.3.1.2.6.4.1.20.1.7.1.1.1|4x|AC1100006000AC1100040007000000000a303020303020303020303020
1.3.6.1.4.1.6527.3.1.2.6.4.1.21.1.1.1.1.1|66|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.21.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.21.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.21.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.21.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.21.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.22.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.22.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.22.1.3.1.1.1|2|3
1.3.6.1.4.1.6527.3.1.2.6.4.1.22.1.5.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.22.1.6.1.1.1|2|4
1.3.6.1.4.1.6527.3.1.2.6.4.1.22.1.7.1.1.1|2|5
1.3.6.1.4.1.6527.3.1.2.6.4.1.23.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.23.1.2.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.23.1.3.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.23.1.5.1.1.1|66|9194
1.3.6.1.4.1.6527.3.1.2.6.4.1.23.1.6.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.23.1.7.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.24.1.1.1.1.1|2|18
1.3.6.1.4.1.6527.3.1.2.6.4.1.24.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.24.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.24.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.24.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.24.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.25.1.1.1.1.1|64|172.17.0.0
1.3.6.1.4.1.6527.3.1.2.6.4.1.25.1.2.1.1.1|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.4.1.25.1.3.1.1.1|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.4.1.25.1.5.1.1.1|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.4.1.25.1.6.1.1.1|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.4.1.25.1.7.1.1.1|64|0.0.0.0
1.3.6.1.4.1.6527.3.1.2.6.4.1.26.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.26.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.26.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.26.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.26.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.26.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.27.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.27.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.27.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.27.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.27.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.27.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.28.1.1.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.28.1.2.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.28.1.3.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.28.1.5.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.28.1.6.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.28.1.7.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.29.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.29.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.29.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.29.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.29.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.29.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.30.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.30.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.30.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.30.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.30.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.30.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.31.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.31.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.31.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.31.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.31.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.31.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.33.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.33.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.33.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.33.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.33.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.33.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.34.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.34.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.34.1.3.1.1.1|2|7
1.3.6.1.4.1.6527.3.1.2.6.4.1.34.1.5.1.1.1|2|8
1.3.6.1.4.1.6527.3.1.2.6.4.1.34.1.6.1.1.1|2|5
1.3.6.1.4.1.6527.3.1.2.6.4.1.34.1.7.1.1.1|2|9
1.3.6.1.4.1.6527.3.1.2.6.4.1.35.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.35.1.2.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.35.1.3.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.35.1.5.1.1.1|66|9194
1.3.6.1.4.1.6527.3.1.2.6.4.1.35.1.6.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.35.1.7.1.1.1|66|9198
1.3.6.1.4.1.6527.3.1.2.6.4.1.36.1.1.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.36.1.2.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.36.1.3.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.36.1.5.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.36.1.6.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.36.1.7.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.37.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.37.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.37.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.37.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.37.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.37.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.38.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.38.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.38.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.38.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.38.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.38.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.39.1.1.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.39.1.2.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.39.1.3.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.39.1.5.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.39.1.6.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.39.1.7.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.40.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.40.1.2.1.1.1|66|5
1.3.6.1.4.1.6527.3.1.2.6.4.1.40.1.3.1.1.1|66|15
1.3.6.1.4.1.6527.3.1.2.6.4.1.40.1.5.1.1.1|66|20
1.3.6.1.4.1.6527.3.1.2.6.4.1.40.1.6.1.1.1|66|10
1.3.6.1.4.1.6527.3.1.2.6.4.1.40.1.7.1.1.1|66|20
1.3.6.1.4.1.6527.3.1.2.6.4.1.41.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.41.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.41.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.41.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.41.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.41.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.42.1.1.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.42.1.2.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.42.1.3.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.42.1.5.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.42.1.6.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.42.1.7.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.43.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.43.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.43.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.43.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.43.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.43.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.44.1.1.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.44.1.2.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.44.1.3.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.44.1.5.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.44.1.6.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.44.1.7.1.1.1|2|1
1.3.6.1.4.1.6527.3.1.2.6.4.1.45.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.45.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.45.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.45.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.45.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.45.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.46.1.1.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.46.1.2.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.46.1.3.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.46.1.5.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.46.1.6.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.46.1.7.1.1.1|67|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.47.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.47.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.47.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.47.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.47.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.47.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.48.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.48.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.48.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.48.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.48.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.48.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.49.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.49.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.49.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.49.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.49.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.49.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.50.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.50.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.50.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.50.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.50.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.50.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.51.1.1.1.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.4.1.51.1.2.1.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.4.1.51.1.3.1.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.4.1.51.1.5.1.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.4.1.51.1.6.1.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.4.1.51.1.7.1.1.1|4|
1.3.6.1.4.1.6527.3.1.2.6.4.1.52.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.52.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.52.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.52.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.52.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.52.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.53.1.1.1.1.1|66|16777215
1.3.6.1.4.1.6527.3.1.2.6.4.1.53.1.2.1.1.1|66|5
1.3.6.1.4.1.6527.3.1.2.6.4.1.53.1.3.1.1.1|66|15
1.3.6.1.4.1.6527.3.1.2.6.4.1.53.1.5.1.1.1|66|20
1.3.6.1.4.1.6527.3.1.2.6.4.1.53.1.6.1.1.1|66|10
1.3.6.1.4.1.6527.3.1.2.6.4.1.53.1.7.1.1.1|66|20
1.3.6.1.4.1.6527.3.1.2.6.4.1.54.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.54.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.54.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.54.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.54.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.54.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.55.1.1.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.55.1.2.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.55.1.3.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.55.1.5.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.55.1.6.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.55.1.7.1.1.1|2|2
1.3.6.1.4.1.6527.3.1.2.6.4.1.56.1.1.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.56.1.2.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.56.1.3.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.56.1.5.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.56.1.6.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.56.1.7.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.57.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.57.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.57.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.57.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.57.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.57.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.58.1.1.1.1.1|2|-1
1.3.6.1.4.1.6527.3.1.2.6.4.1.58.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.58.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.58.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.58.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.58.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.59.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.59.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.59.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.59.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.59.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.59.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.60.1.1.1.1.1|66|4294967295
1.3.6.1.4.1.6527.3.1.2.6.4.1.60.1.2.1.1.1|66|4294967295
1.3.6.1.4.1.6527.3.1.2.6.4.1.60.1.3.1.1.1|66|4294967295
1.3.6.1.4.1.6527.3.1.2.6.4.1.60.1.5.1.1.1|66|4294967295
1.3.6.1.4.1.6527.3.1.2.6.4.1.60.1.6.1.1.1|66|4294967295
1.3.6.1.4.1.6527.3.1.2.6.4.1.60.1.7.1.1.1|66|4294967295
1.3.6.1.4.1.6527.3.1.2.6.4.1.61.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.61.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.61.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.61.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.61.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.61.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.62.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.62.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.62.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.62.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.62.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.62.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.63.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.63.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.63.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.63.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.63.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.63.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.64.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.64.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.64.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.64.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.64.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.64.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.65.1.1.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.65.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.65.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.65.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.65.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.4.1.65.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.1.1.1.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.1.1.2.1.1.1|2|-2126215009
1.3.6.1.4.1.6527.3.1.2.6.5.1.1.1.3.1.1.1|2|968111987
1.3.6.1.4.1.6527.3.1.2.6.5.1.1.1.5.1.1.1|2|487669387
1.3.6.1.4.1.6527.3.1.2.6.5.1.1.1.6.1.1.1|2|1234595321
1.3.6.1.4.1.6527.3.1.2.6.5.1.1.1.7.1.1.1|2|362844288
1.3.6.1.4.1.6527.3.1.2.6.5.1.2.1.1.1.1.1|2|1234414735
1.3.6.1.4.1.6527.3.1.2.6.5.1.2.1.2.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.2.1.3.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.2.1.5.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.2.1.6.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.2.1.7.1.1.1|2|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.3.1.1.1.1.1|66|422514
1.3.6.1.4.1.6527.3.1.2.6.5.1.3.1.2.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.3.1.3.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.3.1.5.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.3.1.6.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.3.1.7.1.1.1|66|0
1.3.6.1.4.1.6527.3.1.2.6.5.1.4.1.1.1.1.1|65|8
1.3.6.1.4.1.6527.3.1.2.6.5.1.4.1.2.1.1.1|65|1
1.3.6.1.4.1.6527.3.1.2.6.5.1.4.1.3.1.1.1|65|13
1.3.6.1.4.1.6527.3.1.2.6.5.1.4.1.5.1.1.1|65|19
1.3.6.1.4.1.6527.3.1.2.6.5.1.4.1.6.1.1.1|65|1
1.3.6.1.4.1.6527.3.1.2.6.5.1.4.1.7.1.1.1|65|1
1.3.6.1.4.1.6527.3.1.2.6.5.1.5.1.1.1.1.1|65|484238
1.3.6.1.4.1.6527.3.1.2.6.5.1.5.1.2.1.1.1|65|3
1.3.6.1.4.1.6527.3.1.2.6.5.1.5.1.3.1.1.1|65|197894
1.3.6.1.4.1.6527.3.1.2.6.5.1.5.1.5.1.1.1|65|6468
1.3.6.1.4.1.6527.3.1.2.6.5.1.5.1.6.1.1.1|65|1
1.3.6.1.4.1.6527.3.1.2.6.5.1.5.1.7.1.1.1|65|208592
1.3.6.1.4.1.6527.3.1.2.14.2.2.1.2.3|2|1
1.3.6.1.4.1.6527.3.1.2.14.4.7.1.4.3.1.4.38.229.6.20|4|BOGONS
1.3.6.1.4.1.6527.3.1.2.14.4.7.1.4.3.1.4.38.229.46.20|4|BOGONS