'device', 'device' => $device['device_id'], 'tab' => 'routing', 'proto' => 'mpls', ]; if (! isset($vars['view'])) { $vars['view'] = 'lsp'; } echo 'MPLS » '; if ($vars['view'] == 'lsp') { echo ""; } echo generate_link('LSPs', $link_array, ['view' => 'lsp']); if ($vars['view'] == 'lsp') { echo ''; } echo ' | '; if ($vars['view'] == 'paths') { echo ""; } echo generate_link('Paths', $link_array, ['view' => 'paths']); if ($vars['view'] == 'paths') { echo ''; } echo ' | '; if ($vars['view'] == 'sdps') { echo ""; } echo generate_link('SDPs', $link_array, ['view' => 'sdps']); if ($vars['view'] == 'sdps') { echo ''; } echo ' | '; if ($vars['view'] == 'sdpbinds') { echo ""; } echo generate_link('SDP binds', $link_array, ['view' => 'sdpbinds']); if ($vars['view'] == 'sdpbinds') { echo ''; } echo ' | '; if ($vars['view'] == 'services') { echo ""; } echo generate_link('Services', $link_array, ['view' => 'services']); if ($vars['view'] == 'services') { echo ''; } echo ' | '; if ($vars['view'] == 'saps') { echo ""; } echo generate_link('SAPs', $link_array, ['view' => 'saps']); if ($vars['view'] == 'saps') { echo ''; } print_optionbar_end(); echo '
'; if ($vars['view'] == 'lsp') { echo ''; $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`', [$device['device_id']]) as $lsp) { if (! is_integer($i / 2)) { $bg_colour = \LibreNMS\Config::get('list_colour.even'); } else { $bg_colour = \LibreNMS\Config::get('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 = Number::calculatePercent($lsp['mplsLspPrimaryTimeUp'], $lsp['mplsLspAge'], 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, ['tab' => 'routing', 'proto' => 'mpls', 'view' => 'lsp']); } echo "'; echo ''; $i++; } echo '
Name Destination VRF Admin State Oper State Last Change at Transitions Last Transition Paths
Conf / Stby / Oper
Type FRR Availability
%
" . $lsp['mplsLspName'] . ' ' . $destination . ' ' . $lsp['vrf_name'] . ' ' . $lsp['mplsLspAdminState'] . ' ' . $lsp['mplsLspOperState'] . ' ' . \LibreNMS\Util\Time::formatInterval($lsp['mplsLspLastChange']) . ' ' . $lsp['mplsLspTransitions'] . ' ' . \LibreNMS\Util\Time::formatInterval($lsp['mplsLspLastTransition']) . ' ' . $lsp['mplsLspConfiguredPaths'] . ' / ' . $lsp['mplsLspStandbyPaths'] . ' / ' . $lsp['mplsLspOperationalPaths'] . ' ' . $lsp['mplsLspType'] . ' ' . $lsp['mplsLspFastReroute'] . ' ' . $avail . '
'; } // endif lsp view if ($vars['view'] == 'paths') { echo '  LSP Name Index Type Admin State Oper State Last Change at Transitions Bandwidth Oper BW State Failcode Fail Node Metric Oper Metric '; $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`', [$device['device_id']]) as $path) { if (! is_integer($i / 2)) { $bg_colour = \LibreNMS\Config::get('list_colour.even'); } else { $bg_colour = \LibreNMS\Config::get('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 = $path['mplsLspPathFailNodeAddr']; if (is_array($host)) { $destination = generate_device_link($host, 0, ['tab' => 'routing', 'proto' => 'mpls']); } echo ' ' . $path['mplsLspName'] . ' ' . $path['path_oid'] . ' ' . $path['mplsLspPathType'] . ' ' . $path['mplsLspPathAdminState'] . ' ' . $path['mplsLspPathOperState'] . ' ' . \LibreNMS\Util\Time::formatInterval($path['mplsLspPathLastChange']) . ' ' . $path['mplsLspPathTransitionCount'] . ' ' . $path['mplsLspPathBandwidth'] . ' ' . $path['mplsLspPathOperBandwidth'] . ' ' . $path['mplsLspPathState'] . ' ' . $path['mplsLspPathFailCode'] . ' ' . $destination . ' ' . $path['mplsLspPathMetric'] . ' ' . $path['mplsLspPathOperMetric'] . ''; echo ''; echo ''; echo '
'; // FIXME include only on expanded data-toggle include 'includes/html/pages/routing/mpls-path-map.inc.php'; echo '
'; $i++; } echo ''; } // end paths view if ($vars['view'] == 'sdps') { echo 'SDP Id Destination Type LSP Type Description Admin State Oper State Admin MTU Oper MTU Last Mgmt Change at Last Status Change at '; $i = 0; foreach (dbFetchRows('SELECT * FROM `mpls_sdps` WHERE `device_id` = ? ORDER BY `sdp_oid`', [$device['device_id']]) as $sdp) { if (! is_integer($i / 2)) { $bg_colour = \LibreNMS\Config::get('list_colour.even'); } else { $bg_colour = \LibreNMS\Config::get('list_colour.odd'); } $adminstate_status_color = $operstate_status_color = 'default'; $failcode_status_color = 'warning'; if ($sdp['sdpAdminStatus'] == 'up') { $adminstate_status_color = 'success'; } if ($sdp['sdpOperStatus'] == 'up') { $operstate_status_color = 'success'; } elseif ($sdp['sdpAdminStatus'] == 'up' && $sdp['sdpOperStatus'] == 'down') { $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', [$sdp['sdpFarEndInetAddress']]); $destination = $sdp['sdpFarEndInetAddress']; if (is_array($host)) { $destination = generate_device_link($host, 0, ['tab' => 'routing', 'proto' => 'mpls', 'view' => 'sdps']); } echo " " . $sdp['sdp_oid'] . ' ' . $destination . ' ' . $sdp['sdpDelivery'] . ' ' . $sdp['sdpActiveLspType'] . ' ' . $sdp['sdpDescription'] . ' ' . $sdp['sdpAdminStatus'] . ' ' . $sdp['sdpOperStatus'] . ' ' . $sdp['sdpAdminPathMtu'] . ' ' . $sdp['sdpOperPathMtu'] . ' ' . \LibreNMS\Util\Time::formatInterval($sdp['sdpLastMgmtChange']) . ' ' . \LibreNMS\Util\Time::formatInterval($sdp['sdpLastStatusChange']) . ''; echo ''; $i++; } echo ''; } // end sdps view if ($vars['view'] == 'sdpbinds') { echo 'Service Id SDP Bind Id Bind Type VC Type Admin State Oper State Last Mgmt Change at Last Status Change at Ing Fwd Packets Ing Fwd Octets Egr Fwd Packets Egr Fwd Octets '; $i = 0; foreach (dbFetchRows('SELECT b.*, s.svc_oid AS svcId FROM `mpls_sdp_binds` AS b LEFT JOIN `mpls_services` AS s ON `b`.`svc_id` = `s`.`svc_id` WHERE `b`.`device_id` = ? ORDER BY `sdp_oid`, `svc_oid`', [$device['device_id']]) as $sdpbind) { if (! is_integer($i / 2)) { $bg_colour = \LibreNMS\Config::get('list_colour.even'); } else { $bg_colour = \LibreNMS\Config::get('list_colour.odd'); } $adminstate_status_color = $operstate_status_color = 'default'; $failcode_status_color = 'warning'; if ($sdpbind['sdpBindAdminStatus'] == 'up') { $adminstate_status_color = 'success'; } if ($sdpbind['sdpBindAdminStatus'] == 'up' && $sdpbind['sdpBindOperStatus'] == 'up') { $operstate_status_color = 'success'; } elseif ($sdpbind['sdpBindAdminStatus'] == 'up' && $sdpbind['sdpBindOperStatus'] == 'down') { $operstate_status_color = 'danger'; } echo " " . $sdpbind['svcId'] . ' ' . $sdpbind['sdp_oid'] . ':' . $sdpbind['svc_oid'] . ' ' . $sdpbind['sdpBindType'] . ' ' . $sdpbind['sdpBindVcType'] . ' ' . $sdpbind['sdpBindAdminStatus'] . ' ' . $sdpbind['sdpBindOperStatus'] . ' ' . \LibreNMS\Util\Time::formatInterval($sdpbind['sdpBindLastMgmtChange']) . ' ' . \LibreNMS\Util\Time::formatInterval($sdpbind['sdpBindLastStatusChange']) . ' ' . $sdpbind['sdpBindBaseStatsIngFwdPackets'] . ' ' . $sdpbind['sdpBindBaseStatsIngFwdOctets'] . ' ' . $sdpbind['sdpBindBaseStatsEgrFwdPackets'] . ' ' . $sdpbind['sdpBindBaseStatsEgrFwdOctets'] . ''; echo ''; $i++; } echo ''; } // end sdpbinds view if ($vars['view'] == 'services') { echo 'Service Id Type Customer Admin Status Oper Status Description Service MTU Num SAPs Last Mgmt Change at Last Status Change at VRF MAC Learning FDB Table Size FDB Entries STP Admin Status STP Oper Status '; $i = 0; foreach (dbFetchRows('SELECT s.*, v.vrf_name FROM `mpls_services` AS s LEFT JOIN `vrfs` AS v ON `s`.`svcVRouterId` = `v`.`vrf_oid` AND `s`.`device_id` = `v`.`device_id` WHERE `s`.`device_id` = ? ORDER BY `svc_oid`', [$device['device_id']]) as $svc) { if (! is_integer($i / 2)) { $bg_colour = \LibreNMS\Config::get('list_colour.even'); } else { $bg_colour = \LibreNMS\Config::get('list_colour.odd'); } $adminstate_status_color = $operstate_status_color = 'default'; $failcode_status_color = 'warning'; if ($svc['svcAdminStatus'] == 'up') { $adminstate_status_color = 'success'; } if ($svc['svcAdminStatus'] == 'up' && $svc['svcOperStatus'] == 'up') { $operstate_status_color = 'success'; } elseif ($svc['svcAdminStatus'] == 'up' && $svc['svcOperStatus'] == 'down') { $operstate_status_color = 'danger'; } $fdb_usage_perc = Number::calculatePercent($svc['svcTlsFdbNumEntries'], $svc['svcTlsFdbTableSize']); if ($fdb_usage_perc > 95) { $fdb_status_color = 'danger'; } elseif ($fdb_usage_perc > 75) { $fdb_status_color = 'warning'; } else { $fdb_status_color = 'success'; } echo " " . $svc['svc_oid'] . ' ' . $svc['svcType'] . ' ' . $svc['svcCustId'] . ' ' . $svc['svcAdminStatus'] . ' ' . $svc['svcOperStatus'] . ' ' . $svc['svcDescription'] . ' ' . $svc['svcMtu'] . ' ' . $svc['svcNumSaps'] . ' ' . \LibreNMS\Util\Time::formatInterval($svc['svcLastMgmtChange']) . ' ' . \LibreNMS\Util\Time::formatInterval($svc['svcLastStatusChange']) . ' ' . $svc['vrf_name'] . ' ' . $svc['svcTlsMacLearning'] . ' ' . $svc['svcTlsFdbTableSize'] . ' ' . $svc['svcTlsFdbNumEntries'] . ' ' . $svc['svcTlsStpAdminStatus'] . ' ' . $svc['svcTlsStpOperStatus'] . ''; echo ''; $i++; } echo ''; } // end services view if ($vars['view'] == 'saps') { echo 'Service Id SAP Port Encapsulation Type Description Admin Status Oper Satatus Last Mgmt Change at Last Oper Change at '; $i = 0; foreach (dbFetchRows('SELECT * FROM `mpls_saps` WHERE `device_id` = ? ORDER BY `device_id`, `svc_oid`, `sapPortId`, `sapEncapValue`', [$device['device_id']]) as $sap) { $port = dbFetchRow('SELECT * FROM `ports` WHERE `device_id` = ? AND `ifName` = ?', [$sap['device_id'], $sap['ifName']]); $port = cleanPort($port); if (! is_integer($i / 2)) { $bg_colour = \LibreNMS\Config::get('list_colour.even'); } else { $bg_colour = \LibreNMS\Config::get('list_colour.odd'); } $adminstate_status_color = $operstate_status_color = 'default'; $failcode_status_color = 'warning'; if ($sap['sapAdminStatus'] == 'up') { $adminstate_status_color = 'success'; } if ($sap['sapAdminStatus'] == 'up' && $sap['sapOperStatus'] == 'up') { $operstate_status_color = 'success'; } elseif ($sap['sapAdminStatus'] == 'up' && $sap['sapOperStatus'] == 'down') { $operstate_status_color = 'danger'; } echo "" . ' ' . generate_sap_url($sap, $sap['svc_oid']) . ' ' . generate_port_link($port) . ' ' . $sap['sapEncapValue'] . ' ' . $sap['sapType'] . ' ' . $sap['sapDescription'] . ' ' . $sap['sapAdminStatus'] . ' ' . $sap['sapOperStatus'] . ' ' . \LibreNMS\Util\Time::formatInterval($sap['sapLastMgmtChange']) . ' ' . \LibreNMS\Util\Time::formatInterval($sap['sapLastStatusChange']) . ''; echo ''; $i++; } echo ''; } // end sap view