From e1b820b744a755b9bd02b3f430002682b8ba2d93 Mon Sep 17 00:00:00 2001 From: Maud <110405507+mushroomempires@users.noreply.github.com> Date: Fri, 6 Jun 2025 10:48:27 +0200 Subject: [PATCH 01/39] fix(ci): add concurrency to gitleaks workflow (#5612) --- .github/workflows/gitleaks.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/gitleaks.yml b/.github/workflows/gitleaks.yml index 11e3d1202..03e5814d0 100644 --- a/.github/workflows/gitleaks.yml +++ b/.github/workflows/gitleaks.yml @@ -1,4 +1,9 @@ name: gitleaks + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + on: pull_request: workflow_dispatch: From 95a4456d9862cb37cac76de5eae6ba2fc76c782b Mon Sep 17 00:00:00 2001 From: Evan-Adam <152897682+Evan-Adam@users.noreply.github.com> Date: Fri, 6 Jun 2025 13:29:30 +0200 Subject: [PATCH 02/39] fix(apps::backup::rubrik::restapi): api token not cleaned and renewed (#5344) Co-authored-by: Sylvain Cresto Refs:CTOR-729 --- src/apps/backup/rubrik/restapi/custom/api.pm | 10 ++++++++++ tests/resources/spellcheck/stopwords.txt | 6 +++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/apps/backup/rubrik/restapi/custom/api.pm b/src/apps/backup/rubrik/restapi/custom/api.pm index 11059959a..f180378ec 100644 --- a/src/apps/backup/rubrik/restapi/custom/api.pm +++ b/src/apps/backup/rubrik/restapi/custom/api.pm @@ -317,6 +317,11 @@ sub request_api_paginate { $self->{output}->option_exit(); } + if ($self->{http}->get_code() == 401) { + $self->{output}->add_option_msg(short_msg => "Request needs authentication!"); + return + } + my $decoded; eval { $decoded = JSON::XS->new->allow_nonref(1)->utf8->decode($content); @@ -375,6 +380,11 @@ sub request_api { ); } + if ($self->{http}->get_code() == 401) { + $self->{output}->add_option_msg(short_msg => "Authentication failed"); + $self->{output}->option_exit(); + } + return $result; } diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 0f74fba7a..340cf6e92 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -234,6 +234,8 @@ RRDCached rsrp rsrq rssi +Rubrik +µs Sansymphony SAS scenarii @@ -245,7 +247,6 @@ sinr SkyHigh SMS SnapMirrors -SnapMirrors snmp snmpd.conf space-usage-prct @@ -256,8 +257,8 @@ standAlone statefile --statefile-concat-cwd Stormshield -SureBackup superseed +SureBackup systemd SysVol TCP @@ -282,7 +283,6 @@ UninterrupibleSleep uniq uptime --urlpath -µs usage-prct usec userpass From 4baf784e5ef3502dfe7fe74717d7e0c2c9e291d4 Mon Sep 17 00:00:00 2001 From: sdepassio <114986849+sdepassio@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:03:22 +0200 Subject: [PATCH 03/39] feat(network::juniper::common::junos::netconf): New connector network juniper mseries netconf (#5613) * Move network::juniper::common::junos plugins to network::juniper::common::junos::snmp * New plugins network::juniper::common::junos::netconf::* * fix network::juniper::common::junos::snmp::mode::interfaces bias_current to divise by 1000 instead of 100 Co-authored-by: garnier-quentin --- .../pkg.json | 6 +- .../pkg.json | 6 +- .../pkg.json | 6 +- .../pkg.json | 2 +- .../pkg.json | 2 +- .../pkg.json | 6 +- .../deb.json | 7 + .../pkg.json | 13 + .../rpm.json | 7 + .../pkg.json | 6 +- .../pkg.json | 6 +- src/centreon/plugins/backend/ssh/sshcli.pm | 54 +- src/centreon/plugins/misc.pm | 9 + src/centreon/plugins/ssh.pm | 34 +- src/centreon/plugins/templates/hardware.pm | 32 + .../juniper/netconf/timeout_log.config | 51 + src/network/juniper/common/ive/mode/users.pm | 215 - .../juniper/common/ive/{ => snmp}/mode/cpu.pm | 2 +- .../common/ive/{ => snmp}/mode/disk.pm | 2 +- .../common/ive/{ => snmp}/mode/logfile.pm | 2 +- .../juniper/common/ive/snmp/mode/users.pm | 280 + .../common/junos/netconf/custom/netconf.pm | 985 + .../juniper/common/junos/netconf/mode/bgp.pm | 408 + .../common/junos/netconf/mode/collection.pm | 1813 + .../junos/netconf/mode/components/afeb.pm | 72 + .../junos/netconf/mode/components/fan.pm | 94 + .../junos/netconf/mode/components/fpc.pm | 72 + .../junos/netconf/mode/components/mic.pm | 92 + .../junos/netconf/mode/components/pic.pm | 85 + .../junos/netconf/mode/components/psu.pm | 95 + .../netconf/mode/components/temperature.pm | 95 + .../juniper/common/junos/netconf/mode/cpu.pm | 135 + .../common/junos/netconf/mode/disks.pm | 163 + .../common/junos/netconf/mode/hardware.pm | 141 + .../common/junos/netconf/mode/interfaces.pm | 1125 + .../juniper/common/junos/netconf/mode/ldp.pm | 452 + .../common/junos/netconf/mode/listbgp.pm | 119 + .../common/junos/netconf/mode/listdisks.pm | 111 + .../junos/netconf/mode/listinterfaces.pm | 117 + .../common/junos/netconf/mode/listldp.pm | 115 + .../common/junos/netconf/mode/listlsp.pm | 117 + .../common/junos/netconf/mode/listrsvp.pm | 117 + .../junos/netconf/mode/listservicesrpm.pm | 117 + .../juniper/common/junos/netconf/mode/lsp.pm | 268 + .../common/junos/netconf/mode/memory.pm | 103 + .../juniper/common/junos/netconf/mode/ospf.pm | 195 + .../juniper/common/junos/netconf/mode/rsvp.pm | 228 + .../common/junos/netconf/mode/servicesrpm.pm | 463 + .../mode/bgppeerprefixstatistics.pm | 48 +- .../junos/{ => snmp}/mode/bgppeerstate.pm | 20 +- .../junos/{ => snmp}/mode/components/alarm.pm | 2 +- .../junos/{ => snmp}/mode/components/fru.pm | 2 +- .../{ => snmp}/mode/components/operating.pm | 2 +- .../common/junos/{ => snmp}/mode/cos.pm | 2 +- .../junos/{ => snmp}/mode/cpsessions.pm | 2 +- .../common/junos/{ => snmp}/mode/cpu.pm | 37 +- .../junos/{ => snmp}/mode/cpuforwarding.pm | 2 +- .../junos/{ => snmp}/mode/flowsessions.pm | 2 +- .../common/junos/{ => snmp}/mode/hardware.pm | 25 +- .../junos/{ => snmp}/mode/interfaces.pm | 220 +- .../junos/{ => snmp}/mode/ipsectunnel.pm | 2 +- .../junos/{ => snmp}/mode/ldpsessionstatus.pm | 2 +- .../junos/{ => snmp}/mode/listbgppeers.pm | 2 +- .../common/junos/{ => snmp}/mode/lspstatus.pm | 20 +- .../common/junos/{ => snmp}/mode/memory.pm | 2 +- .../junos/{ => snmp}/mode/memoryforwarding.pm | 2 +- .../{ => snmp}/mode/rsvpsessionstatus.pm | 2 +- .../common/junos/{ => snmp}/mode/stack.pm | 2 +- src/network/juniper/ex/{ => snmp}/plugin.pm | 17 +- .../juniper/ggsn/{ => snmp}/mode/apnstats.pm | 118 +- .../ggsn/{ => snmp}/mode/globalstats.pm | 114 +- src/network/juniper/ggsn/{ => snmp}/plugin.pm | 11 +- src/network/juniper/isg/snmp/plugin.pm | 9 +- .../mag/{ => snmp}/mode/bladetemperature.pm | 6 +- src/network/juniper/mag/{ => snmp}/plugin.pm | 19 +- .../juniper/mseries/netconf/mode/cache.pm | 78 + src/network/juniper/mseries/netconf/plugin.pm | 67 + .../juniper/mseries/{ => snmp}/plugin.pm | 25 +- src/network/juniper/sa/{ => snmp}/plugin.pm | 10 +- src/network/juniper/srx/{ => snmp}/plugin.pm | 27 +- src/network/juniper/ssg/snmp/plugin.pm | 7 +- .../network/juniper/mseries/netconf/bgp.robot | 35 + .../network/juniper/mseries/netconf/cpu.robot | 57 + .../juniper/mseries/netconf/data/bgp.netconf | 3458 ++ .../juniper/mseries/netconf/data/cpu.netconf | 96 + .../juniper/mseries/netconf/data/disk.netconf | 103 + .../mseries/netconf/data/hardware.netconf | 1302 + .../netconf/data/hardware_no_fan.netconf | 1221 + .../netconf/data/interfaces-discovery.netconf | 765 + .../mseries/netconf/data/interfaces.netconf | 48236 ++++++++++++++++ .../netconf/data/interfaces_optical.netconf | 1378 + .../juniper/mseries/netconf/data/ldp.netconf | 261 + .../juniper/mseries/netconf/data/lsp.netconf | 161 + .../mseries/netconf/data/memory.netconf | 87 + .../juniper/mseries/netconf/data/ospf.netconf | 38 + .../juniper/mseries/netconf/data/rsvp.netconf | 46 + .../mseries/netconf/data/services_rpm.netconf | 552 + .../juniper/mseries/netconf/disks.robot | 55 + .../network/juniper/mseries/netconf/get_data | 14 + .../juniper/mseries/netconf/hardware.robot | 51 + .../juniper/mseries/netconf/interfaces.robot | 75 + .../network/juniper/mseries/netconf/ldp.robot | 43 + .../juniper/mseries/netconf/list-bgp.robot | 30 + .../juniper/mseries/netconf/list-disks.robot | 30 + .../mseries/netconf/list-interfaces.robot | 30 + .../juniper/mseries/netconf/list-ldp.robot | 30 + .../juniper/mseries/netconf/list-lsp.robot | 30 + .../juniper/mseries/netconf/list-rsvp.robot | 30 + .../mseries/netconf/list-services-rpm.robot | 30 + .../network/juniper/mseries/netconf/lsp.robot | 43 + .../juniper/mseries/netconf/memory.robot | 35 + .../juniper/mseries/netconf/ospf.robot | 49 + .../juniper/mseries/netconf/rsvp.robot | 49 + .../mseries/netconf/services-rpm.robot | 83 + tests/resources/spellcheck/stopwords.txt | 14 + 115 files changed, 67610 insertions(+), 458 deletions(-) create mode 100644 packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/deb.json create mode 100644 packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/pkg.json create mode 100644 packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/rpm.json create mode 100644 src/contrib/collection/juniper/netconf/timeout_log.config delete mode 100644 src/network/juniper/common/ive/mode/users.pm rename src/network/juniper/common/ive/{ => snmp}/mode/cpu.pm (98%) rename src/network/juniper/common/ive/{ => snmp}/mode/disk.pm (98%) rename src/network/juniper/common/ive/{ => snmp}/mode/logfile.pm (98%) create mode 100644 src/network/juniper/common/ive/snmp/mode/users.pm create mode 100644 src/network/juniper/common/junos/netconf/custom/netconf.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/bgp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/collection.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/afeb.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/fan.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/fpc.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/mic.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/pic.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/psu.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/components/temperature.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/cpu.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/disks.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/hardware.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/interfaces.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/ldp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listbgp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listdisks.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listinterfaces.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listldp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listlsp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listrsvp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/listservicesrpm.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/lsp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/memory.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/ospf.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/rsvp.pm create mode 100644 src/network/juniper/common/junos/netconf/mode/servicesrpm.pm rename src/network/juniper/common/junos/{ => snmp}/mode/bgppeerprefixstatistics.pm (89%) rename src/network/juniper/common/junos/{ => snmp}/mode/bgppeerstate.pm (90%) rename src/network/juniper/common/junos/{ => snmp}/mode/components/alarm.pm (97%) rename src/network/juniper/common/junos/{ => snmp}/mode/components/fru.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/components/operating.pm (99%) rename src/network/juniper/common/junos/{ => snmp}/mode/cos.pm (99%) rename src/network/juniper/common/junos/{ => snmp}/mode/cpsessions.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/cpu.pm (87%) rename src/network/juniper/common/junos/{ => snmp}/mode/cpuforwarding.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/flowsessions.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/hardware.pm (92%) rename src/network/juniper/common/junos/{ => snmp}/mode/interfaces.pm (74%) rename src/network/juniper/common/junos/{ => snmp}/mode/ipsectunnel.pm (99%) rename src/network/juniper/common/junos/{ => snmp}/mode/ldpsessionstatus.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/listbgppeers.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/lspstatus.pm (94%) rename src/network/juniper/common/junos/{ => snmp}/mode/memory.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/memoryforwarding.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/rsvpsessionstatus.pm (98%) rename src/network/juniper/common/junos/{ => snmp}/mode/stack.pm (99%) rename src/network/juniper/ex/{ => snmp}/plugin.pm (72%) rename src/network/juniper/ggsn/{ => snmp}/mode/apnstats.pm (81%) rename src/network/juniper/ggsn/{ => snmp}/mode/globalstats.pm (79%) rename src/network/juniper/ggsn/{ => snmp}/plugin.pm (87%) rename src/network/juniper/mag/{ => snmp}/mode/bladetemperature.pm (96%) rename src/network/juniper/mag/{ => snmp}/plugin.pm (82%) create mode 100644 src/network/juniper/mseries/netconf/mode/cache.pm create mode 100644 src/network/juniper/mseries/netconf/plugin.pm rename src/network/juniper/mseries/{ => snmp}/plugin.pm (82%) rename src/network/juniper/sa/{ => snmp}/plugin.pm (92%) rename src/network/juniper/srx/{ => snmp}/plugin.pm (79%) create mode 100644 tests/network/juniper/mseries/netconf/bgp.robot create mode 100644 tests/network/juniper/mseries/netconf/cpu.robot create mode 100644 tests/network/juniper/mseries/netconf/data/bgp.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/cpu.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/disk.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/hardware.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/hardware_no_fan.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/interfaces-discovery.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/interfaces.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/interfaces_optical.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/ldp.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/lsp.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/memory.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/ospf.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/rsvp.netconf create mode 100644 tests/network/juniper/mseries/netconf/data/services_rpm.netconf create mode 100644 tests/network/juniper/mseries/netconf/disks.robot create mode 100755 tests/network/juniper/mseries/netconf/get_data create mode 100644 tests/network/juniper/mseries/netconf/hardware.robot create mode 100644 tests/network/juniper/mseries/netconf/interfaces.robot create mode 100644 tests/network/juniper/mseries/netconf/ldp.robot create mode 100644 tests/network/juniper/mseries/netconf/list-bgp.robot create mode 100644 tests/network/juniper/mseries/netconf/list-disks.robot create mode 100644 tests/network/juniper/mseries/netconf/list-interfaces.robot create mode 100644 tests/network/juniper/mseries/netconf/list-ldp.robot create mode 100644 tests/network/juniper/mseries/netconf/list-lsp.robot create mode 100644 tests/network/juniper/mseries/netconf/list-rsvp.robot create mode 100644 tests/network/juniper/mseries/netconf/list-services-rpm.robot create mode 100644 tests/network/juniper/mseries/netconf/lsp.robot create mode 100644 tests/network/juniper/mseries/netconf/memory.robot create mode 100644 tests/network/juniper/mseries/netconf/ospf.robot create mode 100644 tests/network/juniper/mseries/netconf/rsvp.robot create mode 100644 tests/network/juniper/mseries/netconf/services-rpm.robot diff --git a/packaging/centreon-plugin-Network-Firewalls-Juniper-Sa-Snmp/pkg.json b/packaging/centreon-plugin-Network-Firewalls-Juniper-Sa-Snmp/pkg.json index b68815be2..e739f41e4 100644 --- a/packaging/centreon-plugin-Network-Firewalls-Juniper-Sa-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Firewalls-Juniper-Sa-Snmp/pkg.json @@ -8,10 +8,10 @@ "snmp_standard/mode/cpudetailed.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", + "snmp_standard/mode/resources/", "snmp_standard/mode/memory.pm", "snmp_standard/mode/swap.pm", - "network/juniper/common/ive", - "network/juniper/sa" + "network/juniper/common/ive/snmp", + "network/juniper/sa/snmp" ] } diff --git a/packaging/centreon-plugin-Network-Firewalls-Juniper-Srx-Snmp/pkg.json b/packaging/centreon-plugin-Network-Firewalls-Juniper-Srx-Snmp/pkg.json index 81f5d7fd8..03662433e 100644 --- a/packaging/centreon-plugin-Network-Firewalls-Juniper-Srx-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Firewalls-Juniper-Srx-Snmp/pkg.json @@ -7,10 +7,10 @@ "centreon/plugins/snmp.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", + "snmp_standard/mode/resources/", "snmp_standard/mode/liststorages.pm", "snmp_standard/mode/storage.pm", - "network/juniper/common/junos", - "network/juniper/srx" + "network/juniper/common/junos/snmp", + "network/juniper/srx/snmp" ] } diff --git a/packaging/centreon-plugin-Network-Firewalls-Juniper-Ssg-Snmp/pkg.json b/packaging/centreon-plugin-Network-Firewalls-Juniper-Ssg-Snmp/pkg.json index ad8b2b89c..281cf7215 100644 --- a/packaging/centreon-plugin-Network-Firewalls-Juniper-Ssg-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Firewalls-Juniper-Ssg-Snmp/pkg.json @@ -7,8 +7,8 @@ "centreon/plugins/snmp.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", - "network/juniper/common/screenos", - "network/juniper/ssg" + "snmp_standard/mode/resources/", + "network/juniper/common/screenos/snmp", + "network/juniper/ssg/snmp" ] } diff --git a/packaging/centreon-plugin-Network-Juniper-Ggsn-Snmp/pkg.json b/packaging/centreon-plugin-Network-Juniper-Ggsn-Snmp/pkg.json index 4c64b0d76..492cf20f3 100644 --- a/packaging/centreon-plugin-Network-Juniper-Ggsn-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Juniper-Ggsn-Snmp/pkg.json @@ -5,6 +5,6 @@ "files": [ "centreon/plugins/script_snmp.pm", "centreon/plugins/snmp.pm", - "network/juniper/ggsn/" + "network/juniper/ggsn/snmp/" ] } \ No newline at end of file diff --git a/packaging/centreon-plugin-Network-Juniper-Isg-Snmp/pkg.json b/packaging/centreon-plugin-Network-Juniper-Isg-Snmp/pkg.json index 2f2f99a32..1ed117fd4 100644 --- a/packaging/centreon-plugin-Network-Juniper-Isg-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Juniper-Isg-Snmp/pkg.json @@ -7,7 +7,7 @@ "centreon/plugins/snmp.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", + "snmp_standard/mode/resources/", "network/juniper/common/screenos/snmp/", "network/juniper/isg/snmp/" ] diff --git a/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/pkg.json b/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/pkg.json index fe48c8f88..1c90d5516 100644 --- a/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/pkg.json @@ -7,10 +7,10 @@ "centreon/plugins/snmp.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", + "snmp_standard/mode/resources/", "snmp_standard/mode/memory.pm", "snmp_standard/mode/swap.pm", - "network/juniper/common/ive", - "network/juniper/mag" + "network/juniper/common/ive/snmp", + "network/juniper/mag/snmp" ] } diff --git a/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/deb.json b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/deb.json new file mode 100644 index 000000000..05dc1c45f --- /dev/null +++ b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/deb.json @@ -0,0 +1,7 @@ +{ + "dependencies": [ + "plink", + "libssh-session-perl", + "libxml-libxml-simple-perl" + ] +} diff --git a/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/pkg.json b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/pkg.json new file mode 100644 index 000000000..2037001c6 --- /dev/null +++ b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/pkg.json @@ -0,0 +1,13 @@ +{ + "pkg_name": "centreon-plugin-Network-Routers-Juniper-Mseries-Netconf", + "pkg_summary": "Centreon Plugin", + "plugin_name": "centreon_juniper_mseries_netconf.pl", + "files": [ + "centreon/plugins/script_custom.pm", + "centreon/plugins/backend/ssh/", + "centreon/plugins/ssh.pm", + "network/juniper/common/junos/netconf/custom/", + "network/juniper/common/junos/netconf/mode/", + "network/juniper/mseries/netconf/" + ] +} diff --git a/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/rpm.json b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/rpm.json new file mode 100644 index 000000000..8cc79bc88 --- /dev/null +++ b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Netconf/rpm.json @@ -0,0 +1,7 @@ +{ + "dependencies": [ + "plink", + "perl(Libssh::Session)", + "perl(XML::LibXML::Simple)" + ] +} diff --git a/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Snmp/pkg.json b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Snmp/pkg.json index edc4568ae..ee7fd9b96 100644 --- a/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Routers-Juniper-Mseries-Snmp/pkg.json @@ -7,10 +7,10 @@ "centreon/plugins/snmp.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", + "snmp_standard/mode/resources/", "snmp_standard/mode/liststorages.pm", "snmp_standard/mode/storage.pm", - "network/juniper/common/junos/", - "network/juniper/mseries/" + "network/juniper/common/junos/snmp/", + "network/juniper/mseries/snmp/" ] } diff --git a/packaging/centreon-plugin-Network-Switchs-Juniper-Ex-Snmp/pkg.json b/packaging/centreon-plugin-Network-Switchs-Juniper-Ex-Snmp/pkg.json index 30b48e511..35f75c969 100644 --- a/packaging/centreon-plugin-Network-Switchs-Juniper-Ex-Snmp/pkg.json +++ b/packaging/centreon-plugin-Network-Switchs-Juniper-Ex-Snmp/pkg.json @@ -7,10 +7,10 @@ "centreon/plugins/snmp.pm", "snmp_standard/mode/interfaces.pm", "snmp_standard/mode/listinterfaces.pm", - "snmp_standard/mode/resources/", + "snmp_standard/mode/resources/", "snmp_standard/mode/liststorages.pm", "snmp_standard/mode/storage.pm", - "network/juniper/common/junos/", - "network/juniper/ex/" + "network/juniper/common/junos/snmp/", + "network/juniper/ex/snmp/" ] } diff --git a/src/centreon/plugins/backend/ssh/sshcli.pm b/src/centreon/plugins/backend/ssh/sshcli.pm index 8816580f0..04de79f5d 100644 --- a/src/centreon/plugins/backend/ssh/sshcli.pm +++ b/src/centreon/plugins/backend/ssh/sshcli.pm @@ -26,7 +26,7 @@ use centreon::plugins::misc; sub new { my ($class, %options) = @_; - my $self = {}; + my $self = {}; bless $self, $class; if (!defined($options{noptions}) || $options{noptions} != 1) { @@ -45,8 +45,8 @@ sub new { sub check_options { my ($self, %options) = @_; - $self->{ssh_command} = defined($options{option_results}->{sshcli_command}) && $options{option_results}->{sshcli_command} ne '' ? - $options{option_results}->{sshcli_command} : 'ssh'; + $self->{ssh_command} = defined($options{option_results}->{sshcli_command}) && $options{option_results}->{sshcli_command} ne '' ? + $options{option_results}->{sshcli_command} : 'ssh'; $self->{ssh_path} = $options{option_results}->{sshcli_path}; $self->{ssh_option} = defined($options{option_results}->{sshcli_option}) ? $options{option_results}->{sshcli_option} : []; $self->{ssh_port} = defined($options{option_results}->{ssh_port}) && $options{option_results}->{ssh_port} =~ /(\d+)/ ? $1 : 22; @@ -58,10 +58,10 @@ sub check_options { } centreon::plugins::misc::check_security_command( - output => $self->{output}, - command => $options{option_results}->{sshcli_command}, + output => $self->{output}, + command => $options{option_results}->{sshcli_command}, command_options => join('', @{$self->{ssh_option}}), - command_path => $self->{ssh_path} + command_path => $self->{ssh_path} ); push @{$self->{ssh_option}}, '-o=BatchMode=yes'; @@ -77,21 +77,23 @@ sub execute { $options{command} .= $options{cmd_exit} if (defined($options{cmd_exit}) && $options{cmd_exit} ne ''); my ($content, $exit_code) = centreon::plugins::misc::execute( - output => $self->{output}, - sudo => $options{sudo}, - command => $options{command}, - command_path => $options{command_path}, + output => $self->{output}, + sudo => $options{sudo}, + command => $options{command}, + command_path => $options{command_path}, command_options => $options{command_options}, - ssh_pipe => $options{ssh_pipe}, - options => { - remote => 1, - ssh_address => $options{hostname}, - ssh_command => $self->{ssh_command}, - ssh_path => $self->{ssh_path}, - ssh_option => $self->{ssh_option}, - timeout => $options{timeout} + ssh_pipe => $options{ssh_pipe}, + options => { + remote => 1, + ssh_address => $options{hostname}, + ssh_command => $self->{ssh_command}, + ssh_path => $self->{ssh_path}, + ssh_option => $self->{ssh_option}, + timeout => $options{timeout}, + ssh_option_eol => $options{default_sshcli_option_eol} + }, - no_quit => $options{no_quit} + no_quit => $options{no_quit} ); if (defined($options{ssh_pipe}) && $options{ssh_pipe} == 1) { @@ -109,32 +111,32 @@ __END__ =head1 NAME -ssh cli backend. +SSH CLI backend. =head1 SYNOPSIS -ssh cli backend. +SSH CLI backend. -=head1 BACKEND SSHCLI OPTIONS +=head1 BACKEND SSH CLI OPTIONS =over 8 =item B<--sshcli-command> -ssh command (default: 'ssh'). +ssh command (default: C). =item B<--sshcli-path> -ssh command path (default: none) +ssh command path (default: C) =item B<--sshcli-option> -Specify ssh cli options (example: --sshcli-option='-o=StrictHostKeyChecking=no'). +Specify SSH CLI options (example: C<--sshcli-option='-o=StrictHostKeyChecking=no'>). =back =head1 DESCRIPTION -B. +B. =cut diff --git a/src/centreon/plugins/misc.pm b/src/centreon/plugins/misc.pm index b6bbe27e6..5bb56f0fa 100644 --- a/src/centreon/plugins/misc.pm +++ b/src/centreon/plugins/misc.pm @@ -152,6 +152,15 @@ sub unix_execute { push @$args, $options{options}->{hostname}; } + if (defined($options{options}->{ssh_option_eol})) { + foreach (@{$options{options}->{ssh_option_eol}}) { + if (/^(.*?)(?:=(.*))?$/) { + push @$args, $1 if (defined($1)); + push @$args, $2 if (defined($2)); + } + } + } + $sub_cmd = 'sudo ' if (defined($options{sudo})); $sub_cmd .= $options{command_path} . '/' if (defined($options{command_path})); $sub_cmd .= $options{command} . ' ' if (defined($options{command})); diff --git a/src/centreon/plugins/ssh.pm b/src/centreon/plugins/ssh.pm index 139019e07..2d93d8c53 100644 --- a/src/centreon/plugins/ssh.pm +++ b/src/centreon/plugins/ssh.pm @@ -25,7 +25,7 @@ use warnings; sub new { my ($class, %options) = @_; - my $self = {}; + my $self = {}; bless $self, $class; if (!defined($options{noptions}) || $options{noptions} != 1) { @@ -40,22 +40,22 @@ sub new { } centreon::plugins::misc::mymodule_load( - output => $options{output}, - module => 'centreon::plugins::backend::ssh::sshcli', + output => $options{output}, + module => 'centreon::plugins::backend::ssh::sshcli', error_msg => "Cannot load module 'centreon::plugins::backend::ssh::sshcli'." ); $self->{backend_sshcli} = centreon::plugins::backend::ssh::sshcli->new(%options); centreon::plugins::misc::mymodule_load( - output => $options{output}, - module => 'centreon::plugins::backend::ssh::plink', + output => $options{output}, + module => 'centreon::plugins::backend::ssh::plink', error_msg => "Cannot load module 'centreon::plugins::backend::ssh::plink'." ); $self->{backend_plink} = centreon::plugins::backend::ssh::plink->new(%options); centreon::plugins::misc::mymodule_load( - output => $options{output}, - module => 'centreon::plugins::backend::ssh::libssh', + output => $options{output}, + module => 'centreon::plugins::backend::ssh::libssh', error_msg => "Cannot load module 'centreon::plugins::backend::ssh::libssh'." ); $self->{backend_libssh} = centreon::plugins::backend::ssh::libssh->new(%options); @@ -68,7 +68,11 @@ sub check_options { my ($self, %options) = @_; $self->{ssh_backend} = $options{option_results}->{ssh_backend}; - $self->{ssh_port} = defined($options{option_results}->{ssh_port}) && $options{option_results}->{ssh_port} =~ /(\d+)/ ? $1 : 22; + my $default_port = 22; + if (defined($options{default_ssh_port}) && $options{default_ssh_port} =~ /\d+/) { + $default_port = $options{default_ssh_port}; + } + $self->{ssh_port} = defined($options{option_results}->{ssh_port}) && $options{option_results}->{ssh_port} =~ /(\d+)/ ? $1 : $default_port; $self->{ssh_backend} = 'sshcli' if (!defined($options{option_results}->{ssh_backend}) || $options{option_results}->{ssh_backend} eq ''); if (!defined($self->{'backend_' . $self->{ssh_backend}})) { @@ -84,6 +88,12 @@ sub get_port { return $self->{ssh_port}; } +sub get_ssh_backend { + my ($self, %options) = @_; + + return $self->{ssh_backend}; +} + sub execute { my ($self, %options) = @_; @@ -100,7 +110,7 @@ SSH abstraction layer. =head1 SYNOPSIS -SSH abstraction layer for sscli, plink and libssh backends +SSH abstraction layer for SSH CLI, Plink and libSSH backends =head1 SSH GLOBAL OPTIONS @@ -109,7 +119,7 @@ SSH abstraction layer for sscli, plink and libssh backends =item B<--ssh-backend> Define the backend you want to use. -It can be: sshcli (default), plink and libssh. +It can be: C (default), C and C. =item B<--ssh-username> @@ -118,8 +128,8 @@ Define the user name to log in to the host. =item B<--ssh-password> Define the password associated with the user name. -Cannot be used with the sshcli backend. -Warning: using a password is not recommended. Use --ssh-priv-key instead. +Cannot be used with the C backend. +Warning: using a password is not recommended. Use C<--ssh-priv-key> instead. =item B<--ssh-port> diff --git a/src/centreon/plugins/templates/hardware.pm b/src/centreon/plugins/templates/hardware.pm index 213f578ec..a53d43926 100644 --- a/src/centreon/plugins/templates/hardware.pm +++ b/src/centreon/plugins/templates/hardware.pm @@ -351,6 +351,38 @@ sub run { $self->{output}->exit(); } +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => ['component', 'instance', 'description']); +} + +sub disco_show { + my ($self, %options) = @_; + + $self->{loaded} = 0; + $self->call_object_callback(method_name => $self->{cb_hook1}, %options); + + $self->load_components(%options); + if ($self->{loaded} == 0) { + $self->{output}->add_option_msg(short_msg => "Wrong option. Cannot find component '" . $self->{option_results}->{component} . "'."); + $self->{output}->option_exit(); + } + + $self->call_object_callback(method_name => $self->{cb_hook2}, %options); + + foreach (@{$self->{components_module}}) { + if (/$self->{option_results}->{component}/) { + my $mod_name = $self->{components_path} . "::$_"; + if (my $func = $mod_name->can('disco_show')) { + $func->($self); + } + } + } + + $self->call_object_callback(method_name => $self->{cb_hook3}, %options); +} + sub check_filter { my ($self, %options) = @_; diff --git a/src/contrib/collection/juniper/netconf/timeout_log.config b/src/contrib/collection/juniper/netconf/timeout_log.config new file mode 100644 index 000000000..3d3a25ac1 --- /dev/null +++ b/src/contrib/collection/juniper/netconf/timeout_log.config @@ -0,0 +1,51 @@ +{ + "constants": { + "warning": "", + "critical": "" + }, + "api": { + "commands": [ + { + "name": "messages", + "command": "messages", + "rtype": "txt", + "parse": [ + { + "name": "content", + "re": "^(.*?)\\n", + "modifier": "ms", + "multiple": 1, + "entries": [ + { "id": "line", "offset": "1" } + ] + } + ] + } + ] + }, + "selection": [ + { + "name": "logCount", + "functions": [ + { "type": "count", "src": "%(api.tables.messagesContent)", "filter": "%(src.line) =~ /SECONDARY_TIMEOUT|PRIMARY_TIMEOUT/ and %(src.line) !~ /CMDLINE_READ_LINE/", "save": "%(logCount)" } + ], + "warning": "defined(%(constants.warning)) and %(constants.warning) ne '' and %(logCount) > %(constants.warning)", + "critical": "defined(%(constants.critical)) and %(constants.critical) ne '' and %(logCount) > %(constants.critical)", + "perfdatas": [ + { "nlabel": "logs.timeout.count", "value": "%(logCount)", "warning": "%(constants.warning)", "critical": "%(constants.critical)", "min": 0 } + ], + "formatting": { + "printf_msg":"number of timeout logs: %s", + "printf_var":[ + "%(logCount)" + ], + "display_ok": true + } + } + ], + "formatting":{ + "custom_message_global": "All selections are OK", + "separator": "-" + } +} + diff --git a/src/network/juniper/common/ive/mode/users.pm b/src/network/juniper/common/ive/mode/users.pm deleted file mode 100644 index 8b529db8a..000000000 --- a/src/network/juniper/common/ive/mode/users.pm +++ /dev/null @@ -1,215 +0,0 @@ -# -# Copyright 2024 Centreon (http://www.centreon.com/) -# -# Centreon is a full-fledged industry-strength solution that meets -# the needs in IT infrastructure and application monitoring for -# service performance. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -package network::juniper::common::ive::mode::users; - -use base qw(centreon::plugins::templates::counter); - -use strict; -use warnings; - -sub custom_node_output { - my ($self, %options) = @_; - - if ($self->{result_values}->{node_total} ne '') { - return sprintf( - 'concurrent users licenses usage total: %s used: %s (%.2f%%) free: %s (%.2f%%)', - $self->{result_values}->{node_total}, - $self->{result_values}->{node_used}, - $self->{result_values}->{node_used} * 100 / $self->{result_values}->{node_total}, - $self->{result_values}->{node_total} - $self->{result_values}->{node_used}, - ($self->{result_values}->{node_total} - $self->{result_values}->{node_used}) * 100 / $self->{result_values}->{node_total} - ); - } else { - return sprintf( - 'concurrent users licenses used: %s', - $self->{result_values}->{node_used} - ); - } -} - -sub custom_cluster_output { - my ($self, %options) = @_; - - if ($self->{result_values}->{cluster_total} ne '') { - return sprintf( - 'concurrent cluster users licenses usage total: %s used: %s (%.2f%%) free: %s (%.2f%%)', - $self->{result_values}->{cluster_total}, - $self->{result_values}->{cluster_used}, - $self->{result_values}->{cluster_used} * 100 / $self->{result_values}->{cluster_total}, - $self->{result_values}->{cluster_total} - $self->{result_values}->{cluster_used}, - ($self->{result_values}->{cluster_total} - $self->{result_values}->{cluster_used}) * 100 / $self->{result_values}->{cluster_total} - ); - } else { - return sprintf( - 'concurrent cluster users licenses used: %s', - $self->{result_values}->{cluster_used} - ); - } -} - -sub set_counters { - my ($self, %options) = @_; - - $self->{maps_counters_type} = [ - { name => 'global', type => 0, message_separator => ' - ', skipped_code => { -10 => 1 } }, - ]; - - $self->{maps_counters}->{global} = [ - { label => 'node-users-usage', nlabel => 'node.users.usage.count', set => { - key_values => [ { name => 'node_used' }, { name => 'node_total' } ], - closure_custom_output => $self->can('custom_node_output'), - perfdatas => [ - { template => '%d', min => 0, max => 'node_total' } - ] - } - }, - { label => 'node-users-free', nlabel => 'node.users.free.count', display_ok => 0, set => { - key_values => [ { name => 'node_free' }, { name => 'node_used' }, { name => 'node_total' } ], - closure_custom_output => $self->can('custom_node_output'), - perfdatas => [ - { template => '%d', min => 0, max => 'node_total' } - ] - } - }, - { label => 'node-users-usage-prct', nlabel => 'node.users.usage.percentage', display_ok => 0, set => { - key_values => [ { name => 'node_prct_used' }, { name => 'node_free' }, { name => 'node_used' }, { name => 'node_total' } ], - closure_custom_output => $self->can('custom_node_output'), - perfdatas => [ - { template => '%.2f', min => 0, max => 100, unit => '%' } - ] - } - }, - { label => 'cluster-users-usage', nlabel => 'cluster.users.usage.count', set => { - key_values => [ { name => 'cluster_used' }, { name => 'cluster_total' } ], - closure_custom_output => $self->can('custom_cluster_output'), - perfdatas => [ - { template => '%d', min => 0, max => 'cluster_total' } - ] - } - }, - { label => 'cluster-users-free', nlabel => 'cluster.users.free.count', display_ok => 0, set => { - key_values => [ { name => 'cluster_free' }, { name => 'cluster_used' }, { name => 'cluster_total' } ], - closure_custom_output => $self->can('custom_cluster_output'), - perfdatas => [ - { template => '%d', min => 0, max => 'cluster_total' } - ] - } - }, - { label => 'cluster-users-usage-prct', nlabel => 'cluster.users.usage.percentage', display_ok => 0, set => { - key_values => [ { name => 'cluster_prct_used' }, { name => 'cluster_free' }, { name => 'cluster_used' }, { name => 'cluster_total' } ], - closure_custom_output => $self->can('custom_cluster_output'), - perfdatas => [ - { template => '%.2f', min => 0, max => 100, unit => '%' } - ] - } - }, - { label => 'web-users-signedin-usage', nlabel => 'web.users.signedin.usage.count', set => { - key_values => [ { name => 'web' } ], - output_template => 'current concurrent signed-in web users connections: %s', - perfdatas => [ - { value => 'web', template => '%s', min => 0 } - ] - } - }, - { label => 'meeting-users-usage', nlabel => 'meeting.users.usage.count', set => { - key_values => [ { name => 'meeting' } ], - output_template => 'current concurrent meeting users connections: %s', - perfdatas => [ - { value => 'meeting', template => '%s', min => 0 } - ] - } - } - ]; -} - -sub new { - my ($class, %options) = @_; - my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); - bless $self, $class; - - $options{options}->add_options(arguments => { - }); - - return $self; -} - -sub manage_selection { - my ($self, %options) = @_; - - my $oid_signedInWebUsers = '.1.3.6.1.4.1.12532.2.0'; - my $oid_meetingUserCount = '.1.3.6.1.4.1.12532.9.0'; - my $oid_iveConcurrentUsers = '.1.3.6.1.4.1.12532.12.0'; - my $oid_clusterConcurrentUsers = '.1.3.6.1.4.1.12532.13.0'; - my $oid_iveMaxConcurrentUsersLicenseCapacity = '.1.3.6.1.4.1.12532.55.0'; - my $result = $options{snmp}->get_leef( - oids => [ - $oid_signedInWebUsers, $oid_meetingUserCount, - $oid_iveConcurrentUsers, $oid_clusterConcurrentUsers, - $oid_iveMaxConcurrentUsersLicenseCapacity - ], - nothing_quit => 1 - ); - - $self->{global} = { - web => $result->{$oid_signedInWebUsers}, - meeting => $result->{$oid_meetingUserCount}, - cluster_used => $result->{$oid_clusterConcurrentUsers}, - cluster_free => defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? - $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} - $result->{$oid_clusterConcurrentUsers} : undef, - cluster_total => defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : '', - cluster_prct_used => - defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? - $result->{$oid_clusterConcurrentUsers} * 100 / $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : undef, - node_used => $result->{$oid_iveConcurrentUsers}, - node_free => defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? - $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} - $result->{$oid_iveConcurrentUsers} : undef, - node_total => defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : '', - node_prct_used => - defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? - $result->{$oid_iveConcurrentUsers} * 100 / $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : undef - }; -} - -1; - -__END__ - -=head1 MODE - -Check users connections (web users, cluster users, node users, meeting users) (JUNIPER-IVE-MIB). - -=over 8 - -=item B<--filter-counters> - -Only display some counters (regexp can be used). -Example: --filter-counters='web|meeting' - -=item B<--warning-*> B<--critical-*> - -Thresholds. -Can be: 'node-users-usage', 'node-users-free', 'node-users-usage-prct', -'cluster-users-usage', 'cluster-users-free', 'cluster-users-usage-prct', -'web-users-signedin-usage', 'meeting-users-usage'. - -=back - -=cut diff --git a/src/network/juniper/common/ive/mode/cpu.pm b/src/network/juniper/common/ive/snmp/mode/cpu.pm similarity index 98% rename from src/network/juniper/common/ive/mode/cpu.pm rename to src/network/juniper/common/ive/snmp/mode/cpu.pm index f8c84b527..99878c3e0 100644 --- a/src/network/juniper/common/ive/mode/cpu.pm +++ b/src/network/juniper/common/ive/snmp/mode/cpu.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::ive::mode::cpu; +package network::juniper::common::ive::snmp::mode::cpu; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/ive/mode/disk.pm b/src/network/juniper/common/ive/snmp/mode/disk.pm similarity index 98% rename from src/network/juniper/common/ive/mode/disk.pm rename to src/network/juniper/common/ive/snmp/mode/disk.pm index a790e96e5..6ea061317 100644 --- a/src/network/juniper/common/ive/mode/disk.pm +++ b/src/network/juniper/common/ive/snmp/mode/disk.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::ive::mode::disk; +package network::juniper::common::ive::snmp::mode::disk; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/ive/mode/logfile.pm b/src/network/juniper/common/ive/snmp/mode/logfile.pm similarity index 98% rename from src/network/juniper/common/ive/mode/logfile.pm rename to src/network/juniper/common/ive/snmp/mode/logfile.pm index 8b9eb1c80..93ecd37a7 100644 --- a/src/network/juniper/common/ive/mode/logfile.pm +++ b/src/network/juniper/common/ive/snmp/mode/logfile.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::ive::mode::logfile; +package network::juniper::common::ive::snmp::mode::logfile; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/ive/snmp/mode/users.pm b/src/network/juniper/common/ive/snmp/mode/users.pm new file mode 100644 index 000000000..19127cfe3 --- /dev/null +++ b/src/network/juniper/common/ive/snmp/mode/users.pm @@ -0,0 +1,280 @@ +# +# Copyright 2024 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::ive::snmp::mode::users; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub custom_node_output { + my ($self, %options) = @_; + + if ($self->{result_values}->{node_total} ne '') { + return sprintf( + 'concurrent users licenses usage total: %s used: %s (%.2f%%) free: %s (%.2f%%)', + $self->{result_values}->{node_total}, + $self->{result_values}->{node_used}, + $self->{result_values}->{node_used} * 100 / $self->{result_values}->{node_total}, + $self->{result_values}->{node_total} - $self->{result_values}->{node_used}, + ($self->{result_values}->{node_total} - $self->{result_values}->{node_used}) * 100 / $self->{result_values}->{node_total} + ); + } else { + return sprintf( + 'concurrent users licenses used: %s', + $self->{result_values}->{node_used} + ); + } +} + +sub custom_cluster_output { + my ($self, %options) = @_; + + if ($self->{result_values}->{cluster_total} ne '') { + return sprintf( + 'concurrent cluster users licenses usage total: %s used: %s (%.2f%%) free: %s (%.2f%%)', + $self->{result_values}->{cluster_total}, + $self->{result_values}->{cluster_used}, + $self->{result_values}->{cluster_used} * 100 / $self->{result_values}->{cluster_total}, + $self->{result_values}->{cluster_total} - $self->{result_values}->{cluster_used}, + ($self->{result_values}->{cluster_total} - $self->{result_values}->{cluster_used}) * 100 / $self->{result_values}->{cluster_total} + ); + } else { + return sprintf( + 'concurrent cluster users licenses used: %s', + $self->{result_values}->{cluster_used} + ); + } +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, message_separator => ' - ', skipped_code => { -10 => 1 } }, + ]; + + $self->{maps_counters}->{global} = [ + { label => 'node-users-usage', nlabel => 'node.users.usage.count', set => { + key_values => [ { name => 'node_used' }, { name => 'node_total' } ], + closure_custom_output => $self->can('custom_node_output'), + perfdatas => [ + { template => '%d', min => 0, max => 'node_total' } + ] + } + }, + { label => 'node-users-free', nlabel => 'node.users.free.count', display_ok => 0, set => { + key_values => [ { name => 'node_free' }, { name => 'node_used' }, { name => 'node_total' } ], + closure_custom_output => $self->can('custom_node_output'), + perfdatas => [ + { template => '%d', min => 0, max => 'node_total' } + ] + } + }, + { label => 'node-users-usage-prct', nlabel => 'node.users.usage.percentage', display_ok => 0, set => { + key_values => [ { name => 'node_prct_used' }, { name => 'node_free' }, { name => 'node_used' }, { name => 'node_total' } ], + closure_custom_output => $self->can('custom_node_output'), + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%' } + ] + } + }, + { label => 'cluster-users-usage', nlabel => 'cluster.users.usage.count', set => { + key_values => [ { name => 'cluster_used' }, { name => 'cluster_total' } ], + closure_custom_output => $self->can('custom_cluster_output'), + perfdatas => [ + { template => '%d', min => 0, max => 'cluster_total' } + ] + } + }, + { label => 'cluster-users-free', nlabel => 'cluster.users.free.count', display_ok => 0, set => { + key_values => [ { name => 'cluster_free' }, { name => 'cluster_used' }, { name => 'cluster_total' } ], + closure_custom_output => $self->can('custom_cluster_output'), + perfdatas => [ + { template => '%d', min => 0, max => 'cluster_total' } + ] + } + }, + { label => 'cluster-users-usage-prct', nlabel => 'cluster.users.usage.percentage', display_ok => 0, set => { + key_values => [ { name => 'cluster_prct_used' }, { name => 'cluster_free' }, { name => 'cluster_used' }, { name => 'cluster_total' } ], + closure_custom_output => $self->can('custom_cluster_output'), + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%' } + ] + } + }, + { label => 'web-users-signedin-usage', nlabel => 'web.users.signedin.usage.count', set => { + key_values => [ { name => 'web' } ], + output_template => 'current concurrent signed-in web users connections: %s', + perfdatas => [ + { value => 'web', template => '%s', min => 0 } + ] + } + }, + { label => 'meeting-users-usage', nlabel => 'meeting.users.usage.count', set => { + key_values => [ { name => 'meeting' } ], + output_template => 'current concurrent meeting users connections: %s', + perfdatas => [ + { value => 'meeting', template => '%s', min => 0 } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_signedInWebUsers = '.1.3.6.1.4.1.12532.2.0'; + my $oid_meetingUserCount = '.1.3.6.1.4.1.12532.9.0'; + my $oid_iveConcurrentUsers = '.1.3.6.1.4.1.12532.12.0'; + my $oid_clusterConcurrentUsers = '.1.3.6.1.4.1.12532.13.0'; + my $oid_iveMaxConcurrentUsersLicenseCapacity = '.1.3.6.1.4.1.12532.55.0'; + my $result = $options{snmp}->get_leef( + oids => [ + $oid_signedInWebUsers, $oid_meetingUserCount, + $oid_iveConcurrentUsers, $oid_clusterConcurrentUsers, + $oid_iveMaxConcurrentUsersLicenseCapacity + ], + nothing_quit => 1 + ); + + $self->{global} = { + web => + $result->{$oid_signedInWebUsers}, + meeting => + $result->{$oid_meetingUserCount}, + cluster_used => + $result->{$oid_clusterConcurrentUsers}, + cluster_free => + defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? + $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} - $result->{$oid_clusterConcurrentUsers} : undef, + cluster_total => + defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : '', + cluster_prct_used => + defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? + $result->{$oid_clusterConcurrentUsers} * 100 / $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : undef, + node_used => + $result->{$oid_iveConcurrentUsers}, + node_free => + defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? + $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} - $result->{$oid_iveConcurrentUsers} : undef, + node_total => + defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : '', + node_prct_used => + defined($result->{$oid_iveMaxConcurrentUsersLicenseCapacity}) && $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} > 0 ? + $result->{$oid_iveConcurrentUsers} * 100 / $result->{$oid_iveMaxConcurrentUsersLicenseCapacity} : undef + }; +} + +1; + +__END__ + +=head1 MODE + +Check users connections (web users, cluster users, node users, meeting users) (JUNIPER-IVE-MIB). + +=over 8 + +=item B<--filter-counters> + +Only display some counters (regexp can be used). +Example: C<--filter-counters='web|meeting'> + +=item B<--warning-node-users-usage> + +Warning threshold for node users usage (count). + +=item B<--critical-node-users-usage> + +Critical threshold for node users usage (count). + +=item B<--warning-node-users-free> + +Warning threshold for node users free (count). + +=item B<--critical-node-users-free> + +Critical threshold for node users free (count). + +=item B<--warning-node-users-usage-prct> + +Warning threshold for node users usage (percentage). + +=item B<--critical-node-users-usage-prct> + +Critical threshold for node users usage (percentage). + +=item B<--warning-cluster-users-usage> + +Warning threshold for cluster users usage (count). + +=item B<--critical-cluster-users-usage> + +Critical threshold for cluster users usage (count). + +=item B<--warning-cluster-users-free> + +Warning threshold for cluster users free (count). + +=item B<--critical-cluster-users-free> + +Critical threshold for cluster users free (count). + +=item B<--warning-cluster-users-usage-prct> + +Warning threshold for cluster users usage (percentage). + +=item B<--critical-cluster-users-usage-prct> + +Critical threshold for cluster users usage (percentage). + +=item B<--warning-web-users-signedin-usage> + +Warning threshold for web users signed-in usage (count). + +=item B<--critical-web-users-signedin-usage> + +Critical threshold for web users signed-in usage (count). + +=item B<--warning-meeting-users-usage> + +Warning threshold for meeting users usage (count). + +=item B<--critical-meeting-users-usage> + +Critical threshold for meeting users usage (count). + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/custom/netconf.pm b/src/network/juniper/common/junos/netconf/custom/netconf.pm new file mode 100644 index 000000000..42e8acca6 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/custom/netconf.pm @@ -0,0 +1,985 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::custom::netconf; + +use strict; +use warnings; +use centreon::plugins::ssh; +use centreon::plugins::misc; +use XML::LibXML::Simple; +use centreon::plugins::statefile; + +sub new { + my ($class, %options) = @_; + my $self = {}; + bless $self, $class; + + if (!defined($options{output})) { + print "Class Custom: Need to specify 'output' argument.\n"; + exit 3; + } + if (!defined($options{options})) { + $options{output}->add_option_msg(short_msg => "Class Custom: Need to specify 'options' argument."); + $options{output}->option_exit(); + } + + if (!defined($options{noptions})) { + $options{options}->add_options(arguments => { + 'hostname:s' => { name => 'hostname' }, + 'timeout:s' => { name => 'timeout', default => 45 }, + 'command:s' => { name => 'command' }, + 'command-path:s' => { name => 'command_path' }, + 'command-options:s' => { name => 'command_options' }, + 'cache-use' => { name => 'cache_use' } + }); + } + $options{options}->add_help(package => __PACKAGE__, sections => 'SSH OPTIONS', once => 1); + + $self->{output} = $options{output}; + $self->{ssh} = centreon::plugins::ssh->new(%options); + $self->{cache} = centreon::plugins::statefile->new(%options); + + return $self; +} + +sub set_options { + my ($self, %options) = @_; + + $self->{option_results} = $options{option_results}; +} + +sub set_defaults {} + +sub check_options { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{hostname}) && $self->{option_results}->{hostname} ne '') { + $self->{ssh}->check_options( + option_results => $self->{option_results}, + default_ssh_port => 830 + ); + + if ($self->{ssh}->get_ssh_backend() !~ /^sshcli$/) { + $self->{output}->add_option_msg(short_msg => 'unsupported ssh backend (sshcli only)'); + $self->{output}->option_exit(); + } + } + + centreon::plugins::misc::check_security_command( + output => $self->{output}, + command => $self->{option_results}->{command}, + command_options => $self->{option_results}->{command_options}, + command_path => $self->{option_results}->{command_path} + ); + + $self->{cache}->check_options(option_results => $self->{option_results}, default_format => 'json'); + + return 0; +} + +sub get_identifier { + my ($self, %options) = @_; + + my $id = defined($self->{option_results}->{hostname}) ? $self->{option_results}->{hostname} : 'me'; + if (defined($self->{option_results}->{hostname}) && $self->{option_results}->{hostname} ne '') { + $id .= ':' . $self->{ssh}->get_port(); + } + return $id; +} + +sub load_xml { + my ($self, %options) = @_; + + my $content; + + if (!defined($options{middle_tag})) { + if ($options{data} =~ /($options{start_tag}.*?$options{end_tag})/ms) { + $content = $1; + } + } else { + while ($options{data} =~ /($options{start_tag}.*?$options{end_tag})/msg) { + my $matched = $1; + if ($1 =~ /$options{middle_tag}/ms) { + $content = $matched; + last; + } + } + } + + if (!defined($content)) { + if (defined($options{error_continue}) && $options{error_continue} == 1) { + return {}; + } + + $self->{output}->add_option_msg(short_msg => "Cannot find information"); + $self->{output}->option_exit(); + } + + $content =~ s/junos://msg; + + my $xml_result; + eval { + $SIG{__WARN__} = sub {}; + $xml_result = XMLin($content, ForceArray => $options{force_array}, KeyAttr => []); + }; + if ($@) { + $self->{output}->add_option_msg(short_msg => "Cannot decode xml response: $@"); + $self->{output}->option_exit(); + } + + return $xml_result; +} + +sub execute_command { + my ($self, %options) = @_; + + $self->{ssh_commands} = ''; + my $append = ''; + foreach (@{$options{commands}}) { + $self->{ssh_commands} .= $append . " $_"; + $append = "\n]]>]]>\n\n"; + } + + my $content; + if (defined($self->{option_results}->{hostname}) && $self->{option_results}->{hostname} ne '') { + ($content) = $self->{ssh}->execute( + ssh_pipe => 1, + hostname => $self->{option_results}->{hostname}, + command => $self->{ssh_commands}, + timeout => $self->{option_results}->{timeout}, + default_sshcli_option_eol => [ '-s=netconf' ] + ); + } else { + if (!defined($self->{option_results}->{command}) || $self->{option_results}->{command} eq '') { + $self->{output}->add_option_msg(short_msg => 'please set --hostname option for ssh connection (or --command for local)'); + $self->{output}->option_exit(); + } + ($content) = centreon::plugins::misc::execute( + ssh_pipe => 1, + output => $self->{output}, + options => { timeout => $self->{option_results}->{timeout} }, + command => $self->{option_results}->{command}, + command_path => $self->{option_results}->{command_path}, + command_options => defined($self->{option_results}->{command_options}) && $self->{option_results}->{command_options} ne '' ? $self->{option_results}->{command_options} : undef + ); + } + + return $content; +} + +my $commands = { + 'show chassis routing-engine' => '', + 'show chassis fpc' => '', + 'show system storage detail' => '', + 'show chassis environment' => '', + 'show chassis power' => '', + 'show chassis fan' => '', + 'show chassis fpc pic-status' => '', + 'show chassis afeb' => '', + 'show chassis hardware' => '', + 'show interfaces extensive' => '', + 'show bgp neighbor' => '', + 'show ldp session extensive' => '', + 'show mpls lsp' => '', + 'show rsvp session statistics' => '', + 'show services rpm probe-results' => '', + 'show ospf neighbor detail' => '', + 'show interfaces diagnostics optics' => '' +}; + +sub get_rpc_commands { + my ($self, %options) = @_; + + my $rpc_commands = {}; + foreach my $command (@{$options{commands}}) { + next if ($command eq '' || $command !~ /([a-z_]+)/); + my $label = $1; + if ($label eq 'cpu') { + $rpc_commands->{'show chassis routing-engine'} = $commands->{'show chassis routing-engine'}; + $rpc_commands->{'show chassis fpc'} = $commands->{'show chassis fpc'}; + } elsif ($label eq 'disk') { + $rpc_commands->{'show system storage detail'} = $commands->{'show system storage detail'}; + } elsif ($label eq 'hardware') { + $rpc_commands->{'show chassis environment'} = $commands->{'show chassis environment'}; + $rpc_commands->{'show chassis power'} = $commands->{'show chassis power'}; + $rpc_commands->{'show chassis fan'} = $commands->{'show chassis fan'}; + $rpc_commands->{'show chassis fpc'} = $commands->{'show chassis fpc'}; + $rpc_commands->{'show chassis fpc pic-status'} = $commands->{'show chassis fpc pic-status'}; + $rpc_commands->{'show chassis afeb'} = $commands->{'show chassis afeb'}; + $rpc_commands->{'show chassis hardware'} = $commands->{'show chassis hardware'}; + } elsif ($label eq 'interface') { + $rpc_commands->{'show interfaces extensive'} = $commands->{'show interfaces extensive'}; + } elsif ($label eq 'interface_optical') { + $rpc_commands->{'show interfaces diagnostics optics'} = $commands->{'show interfaces diagnostics optics'}; + } elsif ($label eq 'memory') { + $rpc_commands->{'show chassis routing-engine'} = $commands->{'show chassis routing-engine'}; + $rpc_commands->{'show chassis fpc'} = $commands->{'show chassis fpc'}; + } elsif ($label eq 'bgp') { + $rpc_commands->{'show bgp neighbor'} = $commands->{'show bgp neighbor'}; + } elsif ($label eq 'ldp') { + $rpc_commands->{'show ldp session extensive'} = $commands->{'show ldp session extensive'}; + } elsif ($label eq 'lsp') { + $rpc_commands->{'show mpls lsp'} = $commands->{'show mpls lsp'}; + } elsif ($label eq 'rsvp') { + $rpc_commands->{'show rsvp session statistics'} = $commands->{'show rsvp session statistics'}; + } elsif ($label eq 'service_rpm') { + $rpc_commands->{'show services rpm probe-results'} = $commands->{'show services rpm probe-results'}; + } elsif ($label eq 'ospf') { + $rpc_commands->{'show ospf neighbor detail'} = $commands->{'show ospf neighbor detail'}; + } else { + $self->{output}->add_option_msg(short_msg => "unsupported command: $command"); + $self->{output}->option_exit(); + } + } + + return [ values(%$rpc_commands) ]; +} + +sub get_cache_file_response_command { + my ($self, %options) = @_; + + $self->{cache}->read(statefile => 'cache_juniper_api_' . $self->get_identifier()); + my $response = $self->{cache}->get(name => 'response'); + if (!defined($response)) { + $self->{output}->add_option_msg(short_msg => 'Cache file missing'); + $self->{output}->option_exit(); + } + if (!defined($response->{ $options{command} })) { + $self->{output}->add_option_msg(short_msg => "Command '$options{command} missing in cache file"); + $self->{output}->option_exit(); + } + + return $response->{ $options{command }}; +} + +sub cache_commands { + my ($self, %options) = @_; + + my $content = $self->execute_command(commands => $self->get_rpc_commands(commands => $options{commands})); + my $response = {}; + foreach my $command (@{$options{commands}}) { + next if ($command eq '' || $command !~ /([a-z]+)/); + my $label = $1; + my $method = $self->can('get_' . $label . '_infos'); + if ($method) { + my $result = $self->$method(content => $content); + $response->{$label} = $result; + } + } + + $self->{cache}->read(statefile => 'cache_juniper_api_' . $self->get_identifier()); + $self->{cache}->write(data => { + update_time => time(), + response => $response + }); +} + +sub get_command_raw_result { + my ($self, %options) = @_; + + my $content = $self->execute_command(commands => [ $options{command} ]); + $content =~ /()/msg; + $content = $1; + $content =~ s/junos://msg; + return $content; +} + +sub get_cpu_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'cpu'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'cpu' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'route-engine' ]); + + foreach (@{$result->{'route-engine'}}) { + push @$results, { + name => 'route engine slot ' . $_->{slot}, + cpu_1min_avg => 100 - $_->{'cpu-idle1'}, + cpu_5min_avg => 100 - $_->{'cpu-idle2'}, + cpu_15min_avg => 100 - $_->{'cpu-idle3'} + }; + } + + $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'fpc' ]); + + foreach (@{$result->{fpc}}) { + next if (!defined($_->{'cpu-1min-avg'})); + + push @$results, { + name => 'fpc slot ' . $_->{slot}, + cpu_1min_avg => $_->{'cpu-1min-avg'}, + cpu_5min_avg => $_->{'cpu-5min-avg'}, + cpu_15min_avg => $_->{'cpu-15min-avg'} + }; + } + + return $results; +} + +sub get_disk_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'disk'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'disk' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'filesystem' ]); + + foreach (@{$result->{filesystem}}) { + push @$results, { + mount => centreon::plugins::misc::trim($_->{'mounted-on'}), + space_used => $_->{'used-blocks'}->{format} * 1024, + space_total => $_->{'total-blocks'}->{format} * 1024, + space_free => $_->{'available-blocks'}->{format} * 1024, + space_used_prct => centreon::plugins::misc::trim($_->{'used-percent'}), + space_free_prct => 100 - centreon::plugins::misc::trim($_->{'used-percent'}) + }; + } + + return $results; +} + +sub get_hardware_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'hardware'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'hardware' ])); + } + + my $results = { 'fan' => [], 'psu' => [], 'env' => [], 'fpc' => [], 'pic' => {}, mic => {}, 'afeb' => [] }; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'fan-information-rpm-item' ]); + + foreach (@{$result->{'fan-information-rpm-item'}}) { + push @{$results->{fan}}, { + name => $_->{name}, + status => $_->{status}, + rpm => $_->{rpm} + }; + } + + $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'power-usage-item' ], error_continue => 1); + + if (defined($result->{'power-usage-item'})) { + foreach (@{$result->{'power-usage-item'}}) { + push @{$results->{psu}}, { + name => $_->{name}, + status => $_->{state}, + dc_output_load => $_->{'dc-output-detail'}->{'dc-load'} + }; + } + } + + $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'environment-item' ]); + + foreach (@{$result->{'environment-item'}}) { + my $temperature = ''; + if ($_->{class} eq 'Temp') { + $temperature = $_->{temperature}->{celsius}; + } + push @{$results->{env}}, { + name => $_->{name}, + status => $_->{status}, + class => $_->{class}, + temperature => $temperature + }; + } + + $result = $self->load_xml( + data => $content, + start_tag => ' '', + middle_tag => 'fpc.*?(cpu-15min-avg|memory-dram-size)', + force_array => [ 'fpc' ] + ); + + foreach (@{$result->{fpc}}) { + push @{$results->{fpc}}, { + name => 'fpc slot ' . $_->{slot}, + status => $_->{state} + }; + } + + $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'scb' ], error_continue => 1); + + foreach (@{$result->{scb}}) { + push @{$results->{afeb}}, { + name => 'afeb slot ' . $_->{slot}, + status => $_->{state} + }; + } + + $result = $self->load_xml( + data => $content, + start_tag => ' '', + middle_tag => 'pic-state', + force_array => [ 'fpc', 'pic' ], + error_continue => 1 + ); + + foreach my $fpc (@{$result->{fpc}}) { + foreach (@{$fpc->{pic}}) { + $results->{pic}->{'fpc' . $fpc->{slot} . '-pic' . $_->{'pic-slot'}} = { + fpc_slot => $fpc->{slot}, + pic_slot => $_->{'pic-slot'}, + description => $_->{'pic-type'}, + instance => $fpc->{slot} . '/' . $_->{'pic-slot'}, + status => $_->{'pic-state'} + }; + } + } + + $result = $self->load_xml( + data => $content, + start_tag => '', + end_tag => '', + force_array => [ 'chassis-sub-module', 'chassis-sub-sub-module' ] + ); + + foreach my $module (@{$result->{chassis}->{'chassis-module'}}) { + next if ($module->{name} !~ /FPC\s+(\d+)/ || !defined($module->{'chassis-sub-module'})); + my $fpc_slot = $1; + + foreach my $submodule (@{$module->{'chassis-sub-module'}}) { + next if ($submodule->{name} !~ /MIC\s+(\d+)/ || !defined($submodule->{'chassis-sub-sub-module'})); + my $mic_slot = $1; + + $results->{mic}->{'fpc' . $fpc_slot . '-mic' . $mic_slot} = { + pics => [], + fpc_slot => $fpc_slot, + mic_slot => $mic_slot, + instance => $fpc_slot . '/' . $mic_slot, + description => $submodule->{description} + }; + foreach my $subsubmodule (@{$submodule->{'chassis-sub-sub-module'}}) { + next if ($subsubmodule->{name} !~ /PIC\s+(\d+)/); + my $pic_slot = $1; + + push @{$results->{mic}->{'fpc' . $fpc_slot . '-mic' . $mic_slot}->{pics}}, 'fpc' . $fpc_slot . '-pic' . $pic_slot; + $results->{pic}->{'fpc' . $fpc_slot . '-pic' . $pic_slot}->{mic_slot} = $mic_slot; + $results->{pic}->{'fpc' . $fpc_slot . '-pic' . $pic_slot}->{instance} = $fpc_slot . '/' . $mic_slot . '/' . $pic_slot; + } + } + } + + return $results; +} + +sub get_interface_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'interface'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'interface' ])); + } + + my $results = []; + my $result = $self->load_xml( + data => $content, + start_tag => ' '', + middle_tag => 'admin-status', + force_array => [ 'physical-interface', 'logical-interface' ] + ); + + foreach (@{$result->{'physical-interface'}}) { + my $speed = centreon::plugins::misc::trim($_->{'speed'}); + my ($speed_unit, $speed_value); + if ($speed =~ /^\s*([0-9]+)\s*([A-Za-z])/) { + ($speed_value, $speed_unit) = ($1, $2); + } + $speed = centreon::plugins::misc::scale_bytesbit( + value => $speed_value, + src_quantity => $speed_unit, + dst_quantity => '', + src_unit => 'b', + dst_unit => 'b' + ); + + my $descr = centreon::plugins::misc::trim($_->{'description'}); + my $name = centreon::plugins::misc::trim($_->{'name'}); + + my $item = { + descr => defined($descr) && $descr ne '' ? $descr : $name, + name => $name, + opstatus => centreon::plugins::misc::trim($_->{'oper-status'}), + admstatus => centreon::plugins::misc::trim($_->{'admin-status'}->{content}), + in => centreon::plugins::misc::trim($_->{'traffic-statistics'}->{'input-bytes'}) * 8, + out => centreon::plugins::misc::trim($_->{'traffic-statistics'}->{'output-bytes'}) * 8, + inPkts => centreon::plugins::misc::trim($_->{'traffic-statistics'}->{'input-packets'}), + outPkts => centreon::plugins::misc::trim($_->{'traffic-statistics'}->{'output-packets'}), + speed => $speed + }; + if (defined($_->{'input-error-list'})) { + foreach my $label (keys %{$_->{'input-error-list'}}) { + $item->{'counter-in-' . $label} = centreon::plugins::misc::trim($_->{'input-error-list'}->{$label}); + } + } + if (defined($_->{'output-error-list'})) { + foreach my $label (keys %{$_->{'output-error-list'}}) { + $item->{'counter-out-' . $label} = centreon::plugins::misc::trim($_->{'output-error-list'}->{$label}); + } + } + + push @$results, $item; + + foreach my $logint (@{$_->{'logical-interface'}}) { + push @$results, { + descr => centreon::plugins::misc::trim($logint->{'name'}), + name => centreon::plugins::misc::trim($logint->{'name'}), + opstatus => centreon::plugins::misc::trim($_->{'oper-status'}), + admstatus => centreon::plugins::misc::trim($_->{'admin-status'}->{content}), + in => centreon::plugins::misc::trim($logint->{'traffic-statistics'}->{'input-bytes'}) * 8, + out => centreon::plugins::misc::trim($logint->{'traffic-statistics'}->{'output-bytes'}) * 8, + speed => $speed + }; + } + } + + return $results; +} + +sub get_interface_optical_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'interface_optical'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'interface_optical' ])); + } + + my $results = []; + my $result = $self->load_xml( + data => $content, + start_tag => ' '', + middle_tag => 'optics-diagnostics', + force_array => [ 'physical-interface' ] + ); + + foreach (@{$result->{'physical-interface'}}) { + my $entry = { name => centreon::plugins::misc::trim($_->{'name'}) }; + + if (defined($_->{'optics-diagnostics'}->{'laser-output-power-dbm'})) { + $entry->{outputPowerDbm} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-output-power-dbm'}); + $entry->{outputPowerDbmLowAlarmCrit} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-tx-power-low-alarm-threshold-dbm'}); + $entry->{outputPowerDbmHighAlarmCrit} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-tx-power-high-alarm-threshold-dbm'}); + $entry->{outputPowerDbmLowAlarmWarn} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-tx-power-low-warn-threshold-dbm'}); + $entry->{outputPowerDbmHighAlarmWarn} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-tx-power-high-warn-threshold-dbm'}); + } + if (defined($_->{'optics-diagnostics'}->{'laser-input-power-dbm'})) { + $entry->{inputPowerDbm} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-input-power-dbm'}); + $entry->{inputPowerDbmLowAlarmCrit} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-rx-power-low-alarm-threshold-dbm'}); + $entry->{inputPowerDbmHighAlarmCrit} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-rx-power-high-alarm-threshold-dbm'}); + $entry->{inputPowerDbmLowAlarmWarn} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-rx-power-low-warn-threshold-dbm'}); + $entry->{inputPowerDbmHighAlarmWarn} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-rx-power-high-warn-threshold-dbm'}); + } + + $entry->{biasCurrent} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'laser-bias-current'}); + $entry->{moduleTemperature} = centreon::plugins::misc::trim($_->{'optics-diagnostics'}->{'module-temperature'}->{celsius}); + + push @$results, $entry; + } + + return $results; +} + +sub get_memory_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'memory'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'memory' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'route-engine' ]); + + foreach (@{$result->{'route-engine'}}) { + push @$results, { + name => 'route engine slot ' . $_->{slot}, + mem_used => $_->{'memory-buffer-utilization'} + }; + } + + $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'fpc' ]); + + foreach (@{$result->{fpc}}) { + next if (!defined($_->{'memory-heap-utilization'})); + + push @$results, { + name => 'fpc slot ' . $_->{slot} . ' heap', + mem_used => $_->{'memory-heap-utilization'} + }, { + name => 'fpc slot ' . $_->{slot} . ' buffer', + mem_used => $_->{'memory-buffer-utilization'} + }; + } + + return $results; +} + +sub get_ospf_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'ospf'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'ospf' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'ospf-neighbor' ]); + + foreach (@{$result->{'ospf-neighbor'}}) { + push @$results, { + neighborId => $_->{'neighbor-id'}, + neighborAddress => $_->{'neighbor-address'}, + interfaceName => $_->{'interface-name'}, + state => $_->{'ospf-neighbor-state'} + }; + } + + return $results; +} + +sub get_bgp_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'bgp'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'bgp' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'bgp-peer', 'bgp-rib' ]); + + foreach my $item (@{$result->{'bgp-peer'}}) { + my $ribs = []; + foreach (@{$item->{'bgp-rib'}}) { + push @$ribs, { + ribName => $_->{name}, + sendState => $_->{'send-state'}, + activePrefix => $_->{'active-prefix-count'} + }; + } + + $item->{'local-address'} =~ s/\+/:/g; + $item->{'peer-address'} =~ s/\+/:/g; + + push @$results, { + snmpIndex => $item->{'snmp-index'}, + localAddr => $item->{'local-address'}, + localAs => $item->{'local-as'}, + peerAddr => $item->{'peer-address'}, + peerAs => $item->{'peer-as'}, + peerState => $item->{'peer-state'}, + inBytes => $item->{'input-octets'}, + outBytes => $item->{'output-octets'}, + ribs => $ribs + }; + } + + return $results; +} + +sub get_ldp_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'ldp'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'ldp' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'ldp-session', 'ldp-session-statistics' ]); + + foreach my $item (@{$result->{'ldp-session'}}) { + my $stats = []; + foreach (@{$item->{'ldp-session-statistics'}}) { + push @$stats, { + messageType => lc($_->{'ldp-message-type'}), + sent => $_->{'ldp-messages-sent'}, + received => $_->{'ldp-messages-received'} + }; + } + + push @$results, { + id => $item->{'ldp-session-id'}, + remoteAddress => $item->{'ldp-remote-address'}, + sessionState => $item->{'ldp-session-state'}, + connectionState => $item->{'ldp-connection-state'}, + stats => $stats + }; + } + + return $results; +} + +sub get_lsp_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'lsp'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'lsp' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'rsvp-session-data', 'rsvp-session' ]); + + foreach my $item (@{$result->{'rsvp-session-data'}}) { + foreach (@{$item->{'rsvp-session'}}) { + my $lsp = $_; + if (defined($_->{'mpls-lsp'})) { + $lsp = $_->{'mpls-lsp'}; + } + + push @$results, { + type => $item->{'session-type'}, + name => $lsp->{name}, + srcAddress => $lsp->{'source-address'}, + dstAddress => $lsp->{'destination-address'}, + lspState => $lsp->{'lsp-state'}, + lspBytes => $lsp->{'lsp-bytes'} + }; + } + } + + return $results; +} + +sub get_rsvp_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'rsvp'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'rsvp' ])); + } + + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'rsvp-session-data', 'rsvp-session' ]); + + my $results = []; + foreach my $item (@{$result->{'rsvp-session-data'}}) { + foreach (@{$item->{'rsvp-session'}}) { + my $bytes = 0; + if ($_->{'lsp-bytes'} =~ /([0-9]+)/) { + $bytes = $1; + } + + push @$results, { + type => $item->{'session-type'}, + name => $_->{name}, + srcAddress => $_->{'source-address'}, + dstAddress => $_->{'destination-address'}, + lspState => $_->{'lsp-state'}, + lspBytes => $bytes + }; + } + } + + return $results; +} + +sub get_service_rpm_infos { + my ($self, %options) = @_; + + if (defined($self->{option_results}->{cache_use})) { + return $self->get_cache_file_response_command(command => 'service_rpm'); + } + + my $content = $options{content}; + if (!defined($content)) { + $content = $self->execute_command(commands => $self->get_rpc_commands(commands => [ 'service_rpm' ])); + } + + my $results = []; + my $result = $self->load_xml(data => $content, start_tag => '', end_tag => '', force_array => [ 'probe-test-results' ]); + + foreach (@{$result->{'probe-test-results'}}) { + push @$results, { + testName => + $_->{'test-name'}, + targetAddress => + $_->{'target-address'}, + sourceAddress => + $_->{'source-address'}, + probeType => + $_->{'probe-type'}, + probeStatus => + $_->{'probe-single-results'}->{'probe-status'}, + lastLossPercentage => + $_->{'probe-last-test-results'}->{'probe-test-generic-results'}->{'loss-percentage'}, + lastRTTAvgDelay => + centreon::plugins::misc::trim($_->{'probe-last-test-results'}->{'probe-test-generic-results'}->{'probe-test-rtt'}->{'probe-summary-results'}->{'avg-delay'}->{content}), + lastRTTJitterDelay => + centreon::plugins::misc::trim($_->{'probe-last-test-results'}->{'probe-test-generic-results'}->{'probe-test-rtt'}->{'probe-summary-results'}->{'jitter-delay'}->{content}), + lastRTTStdevDelay => + centreon::plugins::misc::trim($_->{'probe-last-test-results'}->{'probe-test-generic-results'}->{'probe-test-rtt'}->{'probe-summary-results'}->{'stddev-delay'}->{content}), + lastPRTJAvgDelay => + centreon::plugins::misc::trim($_ + ->{'probe-last-test-results'} + ->{'probe-test-generic-results'} + ->{'probe-test-positive-round-trip-jitter'} + ->{'probe-summary-results'} + ->{'avg-delay'} + ->{content}), + lastPRTJJitterDelay => + centreon::plugins::misc::trim($_ + ->{'probe-last-test-results'} + ->{'probe-test-generic-results'} + ->{'probe-test-positive-round-trip-jitter'} + ->{'probe-summary-results'} + ->{'jitter-delay'} + ->{content}), + lastPRTJStdevDelay => + centreon::plugins::misc::trim($_ + ->{'probe-last-test-results'} + ->{'probe-test-generic-results'} + ->{'probe-test-positive-round-trip-jitter'} + ->{'probe-summary-results'} + ->{'stddev-delay'} + ->{content}), + lastNRTJAvgDelay => + centreon::plugins::misc::trim($_ + ->{'probe-last-test-results'} + ->{'probe-test-generic-results'} + ->{'probe-test-negative-round-trip-jitter'} + ->{'probe-summary-results'} + ->{'avg-delay'} + ->{content}), + lastNRTJJitterDelay => + centreon::plugins::misc::trim($_ + ->{'probe-last-test-results'} + ->{'probe-test-generic-results'} + ->{'probe-test-negative-round-trip-jitter'} + ->{'probe-summary-results'} + ->{'jitter-delay'} + ->{content}), + lastNRTJStdevDelay => + centreon::plugins::misc::trim($_ + ->{'probe-last-test-results'} + ->{'probe-test-generic-results'} + ->{'probe-test-negative-round-trip-jitter'} + ->{'probe-summary-results'} + ->{'stddev-delay'} + ->{content}), + }; + } + + return $results; +} + +1; + +__END__ + +=head1 NAME + +ssh + +=head1 SYNOPSIS + +my ssh + +=head1 SSH OPTIONS + +=over 8 + +=item B<--hostname> + +Hostname to query. + +=item B<--timeout> + +Timeout in seconds for the command (default: 45). + +=item B<--command> + +Command to get information. Used it you have output in a file. + +=item B<--command-path> + +Command path. + +=item B<--command-options> + +Command options. + +=item B<--cache-use> + +Use the cache file (created with cache mode). + +=back + +=head1 DESCRIPTION + +B. + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/bgp.pm b/src/network/juniper/common/junos/netconf/mode/bgp.pm new file mode 100644 index 000000000..1bb1aaf19 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/bgp.pm @@ -0,0 +1,408 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::bgp; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_bgp_rib_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances_bgp_rib}}) { + push @$instances, $self->{result_values}->{$_}; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => sprintf('%d', $self->{result_values}->{ $self->{key_values}->[0]->{name} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_bgp_peer_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances_bgp_peer}}) { + push @$instances, $self->{result_values}->{$_}; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => sprintf('%d', $self->{result_values}->{ $self->{key_values}->[0]->{name} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_rib_status_output { + my ($self, %options) = @_; + + return sprintf( + 'send state: %s', + $self->{result_values}->{sendState} + ); +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf( + 'state: %s', + $self->{result_values}->{peerState} + ); +} + +sub bgp_long_output { + my ($self, %options) = @_; + + return sprintf( + "checking BGP peer [local address '%s', AS '%s'][peer address '%s', AS '%s']", + $options{instance_value}->{localAddr}, + $options{instance_value}->{localAs}, + $options{instance_value}->{peerAddr}, + $options{instance_value}->{peerAs} + ); +} + +sub prefix_bgp_output { + my ($self, %options) = @_; + + return sprintf( + "BGP peer [local address '%s', AS '%s'][peer address '%s', AS '%s'] ", + $options{instance_value}->{localAddr}, + $options{instance_value}->{localAs}, + $options{instance_value}->{peerAddr}, + $options{instance_value}->{peerAs} + ); +} + +sub prefix_rib_output { + my ($self, %options) = @_; + + return sprintf( + "RIB '%s' ", + $options{instance_value}->{ribName} + ); +} + +sub prefix_traffic_output { + my ($self, %options) = @_; + + return 'traffic '; +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Number of BGP peers '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output' }, + { name => 'bgp', type => 3, cb_prefix_output => 'prefix_bgp_output', cb_long_output => 'bgp_long_output', + indent_long_output => ' ', message_multiple => 'All BGP peers are ok', + group => [ + { name => 'status', type => 0, skipped_code => { -10 => 1 } }, + { name => 'traffic', type => 0, cb_prefix_output => 'prefix_traffic_output', skipped_code => { -10 => 1 } }, + { name => 'ribs', display_long => 1, cb_prefix_output => 'prefix_rib_output', + message_multiple => 'All BGP ribs are ok', type => 1 } + ] + } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'bgp-peer-detected', display_ok => 0, nlabel => 'bgp.peers.detected.count', set => { + key_values => [ { name => 'detected' } ], + output_template => 'detected: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; + + $self->{maps_counters}->{status} = [ + { + label => 'status', + type => 2, + critical_default => '%{peerState} !~ /established/i', + set => { + key_values => [ + { name => 'localAddr' }, { name => 'localAs' }, { name => 'peerAddr' }, { name => 'peerAs' }, + { name => 'peerState' } + ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + + $self->{maps_counters}->{traffic} = [ + { label => 'bgp-peer-traffic-in', nlabel => 'bgp.peer.traffic.in.bytes', set => { + key_values => [ { name => 'inBytes', diff => 1 }, { name => 'localAddr' }, { name => 'localAs' }, { name => 'peerAddr' }, { name => 'peerAs' } ], + output_template => 'in: %s %s', + output_change_bytes => 1, + closure_custom_perfdata => $self->can('custom_bgp_peer_perfdata') + } + }, + { label => 'bgp-peer-traffic-out', nlabel => 'bgp.peer.traffic.out.bytes', set => { + key_values => [ { name => 'outBytes', diff => 1 }, { name => 'localAddr' }, { name => 'localAs' }, { name => 'peerAddr' }, { name => 'peerAs' } ], + output_template => 'out: %s %s', + output_change_bytes => 1, + closure_custom_perfdata => $self->can('custom_bgp_peer_perfdata') + } + } + ]; + + $self->{maps_counters}->{ribs} = [ + { + label => 'rib-status', + type => 2, + set => { + key_values => [ + { name => 'localAddr' }, { name => 'localAs' }, { name => 'peerAddr' }, { name => 'peerAs' }, + { name => 'ribName' }, { name => 'sendState' } + ], + closure_custom_output => $self->can('custom_rib_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { label => 'bgp-peer-rib-prefixes-active', nlabel => 'bgp.peer.rib.prefixes.active.count', set => { + key_values => [ + { name => 'activePrefix' }, { name => 'localAddr' }, { name => 'localAs' }, { name => 'peerAddr' }, { name => 'peerAs' }, + { name => 'ribName' } + ], + output_template => 'prefixes active: %d', + closure_custom_perfdata => $self->can('custom_bgp_rib_perfdata') + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-snmp-index:s' => { name => 'filter_snmp_index' }, + 'filter-local-address:s' => { name => 'filter_local_address' }, + 'filter-peer-address:s' => { name => 'filter_peer_address' }, + 'filter-rib-name:s' => { name => 'filter_rib_name' }, + 'custom-perfdata-instances-bgp-peer:s' => { name => 'custom_perfdata_instances_bgp_peer' }, + 'custom-perfdata-instances-bgp-rib:s' => { name => 'custom_perfdata_instances_bgp_rib' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{custom_perfdata_instances_bgp_peer}) || $self->{option_results}->{custom_perfdata_instances_bgp_peer} eq '') { + $self->{option_results}->{custom_perfdata_instances_bgp_peer} = '%(localAddr) %(peerAddr)'; + } + + $self->{custom_perfdata_instances_bgp_peer} = $self->custom_perfdata_instances( + option_name => '--custom-perfdata-instances-bgp-peer', + instances => $self->{option_results}->{custom_perfdata_instances_bgp_peer}, + labels => { localAddr => 1, localAs => 1, peerAddr => 1, peerAs => 1 } + ); + + if (!defined($self->{option_results}->{custom_perfdata_instances_bgp_rib}) || $self->{option_results}->{custom_perfdata_instances_bgp_rib} eq '') { + $self->{option_results}->{custom_perfdata_instances_bgp_rib} = '%(localAddr) %(peerAddr) %(ribName)'; + } + + $self->{custom_perfdata_instances_bgp_rib} = $self->custom_perfdata_instances( + option_name => '--custom-perfdata-instances-bgp-rib', + instances => $self->{option_results}->{custom_perfdata_instances_bgp_rib}, + labels => { localAddr => 1, localAs => 1, peerAddr => 1, peerAs => 1, ribName => 1 } + ); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_bgp_infos(); + + $self->{global} = { detected => 0 }; + $self->{bgp} = {}; + foreach my $item (@$result) { + next if (defined($self->{option_results}->{filter_snmp_index}) && $self->{option_results}->{filter_snmp_index} ne '' && + $item->{snmpIndex} !~ /$self->{option_results}->{filter_snmp_index}/); + next if (defined($self->{option_results}->{filter_local_address}) && $self->{option_results}->{filter_local_address} ne '' && + $item->{localAddr} !~ /$self->{option_results}->{filter_local_address}/); + next if (defined($self->{option_results}->{filter_peer_address}) && $self->{option_results}->{filter_peer_address} ne '' && + $item->{peerAddr} !~ /$self->{option_results}->{filter_peer_address}/); + + $self->{bgp}->{ $item->{snmpIndex} } = { + localAddr => $item->{localAddr}, + localAs => $item->{localAs}, + peerAddr => $item->{peerAddr}, + peerAs => $item->{peerAs}, + status => { + localAddr => $item->{localAddr}, + localAs => $item->{localAs}, + peerAddr => $item->{peerAddr}, + peerAs => $item->{peerAs}, + peerState => $item->{peerState} + }, + traffic => { + localAddr => $item->{localAddr}, + localAs => $item->{localAs}, + peerAddr => $item->{peerAddr}, + peerAs => $item->{peerAs}, + inBytes => $item->{inBytes}, + outBytes => $item->{outBytes} + }, + ribs => {} + }; + + foreach (@{$item->{ribs}}) { + next if (defined($self->{option_results}->{filter_rib_name}) && $self->{option_results}->{filter_rib_name} ne '' && + $_->{ribName} !~ /$self->{option_results}->{filter_rib_name}/); + + $self->{bgp}->{ $item->{snmpIndex} }->{ribs}->{ $_->{ribName} } = { + localAddr => $item->{localAddr}, + localAs => $item->{localAs}, + peerAddr => $item->{peerAddr}, + peerAs => $item->{peerAs}, + %$_ + }; + } + + $self->{global}->{detected}++; + } + + $self->{cache_name} = 'juniper_api_' . $options{custom}->get_identifier() . '_' . $self->{mode} . '_' . + md5_hex( + (defined($self->{option_results}->{filter_counters}) ? $self->{option_results}->{filter_counters} : '') . '_' . + (defined($self->{option_results}->{filter_snmp_index}) ? $self->{option_results}->{filter_snmp_index} : '') . '_' . + (defined($self->{option_results}->{filter_local_address}) ? $self->{option_results}->{filter_local_address} : '') . '_' . + (defined($self->{option_results}->{filter_peer_address}) ? $self->{option_results}->{filter_peer_address} : '') . '_' . + (defined($self->{option_results}->{filter_rib_name}) ? $self->{option_results}->{filter_rib_name} : '') + ); +} + +1; + +__END__ + +=head1 MODE + +Check BGP peers. + +=over 8 + +=item B<--filter-snmp-index> + +Filter BGP peer by SNMP index. + +=item B<--filter-local-address> + +Filter BGP peer by local address. + +=item B<--filter-peer-address> + +Filter BGP peer by peer address. + +=item B<--filter-rib-name> + +Filter BGP RIB by RIB name. + +=item B<--custom-perfdata-instances-bgp-peer> + +Define performance data instances (default: '%(localAddr) %(peerAddr)') + +=item B<--unknown-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: %{localAddr}, %{localAs}, %{peerAddr}, %{peerAs}, %{peerState} + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: %{localAddr}, %{localAs}, %{peerAddr}, %{peerAs}, %{peerState} + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: '%{peerState} !~ /established/i'). +You can use the following variables: %{localAddr}, %{localAs}, %{peerAddr}, %{peerAs}, %{peerState} + +=item B<--unknown-rib-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: %{localAddr}, %{localAs}, %{peerAddr}, %{peerAs}, %{peerState}, %{ribName}, %{sendState} + +=item B<--warning-rib-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: %{localAddr}, %{localAs}, %{peerAddr}, %{peerAs}, %{peerState}, %{ribName}, %{sendState} + +=item B<--critical-rib-status> + +Define the conditions to match for the status to be CRITICAL. +You can use the following variables: %{localAddr}, %{localAs}, %{peerAddr}, %{peerAs}, %{peerState}, %{ribName}, %{sendState} + +=item B<--warning-bgp-peer-detected> + +Warning threshold for number of BGP peers detected. + +=item B<--critical-bgp-peer-detected> + +Critical threshold for number of BGP peers detected. + +=item B<--warning-bgp-peer-traffic-in> + +Warning threshold for BGP peer traffic in. + +=item B<--critical-bgp-peer-traffic-in> + +Critical threshold for BGP peer traffic in. + +=item B<--warning-bgp-peer-traffic-out> + +Warning threshold for BGP peer traffic out. + +=item B<--critical-bgp-peer-traffic-out> + +Critical threshold for BGP peer traffic out. + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/collection.pm b/src/network/juniper/common/junos/netconf/mode/collection.pm new file mode 100644 index 000000000..c6f53018c --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/collection.pm @@ -0,0 +1,1813 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::collection; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use Safe; +use centreon::plugins::misc; +use centreon::plugins::statefile; +use Digest::MD5 qw(md5_hex); +use Time::HiRes qw(gettimeofday tv_interval); +use JSON::XS; +use XML::LibXML::Simple; +use JSON::Path; +$JSON::Path::Safe = 0; + +sub custom_select_threshold { + my ($self, %options) = @_; + + my $status = 'ok'; + our $expand = $self->{result_values}->{expand}; + if (defined($self->{result_values}->{config}->{critical}) && $self->{result_values}->{config}->{critical} && + $self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{critical})) { + $status = 'critical'; + } elsif (defined($self->{result_values}->{config}->{warning}) && $self->{result_values}->{config}->{warning} ne '' && + $self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{warning})) { + $status = 'warning'; + } elsif (defined($self->{result_values}->{config}->{unknown}) && $self->{result_values}->{config}->{unknown} && + $self->{instance_mode}->reval($self->{result_values}->{config}->{unknown})) { + $status = 'unknown'; + } + if ($@) { + $self->{output}->add_option_msg(short_msg => 'Unsafe code evaluation: ' . $@); + $self->{output}->option_exit(); + } + + $self->{result_values}->{last_status} = $status; + return $status; +} + +sub custom_select_perfdata { + my ($self, %options) = @_; + + return if (!defined($self->{result_values}->{config}->{perfdatas})); + foreach (@{$self->{result_values}->{config}->{perfdatas}}) { + next if (!defined($_->{value}) || $_->{value} !~ /^[+-]?\d+(?:\.\d+)?$/); + $self->{output}->perfdata_add(%$_); + } +} + +sub custom_select_output { + my ($self, %options) = @_; + + return '' if ( + $self->{result_values}->{last_status} eq 'ok' && defined($self->{result_values}->{config}->{formatting}) && + defined($self->{result_values}->{config}->{formatting}->{display_ok}) && + $self->{result_values}->{config}->{formatting}->{display_ok} =~ /^false|0$/ + ); + + my $format; + if (defined($self->{result_values}->{config}->{ 'formatting_' . $self->{result_values}->{last_status} })) { + $format = $self->{result_values}->{config}->{ 'formatting_' . $self->{result_values}->{last_status} }; + } elsif (defined($self->{result_values}->{config}->{formatting})) { + $format = $self->{result_values}->{config}->{formatting}; + } + + if (defined($format)) { + return sprintf( + $format->{printf_msg}, @{$format->{printf_var}} + ); + } + + # without formatting: [name: xxxxxx][test: xxxx][test2: xxx][mytable.plcRead: xxx][mytable.plcWrite: xxx] + my $output = ''; + foreach (sort keys %{$self->{result_values}->{expand}}) { + next if (/^(?:constants|builtin)\./); + $output .= '[' . $_ . ': ' . $self->{result_values}->{expand}->{$_} . ']'; + } + + return $output; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'selections', type => 1, message_multiple => 'All selections are ok', skipped_code => { -10 => 1 } } + ]; + + $self->{maps_counters}->{selections} = [ + { label => 'select', threshold => 0, set => { + key_values => [ { name => 'expand' }, { name => 'config' } ], + closure_custom_output => $self->can('custom_select_output'), + closure_custom_perfdata => $self->can('custom_select_perfdata'), + closure_custom_threshold_check => $self->can('custom_select_threshold') + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'config:s' => { name => 'config' }, + 'filter-selection:s%' => { name => 'filter_selection' }, + 'constant:s%' => { name => 'constant' } + }); + + $self->{safe} = Safe->new(); + $self->{safe}->share('$expand'); + + $self->{safe_func} = Safe->new(); + $self->{safe_func}->share('$assign_var'); + + $self->{builtin} = {}; + + $self->{api_cache} = centreon::plugins::statefile->new(%options); + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{config})) { + $self->{output}->add_option_msg(short_msg => 'Please set config option'); + $self->{output}->option_exit(); + } + $self->{api_cache}->check_options(option_results => $self->{option_results}); +} + +sub slurp_file { + my ($self, %options) = @_; + + my $content = do { + local $/ = undef; + if (!open my $fh, '<', $options{file}) { + $self->{output}->add_option_msg(short_msg => "Could not open file $options{file}: $!"); + $self->{output}->option_exit(); + } + <$fh>; + }; + + return $content; +} + +sub read_config { + my ($self, %options) = @_; + + my $content; + if ($self->{option_results}->{config} =~ /\n/m || !-f "$self->{option_results}->{config}") { + $content = $self->{option_results}->{config}; + } else { + $content = $self->slurp_file(file => $self->{option_results}->{config}); + } + + eval { + $self->{config} = JSON::XS->new->decode($content); + }; + if ($@) { + $self->{output}->output_add(long_msg => "json config error: $@", debug => 1); + $self->{output}->add_option_msg(short_msg => 'Cannot decode json config'); + $self->{output}->option_exit(); + } +} + +sub get_map_value { + my ($self, %options) = @_; + + return undef if ( + !defined($self->{config}->{mapping}) || + !defined($self->{config}->{mapping}->{ $options{map} }) + ); + return '' if (!defined($self->{config}->{mapping}->{ $options{map} }->{ $options{value} })); + return $self->{config}->{mapping}->{ $options{map} }->{ $options{value} }; +} + +sub validate_name { + my ($self, %options) = @_; + + if (!defined($options{name})) { + $self->{output}->add_option_msg(short_msg => "name attribute is missing in your api collection (path: $options{section})"); + $self->{output}->option_exit(); + } + if ($options{name} !~ /^[a-zA-Z0-9]+$/) { + $self->{output}->add_option_msg(short_msg => "name attribute in your api collection (path: $options{section}) is incorrect: " . $options{name}); + $self->{output}->option_exit(); + } +} + +sub parse_txt { + my ($self, %options) = @_; + + if (!defined($options{conf}->{name}) || $options{conf}->{name} eq '') { + $self->{output}->add_option_msg(short_msg => "name attribute is missing [api > commands > $options{name}]"); + $self->{output}->option_exit(); + } + if (!defined($options{conf}->{re}) || $options{conf}->{re} eq '') { + $self->{output}->add_option_msg(short_msg => "re attribute is missing [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + if (!defined($options{conf}->{entries})) { + $self->{output}->add_option_msg(short_msg => "entries section is missing [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + foreach (@{$options{conf}->{entries}}) { + if (!defined($_->{id})) { + $self->{output}->add_option_msg(short_msg => "id attribute is missing or wrong [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + if (!defined($_->{offset}) || $_->{offset} !~ /^(?:[0-9]+)$/) { + $self->{output}->add_option_msg(short_msg => "offset attribute is missing or wrong [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + } + + my $modifier = defined($options{conf}->{modifier}) ? $options{conf}->{modifier} : ''; + + my @entries = (); + foreach (@{$options{conf}->{entries}}) { + next if ($_->{offset} !~ /^[0-9]+$/); + + push @entries, $_; + } + + my $content = defined($options{conf}->{type}) && $options{conf}->{type} eq 'header' ? $options{headers} : $options{content}; + + my $local = {}; + my $i = 0; + while ($content =~ /(?$modifier)$options{conf}->{re}/g) { + my $instance = $i; + my $name = $options{name} . ucfirst($options{conf}->{name}); + + my $entry = {}; + foreach (@entries) { + my $offset = "\$" . $_->{offset}; + my $value = eval "$offset"; + if (!defined($value)) { + $entry->{ $_->{id} } = ''; + next; + } + + $entry->{ $_->{id} } = $value; + + if (defined($_->{map}) && $_->{map} ne '') { + if (!defined($self->{config}->{mapping}) || !defined($self->{config}->{mapping}->{ $_->{map} })) { + $self->{output}->add_option_msg(short_msg => "unknown map attribute [api > commands > $options{name} > $options{conf}->{name}]: $_->{map}"); + $self->{output}->option_exit(); + } + $entry->{ $_->{id} } = $self->{config}->{mapping}->{ $_->{map} }->{$value}; + } + + if (defined($_->{sampling}) && $_->{sampling} == 1) { + $self->{api_collected_sampling}->{tables}->{$name} = {} + if (!defined($self->{api_collected_sampling}->{tables}->{$name})); + $self->{api_collected_sampling}->{tables}->{$name}->{$instance}->{ $_->{id} } = $value; + } + } + + $self->{api_collected}->{tables}->{$name}->{$instance} = $entry; + $local->{$name}->{$instance} = $entry; + $i++; + + last if (!defined($options{conf}->{multiple})); + } + + return $local; +} + +sub parse_structure { + my ($self, %options) = @_; + + if (!defined($options{conf}->{name}) || $options{conf}->{name} eq '') { + $self->{output}->add_option_msg(short_msg => "name attribute is missing [api > commands > $options{name}]"); + $self->{output}->option_exit(); + } + if (!defined($options{conf}->{path}) || $options{conf}->{path} eq '') { + $self->{output}->add_option_msg(short_msg => "path attribute is missing [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + if (!defined($options{conf}->{entries})) { + $self->{output}->add_option_msg(short_msg => "entries section is missing [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + + $options{conf}->{path} = $self->substitute_string(value => $options{conf}->{path}); + + my $content; + if ($options{rtype} eq 'json') { + eval { + $content = JSON::XS->new->utf8->decode($options{content}); + }; + } elsif ($options{rtype} eq 'xml') { + eval { + $SIG{__WARN__} = sub {}; + $content = XMLin($options{content}, ForceArray => $options{force_array}, KeyAttr => []); + }; + } + if ($@) { + $self->{output}->add_option_msg(short_msg => "Cannot decode response (add --debug option to display returned content)"); + $self->{output}->output_add(long_msg => "$@", debug => 1); + $self->{output}->option_exit(); + } + + if ($self->{output}->is_debug()) { + my $encoded = JSON::XS->new->allow_nonref(1)->utf8->pretty->encode($content); + $self->{output}->output_add(long_msg => '======> returned JSON structure:', debug => 1); + $self->{output}->output_add(long_msg => "$encoded", debug => 1); + } + + my $jpath = JSON::Path->new($options{conf}->{path}); + my @values = $jpath->values($content); + + my $local = {}; + my $i = 0; + foreach my $value (@values) { + my $instance = $i; + my $name = $options{name} . ucfirst($options{conf}->{name}); + + my $entry = {}; + foreach (@{$options{conf}->{entries}}) { + if (!defined($_->{id})) { + $self->{output}->add_option_msg(short_msg => "id attribute is missing or wrong [api > commands > $options{name} > $options{conf}->{name}]"); + $self->{output}->option_exit(); + } + + my $ref = ref($value); + if ($ref eq 'HASH') { + + if (!defined($value->{ $_->{id} })) { + # Check and assume in case of hash reference first part is the hash ref and second the hash key + if ($_->{id} =~ /^(.+?)\.(.*)$/) { + if (!defined($value->{$1}->{$2})) { + $entry->{ $_->{id} } = ''; + next; + } else { + $entry->{ $_->{id} } = $value->{$1}->{$2}; + } + } else { + $entry->{ $_->{id} } = ''; + next; + } + } else { + $entry->{ $_->{id} } = $value->{ $_->{id} }; + } + } elsif (ref($value) eq 'ARRAY') { + next; + } elsif ($ref eq '' || $ref eq 'JSON::PP::Boolean') { + $entry->{ $_->{id} } = $value; + } else { + next; + } + + if (defined($_->{map}) && $_->{map} ne '') { + if (!defined($self->{config}->{mapping}) || !defined($self->{config}->{mapping}->{ $_->{map} })) { + $self->{output}->add_option_msg(short_msg => "unknown map attribute [api > commands > $options{name} > $options{conf}->{name}]: $_->{map}"); + $self->{output}->option_exit(); + } + $entry->{ $_->{id} } = $self->{config}->{mapping}->{ $_->{map} }->{ $entry->{ $_->{id} } }; + } + + if (defined($_->{sampling}) && $_->{sampling} == 1) { + $self->{api_collected_sampling}->{tables}->{$name} = {} + if (!defined($self->{api_collected_sampling}->{tables}->{$name})); + $self->{api_collected_sampling}->{tables}->{$name}->{$instance}->{ $_->{id} } = $entry->{ $_->{id} }; + } + } + + $self->{api_collected}->{tables}->{$name}->{$instance} = $entry; + $local->{$name}->{$instance} = $entry; + $i++; + } + + return $local; +} + +sub collect_api_commands { + my ($self, %options) = @_; + + return if (!defined($self->{config}->{api}->{commands})); + foreach my $command (@{$self->{config}->{api}->{commands}}) { + $self->validate_name(name => $command->{name}, section => "[api > commands]"); + if (!defined($command->{command}) || $command->{command} eq '') { + $self->{output}->add_option_msg(short_msg => "command attribute is missing [api > commands > $command->{name}]"); + $self->{output}->option_exit(); + } + + my $content = $options{custom}->get_command_raw_result(command => $command->{command}); + + my $local = {}; + if (defined($command->{parse})) { + foreach my $conf (@{$command->{parse}}) { + my $lentries = {}; + if ($command->{rtype} eq 'txt') { + $lentries = $self->parse_txt(name => $command->{name}, content => $content, conf => $conf); + } else { + $lentries = $self->parse_structure( + name => $command->{name}, + content => $content, + conf => $conf, + rtype => $command->{rtype}, + force_array => $command->{force_array} + ); + } + + $local = { %$local, %$lentries }; + } + } + + $self->set_functions( + section => "api > commands > $command->{name}", + functions => $command->{functions}, + default => 1 + ); + } +} + +sub is_api_cache_enabled { + my ($self, %options) = @_; + + return 0 if ( + !defined($self->{config}->{api}->{cache}) || + !defined($self->{config}->{api}->{cache}->{enable}) || + $self->{config}->{api}->{cache}->{enable} !~ /^true|1$/i + ); + + return 1; +} + +sub use_api_cache { + my ($self, %options) = @_; + + return 0 if ($self->is_api_cache_enabled() == 0); + + my $has_cache_file = $self->{api_cache}->read( + statefile => 'cache_juniper_collection_' . $options{custom}->get_identifier() . '_' . + md5_hex($self->{option_results}->{config}) + ); + $self->{api_collected} = $self->{api_cache}->get(name => 'api_collected'); + my $reload = defined($self->{config}->{api}->{cache}->{reload}) && $self->{config}->{api}->{cache}->{reload} =~ /(\d+)/ ? + $self->{config}->{api}->{cache}->{reload} : 30; + return 0 if ( + $has_cache_file == 0 || + !defined($self->{api_collected}) || + ((time() - $self->{api_collected}->{epoch}) > ($reload * 60)) + ); + + return 1; +} + +sub save_api_cache { + my ($self, %options) = @_; + + return 0 if ($self->is_api_cache_enabled() == 0); + $self->{api_cache}->write(data => { api_collected => $self->{api_collected} }); +} + +sub collect_api_sampling { + my ($self, %options) = @_; + + return if ($self->{api_collected}->{sampling} == 0); + + my $has_cache_file = $self->{api_cache}->read( + statefile => 'cache_juniper_collection_sampling_' . md5_hex($self->{option_results}->{config}) + ); + my $api_collected_sampling_old = $self->{api_cache}->get(name => 'api_collected_sampling'); + # with cache, we need to load the sampling cache maybe. please a statefile-suffix to get uniq files. + # sampling with a global cache can be a nonsense + if (!defined($self->{api_collected_sampling})) { + $self->{api_collected_sampling} = $api_collected_sampling_old; + } + + my $delta_time; + if (defined($api_collected_sampling_old->{epoch})) { + $delta_time = $self->{api_collected_sampling}->{epoch} - $api_collected_sampling_old->{epoch}; + $delta_time = 1 if ($delta_time <= 0); + } + + foreach my $tbl_name (keys %{$self->{api_collected_sampling}->{tables}}) { + foreach my $instance (keys %{$self->{api_collected_sampling}->{tables}->{$tbl_name}}) { + foreach my $attr (keys %{$self->{api_collected_sampling}->{tables}->{$tbl_name}->{$instance}}) { + next if ( + !defined($api_collected_sampling_old->{tables}->{$tbl_name}) || + !defined($api_collected_sampling_old->{tables}->{$tbl_name}->{$instance}) || + !defined($api_collected_sampling_old->{tables}->{$tbl_name}->{$instance}->{$attr}) || + $api_collected_sampling_old->{tables}->{$tbl_name}->{$instance}->{$attr} !~ /\d/ + ); + my $old = $api_collected_sampling_old->{tables}->{$tbl_name}->{$instance}->{$attr}; + my $diff = $self->{api_collected_sampling}->{tables}->{$tbl_name}->{$instance}->{$attr} - $old; + my $diff_counter = $diff; + $diff_counter = $self->{api_collected_sampling}->{tables}->{$tbl_name}->{$instance}->{$attr} if ($diff_counter < 0); + + $self->{api_collected}->{tables}->{$tbl_name}->{$instance}->{ $attr . 'Diff' } = $diff; + $self->{api_collected}->{tables}->{$tbl_name}->{$instance}->{ $attr . 'DiffCounter' } = $diff_counter; + if (defined($delta_time)) { + $self->{api_collected}->{tables}->{$tbl_name}->{$instance}->{ $attr . 'PerSeconds' } = $diff_counter / $delta_time; + $self->{api_collected}->{tables}->{$tbl_name}->{$instance}->{ $attr . 'PerMinutes' } = $diff_counter / $delta_time / 60; + } + } + } + } + + $self->{api_cache}->write(data => { api_collected_sampling => $self->{api_collected_sampling} }); +} + +sub display_variables { + my ($self, %options) = @_; + + $self->{output}->output_add(long_msg => '======> variables', debug => 1); + foreach my $tbl_name (keys %{$self->{api_collected}->{tables}}) { + my $expr = 'api.tables.' . $tbl_name; + foreach my $instance (keys %{$self->{api_collected}->{tables}->{$tbl_name}}) { + foreach my $attr (keys %{$self->{api_collected}->{tables}->{$tbl_name}->{$instance}}) { + $self->{output}->output_add( + long_msg => sprintf( + ' %s = %s', + $expr . ".[$instance].$attr", + $self->{api_collected}->{tables}->{$tbl_name}->{$instance}->{$attr} + ), + debug => 1 + ); + } + } + } + + foreach my $name (keys %{$self->{expand}}) { + $self->{output}->output_add( + long_msg => sprintf( + ' %s = %s', + $name, + $self->{expand}->{$name} + ), + debug => 1 + ); + } +} + +sub collect_api { + my ($self, %options) = @_; + + if (!defined($self->{config}->{api})) { + $self->{output}->add_option_msg(short_msg => 'please set api config'); + $self->{output}->option_exit(); + } + + $self->add_builtin(name => 'currentTime', value => time()); + if ($self->use_api_cache(custom => $options{custom}) == 0) { + $self->{api_collected_sampling} = { tables => {}, epoch => time() }; + $self->{api_collected} = { tables => {}, epoch => time(), sampling => 0 }; + + $self->collect_api_commands(custom => $options{custom}); + + $self->{api_collected}->{sampling} = 1 if ( + scalar(keys(%{$self->{api_collected_sampling}->{tables}})) > 0 + ); + $self->save_api_cache(); + } + + $self->collect_api_sampling(custom => $options{custom}); + + if ($self->{output}->is_debug()) { + $self->display_variables(); + } +} + +sub exist_table_name { + my ($self, %options) = @_; + + return 1 if (defined($self->{api_collected}->{tables}->{ $options{name} })); + return 0; +} + +sub get_local_variable { + my ($self, %options) = @_; + + if (defined($self->{expand}->{ $options{name} })) { + return $self->{expand}->{ $options{name} }; + } else { + $self->{output}->add_option_msg(short_msg => "Key '" . $options{name} . "' not found in ('" . join("', '", keys(%{$self->{expand}})) . "')", debug => 1); + return undef; + } +} + +sub set_local_variables { + my ($self, %options) = @_; + + foreach (keys %{$self->{local_vars}}) { + $self->set_local_variable(name => $_, value => $self->{local_vars}->{$_}); + } +} + +sub set_local_variable { + my ($self, %options) = @_; + + $self->{expand}->{ $options{name} } = $options{value}; +} + +sub get_table { + my ($self, %options) = @_; + + if (!defined($self->{api_collected}->{tables}->{ $options{table} })) { + $self->{output}->add_option_msg(short_msg => "Table '" . $options{table} . "' not found in ('" . join("', '", keys(%{$self->{api_collected}->{tables}})) . "')", debug => 1); + return undef; + } + return $self->{api_collected}->{tables}->{ $options{table} }; +} + +sub get_table_instance { + my ($self, %options) = @_; + + if (!defined($self->{api_collected}->{tables}->{ $options{table} })) { + $self->{output}->add_option_msg(short_msg => "Table '" . $options{table} . "' not found in ('" . join("', '", keys(%{$self->{api_collected}->{tables}})) . "')", debug => 1); + return undef; + } + if (!defined($self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} })) { + $self->{output}->add_option_msg(short_msg => + "Table '" . $options{instance} . "' not found in ('" . join("', '", keys(%{$self->{api_collected}->{tables}->{ $options{table} }})) . "')", + debug => + 1); + return undef; + } + return $self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} }; +} + +sub get_table_attribute_value { + my ($self, %options) = @_; + + return undef if ( + !defined($self->{api_collected}->{tables}->{ $options{table} }) || + !defined($self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} }) || + !defined($self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} }->{ $options{attribute} }) + ); + return $self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} }->{ $options{attribute} }; +} + +sub set_table_attribute_value { + my ($self, %options) = @_; + + $self->{api_collected}->{tables}->{ $options{table} } = {} + if (!defined($self->{api_collected}->{tables}->{ $options{table} })); + $self->{api_collected}->{tables}->{ $options{table} } = {} + if (!defined($self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} })); + $self->{api_collected}->{tables}->{ $options{table} }->{ $options{instance} }->{ $options{attribute} } = $options{value}; +} + +sub get_special_variable_value { + my ($self, %options) = @_; + + my $data; + if ($options{type} == 0) { + $data = $self->get_local_variable(name => $options{label}); + } elsif ($options{type} == 2) { + $data = $self->get_table(table => $options{table}); + } elsif ($options{type} == 4) { + $data = $self->get_table_attribute_value( + table => $options{table}, + instance => $options{instance}, + attribute => $options{label} + ); + } + + return $data; +} + +sub set_special_variable_value { + my ($self, %options) = @_; + + my $data; + if ($options{type} == 0) { + $data = $self->set_local_variable(name => $options{label}, value => $options{value}); + } elsif ($options{type} == 4) { + $data = $self->set_table_attribute_value( + table => $options{table}, + instance => $options{instance}, + attribute => $options{label}, + value => $options{value} + ); + } + + return $data; +} + +sub strcmp { + my ($self, %options) = @_; + + my @cmp = split //, $options{test}; + for (my $i = 0; $i < scalar(@cmp); $i++) { + return 0 if ( + !defined($options{chars}->[ $options{start} + $i ]) || + $options{chars}->[ $options{start} + $i ] ne $cmp[$i] + ); + } + + return 1; +} + +sub parse_forward { + my ($self, %options) = @_; + + my ($string, $i) = ('', 0); + while (1) { + return (1, 'cannot find ' . $options{stop} . ' character') + if (!defined($options{chars}->[ $options{start} + $i ])); + last if ($options{chars}->[ $options{start} + $i ] =~ /$options{stop}/); + return (1, "character '" . $options{chars}->[ $options{start} + $i ] . "' forbidden") + if ($options{chars}->[ $options{start} + $i ] !~ /$options{allowed}/); + + $string .= $options{chars}->[ $options{start} + $i ]; + $i++; + } + + return (0, undef, $options{start} + $i, $string); +} + +=pod +managed variables: + %(api.tables.centreonTest) + %(api.tables.centreonTest.[1]) + %(api.tables.centreonTest.[1].plop) + %(api.tables.centreonTest.[%(mytable.instance)] + %(api.tables.centreonTest.[%(api.tables.centreonTest.[%(mytable.instance)].name)] + %(test2) + %(mytable.test) + +result: + - type: + 0=%(test) (label) + 2=%(api.tables.centreonTest) + 3=%(api.tables.centreonTest.[2]) + 4=%(api.tables.centreonTest.[2].attrname) +=cut +sub parse_api_tables { + my ($self, %options) = @_; + + my ($code, $msg_error, $end, $table_label, $instance_label, $label); + ($code, $msg_error, $end, $table_label) = $self->parse_forward( + chars => $options{chars}, + start => $options{start}, + allowed => '[a-zA-Z0-9_\-]', + stop => '[).]' + ); + if ($code) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " $msg_error"); + $self->{output}->option_exit(); + } + if (!$self->exist_table_name(name => $table_label)) { + my @names = keys %{$self->{api_collected}->{tables}}; + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " unknown or empty table '$table_label'. Available tables are (not empty based on your conf) : @names"); + $self->{output}->option_exit(); + } + if ($options{chars}->[$end] eq ')') { + return { type => 2, end => $end, table => $table_label }; + } + + # instance part managenent + if (!defined($options{chars}->[$end + 1]) || $options{chars}->[$end + 1] ne '[') { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable api.tables character '[' mandatory"); + $self->{output}->option_exit(); + } + if ($self->strcmp(chars => $options{chars}, start => $end + 2, test => '%(')) { + my $result = $self->parse_special_variable(chars => $options{chars}, start => $end + 2); + # type allowed: 0,4 + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . ' special variable type not allowed'); + $self->{output}->option_exit(); + } + $end = $result->{end} + 1; + if ($result->{type} == 0) { + $instance_label = $self->get_local_variable(name => $result->{label}); + } elsif ($result->{type} == 4) { + $instance_label = $self->get_table_attribute_value( + table => $result->{table}, + instance => $result->{instance}, + attribute => $result->{label} + ); + } + $instance_label = defined($instance_label) ? $instance_label : ''; + } else { + ($code, $msg_error, $end, $instance_label) = $self->parse_forward( + chars => $options{chars}, + start => $end + 2, + allowed => '[^\]]', + stop => '[\]]' + ); + if ($code) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " $msg_error"); + $self->{output}->option_exit(); + } + } + + if (!defined($options{chars}->[$end + 1]) || + $options{chars}->[$end + 1] !~ /[.)]/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . ' special variable api.tables character [.)] missing'); + $self->{output}->option_exit(); + } + + if ($options{chars}->[$end + 1] eq ')') { + return { type => 3, end => $end + 1, table => $table_label, instance => $instance_label }; + } + + ($code, $msg_error, $end, $label) = $self->parse_forward( + chars => $options{chars}, + start => $end + 2, + allowed => '[a-zA-Z0-9_\-]', + stop => '[)]' + ); + if ($code) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " $msg_error"); + $self->{output}->option_exit(); + } + + return { type => 4, end => $end, table => $table_label, instance => $instance_label, label => $label }; +} + +sub parse_api_type { + my ($self, %options) = @_; + + if ($self->strcmp(chars => $options{chars}, start => $options{start}, test => 'tables.')) { + return $self->parse_api_tables(chars => $options{chars}, start => $options{start} + 7); + } else { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . ' special variable api not followed by tables'); + $self->{output}->option_exit(); + } +} + +sub parse_special_variable { + my ($self, %options) = @_; + + my $start = $options{start}; + if ($options{chars}->[$start] ne '%' || + $options{chars}->[$start + 1] ne '(') { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . ' special variable not starting by %('); + $self->{output}->option_exit(); + } + + my $result = { start => $options{start} }; + if ($self->strcmp(chars => $options{chars}, start => $start + 2, test => 'api.')) { + my $parse = $self->parse_api_type(chars => $options{chars}, start => $start + 2 + 4); + $result = { %$parse, %$result }; + } else { + my ($code, $msg_error, $end, $label) = $self->parse_forward( + chars => $options{chars}, + start => $start + 2, + allowed => '[a-zA-Z0-9\._\-]', + stop => '[)]' + ); + if ($code) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " $msg_error"); + $self->{output}->option_exit(); + } + $result->{end} = $end; + $result->{type} = 0; + $result->{label} = $label; + } + + return $result; +} + +sub substitute_string { + my ($self, %options) = @_; + + return undef if (!defined($options{value})); + + my $arr = [ split //, $options{value} ]; + my $results = {}; + my $last_end = -1; + while ($options{value} =~ /\Q%(\E/g) { + next if ($-[0] < $last_end); + my $result = $self->parse_special_variable(chars => $arr, start => $-[0]); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed"); + $self->{output}->option_exit(); + } + $last_end = $result->{end}; + $results->{ $result->{start} } = $result; + } + + my $end = -1; + my $str = ''; + for (my $i = 0; $i < scalar(@$arr); $i++) { + next if ($i <= $end); + if (defined($results->{$i})) { + my $data = $self->get_special_variable_value(%{$results->{$i}}); + $end = $results->{$i}->{end}; + $str .= defined($data) ? $data : ''; + } else { + $str .= $arr->[$i]; + } + } + + return $str; +} + +sub add_builtin { + my ($self, %options) = @_; + + $self->{builtin}->{ $options{name} } = $options{value}; +} + +sub set_builtin { + my ($self, %options) = @_; + + foreach (keys %{$self->{builtin}}) { + $self->{expand}->{ 'builtin.' . $_ } = $self->{builtin}->{$_}; + } +} + +sub create_constants { + my ($self, %options) = @_; + + $self->{constants} = {}; + if (defined($self->{config}->{constants})) { + foreach (keys %{$self->{config}->{constants}}) { + $self->{constants}->{'constants.' . $_} = $self->{config}->{constants}->{$_}; + } + } + foreach (keys %{$self->{option_results}->{constant}}) { + $self->{constants}->{'constants.' . $_} = $self->{option_results}->{constant}->{$_}; + } +} + +sub set_constants { + my ($self, %options) = @_; + + return { %{$self->{constants}} }; +} + +sub set_expand_table { + my ($self, %options) = @_; + + return if (!defined($options{expand})); + foreach my $name (keys %{$options{expand}}) { + $self->{current_section} = '[' . $options{section} . ' > ' . $name . ']'; + my $result = $self->parse_special_variable(chars => [ split //, $options{expand}->{$name} ], start => 0); + if ($result->{type} != 3) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed"); + $self->{output}->option_exit(); + } + my $table = $self->get_table_instance(table => $result->{table}, instance => $result->{instance}); + next if (!defined($table)); + + $self->{expand}->{ $name . '.instance' } = $result->{instance}; + foreach (keys %$table) { + $self->{expand}->{ $name . '.' . $_ } = $table->{$_}; + } + } +} + +sub set_expand { + my ($self, %options) = @_; + + return if (!defined($options{expand})); + foreach my $name (keys %{$options{expand}}) { + $self->{current_section} = '[' . $options{section} . ' > ' . $name . ']'; + $self->{expand}->{$name} = $self->substitute_string(value => $options{expand}->{$name}); + } +} + +sub exec_func_map { + my ($self, %options) = @_; + + if (!defined($options{map_name}) || $options{map_name} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set map_name attribute"); + $self->{output}->option_exit(); + } + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|1|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + my $value = $self->get_map_value(value => $data, map => $options{map_name}); + if (!defined($value)) { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} unknown map attribute: $options{map_name}"); + $self->{output}->option_exit(); + } + my $save = $result; + if (defined($options{save}) && $options{save} ne '') { + $save = $self->parse_special_variable(chars => [ split //, $options{save} ], start => 0); + if ($save->{type} !~ /^(?:0|1|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save attribute"); + $self->{output}->option_exit(); + } + } elsif (defined($options{dst}) && $options{dst} ne '') { + $save = $self->parse_special_variable(chars => [ split //, $options{dst} ], start => 0); + if ($save->{type} !~ /^(?:0|1|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in dst attribute"); + $self->{output}->option_exit(); + } + } + + $self->set_special_variable_value(value => $value, %$save); +} + +sub scale { + my ($self, %options) = @_; + + my ($src_quantity, $src_unit) = (undef, 'B'); + if ($options{src_unit} =~ /([kmgtpe])?(b)/i) { + $src_quantity = $1; + $src_unit = $2; + } + my ($dst_quantity, $dst_unit) = ('auto', $src_unit); + if ($options{dst_unit} =~ /([kmgtpe])?(b)/i) { + $dst_quantity = $1; + $dst_unit = $2; + } + + my $base = 1024; + $options{value} *= 8 if ($dst_unit eq 'b' && $src_unit eq 'B'); + $options{value} /= 8 if ($dst_unit eq 'B' && $src_unit eq 'b'); + $base = 1000 if ($dst_unit eq 'b'); + + my %expo = (k => 1, m => 2, g => 3, t => 4, p => 5, e => 6); + my $src_expo = 0; + $src_expo = $expo{ lc($src_quantity) } if (defined($src_quantity)); + + if (defined($dst_quantity) && $dst_quantity eq 'auto') { + my @auto = ('', 'k', 'm', 'g', 't', 'p', 'e'); + for (; $src_expo < scalar(@auto); $src_expo++) { + last if ($options{value} < $base); + $options{value} = $options{value} / $base; + } + + return ($options{value}, uc($auto[$src_expo]) . $dst_unit); + } + + my $dst_expo = 0; + $dst_expo = $expo{ lc($dst_quantity) } if (defined($dst_quantity)); + if ($dst_expo - $src_expo > 0) { + $options{value} = $options{value} / ($base ** ($dst_expo - $src_expo)); + } elsif ($dst_expo - $src_expo < 0) { + $options{value} = $options{value} * ($base ** (($dst_expo - $src_expo) * -1)); + } + + return ($options{value}, $options{dst_unit}); +} + +sub exec_func_scale { + my ($self, %options) = @_; + + #{ + # "type": "scale", + # "src": "%(memoryUsed)", + # "src_unit": "KB", (default: 'B') + # "dst_unit": "auto", (default: 'auto') + # "save_value": "%(memoryUsedScaled)", + # "save_unit": "%(memoryUsedUnit)" + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + my ($save_value, $save_unit) = $self->scale( + value => $data, + src_unit => $options{src_unit}, + dst_unit => $options{dst_unit} + ); + + if (defined($options{save_value}) && $options{save_value} ne '') { + my $var_save_value = $self->parse_special_variable(chars => [ split //, $options{save_value} ], start => 0); + if ($var_save_value->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save_value attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $save_value, %$var_save_value); + } + if (defined($options{save_unit}) && $options{save_unit} ne '') { + my $var_save_unit = $self->parse_special_variable(chars => [ split //, $options{save_unit} ], start => 0); + if ($var_save_unit->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save_value attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $save_unit, %$var_save_unit); + } +} + +sub exec_func_second2human { + my ($self, %options) = @_; + + #{ + # "type": "second2human", + # "src": "%(duration)", + # "save_value": "%(humanDuration)", + # "start": "d", + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + my ($str, $str_append) = ('', ''); + my $periods = [ + { unit => 'y', value => 31556926 }, + { unit => 'M', value => 2629743 }, + { unit => 'w', value => 604800 }, + { unit => 'd', value => 86400 }, + { unit => 'h', value => 3600 }, + { unit => 'm', value => 60 }, + { unit => 's', value => 1 }, + ]; + my %values = ('y' => 1, 'M' => 2, 'w' => 3, 'd' => 4, 'h' => 5, 'm' => 6, 's' => 7); + my $sign = ''; + if ($data < 0) { + $sign = '-'; + $data = abs($data); + } + + foreach (@$periods) { + next if (defined($options{start}) && $values{$_->{unit}} < $values{$options{start}}); + my $count = int($data / $_->{value}); + + next if ($count == 0); + $str .= $str_append . $count . $_->{unit}; + $data = $data % $_->{value}; + $str_append = ' '; + } + + if ($str eq '') { + $str = $data; + $str .= $options{start} if (defined($options{start})); + } + + if (defined($options{save_value}) && $options{save_value} ne '') { + my $var_save_value = $self->parse_special_variable(chars => [ split //, $options{save_value} ], start => 0); + if ($var_save_value->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save_value attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $sign . $str, %$var_save_value); + } +} + +sub exec_func_date2epoch { + my ($self, %options) = @_; + + if (!defined($self->{module_datetime_loaded})) { + centreon::plugins::misc::mymodule_load( + module => 'DateTime', + error_msg => "Cannot load module 'DateTime'." + ); + $self->{module_datetime_loaded} = 1; + } + + #{ + # "type": "date2epoch", + # "src": "%(dateTest2)", + # "format_custom": "(\\d+)-(\\d+)-(\\d+)", + # "year": 1, + # "month": 2, + # "day": 3, + # "timezone": "Europe/Paris", + # "save_epoch": "%(plopDateEpoch)", + # "save_diff1": "%(plopDateDiff1)", + # "save_diff2": "%(plopDateDiff2)" + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|1|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + + my $tz = {}; + $tz->{time_zone} = $options{timezone} if (defined($options{timezone}) && $options{timezone} ne ''); + my $dt; + if (defined($options{format_custom}) && $options{format_custom} ne '') { + my @matches = ($data =~ /$options{format_custom}/); + my $date = {}; + foreach (('year', 'month', 'day', 'hour', 'minute', 'second')) { + $date->{$_} = $matches[ $options{$_} - 1 ] + if (defined($options{$_}) && $options{$_} =~ /^\d+$/ && defined($matches[ $options{$_} - 1 ])); + } + + foreach (('year', 'month', 'day')) { + if (!defined($date->{$_})) { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} cannot find $_ attribute"); + $self->{output}->option_exit(); + } + } + $dt = DateTime->new(%$date, %$tz); + } else { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set format_custom attribute"); + $self->{output}->option_exit(); + } + + my $results = { + epoch => $dt->epoch(), + diff1 => time() - $dt->epoch(), + diff2 => $dt->epoch() - time() + }; + foreach (keys %$results) { + my $attr = '%(' . $result->{label} . ucfirst($_) . ')'; + $attr = $options{'save_' . $_} + if (defined($options{'save_' . $_}) && $options{'save_' . $_} ne ''); + my $var_save_value = $self->parse_special_variable(chars => [ split //, $attr ], start => 0); + if ($var_save_value->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save_$_ attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $results->{$_}, %$var_save_value); + } +} + +sub exec_func_epoch2date { + my ($self, %options) = @_; + + if (!defined($self->{module_datetime_loaded})) { + centreon::plugins::misc::mymodule_load( + module => 'DateTime', + error_msg => "Cannot load module 'DateTime'." + ); + $self->{module_datetime_loaded} = 1; + } + + #{ + # "type": "epoch2date", + # "src": "%(dateTestEpoch)", + # "format": "%a %b %e %H:%M:%S %Y", + # "timezone": "Asia/Tokyo", + # "locale": "fr", + # "save": "%(dateTestReformat)" + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + + my $extras = {}; + $extras->{time_zone} = $options{timezone} if (defined($options{timezone}) && $options{timezone} ne ''); + $extras->{locale} = $options{locale} if (defined($options{locale}) && $options{locale} ne ''); + my $dt = DateTime->from_epoch( + epoch => $data, + %$extras + ); + my $time_value = $dt->strftime($options{format}); + + if (defined($options{save}) && $options{save} ne '') { + my $var_save_value = $self->parse_special_variable(chars => [ split //, $options{save} ], start => 0); + if ($var_save_value->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $time_value, %$var_save_value); + } +} + +sub exec_func_count { + my ($self, %options) = @_; + + #{ + # "type": "count", + # "src": "%(api.tables.test)", + # "save": "%(testCount)" + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^2$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + my $value = 0; + if (defined($data)) { + if (defined($options{filter}) && $options{filter} ne '') { + my $count = 0; + foreach my $instance (keys %$data) { + my $values = $self->{expand}; + foreach my $label (keys %{$data->{$instance}}) { + $values->{'src.' . $label} = $data->{$instance}->{$label}; + } + $count++ unless ($self->check_filter(filter => $options{filter}, values => $values)); + } + $value = $count; + } else { + $value = scalar(keys %$data); + } + } + + if (defined($options{save}) && $options{save} ne '') { + my $save = $self->parse_special_variable(chars => [ split //, $options{save} ], start => 0); + if ($save->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $value, %$save); + } +} + +sub exec_func_replace { + my ($self, %options) = @_; + + #{ + # "type": "replace", + # "src": "%(api.tables.test)", + # "expression": "s/name/name is/" + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + if (!defined($options{expression}) || $options{expression} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set expression attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + + if (defined($data)) { + my $expression = $self->substitute_string(value => $options{expression}); + our $assign_var = $data; + $self->{safe_func}->reval("\$assign_var =~ $expression", 1); + if ($@) { + die 'Unsafe code evaluation: ' . $@; + } + $self->set_special_variable_value(value => $assign_var, %$result); + } +} + +sub exec_func_assign { + my ($self, %options) = @_; + + #{ + # "type": "assign", + # "save": "%(api.tables.test)", + # "expression": "'%(api.tables.test)' . 'toto'" + #} + if (!defined($options{save}) || $options{save} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set save attribute"); + $self->{output}->option_exit(); + } + if (!defined($options{expression}) || $options{expression} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set expression attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{save} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + + my $expression = $self->substitute_string(value => $options{expression}); + our $assign_var; + $self->{safe_func}->reval("\$assign_var = $expression", 1); + if ($@) { + die 'Unsafe code evaluation: ' . $@; + } + $self->set_special_variable_value(value => $assign_var, %$result); +} + +sub exec_func_capture { + my ($self, %options) = @_; + + #{ + # "type": "capture", + # "src": "%(snmp.leefs.content)", + # "pattern": "(?msi)Vertical BER Analysis.*?Bit Error Rate: (\S+)", + # "groups": [ + # { "offset": 1, "save": "%(bitErrorRate)" } + # ] + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + if (!defined($options{pattern}) || $options{pattern} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set pattern attribute"); + $self->{output}->option_exit(); + } + if (!defined($options{groups}) || ref($options{groups}) ne 'ARRAY') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set groups attribute"); + $self->{output}->option_exit(); + } + + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + + my @matches = ($data =~ /$options{pattern}/); + + foreach (@{$options{groups}}) { + next if ($_->{offset} !~ /^[0-9]+/); + + my $value = ''; + if (defined($matches[ $_->{offset} ])) { + $value = $matches[ $_->{offset} ]; + } + + my $save = $self->parse_special_variable(chars => [ split //, $_->{save} ], start => 0); + if ($save->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save attribute"); + $self->{output}->option_exit(); + } + + $self->set_special_variable_value(value => $value, %$save); + } +} + +sub exec_func_scientific2number { + my ($self, %options) = @_; + + #{ + # "type": "scientific2number", + # "src": "%(bitErrorRate)", + # "save": "%(bitErrorRate)", + #} + if (!defined($options{src}) || $options{src} eq '') { + $self->{output}->add_option_msg(short_msg => "$self->{current_section} please set src attribute"); + $self->{output}->option_exit(); + } + my $result = $self->parse_special_variable(chars => [ split //, $options{src} ], start => 0); + if ($result->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in src attribute"); + $self->{output}->option_exit(); + } + my $data = $self->get_special_variable_value(%$result); + + $data = centreon::plugins::misc::expand_exponential(value => $data); + + if (defined($options{save}) && $options{save} ne '') { + my $save = $self->parse_special_variable(chars => [ split //, $options{save} ], start => 0); + if ($save->{type} !~ /^(?:0|4)$/) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed in save attribute"); + $self->{output}->option_exit(); + } + $self->set_special_variable_value(value => $data, %$save); + } +} + +sub set_functions { + my ($self, %options) = @_; + + return if (!defined($options{functions})); + my $i = -1; + foreach (@{$options{functions}}) { + $i++; + $self->{current_section} = '[' . $options{section} . ' > ' . $i . ']'; + next if (defined($_->{position}) && $options{position} ne $_->{position}); + next if (!defined($_->{position}) && !(defined($options{default}) && $options{default} == 1)); + + next if (!defined($_->{type})); + + if ($_->{type} eq 'map') { + $self->exec_func_map(%$_); + } elsif ($_->{type} eq 'scale') { + $self->exec_func_scale(%$_); + } elsif ($_->{type} eq 'second2human') { + $self->exec_func_second2human(%$_); + } elsif (lc($_->{type}) eq 'date2epoch') { + $self->exec_func_date2epoch(%$_); + } elsif (lc($_->{type}) eq 'epoch2date') { + $self->exec_func_epoch2date(%$_); + } elsif (lc($_->{type}) eq 'count') { + $self->exec_func_count(%$_); + } elsif (lc($_->{type}) eq 'replace') { + $self->exec_func_replace(%$_); + } elsif (lc($_->{type}) eq 'assign') { + $self->exec_func_assign(%$_); + } elsif (lc($_->{type}) eq 'capture') { + $self->exec_func_capture(%$_); + } elsif (lc($_->{type}) eq 'scientific2number') { + $self->exec_func_scientific2number(%$_); + } + } +} + +sub prepare_variables { + my ($self, %options) = @_; + + return undef if (!defined($options{value})); + + while ($options{value} =~ /%\(([a-zA-Z0-9\.\-]+?)\)/g) { + next if ($1 =~ /^api\./); + $options{value} =~ s/%\(($1)\)/\$expand->{'$1'}/g; + } + + my $expression = $self->substitute_string(value => $options{value}); + return $expression; +} + +sub check_filter { + my ($self, %options) = @_; + + return 0 if (!defined($options{filter}) || $options{filter} eq ''); + our $expand = $options{values}; + $options{filter} =~ s/%\(([a-zA-Z0-9\._:\-]+?)\)/\$expand->{'$1'}/g; + my $result = $self->{safe}->reval("$options{filter}"); + if ($@) { + $self->{output}->add_option_msg(short_msg => 'Unsafe code evaluation: ' . $@); + $self->{output}->option_exit(); + } + return 0 if ($result); + + return 1; +} + +sub check_filter2 { + my ($self, %options) = @_; + + return 0 if (!defined($options{filter}) || $options{filter} eq ''); + our $expand = $options{values}; + $options{filter} =~ s/%\(([a-zA-Z0-9\._:\-]+?)\)/\$expand->{'$1'}/g; + my $result = $self->{safe}->reval("$options{filter}"); + if ($@) { + $self->{output}->add_option_msg(short_msg => 'Unsafe code evaluation: ' . $@); + $self->{output}->option_exit(); + } + return 1 if ($result); + + return 0; +} + +sub check_filter_option { + my ($self, %options) = @_; + foreach (keys %{$self->{option_results}->{filter_selection}}) { + + if (!defined($self->{expand}->{$_}) && grep { /^src\./ } keys(%{$self->{expand}}) ne '') { + $self->{output}->add_option_msg(long_msg => "Wrong filter-selection - Available attributes for filtering: " . join(", ", grep { /^src\./ } keys(%{$self->{expand}})), debug => 1); + } + + return 1 if ( + defined($self->{expand}->{$_}) && $self->{option_results}->{filter_selection}->{$_} ne '' && + $self->{expand}->{$_} !~ /$self->{option_results}->{filter_selection}->{$_}/ + ); + } + + return 0; +} + +sub prepare_perfdatas { + my ($self, %options) = @_; + + return undef if (!defined($options{perfdatas})); + my $perfdatas = []; + foreach (@{$options{perfdatas}}) { + next if (!defined($_->{nlabel}) || $_->{nlabel} eq ''); + next if (!defined($_->{value}) || $_->{value} eq ''); + my $perf = {}; + $perf->{nlabel} = $self->substitute_string(value => $_->{nlabel}); + $perf->{value} = $self->substitute_string(value => $_->{value}); + foreach my $label (('warning', 'critical', 'min', 'max', 'unit')) { + next if (!defined($_->{$label})); + $perf->{$label} = $self->substitute_string(value => $_->{$label}); + } + if (defined($_->{instances})) { + $perf->{instances} = []; + foreach my $instance (@{$_->{instances}}) { + push @{$perf->{instances}}, $self->substitute_string(value => $instance); + } + } + push @$perfdatas, $perf; + } + + return $perfdatas; +} + +sub prepare_formatting { + my ($self, %options) = @_; + + return undef if (!defined($options{formatting})); + my $format = {}; + $format->{printf_msg} = $options{formatting}->{printf_msg}; + $format->{display_ok} = $options{formatting}->{display_ok}; + if (defined($options{formatting}->{printf_var})) { + $format->{printf_var} = []; + foreach my $var (@{$options{formatting}->{printf_var}}) { + push @{$format->{printf_var}}, $self->substitute_string(value => $var); + } + } + + return $format +} + +sub add_selection { + my ($self, %options) = @_; + + return if (!defined($self->{config}->{selection})); + + my $i = -1; + foreach (@{$self->{config}->{selection}}) { + $i++; + my $config = {}; + $self->{expand} = $self->set_constants(); + $self->set_builtin(); + $self->set_local_variables(); + $self->{expand}->{name} = $_->{name} if (defined($_->{name})); + $self->set_functions(section => "selection > $i > functions", functions => $_->{functions}, position => 'before_expand'); + $self->set_expand_table(section => "selection > $i > expand_table", expand => $_->{expand_table}); + $self->set_expand(section => "selection > $i > expand", expand => $_->{expand}); + $self->set_functions(section => "selection > $i > functions", functions => $_->{functions}, position => 'after_expand', default => 1); + next if ($self->check_filter(filter => $_->{filter}, values => $self->{expand})); + next if ($self->check_filter_option()); + $config->{unknown} = $self->prepare_variables(section => "selection > $i > unknown", value => $_->{unknown}); + $config->{warning} = $self->prepare_variables(section => "selection > $i > warning", value => $_->{warning}); + $config->{critical} = $self->prepare_variables(section => "selection > $i > critical", value => $_->{critical}); + $config->{perfdatas} = $self->prepare_perfdatas(section => "selection > $i > perfdatas", perfdatas => $_->{perfdatas}); + $config->{formatting} = $self->prepare_formatting(section => "selection > $i > formatting", formatting => $_->{formatting}); + $config->{formatting_unknown} = $self->prepare_formatting(section => "selection > $i > formatting_unknown", formatting => $_->{formatting_unknown}); + $config->{formatting_warning} = $self->prepare_formatting(section => "selection > $i > formatting_warning", formatting => $_->{formatting_warning}); + $config->{formatting_critical} = $self->prepare_formatting(section => "selection > $i > formatting_critical", formatting => $_->{formatting_critical}); + $self->{selections}->{'s' . $i} = { expand => $self->{expand}, config => $config }; + + if ($self->check_filter2(filter => $_->{exit}, values => $self->{expand})) { + $self->{exit_selection} = 1; + return; + } + } +} + +sub add_selection_loop { + my ($self, %options) = @_; + + return if (!defined($self->{config}->{selection_loop})); + + return if (defined($self->{exit_selection}) && $self->{exit_selection} == 1); + + my $i = -1; + foreach (@{$self->{config}->{selection_loop}}) { + $i++; + + next if (!defined($_->{source}) || $_->{source} eq ''); + $self->{current_section} = '[selection_loop > ' . $i . ' > source]'; + + my $result = $self->parse_special_variable(chars => [ split //, $_->{source} ], start => 0); + if ($result->{type} != 2) { + $self->{output}->add_option_msg(short_msg => $self->{current_section} . " special variable type not allowed"); + $self->{output}->option_exit(); + } + + next if (!defined($self->{api_collected}->{tables}->{ $result->{table} })); + + foreach my $instance (keys %{$self->{api_collected}->{tables}->{ $result->{table} }}) { + $self->{expand} = $self->set_constants(); + $self->set_builtin(); + $self->set_local_variables(); + $self->{expand}->{ $result->{table} . '.instance' } = $instance; + + foreach my $label (keys %{$self->{api_collected}->{tables}->{ $result->{table} }->{$instance}}) { + $self->{expand}->{ $result->{table} . '.' . $label } = + $self->{api_collected}->{tables}->{ $result->{table} }->{$instance}->{$label}; + } + + my $config = {}; + $self->{expand}->{name} = $_->{name} if (defined($_->{name})); + $self->set_functions(section => "selection_loop > $i > functions", functions => $_->{functions}, position => 'before_expand'); + $self->set_expand_table(section => "selection_loop > $i > expand_table", expand => $_->{expand_table}); + $self->set_expand(section => "selection_loop > $i > expand", expand => $_->{expand}); + $self->set_functions(section => "selection_loop > $i > functions", functions => $_->{functions}, position => 'after_expand', default => 1); + next if ($self->check_filter(filter => $_->{filter}, values => $self->{expand})); + next if ($self->check_filter_option()); + $config->{unknown} = $self->prepare_variables(section => "selection_loop > $i > unknown", value => $_->{unknown}); + $config->{warning} = $self->prepare_variables(section => "selection_loop > $i > warning", value => $_->{warning}); + $config->{critical} = $self->prepare_variables(section => "selection_loop > $i > critical", value => $_->{critical}); + $config->{perfdatas} = $self->prepare_perfdatas(section => "selection_loop > $i > perfdatas", perfdatas => $_->{perfdatas}); + $config->{formatting} = $self->prepare_formatting(section => "selection_loop > $i > formatting", formatting => $_->{formatting}); + $config->{formatting_unknown} = $self->prepare_formatting(section => "selection_loop > $i > formatting_unknown", formatting => $_->{formatting_unknown}); + $config->{formatting_warning} = $self->prepare_formatting(section => "selection_loop > $i > formatting_warning", formatting => $_->{formatting_warning}); + $config->{formatting_critical} = $self->prepare_formatting(section => "selection_loop > $i > formatting_critical", formatting => $_->{formatting_critical}); + $self->{selections}->{'s' . $i . '-' . $instance} = { expand => $self->{expand}, config => $config }; + + if ($self->check_filter2(filter => $_->{exit}, values => $self->{expand})) { + $self->{exit_selection} = 1; + return; + } + } + } +} + +sub set_formatting { + my ($self, %options) = @_; + + return if (!defined($self->{config}->{formatting})); + if (defined($self->{config}->{formatting}->{custom_message_global})) { + $self->{maps_counters_type}->[0]->{message_multiple} = $self->{config}->{formatting}->{custom_message_global}; + } + if (defined($self->{config}->{formatting}->{separator})) { + $self->{maps_counters_type}->[0]->{message_separator} = $self->{config}->{formatting}->{separator}; + } +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ 'name' ]); +} + +sub disco_show { + my ($self, %options) = @_; + + $self->read_config(); + $self->create_constants(); + $self->collect_api(custom => $options{custom}); + + $self->{selections} = {}; + $self->add_selection(); + $self->add_selection_loop(); + foreach (values %{$self->{selections}}) { + my $entry = {}; + foreach my $label (keys %{$_->{expand}}) { + next if ($label =~ /^(?:constants|builtin)\./); + my $name = $label; + $name =~ s/\./_/g; + $entry->{$name} = defined($_->{expand}->{$label}) ? $_->{expand}->{$label} : ''; + } + $self->{output}->add_disco_entry(%$entry); + } +} + +sub manage_selection { + my ($self, %options) = @_; + + $self->read_config(); + $self->create_constants(); + $self->collect_api(custom => $options{custom}); + + $self->{selections} = {}; + $self->add_selection(); + $self->add_selection_loop(); + $self->set_formatting(); +} + +1; + +__END__ + +=head1 MODE + +Collect and compute API data. + +=over 8 + +=item B<--config> + +config used (required). +Can be a file or json content. + +=item B<--filter-selection> + +Filter selections. +Example: --filter-selection='name=test' + +=item B<--constant> + +Add a constant. +Example: --constant='warning=30' --constant='critical=45' + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/components/afeb.pm b/src/network/juniper/common/junos/netconf/mode/components/afeb.pm new file mode 100644 index 000000000..3d2c49c54 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/afeb.pm @@ -0,0 +1,72 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::afeb; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (@{$self->{results}->{afeb}}) { + $self->{output}->add_disco_entry( + component => 'afeb', + instance => $item->{name} + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking afeb"); + $self->{components}->{afeb} = { name => 'afeb', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'afeb')); + + foreach my $item (@{$self->{results}->{afeb}}) { + next if ($self->check_filter(section => 'afeb', instance => $item->{name})); + $self->{components}->{afeb}->{total}++; + + $self->{output}->output_add( + long_msg => sprintf( + "%s status is %s%s.", + $item->{name}, + $item->{status}, + defined($self->{option_results}->{display_instances}) ? ' [instance: ' . $item->{name} . ']' : '' + ) + ); + + my $exit = $self->get_severity(section => 'afeb', value => $item->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "%s status is %s", + $item->{name}, $item->{status} + ) + ); + } + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/components/fan.pm b/src/network/juniper/common/junos/netconf/mode/components/fan.pm new file mode 100644 index 000000000..8a75e5d3b --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/fan.pm @@ -0,0 +1,94 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::fan; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (@{$self->{results}->{fan}}) { + $self->{output}->add_disco_entry( + component => 'fan', + instance => $item->{name} + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking fans"); + $self->{components}->{fan} = { name => 'fans', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'fan')); + + foreach my $item (@{$self->{results}->{fan}}) { + next if ($self->check_filter(section => 'fan', instance => $item->{name})); + $self->{components}->{fan}->{total}++; + + $self->{output}->output_add( + long_msg => sprintf( + "fan '%s' status is %s [rpm: %s%s].", + $item->{name}, + $item->{status}, + defined($item->{rpm}) ? $item->{rpm} : '-', + defined($self->{option_results}->{display_instances}) ? ', instance: ' . $item->{name} : '' + ) + ); + + my $exit = $self->get_severity(section => 'fan', value => $item->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "Fan '%s' status is %s", + $item->{name}, $item->{status} + ) + ); + } + + if (defined($item->{rpm})) { + my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'fan', instance => $item->{name}, value => $item->{rpm}); + + if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit2, + short_msg => sprintf("Fan '%s' speed is %s rpm", $item->{name}, $item->{rpm}) + ); + } + + $self->{output}->perfdata_add( + nlabel => 'hardware.fan.speed.rpm', + unit => 'rpm', + instances => $item->{name}, + value => $item->{rpm}, + warning => $warn, + critical => $crit, + min => 0 + ); + } + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/components/fpc.pm b/src/network/juniper/common/junos/netconf/mode/components/fpc.pm new file mode 100644 index 000000000..dfe70addd --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/fpc.pm @@ -0,0 +1,72 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::fpc; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (@{$self->{results}->{fpc}}) { + $self->{output}->add_disco_entry( + component => 'fpc', + instance => $item->{name} + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking fpc"); + $self->{components}->{fpc} = { name => 'fpc', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'fpc')); + + foreach my $item (@{$self->{results}->{fpc}}) { + next if ($self->check_filter(section => 'fpc', instance => $item->{name})); + $self->{components}->{fpc}->{total}++; + + $self->{output}->output_add( + long_msg => sprintf( + "%s status is %s%s.", + $item->{name}, + $item->{status}, + defined($self->{option_results}->{display_instances}) ? ' [instance: ' . $item->{name} . ']' : '' + ) + ); + + my $exit = $self->get_severity(section => 'fpc', value => $item->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "%s status is %s", + $item->{name}, $item->{status} + ) + ); + } + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/components/mic.pm b/src/network/juniper/common/junos/netconf/mode/components/mic.pm new file mode 100644 index 000000000..c28f498a4 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/mic.pm @@ -0,0 +1,92 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::mic; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (sort { $a->{instance} cmp $b->{instance} } values %{$self->{results}->{mic}}) { + next if (scalar(@{$item->{pics}}) <= 0); + + $self->{output}->add_disco_entry( + component => 'mic', + instance => $item->{instance}, + description => $item->{description}, + fpc_slot => $item->{fpc_slot}, + mic_slot => $item->{mic_slot} + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking mic"); + $self->{components}->{mic} = { name => 'mic', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'mic')); + + foreach my $item (sort { $a->{instance} cmp $b->{instance} } values %{$self->{results}->{mic}}) { + next if (scalar(@{$item->{pics}}) <= 0); + next if ($self->check_filter(section => 'mic', instance => $item->{instance})); + $self->{components}->{mic}->{total}++; + + my @attrs = ('fpc slot: ' . $item->{fpc_slot}); + push @attrs, 'mic slot: ' . $item->{mic_slot}; + + my $status = 'Online'; + foreach my $pic_instance (@{$item->{pics}}) { + my $exit = $self->get_severity(section => 'pic', value => $self->{results}->{pic}->{$pic_instance}->{status}); + $status = 'Error' if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)); + } + + $self->{output}->output_add( + long_msg => sprintf( + "mic '%s @ %s' status is %s [%s]%s.", + $item->{description}, + $item->{instance}, + $status, + join(', ', @attrs), + defined($self->{option_results}->{display_instances}) ? ' [instance: ' . $item->{instance} . ']' : '' + ) + ); + + my $exit = $self->get_severity(section => 'mic', value => $status); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "mic '%s @ %s' status is %s [%s]", + $item->{description}, + $item->{instance}, + $status, + join(', ', @attrs) + ) + ); + } + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/components/pic.pm b/src/network/juniper/common/junos/netconf/mode/components/pic.pm new file mode 100644 index 000000000..0ff2964e4 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/pic.pm @@ -0,0 +1,85 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::pic; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (sort { $a->{instance} cmp $b->{instance} } values %{$self->{results}->{pic}}) { + my %attrs = (fpc_slot => $item->{fpc_slot}, pic_slot => $item->{pic_slot}); + $attrs{mic_slot} = $item->{mic_slot} if (defined($item->{mic_slot})); + + $self->{output}->add_disco_entry( + component => 'pic', + instance => $item->{instance}, + description => $item->{description}, + %attrs + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking pic"); + $self->{components}->{pic} = { name => 'pic', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'pic')); + + foreach my $item (sort { $a->{instance} cmp $b->{instance} } values %{$self->{results}->{pic}}) { + next if ($self->check_filter(section => 'pic', instance => $item->{instance})); + $self->{components}->{pic}->{total}++; + + my @attrs = ('fpc slot: ' . $item->{fpc_slot}); + push @attrs, 'mic slot: ' . $item->{mic_slot} if (defined($item->{mic_slot})); + push @attrs, 'pic slot: ' . $item->{pic_slot}; + $self->{output}->output_add( + long_msg => sprintf( + "pic '%s @ %s' status is %s [%s]%s.", + $item->{description}, + $item->{instance}, + $item->{status}, + join(', ', @attrs), + defined($self->{option_results}->{display_instances}) ? ' [instance: ' . $item->{instance} . ']' : '' + ) + ); + + my $exit = $self->get_severity(section => 'pic', value => $item->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "pic '%s @ %s' status is %s [%s]", + $item->{description}, + $item->{instance}, + $item->{status}, + join(', ', @attrs) + ) + ); + } + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/components/psu.pm b/src/network/juniper/common/junos/netconf/mode/components/psu.pm new file mode 100644 index 000000000..af633862a --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/psu.pm @@ -0,0 +1,95 @@ +# +# Copyright 2022 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::psu; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (@{$self->{results}->{psu}}) { + $self->{output}->add_disco_entry( + component => 'psu', + instance => $item->{name} + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking power supplies"); + $self->{components}->{psu} = { name => 'psus', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'psu')); + + foreach my $item (@{$self->{results}->{psu}}) { + next if ($self->check_filter(section => 'psu', instance => $item->{name})); + $self->{components}->{psu}->{total}++; + + $self->{output}->output_add( + long_msg => sprintf( + "power supply '%s' status is %s [dc output load: %s%s].", + $item->{name}, + $item->{status}, + defined($item->{dc_output_load}) ? $item->{dc_output_load} . '%' : '-', + defined($self->{option_results}->{display_instances}) ? ', instance: ' . $item->{name} : '' + ) + ); + + my $exit = $self->get_severity(section => 'psu', value => $item->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "Power supply '%s' status is %s", + $item->{name}, $item->{status} + ) + ); + } + + if (defined($item->{dc_output_load})) { + my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'psu', instance => $item->{name}, value => $item->{dc_output_load}); + + if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit2, + short_msg => sprintf("Power supply '%s' DC output load is %s%%", $item->{name}, $item->{dc_output_load}) + ); + } + + $self->{output}->perfdata_add( + nlabel => 'hardware.psu.dc.output.load.percentage', + unit => '%', + instances => $item->{name}, + value => $item->{dc_output_load}, + warning => $warn, + critical => $crit, + min => 0, + max => 100 + ); + } + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/components/temperature.pm b/src/network/juniper/common/junos/netconf/mode/components/temperature.pm new file mode 100644 index 000000000..c8bb912da --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/components/temperature.pm @@ -0,0 +1,95 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::components::temperature; + +use strict; +use warnings; + +sub load {} + +sub disco_show { + my ($self) = @_; + + foreach my $item (@{$self->{results}->{env}}) { + next if ($item->{class} ne 'Temp'); + $self->{output}->add_disco_entry( + component => 'temperature', + instance => $item->{name} + ); + } +} + +sub check { + my ($self) = @_; + + $self->{output}->output_add(long_msg => "checking temperatures"); + $self->{components}->{temperature} = { name => 'temperatures', total => 0, skip => 0 }; + return if ($self->check_filter(section => 'temperature')); + + foreach my $item (@{$self->{results}->{env}}) { + next if ($item->{class} ne 'Temp'); + next if ($self->check_filter(section => 'temperature', instance => $item->{name})); + $self->{components}->{temperature}->{total}++; + + $self->{output}->output_add( + long_msg => sprintf( + "temperature '%s' status is %s [current: %s%s].", + $item->{name}, + $item->{status}, + $item->{temperature} ne '' ? $item->{temperature} : '-', + defined($self->{option_results}->{display_instances}) ? ', instance: ' . $item->{name} : '' + ) + ); + + my $exit = $self->get_severity(section => 'temperature', value => $item->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "Temperature '%s' status is %s", + $item->{name}, $item->{status} + ) + ); + } + + next if ($item->{temperature} eq ''); + + my ($exit2, $warn, $crit, $checked) = $self->get_severity_numeric(section => 'temperature', instance => $item->{name}, value => $item->{temperature}); + + if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit2, + short_msg => sprintf("Temperature '%s' is %s degree centigrade", $item->{name}, $item->{temperature}) + ); + } + + $self->{output}->perfdata_add( + nlabel => 'hardware.temperature.celsius', + unit => 'C', + instances => $item->{name}, + value => $item->{temperature}, + warning => $warn, + critical => $crit + ); + } +} + +1; diff --git a/src/network/juniper/common/junos/netconf/mode/cpu.pm b/src/network/juniper/common/junos/netconf/mode/cpu.pm new file mode 100644 index 000000000..45d2cc44d --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/cpu.pm @@ -0,0 +1,135 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::cpu; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub prefix_message_output { + my ($self, %options) = @_; + + return "CPU '" . $options{instance_value}->{name} . "' average usage: "; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'cpu', type => 1, cb_prefix_output => 'prefix_message_output', message_multiple => 'All CPU usages are ok' } + ]; + + $self->{maps_counters}->{cpu} = [ + { label => 'average-1m', nlabel => 'cpu.utilization.1m.percentage', set => { + key_values => [ { name => 'cpu_1min_avg' } ], + output_template => '%.2f %% (1m)', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } + ] + } + }, + { label => 'average-5m', nlabel => 'cpu.utilization.5m.percentage', set => { + key_values => [ { name => 'cpu_5min_avg' } ], + output_template => '%.2f %% (5m)', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } + ] + } + }, + { label => 'average-15m', nlabel => 'cpu.utilization.15m.percentage', set => { + key_values => [ { name => 'cpu_15min_avg' } ], + output_template => '%.2f %% (15m)', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' } + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_cpu_infos(); + + $self->{cpu} = {}; + foreach (@$result) { + next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $_->{name} !~ /$self->{option_results}->{filter_name}/); + + $self->{cpu}->{ $_->{name} } = $_; + } +} + +1; + +__END__ + +=head1 MODE + +Check CPU usage. + +=over 8 + +=item B<--filter-name> + +Filter CPU by name. + +=item B<--warning-average-1m> + +Warning threshold for 1 minute average CPU usage (%). + +=item B<--critical-average-1m> + +Critical threshold for 1 minute average CPU usage (%). + +=item B<--warning-average-5m> + +Warning threshold for 5 minutes average CPU usage (%). + +=item B<--critical-average-5m> + +Critical threshold for 5 minutes average CPU usage (%). + +=item B<--warning-average-15m> + +Warning threshold for 15 minutes average CPU usage (%). + +=item B<--critical-average-15m> + +Critical threshold for 15 minutes average CPU usage (%). + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/disks.pm b/src/network/juniper/common/junos/netconf/mode/disks.pm new file mode 100644 index 000000000..c8dac56c6 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/disks.pm @@ -0,0 +1,163 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::disks; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub custom_space_usage_output { + my ($self, %options) = @_; + + my ($total_size_value, $total_size_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{total_space}); + my ($total_used_value, $total_used_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{used_space}); + my ($total_free_value, $total_free_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{free_space}); + return sprintf( + 'space usage total: %s used: %s (%.2f%%) free: %s (%.2f%%)', + $total_size_value . " " . $total_size_unit, + $total_used_value . " " . $total_used_unit, $self->{result_values}->{prct_used_space}, + $total_free_value . " " . $total_free_unit, $self->{result_values}->{prct_free_space} + ); +} + +sub prefix_disk_output { + my ($self, %options) = @_; + + return "Disk '" . $options{instance} . "' "; +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Disks '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'disks', type => 1, cb_prefix_output => 'prefix_disk_output', message_multiple => 'All disks are ok' } + ]; + + $self->{maps_counters}->{disks} = [ + { label => 'space-usage', nlabel => 'disk.space.usage.bytes', set => { + key_values => [ { name => 'used_space' }, { name => 'free_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' } ], + closure_custom_output => $self->can('custom_space_usage_output'), + perfdatas => [ + { template => '%d', min => 0, max => 'total_space', unit => 'B', cast_int => 1, label_extra_instance => 1 } + ] + } + }, + { label => 'space-usage-free', nlabel => 'disk.space.free.bytes', display_ok => 0, set => { + key_values => [ { name => 'free_space' }, { name => 'used_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' } ], + closure_custom_output => $self->can('custom_space_usage_output'), + perfdatas => [ + { template => '%d', min => 0, max => 'total_space', unit => 'B', cast_int => 1, label_extra_instance => 1 } + ] + } + }, + { label => 'space-usage-prct', nlabel => 'disk.space.usage.percentage', display_ok => 0, set => { + key_values => [ { name => 'prct_used_space' }, { name => 'used_space' }, { name => 'free_space' }, { name => 'prct_free_space' }, { name => 'total_space' } ], + closure_custom_output => $self->can('custom_space_usage_output'), + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' } + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_disk_infos(); + + $self->{cpu} = {}; + foreach (@$result) { + next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $_->{mount} !~ /$self->{option_results}->{filter_name}/); + + $self->{disks}->{ $_->{mount} } = { + name => $_->{mount}, + free_space => $_->{space_free}, + total_space => $_->{space_total}, + used_space => $_->{space_used}, + prct_used_space => $_->{space_used_prct}, + prct_free_space => $_->{space_free_prct} + }; + } + +} + +1; + +__END__ + +=head1 MODE + +Check disks. + +=over 8 + +=item B<--filter-name> + +Filter disks by name (can be a regexp). + +=item B<--warning-space-usage> + +Warning threshold for space usage (in bytes). + +=item B<--critical-space-usage> + +Critical threshold for space usage (in bytes). + +=item B<--warning-space-usage-free> + +Warning threshold for free space (in bytes). + +=item B<--critical-space-usage-free> + +Critical threshold for free space (in bytes). + +=item B<--warning-space-usage-prct> + +Warning threshold for space usage (in percentage). + +=item B<--critical-space-usage-prct> + +Critical threshold for space usage (in percentage). + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/hardware.pm b/src/network/juniper/common/junos/netconf/mode/hardware.pm new file mode 100644 index 000000000..083047ece --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/hardware.pm @@ -0,0 +1,141 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::hardware; + +use base qw(centreon::plugins::templates::hardware); + +use strict; +use warnings; + +sub set_system { + my ($self, %options) = @_; + + $self->{regexp_threshold_numeric_check_section_option} = '^(?:fan|psu|temperature)$'; + + $self->{cb_hook2} = 'api_execute'; + + $self->{thresholds} = { + afeb => [ + [ 'Online', 'OK' ], + [ 'Offline', 'OK' ], + [ 'Check', 'CRITICAL' ] + ], + fan => [ + [ 'OK', 'OK' ], + [ 'Check', 'WARNING' ] + ], + fpc => [ + [ 'Online', 'OK' ], + [ 'Dead', 'CRITICAL' ], + [ 'Diag', 'WARNING' ], + [ 'Empty', 'OK' ], + [ 'Offline', 'CRITICAL' ], + [ 'Present', 'CRITICAL' ], + [ 'Probed', 'WARNING' ], + [ 'Unknown', 'UNKNOWN' ], + [ 'Offlining', 'OK' ], + [ 'Spare', 'OK' ], + [ 'Fault', 'CRITICAL' ] # Fault-off also + ], + pic => [ + [ 'Online', 'OK' ], + [ '.*', 'CRITICAL' ] + ], + mic => [ + [ 'Online', 'OK' ], + [ 'Error', 'CRITICAL' ] + ], + psu => [ + [ 'Online', 'OK' ], + [ 'Empty', 'OK' ], + [ 'Present', 'WARNING' ] # present but not online + ], + temperature => [ + [ 'OK', 'OK' ], + [ 'Absent', 'OK' ], + [ '.*', 'CRITICAL' ] + ] + }; + + $self->{components_path} = 'network::juniper::common::junos::netconf::mode::components'; + $self->{components_module} = [ 'afeb', 'fan', 'fpc', 'mic', 'pic', 'psu', 'temperature' ]; +} + +sub api_execute { + my ($self, %options) = @_; + + $self->{results} = $options{custom}->get_hardware_infos(); +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, no_absent => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'display-instances' => { name => 'display_instances' } + }); + + return $self; +} + +1; + +__END__ + +=head1 MODE + +Check hardware. + +=over 8 + +=item B<--component> + +Which component to check (default: '.*'). +Can be: C, C, C, C, C, C, C. + +=item B<--filter> + +Exclude the items given as a comma-separated list (example: C<--filter=fan>). +You can also exclude items from specific instances: C<--filter=fan,Top> + +=item B<--no-component> + +Define the expected status if no components are found (default: C). + +=item B<--threshold-overload> + +Use this option to override the status returned by the plugin when the status label matches a regular expression (syntax: section,[instance,]status,regexp). +Example: C<--threshold-overload='fpc,CRITICAL,Unknown'> + +=item B<--warning> + +Set warning threshold (syntax: type,regexp,threshold) +Example: C<--warning='temperature,.*,30'> + +=item B<--critical> + +Set critical threshold (syntax: type,regexp,threshold) +Example: C<--critical='temperature,.*,40'> + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/interfaces.pm b/src/network/juniper/common/junos/netconf/mode/interfaces.pm new file mode 100644 index 000000000..1c5a94bbb --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/interfaces.pm @@ -0,0 +1,1125 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::interfaces; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_status_output { + my ($self, %options) = @_; + + return 'status : ' . $self->{result_values}->{opstatus} . ' (admin: ' . $self->{result_values}->{admstatus} . ')'; +} + +sub custom_traffic_perfdata { + my ($self, %options) = @_; + + my ($warning, $critical); + if ($self->{instance_mode}->{option_results}->{units_traffic} eq 'percent_delta' && defined($self->{result_values}->{speed})) { + $warning = $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}, total => $self->{result_values}->{speed}, cast_int => 1); + $critical = $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}, total => $self->{result_values}->{speed}, cast_int => 1); + } elsif ($self->{instance_mode}->{option_results}->{units_traffic} =~ /bps|counter/) { + $warning = $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}); + $critical = $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}); + } + + if ($self->{instance_mode}->{option_results}->{units_traffic} eq 'counter') { + my $nlabel = $self->{nlabel}; + $nlabel =~ s/bitspersecond/bits/; + $self->{output}->perfdata_add( + nlabel => $nlabel, + unit => 'b', + instances => $self->{result_values}->{display}, + value => $self->{result_values}->{traffic_counter}, + warning => $warning, + critical => $critical, + min => 0 + ); + } else { + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $self->use_instances(extra_instance => $options{extra_instance}) ? $self->{result_values}->{display} : undef, + value => sprintf('%d', $self->{result_values}->{traffic_per_seconds}), + warning => $warning, + critical => $critical, + min => 0, max => $self->{result_values}->{speed} + ); + } +} + +sub custom_traffic_threshold { + my ($self, %options) = @_; + + my $exit = 'ok'; + if ($self->{instance_mode}->{option_results}->{units_traffic} eq 'percent_delta' && defined($self->{result_values}->{speed})) { + $exit = $self->{perfdata}->threshold_check(value => + $self->{result_values}->{traffic_prct}, + threshold => + [ { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-' . $self->{thlabel}, exit_litteral => 'warning' } ]); + } elsif ($self->{instance_mode}->{option_results}->{units_traffic} eq 'bps') { + $exit = $self->{perfdata}->threshold_check(value => + $self->{result_values}->{traffic_per_seconds}, + threshold => + [ { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-' . $self->{thlabel}, exit_litteral => 'warning' } ]); + } elsif ($self->{instance_mode}->{option_results}->{units_traffic} eq 'counter') { + $exit = $self->{perfdata}->threshold_check(value => + $self->{result_values}->{traffic_counter}, + threshold => + [ { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-' . $self->{thlabel}, exit_litteral => 'warning' } ]); + } + return $exit; +} + +sub custom_traffic_output { + my ($self, %options) = @_; + + my ($traffic_value, $traffic_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{traffic_per_seconds}, network => 1); + return sprintf( + 'traffic %s: %s/s (%s)', + $self->{result_values}->{label}, $traffic_value . $traffic_unit, + defined($self->{result_values}->{traffic_prct}) ? sprintf('%.2f%%', $self->{result_values}->{traffic_prct}) : '-' + ); +} +sub custom_traffic_calc { + my ($self, %options) = @_; + + $self->{result_values}->{traffic_per_seconds} = ($options{new_datas}->{$self->{instance} . '_' . $options{extra_options}->{label_ref}} + - $options{old_datas}->{$self->{instance} . '_' . $options{extra_options}{label_ref}}) + / $options{delta_time}; + $self->{result_values}->{traffic_counter} = $options{new_datas}->{ $self->{instance} . '_' . $options{extra_options}->{label_ref} }; + + $self->{result_values}->{traffic_per_seconds} = sprintf('%d', $self->{result_values}->{traffic_per_seconds}); + + if (defined($options{new_datas}->{$self->{instance} . '_speed_' . $options{extra_options}->{label_ref}}) && + $options{new_datas}->{$self->{instance} . '_speed_' . $options{extra_options}->{label_ref}} ne '' && + $options{new_datas}->{$self->{instance} . '_speed_' . $options{extra_options}->{label_ref}} > 0) { + $self->{result_values}->{traffic_prct} = $self->{result_values}->{traffic_per_seconds} * 100 / $options{new_datas}->{$self->{instance} . '_speed_' . $options{extra_options}->{label_ref}}; + $self->{result_values}->{speed} = $options{new_datas}->{$self->{instance} . '_speed_' . $options{extra_options}->{label_ref}}; + } + + $self->{result_values}->{label} = $options{extra_options}->{label_ref}; + $self->{result_values}->{display} = $options{new_datas}->{$self->{instance} . '_display'}; + return 0; +} + +sub custom_errors_perfdata { + my ($self, %options) = @_; + + if ($self->{instance_mode}->{option_results}->{units_errors} =~ /percent/) { + my $nlabel = $self->{nlabel}; + $nlabel =~ s/count$/percentage/; + + $self->{output}->perfdata_add( + nlabel => $nlabel, + unit => '%', + instances => $self->use_instances(extra_instance => $options{extra_instance}) ? $self->{result_values}->{display} : undef, + value => sprintf('%.2f', $self->{result_values}->{prct}), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0, + max => 100 + ); + } else { + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $self->use_instances(extra_instance => $options{extra_instance}) ? $self->{result_values}->{display} : undef, + value => $self->{result_values}->{used}, + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0, + max => $self->{result_values}->{total} + ); + } +} + +sub custom_errors_threshold { + my ($self, %options) = @_; + + my $exit = 'ok'; + if ($self->{instance_mode}->{option_results}->{units_errors} =~ /percent/) { + $exit = $self->{perfdata}->threshold_check(value => + $self->{result_values}->{prct}, + threshold => + [ { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-' . $self->{thlabel}, exit_litteral => 'warning' } ]); + } else { + $exit = $self->{perfdata}->threshold_check(value => + $self->{result_values}->{used}, + threshold => + [ { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-' . $self->{thlabel}, exit_litteral => 'warning' } ]); + } + return $exit; +} + +sub custom_errors_output { + my ($self, %options) = @_; + + return sprintf( + '%s: %.2f%% (%s on %s)', + $self->{result_values}->{label}, + $self->{result_values}->{prct}, + $self->{result_values}->{used}, + $self->{result_values}->{total} + ); +} + +sub custom_errors_calc { + my ($self, %options) = @_; + + my $errors = $options{new_datas}->{ $self->{instance} . '_' . $options{extra_options}->{label_ref1} . $options{extra_options}->{label_ref2} }; + my $errors_diff = $options{new_datas}->{ $self->{instance} . '_' . $options{extra_options}->{label_ref1} . $options{extra_options}->{label_ref2} } + - $options{old_datas}->{ $self->{instance} . '_' . $options{extra_options}->{label_ref1} . $options{extra_options}->{label_ref2} }; + my $total = $options{new_datas}->{$self->{instance} . '_total_' . $options{extra_options}->{label_ref1} . '_packets'}; + my $total_diff = $options{new_datas}->{$self->{instance} . '_total_' . $options{extra_options}->{label_ref1} . '_packets'} + - $options{old_datas}->{$self->{instance} . '_total_' . $options{extra_options}->{label_ref1} . '_packets'}; + + $errors_diff = sprintf('%d', $errors_diff); + $total_diff = sprintf('%d', $total_diff); + $self->{result_values}->{prct} = 0; + $self->{result_values}->{used} = $errors_diff; + $self->{result_values}->{total} = $total_diff; + if ($self->{instance_mode}->{option_results}->{units_errors} eq 'percent_delta') { + $self->{result_values}->{prct} = $errors_diff * 100 / $total_diff if ($total_diff > 0); + } elsif ($self->{instance_mode}->{option_results}->{units_errors} eq 'percent') { + $self->{result_values}->{prct} = $errors * 100 / $total if ($total > 0); + $self->{result_values}->{used} = $errors; + $self->{result_values}->{total} = $total; + } elsif ($self->{instance_mode}->{option_results}->{units_errors} eq 'delta') { + $self->{result_values}->{prct} = $errors_diff * 100 / $total_diff if ($total_diff > 0); + $self->{result_values}->{used} = $errors_diff; + } else { + $self->{result_values}->{prct} = $errors * 100 / $total if ($total > 0); + $self->{result_values}->{used} = $errors; + $self->{result_values}->{total} = $total; + } + + if (defined($options{extra_options}->{label})) { + $self->{result_values}->{label} = $options{extra_options}->{label}; + } else { + $self->{result_values}->{label} = $options{extra_options}->{label_ref2}; + } + + $self->{result_values}->{display} = $options{new_datas}->{$self->{instance} . '_display'}; + return 0; +} + +sub prefix_interface_output { + my ($self, %options) = @_; + + return "Interface '" . $options{instance_value}->{display} . "' "; +} + +sub interface_long_output { + my ($self, %options) = @_; + + return sprintf( + "checking interface '%s'", + $options{instance_value}->{display} + ); +} + +sub prefix_packets_in_output { + my ($self, %options) = @_; + + return 'packets in '; +} + +sub prefix_packets_out_output { + my ($self, %options) = @_; + + return 'packets out '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'interfaces', type => 3, cb_prefix_output => 'prefix_interface_output', cb_long_output => 'interface_long_output', + indent_long_output => ' ', message_multiple => 'All interfaces are ok', + group => [ + { name => 'status', type => 0, skipped_code => { -10 => 1 } }, + { name => 'traffic', type => 0, skipped_code => { -10 => 1 } }, + { name => 'packets_in', type => 0, cb_prefix_output => 'prefix_packets_in_output', skipped_code => { -10 => 1 } }, + { name => 'packets_out', type => 0, cb_prefix_output => 'prefix_packets_out_output', skipped_code => { -10 => 1 } }, + { name => 'optical', type => 0, skipped_code => { -10 => 1 } } + ] + } + ]; + + $self->{maps_counters}->{status} = [ + { + label => 'status', + type => 2, + critical_default => '%{admstatus} eq "up" and %{opstatus} ne "up"', + set => { + key_values => [ { name => 'opstatus' }, { name => 'admstatus' }, { name => 'display' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + + $self->{maps_counters}->{traffic} = [ + { label => 'in-traffic', nlabel => 'interface.traffic.in.bitspersecond', set => { + key_values => [ { name => 'in', diff => 1 }, { name => 'speed_in' }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_traffic_calc'), closure_custom_calc_extra_options => { label_ref => 'in' }, + closure_custom_output => $self->can('custom_traffic_output'), output_error_template => 'traffic in: %s', + closure_custom_perfdata => $self->can('custom_traffic_perfdata'), + closure_custom_threshold_check => $self->can('custom_traffic_threshold') + } + }, + { label => 'out-traffic', nlabel => 'interface.traffic.out.bitspersecond', set => { + key_values => [ { name => 'out', diff => 1 }, { name => 'speed_out' }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_traffic_calc'), closure_custom_calc_extra_options => { label_ref => 'out' }, + closure_custom_output => $self->can('custom_traffic_output'), output_error_template => 'traffic out: %s', + closure_custom_perfdata => $self->can('custom_traffic_perfdata'), + closure_custom_threshold_check => $self->can('custom_traffic_threshold') + } + } + ]; + + $self->{maps_counters}->{packets_in} = [ + { label => 'in-discard', nlabel => 'interface.packets.in.discard.count', set => { + key_values => [ { name => 'indiscard', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), closure_custom_calc_extra_options => { label_ref1 => 'in', label_ref2 => 'discard' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'discard: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-error', nlabel => 'interface.packets.in.error.count', set => { + key_values => [ { name => 'inerror', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), closure_custom_calc_extra_options => { label_ref1 => 'in', label_ref2 => 'error' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-fcserror', nlabel => 'interface.packets.in.fcserror.count', set => { + key_values => [ { name => 'infcserror', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'fcs error', label_ref1 => 'in', label_ref2 => 'fcserror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'fcs error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-runts', nlabel => 'interface.packets.in.runts.count', set => { + key_values => [ { name => 'inrunts', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label_ref1 => 'in', label_ref2 => 'runts' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'runts: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-giant', nlabel => 'interface.packets.in.giant.count', set => { + key_values => [ { name => 'ingiant', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label_ref1 => 'in', label_ref2 => 'giant' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'giant: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-l3-incomplete', nlabel => 'interface.packets.in.l3incomplete.count', set => { + key_values => [ { name => 'inl3incomplete', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'l3 incomplete', label_ref1 => 'in', label_ref2 => 'l3incomplete' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'l3 incomplete: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-fifo-error', nlabel => 'interface.packets.in.fifo.error.count', set => { + key_values => [ { name => 'infifoerror', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'fifo error', label_ref1 => 'in', label_ref2 => 'fifoerror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'fifo error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-l2-mismatch-timeout', nlabel => 'interface.packets.in.l2mismatch.timeout.count', set => { + key_values => [ { name => 'inl2mismatchtimeout', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'l2 mismatch timeout', label_ref1 => 'in', label_ref2 => 'l2mismatchtimeout' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'l2 mismatch timeout: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-drop', nlabel => 'interface.packets.in.drop.count', set => { + key_values => [ { name => 'indrop', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label_ref1 => 'in', label_ref2 => 'drop' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'drop: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'in-resource-error', nlabel => 'interface.packets.in.resource.error.count', set => { + key_values => [ { name => 'inresourceerror', diff => 1 }, { name => 'total_in_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'resource error', label_ref1 => 'in', label_ref2 => 'resourceerror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'resource error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + } + ]; + + $self->{maps_counters}->{packets_out} = [ + { label => 'out-discard', nlabel => 'interface.packets.out.discard.count', set => { + key_values => [ { name => 'outdiscard', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), closure_custom_calc_extra_options => { label_ref1 => 'out', label_ref2 => 'discard' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'discard: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-error', nlabel => 'interface.packets.out.error.count', set => { + key_values => [ { name => 'outerror', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), closure_custom_calc_extra_options => { label_ref1 => 'out', label_ref2 => 'error' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-drop', nlabel => 'interface.packets.out.drop.count', set => { + key_values => [ { name => 'outdrop', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), closure_custom_calc_extra_options => { label_ref1 => 'out', label_ref2 => 'drop' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'drop: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-carrier-transition', nlabel => 'interface.packets.out.carrier.transition.count', set => { + key_values => [ { name => 'outcarriertransition', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'carrier transition', label_ref1 => 'out', label_ref2 => 'carriertransition' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'carrier transition: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-collision', nlabel => 'interface.packets.out.collision.count', set => { + key_values => [ { name => 'outcollision', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label_ref1 => 'out', label_ref2 => 'collision' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'collision: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-mtu-error', nlabel => 'interface.packets.out.mtu.error.count', set => { + key_values => [ { name => 'outmtuerror', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'mtu error', label_ref1 => 'out', label_ref2 => 'mtuerror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'mtu error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-aged', nlabel => 'interface.packets.out.aged.count', set => { + key_values => [ { name => 'outaged', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label_ref1 => 'out', label_ref2 => 'aged' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'packets out aged: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-hslink-crc-error', nlabel => 'interface.packets.out.hslink.crc.error.count', set => { + key_values => [ { name => 'outhslinkcrcerror', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'hs link crc error', label_ref1 => 'out', label_ref2 => 'hslinkcrcerror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'hs link crc error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-fifo-error', nlabel => 'interface.packets.out.fifo.error.count', set => { + key_values => [ { name => 'outfifoerror', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'fifo error', label_ref1 => 'out', label_ref2 => 'fifoerror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'fifo error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + { label => 'out-resource-error', nlabel => 'interface.packets.out.resource.error.count', set => { + key_values => [ { name => 'outresourceerror', diff => 1 }, { name => 'total_out_packets', diff => 1 }, { name => 'display' } ], + closure_custom_calc => $self->can('custom_errors_calc'), + closure_custom_calc_extra_options => { label => 'resource error', label_ref1 => 'out', label_ref2 => 'resourceerror' }, + closure_custom_output => $self->can('custom_errors_output'), output_error_template => 'resource error: %s', + closure_custom_perfdata => $self->can('custom_errors_perfdata'), + closure_custom_threshold_check => $self->can('custom_errors_threshold') + } + }, + ]; + + $self->{maps_counters}->{optical} = [ + { label => 'input-power', nlabel => 'interface.input.power.dbm', set => { + key_values => [ { name => 'inputPowerDbm' }, { name => 'display' } ], + output_template => 'input power: %s dBm', + closure_custom_threshold_check => sub { + my ($self, %options) = @_; + + return $self->{perfdata}->threshold_check( + value => $self->{result_values}->{inputPowerDbm}, + threshold => [ + { + label => 'critical-' . $self->{thlabel} . '-' . $self->{instance}, + exit_litteral => 'critical' + }, + { + label => 'warning-' . $self->{thlabel} . '-' . $self->{instance}, + exit_litteral => 'warning' + } + ] + ); + }, + closure_custom_perfdata => sub { + my ($self, %options) = @_; + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + unit => 'dBm', + instances => $self->{result_values}->{display}, + value => $self->{result_values}->{inputPowerDbm}, + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel} . '-' . $self->{instance}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel} . '-' . $self->{instance}), + min => 0 + ); + } + } + }, + { label => 'bias-current', nlabel => 'interface.bias.current.milliampere', set => { + key_values => [ { name => 'biasCurrent' }, { name => 'display' } ], + output_template => 'bias current: %s mA', + perfdatas => [ + { template => '%s', unit => 'mA', label_extra_instance => 1, instance_use => 'display' } + ] + } + }, + { label => 'output-power', nlabel => 'interface.output.power.dbm', set => { + key_values => [ { name => 'outputPowerDbm' }, { name => 'display' } ], + output_template => 'output power: %s dBm', + closure_custom_threshold_check => sub { + my ($self, %options) = @_; + + return $self->{perfdata}->threshold_check( + value => $self->{result_values}->{outputPowerDbm}, + threshold => [ + { + label => 'critical-' . $self->{thlabel} . '-' . $self->{instance}, + exit_litteral => 'critical' + }, + { + label => 'warning-' . $self->{thlabel} . '-' . $self->{instance}, + exit_litteral => 'warning' + } + ] + ); + }, + closure_custom_perfdata => sub { + my ($self, %options) = @_; + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + unit => 'dBm', + instances => $self->{result_values}->{display}, + value => $self->{result_values}->{outputPowerDbm}, + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel} . '-' . $self->{instance}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel} . '-' . $self->{instance}), + min => 0 + ); + } + } + }, + { label => 'module-temperature', nlabel => 'interface.module.temperature.celsius', set => { + key_values => [ { name => 'moduleTemperature' }, { name => 'display' } ], + output_template => 'module temperature: %.2f C', + perfdatas => [ + { template => '%.2f', unit => 'C', label_extra_instance => 1, instance_use => 'display' } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-use:s' => { name => 'filter_use' }, + 'display-use:s' => { name => 'display_use' }, + 'add-status' => { name => 'add_status' }, + 'add-traffic' => { name => 'add_traffic' }, + 'add-errors' => { name => 'add_errors' }, + 'add-extra-errors' => { name => 'add_extra_errors' }, + 'add-optical' => { name => 'add_optical' }, + 'filter-interface:s' => { name => 'filter_interface' }, + 'exclude-interface:s' => { name => 'exclude_interface' }, + 'units-traffic:s' => { name => 'units_traffic', default => 'percent_delta' }, + 'units-errors:s' => { name => 'units_errors', default => 'percent_delta' }, + 'speed:s' => { name => 'speed' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + # If no options, we set add-status + if (!defined($self->{option_results}->{add_traffic}) && + !defined($self->{option_results}->{add_status}) && + !defined($self->{option_results}->{add_optical}) && + !defined($self->{option_results}->{add_errors}) && + !defined($self->{option_results}->{add_extra_errors})) { + $self->{option_results}->{add_status} = 1; + } + + $self->{checking} = ''; + foreach (('add_status', 'add_errors', 'add_extra_errors', 'add_traffic', 'add_optical')) { + if (defined($self->{option_results}->{$_})) { + $self->{checking} .= $_; + } + } + + if (!defined($self->{option_results}->{filter_use}) || $self->{option_results}->{filter_use} eq '') { + $self->{option_results}->{filter_use} = 'name'; + } + if ($self->{option_results}->{filter_use} !~ /name|descr/) { + $self->{output}->add_option_msg(short_msg => "--filter-use must be 'name' or 'descr'"); + $self->{output}->option_exit(); + } + if (!defined($self->{option_results}->{display_use}) || $self->{option_results}->{display_use} eq '') { + $self->{option_results}->{display_use} = 'name'; + } + if ($self->{option_results}->{display_use} !~ /name|descr/) { + $self->{output}->add_option_msg(short_msg => "--display-use must be 'name' or 'descr'"); + $self->{output}->option_exit(); + } + + if (defined($self->{option_results}->{speed}) && $self->{option_results}->{speed} ne '') { + if ($self->{option_results}->{speed} !~ /^[0-9]+(\.[0-9]+){0,1}$/) { + $self->{output}->add_option_msg(short_msg => "Speed must be a positive number '" . $self->{option_results}->{speed} . "' (can be a float also)."); + $self->{output}->option_exit(); + } else { + $self->{option_results}->{speed} *= 1000000; + } + } + + if (defined($self->{option_results}->{add_traffic})) { + $self->{option_results}->{units_traffic} = 'percent_delta' + if (!defined($self->{option_results}->{units_traffic}) || + $self->{option_results}->{units_traffic} eq '' || + $self->{option_results}->{units_traffic} eq '%'); + if ($self->{option_results}->{units_traffic} !~ /^(?:percent|percent_delta|bps|counter)$/) { + $self->{output}->add_option_msg(short_msg => 'Wrong option --units-traffic.'); + $self->{output}->option_exit(); + } + } + + if (defined($self->{option_results}->{add_errors}) || defined($self->{option_results}->{add_extra_errors})) { + $self->{option_results}->{units_errors} = 'percent_delta' + if (!defined($self->{option_results}->{units_errors}) || + $self->{option_results}->{units_errors} eq '' || + $self->{option_results}->{units_errors} eq '%'); + if ($self->{option_results}->{units_errors} !~ /^(?:percent|percent_delta|delta|counter)$/) { + $self->{output}->add_option_msg(short_msg => 'Wrong option --units-errors.'); + $self->{output}->option_exit(); + } + } +} + +sub do_selection_interface { + my ($self, %options) = @_; + + return if ( + !defined($self->{option_results}->{add_traffic}) && + !defined($self->{option_results}->{add_status}) && + !defined($self->{option_results}->{add_errors}) && + !defined($self->{option_results}->{add_extra_errors}) + ); + + my $results = $options{custom}->get_interface_infos(); + + $self->{interfaces} = {}; + foreach (@$results) { + next if (defined($self->{option_results}->{filter_interface}) && $self->{option_results}->{filter_interface} ne '' && + $_->{ $self->{option_results}->{filter_use} } !~ /$self->{option_results}->{filter_interface}/); + next if (defined($self->{option_results}->{exclude_interface}) && $self->{option_results}->{exclude_interface} ne '' && + $_->{ $self->{option_results}->{filter_use} } =~ /$self->{option_results}->{exclude_interface}/); + + $self->{interfaces}->{ $_->{name} } = { + display => $_->{ $self->{option_results}->{display_use} }, + packets_in => { + display => $_->{ $self->{option_results}->{display_use} }, + total_in_packets => $_->{inPkts} + }, + packets_out => { + display => $_->{ $self->{option_results}->{display_use} }, + total_out_packets => $_->{outPkts} + }, + optical => { + display => $_->{ $self->{option_results}->{display_use} }, + } + }; + + if (defined($self->{option_results}->{add_status})) { + $self->{interfaces}->{ $_->{name} }->{status} = { + display => $_->{ $self->{option_results}->{display_use} }, + opstatus => $_->{opstatus}, + admstatus => $_->{admstatus}, + }; + } + + if (defined($self->{option_results}->{add_traffic})) { + $self->{interfaces}->{ $_->{name} }->{traffic} = { + display => $_->{ $self->{option_results}->{display_use} }, + in => $_->{in}, + out => $_->{out}, + speed_in => defined($self->{option_results}->{speed}) ? $self->{option_results}->{speed} : $_->{speed}, + speed_out => defined($self->{option_results}->{speed}) ? $self->{option_results}->{speed} : $_->{speed}, + }; + }; + + if (defined($self->{option_results}->{add_errors})) { + $self->{interfaces}->{ $_->{name} }->{packets_in}->{inerror} = $_->{'counter-in-input-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{indiscard} = $_->{'counter-in-input-discards'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outerror} = $_->{'counter-out-output-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outdiscard} = $_->{'counter-out-output-discards'}; + } + + if (defined($self->{option_results}->{add_extra_errors})) { + $self->{interfaces}->{ $_->{name} }->{packets_in}->{infcserror} = $_->{'counter-in-framing-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{inrunts} = $_->{'counter-in-input-runts'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{ingiant} = $_->{'counter-in-input-giants'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{inl3incomplete} = $_->{'counter-in-input-l3-incompletes'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{infifoerror} = $_->{'counter-in-input-fifo-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{inl2mismatchtimeout} = $_->{'counter-in-input-l2-mismatch-timeouts'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{inresourceerror} = $_->{'counter-in-input-resource-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_in}->{indrop} = $_->{'counter-in-input-drops'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outdrop} = $_->{'counter-out-output-drops'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outcarriertransition} = $_->{'counter-out-carrier-transitions'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outcollision} = $_->{'counter-out-output-collisions'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outmtuerror} = $_->{'counter-out-mtu-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outaged} = $_->{'counter-out-aged-packets'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outhslinkcrcerror} = $_->{'counter-out-hs-link-crc-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outfifoerror} = $_->{'counter-out-output-fifo-errors'}; + $self->{interfaces}->{ $_->{name} }->{packets_out}->{outresourceerror} = $_->{'counter-out-output-resource-errors'}; + } + + foreach my $label (keys %$_) { + next if ($label !~ /^counter-(.*?)-/); + + $self->{interfaces}->{ $_->{name} }->{'packets_' . $1}->{$label} = $_->{$label}; + } + } +} + +sub do_selection_interface_optical { + my ($self, %options) = @_; + + return if (!defined($self->{option_results}->{add_optical})); + + my $results = $options{custom}->get_interface_optical_infos(); + foreach (@$results) { + next if ( + ( + defined($self->{option_results}->{add_traffic}) || defined($self->{option_results}->{add_status}) || + defined($self->{option_results}->{add_errors}) || defined($self->{option_results}->{add_extra_errors}) + ) + && !defined($self->{interfaces}->{ $_->{name} })); + + # only --add-optical option + if (!defined($self->{interfaces}->{ $_->{name} })) { + next if (defined($self->{option_results}->{filter_interface}) && $self->{option_results}->{filter_interface} ne '' && + $_->{name} !~ /$self->{option_results}->{filter_interface}/); + next if (defined($self->{option_results}->{exclude_interface}) && $self->{option_results}->{exclude_interface} ne '' && + $_->{name} =~ /$self->{option_results}->{exclude_interface}/); + + $self->{interfaces}->{ $_->{name} } = { display => $_->{name}, optical => { display => $_->{name} } }; + } + + $self->{interfaces}->{ $_->{name} }->{optical}->{biasCurrent} = $_->{biasCurrent}; + $self->{interfaces}->{ $_->{name} }->{optical}->{moduleTemperature} = $_->{moduleTemperature}; + + if (defined($_->{outputPowerDbm})) { + $self->{interfaces}->{ $_->{name} }->{optical}->{outputPowerDbm} = $_->{outputPowerDbm}; + my ($warn_val, $crit_val) = ('', ''); + + if ((!defined($self->{option_results}->{'warning-output-power'}) || $self->{option_results}->{'warning-output-power'} eq '') && + (!defined($self->{option_results}->{'critical-output-power'}) || $self->{option_results}->{'critical-output-power'} eq '') && + (!defined($self->{option_results}->{'warning-instance-interface-output-power-dbm'}) || $self->{option_results}->{'warning-instance-interface-output-power-dbm'} eq '') && + (!defined($self->{option_results}->{'critical-instance-interface-output-power-dbm'}) || $self->{option_results}->{'critical-instance-interface-output-power-dbm'} eq '')) { + $crit_val = $_->{outputPowerDbmLowAlarmCrit} . ':' + if (defined($_->{outputPowerDbmLowAlarmCrit}) && $_->{outputPowerDbmLowAlarmCrit} != 0); + $crit_val .= $_->{outputPowerDbmHighAlarmCrit} + if (defined($_->{outputPowerDbmHighAlarmCrit}) && $_->{outputPowerDbmHighAlarmCrit} != 0); + $self->{perfdata}->threshold_validate(label => 'critical-instance-interface-output-power-dbm-' . $_->{name}, value => $crit_val); + + $warn_val = $_->{outputPowerDbmLowAlarmWarn} . ':' + if (defined($_->{outputPowerDbmLowAlarmWarn}) && $_->{outputPowerDbmLowAlarmWarn} != 0); + $warn_val .= $_->{outputPowerDbmHighAlarmWarn} + if (defined($_->{outputPowerDbmHighAlarmWarn}) && $_->{outputPowerDbmHighAlarmWarn} != 0); + $self->{perfdata}->threshold_validate(label => 'warning-instance-interface-output-power-dbm-' . $_->{name}, value => $warn_val); + } + } + + if (defined($_->{inputPowerDbm})) { + $self->{interfaces}->{ $_->{name} }->{optical}->{inputPowerDbm} = $_->{inputPowerDbm}; + my ($warn_val, $crit_val) = ('', ''); + + if ((!defined($self->{option_results}->{'warning-input-power'}) || $self->{option_results}->{'warning-input-power'} eq '') && + (!defined($self->{option_results}->{'critical-input-power'}) || $self->{option_results}->{'critical-input-power'} eq '') && + (!defined($self->{option_results}->{'warning-instance-interface-input-power-dbm'}) || $self->{option_results}->{'warning-instance-interface-input-power-dbm'} eq '') && + (!defined($self->{option_results}->{'critical-instance-interface-input-power-dbm'}) || $self->{option_results}->{'critical-instance-interface-input-power-dbm'} eq '')) { + $crit_val = $_->{inputPowerDbmLowAlarmCrit} . ':' + if (defined($_->{inputPowerDbmLowAlarmCrit}) && $_->{inputPowerDbmLowAlarmCrit} != 0); + $crit_val .= $_->{inputPowerDbmHighAlarmCrit} + if (defined($_->{inputPowerDbmHighAlarmCrit}) && $_->{inputPowerDbmHighAlarmCrit} != 0); + $self->{perfdata}->threshold_validate(label => 'critical-instance-interface-input-power-dbm-' . $_->{name}, value => $crit_val); + + $warn_val = $_->{inputPowerDbmLowAlarmWarn} . ':' + if (defined($_->{inputPowerDbmLowAlarmWarn}) && $_->{inputPowerDbmLowAlarmWarn} != 0); + $warn_val .= $_->{inputPowerDbmHighAlarmWarn} + if (defined($_->{inputPowerDbmHighAlarmWarn}) && $_->{inputPowerDbmHighAlarmWarn} != 0); + $self->{perfdata}->threshold_validate(label => 'warning-instance-interface-input-power-dbm-' . $_->{name}, value => $warn_val); + } + } + } +} + +sub manage_selection { + my ($self, %options) = @_; + + $self->do_selection_interface(custom => $options{custom}); + $self->do_selection_interface_optical(custom => $options{custom}); + + if (scalar(keys %{$self->{interfaces}}) <= 0) { + $self->{output}->add_option_msg(short_msg => "No interface found."); + $self->{output}->option_exit(); + } + + $self->{cache_name} = 'juniper_api_' . $options{custom}->get_identifier() . '_' . $self->{mode} . '_' . + md5_hex( + (defined($self->{option_results}->{filter_counters}) ? $self->{option_results}->{filter_counters} : 'all') . '_' . + (defined($self->{option_results}->{filter_interface}) ? $self->{option_results}->{filter_interface} : 'all') . '_' . + $self->{checking} + ); +} + +1; + +__END__ + +=head1 MODE + +Check interfaces. + +=over 8 + +=item B<--add-status> + +Check interface status. + +=item B<--add-traffic> + +Check interface traffic. + +=item B<--add-errors> + +Check interface errors. + +=item B<--add-extra-errors> + +Check interface detailed errors. + +=item B<--add-optical> + +Check interface optical. + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: C<%{admstatus}>, C<%{opstatus}>, C<%{display}> + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: C<'%{admstatus} eq "up" and %{opstatus} ne "up"'>). +You can use the following variables: C<%{admstatus}>, C<%{opstatus}>, C<%{display}> + +=item B<--warning-bias-current> + +Threshold in mA. + +=item B<--critical-bias-current> + +Threshold in mA. + +=item B<--warning-in-discard> + +Threshold. + +=item B<--critical-in-discard> + +Threshold. + +=item B<--warning-in-drop> + +Threshold. + +=item B<--critical-in-drop> + +Threshold. + +=item B<--warning-in-error> + +Threshold. + +=item B<--critical-in-error> + +Threshold. + +=item B<--warning-in-fcserror> + +Threshold. + +=item B<--critical-in-fcserror> + +Threshold. + +=item B<--warning-in-fifo-error> + +Threshold. + +=item B<--critical-in-fifo-error> + +Threshold. + +=item B<--warning-in-giant> + +Threshold. + +=item B<--critical-in-giant> + +Threshold. + +=item B<--warning-in-l2-mismatch-timeout> + +Threshold. + +=item B<--critical-in-l2-mismatch-timeout> + +Threshold. + +=item B<--warning-in-l3-incomplete> + +Threshold. + +=item B<--critical-in-l3-incomplete> + +Threshold. + +=item B<--warning-in-resource-error> + +Threshold. + +=item B<--critical-in-resource-error> + +Threshold. + +=item B<--warning-in-runts> + +Threshold. + +=item B<--critical-in-runts> + +Threshold. + +=item B<--warning-in-traffic> + +Threshold. + +=item B<--critical-in-traffic> + +Threshold. + +=item B<--warning-input-power> + +Threshold in dBm. + +=item B<--critical-input-power> + +Threshold in dBm. + +=item B<--warning-module-temperature> + +Threshold in C. + +=item B<--critical-module-temperature> + +Threshold in C. + +=item B<--warning-out-aged> + +Threshold. + +=item B<--critical-out-aged> + +Threshold. + +=item B<--warning-out-carrier-transition> + +Threshold. + +=item B<--critical-out-carrier-transition> + +Threshold. + +=item B<--warning-out-collision> + +Threshold. + +=item B<--critical-out-collision> + +Threshold. + +=item B<--warning-out-discard> + +Threshold. + +=item B<--critical-out-discard> + +Threshold. + +=item B<--warning-out-drop> + +Threshold. + +=item B<--critical-out-drop> + +Threshold. + +=item B<--warning-out-error> + +Threshold. + +=item B<--critical-out-error> + +Threshold. + +=item B<--warning-out-fifo-error> + +Threshold. + +=item B<--critical-out-fifo-error> + +Threshold. + +=item B<--warning-out-hslink-crc-error> + +Threshold. + +=item B<--critical-out-hslink-crc-error> + +Threshold. + +=item B<--warning-out-mtu-error> + +Threshold. + +=item B<--critical-out-mtu-error> + +Threshold. + +=item B<--warning-out-resource-error> + +Threshold. + +=item B<--critical-out-resource-error> + +Threshold. + +=item B<--warning-out-traffic> + +Threshold. + +=item B<--critical-out-traffic> + +Threshold. + +=item B<--warning-output-power> + +Threshold in dBm. + +=item B<--critical-output-power> + +Threshold in dBm. + +=item B<--units-traffic> + +Units of thresholds for the traffic (default: C) (C, C, C). + +=item B<--units-errors> + +Units of thresholds for errors/discards (default: C) (C, C, C, C). + +=item B<--filter-use> + +Define the value to be used to filter interfaces (default: C) (values: C, C). + +=item B<--display-use> + +Define the value that will be used to name the interfaces (default: C) (values: C, C). + +=item B<--filter-interface> + +Filter interface name (regexp can be used). + +=item B<--exclude-interface> + +Exclude interface name (regexp can be used). + +=item B<--speed> + +Set interface speed (in Mb). + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/ldp.pm b/src/network/juniper/common/junos/netconf/mode/ldp.pm new file mode 100644 index 000000000..46e51175d --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/ldp.pm @@ -0,0 +1,452 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::ldp; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_ldp_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances}}) { + my $value; + if ($_ eq 'messageType') { + $value = $self->{key_values}->[0]->{name}; + $value =~ s/_/ /g; + } else { + $value = $self->{result_values}->{$_}; + } + push @$instances, $value; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => $self->{result_values}->{ $self->{key_values}->[0]->{name} }, + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf( + 'connection state: %s, session state: %s', + $self->{result_values}->{connectionState}, + $self->{result_values}->{sessionState} + ); +} + +sub ldp_long_output { + my ($self, %options) = @_; + + return sprintf( + "checking LDP session '%s'", + $options{instance_value}->{remoteAddress} + ); +} + +sub prefix_ldp_output { + my ($self, %options) = @_; + + return sprintf( + "LDP session '%s' ", + $options{instance_value}->{remoteAddress} + ); +} + +sub prefix_messages_sent_output { + my ($self, %options) = @_; + + return 'messages sent '; +} + +sub prefix_messages_received_output { + my ($self, %options) = @_; + + return 'messages received '; +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Number of LDP sessions '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output' }, + { name => 'ldp', type => 3, cb_prefix_output => 'prefix_ldp_output', cb_long_output => 'ldp_long_output', + indent_long_output => ' ', message_multiple => 'All LDP sessions are ok', + group => [ + { name => 'status', type => 0, skipped_code => { -10 => 1 } }, + { name => 'messages_sent', type => 0, cb_prefix_output => 'prefix_messages_sent_output', skipped_code => { -10 => 1 } }, + { name => 'messages_received', type => 0, cb_prefix_output => 'prefix_messages_received_output', skipped_code => { -10 => 1 } } + ] + } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'ldp-sessions-detected', display_ok => 0, nlabel => 'ldp.sessions.detected.count', set => { + key_values => [ { name => 'detected' } ], + output_template => 'detected: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; + + $self->{maps_counters}->{status} = [ + { + label => 'status', + type => 2, + critical_default => '%{connectionState} !~ /open$/i || %{sessionState} !~ /operational/i', + set => { + key_values => [ + { name => 'id' }, { name => 'remoteAddress' }, { name => 'sessionState' }, { name => 'connectionState' } + ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + + $self->{maps_counters}->{messages_sent} = []; + $self->{maps_counters}->{messages_received} = []; + foreach (('initialization', 'keeaplive', 'notification', 'address', 'address withdraw', + 'label mapping', 'label request', 'label withdraw', 'label release', 'label abort')) { + my ($label, $nlabel) = ($_, $_); + $label =~ s/\s+/-/g; + $nlabel =~ s/\s+/_/g; + push @{$self->{maps_counters}->{messages_sent}}, { + label => 'ldp-session-messages-' . $label . '-sent', nlabel => 'ldp.session.messages.sent.count', set => { + key_values => [ { name => $nlabel, diff => 1 }, { name => 'id' }, { name => 'remoteAddress' } ], + output_template => $_ . ': %s%s', + closure_custom_perfdata => $self->can('custom_ldp_perfdata') + } + }; + push @{$self->{maps_counters}->{messages_received}}, { + label => 'ldp-session-messages-' . $label . '-received', nlabel => 'ldp.session.messages.received.count', set => { + key_values => [ { name => $nlabel, diff => 1 }, { name => 'id' }, { name => 'remoteAddress' } ], + output_template => $_ . ': %s%s', + closure_custom_perfdata => $self->can('custom_ldp_perfdata') + } + }; + } +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-id:s' => { name => 'filter_id' }, + 'filter-remote-address:s' => { name => 'filter_remote_address' }, + 'custom-perfdata-instances:s' => { name => 'custom_perfdata_instances' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{custom_perfdata_instances}) || $self->{option_results}->{custom_perfdata_instances} eq '') { + $self->{option_results}->{custom_perfdata_instances} = '%(remoteAddress) %(messageType)'; + } + + $self->{custom_perfdata_instances} = $self->custom_perfdata_instances( + option_name => '--custom-perfdata-instances', + instances => $self->{option_results}->{custom_perfdata_instances}, + labels => { id => 1, remoteAddress => 1, messageType => 1 } + ); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_ldp_infos(); + + $self->{global} = { detected => 0 }; + $self->{ldp} = {}; + foreach my $item (@$result) { + next if (defined($self->{option_results}->{filter_id}) && $self->{option_results}->{filter_id} ne '' && + $item->{id} !~ /$self->{option_results}->{filter_id}/); + next if (defined($self->{option_results}->{filter_remote_address}) && $self->{option_results}->{filter_remote_address} ne '' && + $item->{remoteAddress} !~ /$self->{option_results}->{filter_remote_address}/); + + $self->{ldp}->{ $item->{id} } = { + remoteAddress => $item->{remoteAddress}, + status => { + id => $item->{id}, + remoteAddress => $item->{remoteAddress}, + sessionState => $item->{sessionState}, + connectionState => $item->{connectionState} + }, + messages_sent => { + id => $item->{id}, + remoteAddress => $item->{remoteAddress} + }, + messages_received => { + id => $item->{id}, + remoteAddress => $item->{remoteAddress} + } + }; + + foreach (@{$item->{stats}}) { + my $type = $_->{messageType}; + $type =~ s/\s+/_/g; + $self->{ldp}->{ $item->{id} }->{messages_sent}->{$type} = $_->{sent}; + $self->{ldp}->{ $item->{id} }->{messages_received}->{$type} = $_->{received}; + } + + $self->{global}->{detected}++; + } + + $self->{cache_name} = 'juniper_api_' . $options{custom}->get_identifier() . '_' . $self->{mode} . '_' . + md5_hex( + (defined($self->{option_results}->{filter_counters}) ? $self->{option_results}->{filter_counters} : '') . '_' . + (defined($self->{option_results}->{filter_id}) ? $self->{option_results}->{filter_id} : '') . '_' . + (defined($self->{option_results}->{filter_remote_address}) ? $self->{option_results}->{filter_remote_address} : '') + ); +} + +1; + +__END__ + +=head1 MODE + +Check LDP sessions. + +=over 8 + +=item B<--filter-id> + +Filter LDP session by ID. + +=item B<--filter-remote-address> + +Filter LDP session by remote address. + +=item B<--custom-perfdata-instances> + +Define performance data instances (default: C<%(remoteAddress) %(messageType)>) + +=item B<--unknown-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: C<%{id}>, C<%{remoteAddress}>, C<%{connectionState}>, C<%{sessionState}> + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: C<%{id}>, C<%{remoteAddress}>, C<%{connectionState}>, C<%{sessionState}> + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: C<'%{lspState} !~ /up/i'>). +You can use the following variables: C<%{id}>, C<%{remoteAddress}>, C<%{connectionState}>, C<%{sessionState}> + +=item B<--warning-ldp-session-messages-address-received> + +Threshold. + +=item B<--critical-ldp-session-messages-address-received> + +Threshold. + +=item B<--warning-ldp-session-messages-address-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-address-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-address-withdraw-received> + +Threshold. + +=item B<--critical-ldp-session-messages-address-withdraw-received> + +Threshold. + +=item B<--warning-ldp-session-messages-address-withdraw-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-address-withdraw-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-initialization-received> + +Threshold. + +=item B<--critical-ldp-session-messages-initialization-received> + +Threshold. + +=item B<--warning-ldp-session-messages-initialization-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-initialization-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-keeaplive-received> + +Threshold. + +=item B<--critical-ldp-session-messages-keeaplive-received> + +Threshold. + +=item B<--warning-ldp-session-messages-keeaplive-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-keeaplive-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-label-abort-received> + +Threshold. + +=item B<--critical-ldp-session-messages-label-abort-received> + +Threshold. + +=item B<--warning-ldp-session-messages-label-abort-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-label-abort-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-label-mapping-received> + +Threshold. + +=item B<--critical-ldp-session-messages-label-mapping-received> + +Threshold. + +=item B<--warning-ldp-session-messages-label-mapping-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-label-mapping-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-label-release-received> + +Threshold. + +=item B<--critical-ldp-session-messages-label-release-received> + +Threshold. + +=item B<--warning-ldp-session-messages-label-release-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-label-release-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-label-request-received> + +Threshold. + +=item B<--critical-ldp-session-messages-label-request-received> + +Threshold. + +=item B<--warning-ldp-session-messages-label-request-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-label-request-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-label-withdraw-received> + +Threshold. + +=item B<--critical-ldp-session-messages-label-withdraw-received> + +Threshold. + +=item B<--warning-ldp-session-messages-label-withdraw-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-label-withdraw-sent> + +Threshold. + +=item B<--warning-ldp-session-messages-notification-received> + +Threshold. + +=item B<--critical-ldp-session-messages-notification-received> + +Threshold. + +=item B<--warning-ldp-session-messages-notification-sent> + +Threshold. + +=item B<--critical-ldp-session-messages-notification-sent> + +Threshold. + +=item B<--warning-ldp-sessions-detected> + +Threshold. + +=item B<--critical-ldp-sessions-detected> + +Threshold. + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listbgp.pm b/src/network/juniper/common/junos/netconf/mode/listbgp.pm new file mode 100644 index 000000000..2f6cb73be --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listbgp.pm @@ -0,0 +1,119 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listbgp; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'snmpIndex', + 'localAddr', + 'localAs', + 'peerAddr', + 'peerAs', + 'peerState' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $bgp = $options{custom}->get_bgp_infos(); + + my $results = {}; + foreach (@$bgp) { + $results->{ $_->{snmpIndex} } = { + snmpIndex => $_->{snmpIndex}, + localAddr => $_->{localAddr}, + localAs => $_->{localAs}, + peerAddr => $_->{peerAddr}, + peerAs => $_->{peerAs}, + peerState => $_->{peerState} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List BGP peers:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List BGP peers. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listdisks.pm b/src/network/juniper/common/junos/netconf/mode/listdisks.pm new file mode 100644 index 000000000..3826c7d3e --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listdisks.pm @@ -0,0 +1,111 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listdisks; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'name', + 'space_used_prct' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $disks = $options{custom}->get_disk_infos(); + + my $results = {}; + foreach (@$disks) { + $results->{ $_->{mount} } = { + name => $_->{mount}, + space_used_prct => $_->{space_used_prct} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List disks:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List disks. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listinterfaces.pm b/src/network/juniper/common/junos/netconf/mode/listinterfaces.pm new file mode 100644 index 000000000..069997330 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listinterfaces.pm @@ -0,0 +1,117 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listinterfaces; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'descr', + 'name', + 'opstatus', + 'admstatus', + 'speed' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $interfaces = $options{custom}->get_interface_infos(); + + my $results = {}; + foreach (@$interfaces) { + $results->{ $_->{name} } = { + descr => $_->{descr}, + name => $_->{name}, + opstatus => $_->{opstatus}, + admstatus => $_->{admstatus}, + speed => $_->{speed} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List interfaces:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List interfaces. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listldp.pm b/src/network/juniper/common/junos/netconf/mode/listldp.pm new file mode 100644 index 000000000..42f513e97 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listldp.pm @@ -0,0 +1,115 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listldp; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'id', + 'remoteAddress', + 'sessionState', + 'connectionState' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $ldp = $options{custom}->get_ldp_infos(); + + my $results = {}; + foreach (@$ldp) { + $results->{ $_->{id} } = { + id => $_->{id}, + remoteAddress => $_->{remoteAddress}, + sessionState => $_->{sessionState}, + connectionState => $_->{connectionState} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List LDP sessions:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List LDP sessions. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listlsp.pm b/src/network/juniper/common/junos/netconf/mode/listlsp.pm new file mode 100644 index 000000000..c9baa581f --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listlsp.pm @@ -0,0 +1,117 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listlsp; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'type', + 'name', + 'srcAddress', + 'dstAddress', + 'lspState' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $lsp = $options{custom}->get_lsp_infos(); + + my $results = {}; + foreach (@$lsp) { + $results->{ $_->{name} } = { + type => $_->{type}, + name => $_->{name}, + srcAddress => $_->{srcAddress}, + dstAddress => $_->{dstAddress}, + lspState => $_->{lspState} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List LSP sessions:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List LSP sessions. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listrsvp.pm b/src/network/juniper/common/junos/netconf/mode/listrsvp.pm new file mode 100644 index 000000000..69a1f1edd --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listrsvp.pm @@ -0,0 +1,117 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listrsvp; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'type', + 'name', + 'srcAddress', + 'dstAddress', + 'lspState' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $rsvp = $options{custom}->get_rsvp_infos(); + + my $results = {}; + foreach (@$rsvp) { + $results->{ $_->{name} } = { + type => $_->{type}, + name => $_->{name}, + srcAddress => $_->{srcAddress}, + dstAddress => $_->{dstAddress}, + lspState => $_->{lspState} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List RSVP sessions:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List RSVP sessions. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/listservicesrpm.pm b/src/network/juniper/common/junos/netconf/mode/listservicesrpm.pm new file mode 100644 index 000000000..92e840b03 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/listservicesrpm.pm @@ -0,0 +1,117 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::listservicesrpm; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +my @labels = ( + 'testName', + 'targetAddress', + 'sourceAddress', + 'probeType', + 'probeStatus' +); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $services = $options{custom}->get_service_rpm_infos(); + + my $results = {}; + foreach (@$services) { + $results->{ $_->{testName} } = { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + probeStatus => $_->{probeStatus} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach my $instance (sort keys %$results) { + $self->{output}->output_add(long_msg => + join('', map("[$_: " . $results->{$instance}->{$_} . ']', @labels)) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List services RPM:' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ @labels ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(custom => $options{custom}); + foreach (sort keys %$results) { + $self->{output}->add_disco_entry( + %{$results->{$_}} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List real-time performance monitoring (RPM) services. + +=over 8 + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/lsp.pm b/src/network/juniper/common/junos/netconf/mode/lsp.pm new file mode 100644 index 000000000..7cc9b1c86 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/lsp.pm @@ -0,0 +1,268 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::lsp; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_lsp_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances}}) { + push @$instances, $self->{result_values}->{$_}; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => sprintf('%d', $self->{result_values}->{ $self->{key_values}->[0]->{name} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf( + 'state: %s', + $self->{result_values}->{lspState} + ); +} + +sub lsp_long_output { + my ($self, %options) = @_; + + return sprintf( + "checking LSP session '%s' [type: %s, srcAddress: %s, dstAddress: %s]", + $options{instance_value}->{name}, + $options{instance_value}->{type}, + $options{instance_value}->{srcAddress}, + $options{instance_value}->{dstAddress} + ); +} + +sub prefix_lsp_output { + my ($self, %options) = @_; + + return sprintf( + "LSP session '%s' [type: %s, srcAddress: %s, dstAddress: %s] ", + $options{instance_value}->{name}, + $options{instance_value}->{type}, + $options{instance_value}->{srcAddress}, + $options{instance_value}->{dstAddress} + ); +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Number of LSP sessions '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output' }, + { name => 'lsp', type => 3, cb_prefix_output => 'prefix_lsp_output', cb_long_output => 'lsp_long_output', + indent_long_output => ' ', message_multiple => 'All LSP sessions are ok', + group => [ + { name => 'status', type => 0, skipped_code => { -10 => 1 } }, + { name => 'traffic', type => 0, skipped_code => { -10 => 1 } } + ] + } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'lsp-sessions-detected', display_ok => 0, nlabel => 'lsp.sessions.detected.count', set => { + key_values => [ { name => 'detected' } ], + output_template => 'detected: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; + + $self->{maps_counters}->{status} = [ + { + label => 'status', + type => 2, + critical_default => '%{lspState} !~ /up/i', + set => { + key_values => [ + { name => 'type' }, { name => 'name' }, { name => 'srcAddress' }, { name => 'dstAddress' }, + { name => 'lspState' } + ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + + $self->{maps_counters}->{traffic} = [ + { label => 'lsp-session-traffic', nlabel => 'lsp.session.traffic.bytespersecond', set => { + key_values => [ { name => 'lspBytes', per_second => 1 }, { name => 'type' }, { name => 'name' }, { name => 'srcAddress' }, { name => 'dstAddress' } ], + output_template => 'traffic: %s %s/s', + output_change_bytes => 1, + closure_custom_perfdata => $self->can('custom_lsp_perfdata') + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-type:s' => { name => 'filter_type' }, + 'filter-name:s' => { name => 'filter_name' }, + 'custom-perfdata-instances:s' => { name => 'custom_perfdata_instances' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{custom_perfdata_instances}) || $self->{option_results}->{custom_perfdata_instances} eq '') { + $self->{option_results}->{custom_perfdata_instances} = '%(type) %(name)'; + } + + $self->{custom_perfdata_instances} = $self->custom_perfdata_instances( + option_name => '--custom-perfdata-instances', + instances => $self->{option_results}->{custom_perfdata_instances}, + labels => { type => 1, name => 1, srcAddress => 1, dstAddress => 1 } + ); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_lsp_infos(); + + $self->{global} = { detected => 0 }; + $self->{lsp} = {}; + foreach my $item (@$result) { + next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $item->{name} !~ /$self->{option_results}->{filter_name}/); + next if (defined($self->{option_results}->{filter_type}) && $self->{option_results}->{filter_type} ne '' && + $item->{type} !~ /$self->{option_results}->{filter_type}/); + + $self->{lsp}->{ $item->{type} . '-' . $item->{name} } = { + type => $item->{type}, + name => $item->{name}, + srcAddress => $item->{srcAddress}, + dstAddress => $item->{dstAddress}, + status => { + type => $item->{type}, + name => $item->{name}, + srcAddress => $item->{srcAddress}, + dstAddress => $item->{dstAddress}, + lspState => $item->{lspState} + }, + traffic => { + type => $item->{type}, + name => $item->{name}, + srcAddress => $item->{srcAddress}, + dstAddress => $item->{dstAddress}, + lspBytes => $item->{lspBytes} + } + }; + $self->{global}->{detected}++; + } + + $self->{cache_name} = 'juniper_api_' . $options{custom}->get_identifier() . '_' . $self->{mode} . '_' . + md5_hex( + (defined($self->{option_results}->{filter_counters}) ? $self->{option_results}->{filter_counters} : '') . '_' . + (defined($self->{option_results}->{filter_name}) ? $self->{option_results}->{filter_name} : '') . '_' . + (defined($self->{option_results}->{filter_type}) ? $self->{option_results}->{filter_type} : '') + ); +} + +1; + +__END__ + +=head1 MODE + +Check LSP (Label Switched Path) sessions. + +=over 8 + +=item B<--filter-type> + +Filter LSP session by type. + +=item B<--filter-name> + +Filter LSP session by name. + +=item B<--custom-perfdata-instances> + +Define performance data instances (default: C<'%(type) %(name)'>) + +=item B<--unknown-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: C<%{type}>, C<%{name}>, C<%{srcAddress}>, C<%{dstAddress}>, C<%{lspState}> + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: C<%{type}>, C<%{name}>, C<%{srcAddress}>, C<%{dstAddress}>, C<%{lspState}> + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: '%{lspState} !~ /up/i'). +You can use the following variables: C<%{type}>, C<%{name}>, C<%{srcAddress}>, C<%{dstAddress}>, C<%{lspState}> + +=item B<--warning-lsp-sessions-detected> + +Define the LSP sessions detected conditions to match for the status to be WARNING. + +=item B<--critical-lsp-sessions-detected> + +Define the LSP sessions detected conditions to match for the status to be CRITICAL. + +=item B<--warning-lsp-session-traffic> + +Define the LSP session traffic conditions to match for the status to be WARNING. + +=item B<--critical-lsp-session-traffic> + +Define the LSP session traffic conditions to match for the status to be CRITICAL. + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/memory.pm b/src/network/juniper/common/junos/netconf/mode/memory.pm new file mode 100644 index 000000000..e7ec4ac77 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/memory.pm @@ -0,0 +1,103 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::memory; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub prefix_message_output { + my ($self, %options) = @_; + + return "Memory '" . $options{instance_value}->{name} . "' usage: "; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'memory', type => 1, cb_prefix_output => 'prefix_message_output', message_multiple => 'All memory usages are ok' } + ]; + + $self->{maps_counters}->{memory} = [ + { label => 'usage-prct', nlabel => 'memory.usage.percentage', set => { + key_values => [ { name => 'mem_used' } ], + output_template => '%.2f %%', + perfdatas => [ + { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' } + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_memory_infos(); + + $self->{memory} = {}; + foreach (@$result) { + next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $_->{name} !~ /$self->{option_results}->{filter_name}/); + + $self->{memory}->{ $_->{name} } = $_; + } +} + +1; + +__END__ + +=head1 MODE + +Check memory usage. + +=over 8 + +=item B<--filter-name> + +Filter memory by name. + +=item B<--warning-usage-prct> + +Warning threshold for memory usage (%). + +=item B<--critical-usage-prct> + +Critical threshold for memory usage (%). + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/ospf.pm b/src/network/juniper/common/junos/netconf/mode/ospf.pm new file mode 100644 index 000000000..0ba5983c2 --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/ospf.pm @@ -0,0 +1,195 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::ospf; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_neighbor_status_output { + my ($self, %options) = @_; + + return 'state: ' . $self->{result_values}->{state}; +} + +sub custom_changed_output { + my ($self, %options) = @_; + + return 'Neighbors current: ' . $self->{result_values}->{detected} . ' (last: ' . $self->{result_values}->{detectedLast} . ')'; +} + +sub custom_changed_calc { + my ($self, %options) = @_; + + $self->{result_values}->{detectedLast} = $options{old_datas}->{$self->{instance} . '_detected'}; + $self->{result_values}->{detected} = $options{new_datas}->{$self->{instance} . '_detected'}; + return 0; +} + +sub prefix_neighbor_output { + my ($self, %options) = @_; + + return sprintf( + "neighbor address '%s' [interface: %s] ", + $options{instance_value}->{address}, + $options{instance_value}->{interfaceName} + ); +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, message_separator => ' - ' }, + { name => 'neighbors', type => 1, cb_prefix_output => 'prefix_neighbor_output', message_multiple => 'All OSPF neighbors are ok' } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'neighbors-detected', nlabel => 'ospf.neighbors.detected.count', set => { + key_values => [ { name => 'detected' } ], + output_template => 'Number of OSPF neighbors detected: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + }, + { label => 'neighbors-changed', type => 2, display_ok => 0, set => { + key_values => [ { name => 'detected', diff => 1 } ], + closure_custom_calc => $self->can('custom_changed_calc'), + closure_custom_output => $self->can('custom_changed_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + + $self->{maps_counters}->{neighbors} = [ + { + label => 'neighbor-status', + type => 2, + critical_default => '%{state} =~ /down/i', + set => { + key_values => [ { name => 'state' }, { name => 'address' }, { name => 'interfaceName' } ], + closure_custom_output => $self->can('custom_neighbor_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-neighbor-address:s' => { name => 'filter_neighbor_address' } + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_ospf_infos(); + + $self->{global} = { detected => 0 }; + $self->{neighbors} = {}; + foreach (@$result) { + next if (defined($self->{option_results}->{filter_neighbor_address}) && $self->{option_results}->{filter_neighbor_address} ne '' && + $_->{neighborAddress} !~ /$self->{option_results}->{filter_neighbor_address}/); + + $self->{neighbors}->{ $_->{neighborId} } = { + address => $_->{neighborAddress}, + interfaceName => $_->{interfaceName}, + state => $_->{state} + }; + + $self->{global}->{detected}++; + } + + $self->{cache_name} = 'juniper_api_' . $options{custom}->get_identifier() . '_' . $self->{mode} . '_' . + md5_hex( + (defined($self->{option_results}->{filter_counters}) ? $self->{option_results}->{filter_counters} : '') . '_' . + (defined($self->{option_results}->{filter_neighbor_address}) ? $self->{option_results}->{filter_neighbor_address} : '') + ); +} + +1; + +__END__ + +=head1 MODE + +Check OSPF neighbors. + +=over 8 + +=item B<--filter-neighbor-address> + +Filter neighbors by address (can be a regexp). + +=item B<--unknown-neighbors-changed> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: %{detectedLast}, %{detected} + +=item B<--warning-neighbor-changed> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: %{detectedLast}, %{detected} + +=item B<--critical-neighbor-changed> + +Define the conditions to match for the status to be CRITICAL. +You can use the following variables: %{detectedLast}, %{detected} + +=item B<--unknown-neighbor-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: %{state}, %{address}, %{interfaceName} + +=item B<--warning-neighbor-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: %{state}, %{address}, %{interfaceName} + +=item B<--critical-neighbor-status> + +Define the conditions to match for the status to be CRITICAL (default: '%{state} =~ /down/i'). +You can use the following variables: %{state}, %{address}, %{interfaceName} + +=item B<--warning-neighbors-detected> + +Warning threshold for number of OSPF neighbors detected. + +=item B<--critical-neighbors-detected> + +Critical threshold for number of OSPF neighbors detected. + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/rsvp.pm b/src/network/juniper/common/junos/netconf/mode/rsvp.pm new file mode 100644 index 000000000..7e9636d5f --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/rsvp.pm @@ -0,0 +1,228 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::rsvp; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_rsvp_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances}}) { + push @$instances, $self->{result_values}->{$_}; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => sprintf('%d', $self->{result_values}->{ $self->{key_values}->[0]->{name} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf( + 'lsp state: %s', + $self->{result_values}->{lspState} + ); +} + +sub prefix_rsvp_output { + my ($self, %options) = @_; + + return sprintf( + "RSVP session '%s' [type: %s, srcAddress: %s, dstAddress: %s] ", + $options{instance_value}->{name}, + $options{instance_value}->{type}, + $options{instance_value}->{srcAddress}, + $options{instance_value}->{dstAddress} + ); +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Number of RSVP sessions '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output' }, + { name => 'rsvp', type => 1, cb_prefix_output => 'prefix_rsvp_output', message_multiple => 'All RSVP sessions are ok' } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'rsvp-sessions-detected', display_ok => 0, nlabel => 'rsvp.sessions.detected.count', set => { + key_values => [ { name => 'detected' } ], + output_template => 'detected: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; + + $self->{maps_counters}->{rsvp} = [ + { + label => 'status', + type => 2, + critical_default => '%{lspState} !~ /up/i', + set => { + key_values => [ + { name => 'type' }, { name => 'name' }, { name => 'srcAddress' }, { name => 'dstAddress' }, + { name => 'lspState' } + ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { label => 'rsvp-session-lsp-traffic', nlabel => 'rsvp.session.lsp.traffic.bytespersecond', set => { + key_values => [ { name => 'lspBytes', per_second => 1 }, { name => 'type' }, { name => 'name' }, { name => 'srcAddress' }, { name => 'dstAddress' } ], + output_template => 'traffic: %s %s/s', + output_change_bytes => 1, + closure_custom_perfdata => $self->can('custom_rsvp_perfdata') + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' }, + 'filter-type:s' => { name => 'filter_type' }, + 'custom-perfdata-instances:s' => { name => 'custom_perfdata_instances' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{custom_perfdata_instances}) || $self->{option_results}->{custom_perfdata_instances} eq '') { + $self->{option_results}->{custom_perfdata_instances} = '%(type) %(name)'; + } + + $self->{custom_perfdata_instances} = $self->custom_perfdata_instances( + option_name => '--custom-perfdata-instances', + instances => $self->{option_results}->{custom_perfdata_instances}, + labels => { type => 1, name => 1, srcAddress => 1, dstAddress => 1 } + ); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_rsvp_infos(); + + $self->{global} = { detected => 0 }; + $self->{rsvp} = {}; + foreach (@$result) { + next if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $_->{name} !~ /$self->{option_results}->{filter_name}/); + next if (defined($self->{option_results}->{filter_type}) && $self->{option_results}->{filter_type} ne '' && + $_->{type} !~ /$self->{option_results}->{filter_type}/); + + $self->{rsvp}->{ $_->{type} . '-' . $_->{name} } = $_; + $self->{global}->{detected}++; + } + + $self->{cache_name} = 'juniper_api_' . $options{custom}->get_identifier() . '_' . $self->{mode} . '_' . + md5_hex( + (defined($self->{option_results}->{filter_counters}) ? $self->{option_results}->{filter_counters} : '') . '_' . + (defined($self->{option_results}->{filter_name}) ? $self->{option_results}->{filter_name} : '') . '_' . + (defined($self->{option_results}->{filter_type}) ? $self->{option_results}->{filter_type} : '') + ); +} + +1; + +__END__ + +=head1 MODE + +Check RSVP sessions. + +=over 8 + +=item B<--filter-name> + +Filter RSVP session by name. + +=item B<--filter-type> + +Filter RSVP session by type. + +=item B<--custom-perfdata-instances> + +Define performance data instances (default: C<'%(type) %(name)'>) + +=item B<--unknown-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: C<%{type}>, C<%{name}>, C<%{srcAddress}>, C<%{dstAddress}>, C<%{lspState}> + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: C<%{type}>, C<%{name}>, C<%{srcAddress}>, C<%{dstAddress}>, C<%{lspState}> + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: C<'%{lspState} !~ /up/i'>). +You can use the following variables: C<%{type}>, C<%{name}>, C<%{srcAddress}>, C<%{dstAddress}>, C<%{lspState}> + +=item B<--warning-rsvp-sessions-detected> + +Define the RSVP sessions detected conditions to match for the status to be WARNING. + +=item B<--critical-rsvp-sessions-detected> + +Define the RSVP sessions detected conditions to match for the status to be CRITICAL. + +=item B<--warning-rsvp-session-lsp-traffic> + +Define the RSVP session traffic conditions to match for the status to be WARNING. + +=item B<--critical-rsvp-session-lsp-traffic> + +Define the RSVP session traffic conditions to match for the status to be CRITICAL. + +=back + +=cut diff --git a/src/network/juniper/common/junos/netconf/mode/servicesrpm.pm b/src/network/juniper/common/junos/netconf/mode/servicesrpm.pm new file mode 100644 index 000000000..6063f0bee --- /dev/null +++ b/src/network/juniper/common/junos/netconf/mode/servicesrpm.pm @@ -0,0 +1,463 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::common::junos::netconf::mode::servicesrpm; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use Digest::MD5 qw(md5_hex); + +sub custom_services_loss_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances}}) { + push @$instances, $self->{result_values}->{$_}; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => sprintf('%.2f', $self->{result_values}->{ $self->{key_values}->[0]->{name} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0, + max => 100, + unit => '%' + ); +} + +sub custom_services_perfdata { + my ($self) = @_; + + my $instances = []; + foreach (@{$self->{instance_mode}->{custom_perfdata_instances}}) { + push @$instances, $self->{result_values}->{$_}; + } + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel}, + instances => $instances, + value => sprintf('%.2f', $self->{result_values}->{ $self->{key_values}->[0]->{name} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf( + 'probe status: %s', + $self->{result_values}->{probeStatus} + ); +} + +sub service_long_output { + my ($self, %options) = @_; + + return sprintf( + "checking service RPM '%s' [type: %s] [source address %s] [target address %s]", + $options{instance_value}->{testName}, + $options{instance_value}->{probeType}, + $options{instance_value}->{sourceAddress}, + $options{instance_value}->{targetAddress} + ); +} + +sub prefix_service_output { + my ($self, %options) = @_; + + return sprintf( + "service RPM '%s' [type: %s] [source address %s] [target address %s] ", + $options{instance_value}->{testName}, + $options{instance_value}->{probeType}, + $options{instance_value}->{sourceAddress}, + $options{instance_value}->{targetAddress} + ); +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'Number of services '; +} + +sub prefix_rtt_output { + my ($self, %options) = @_; + + return 'round trip time delay '; +} + +sub prefix_prtj_output { + my ($self, %options) = @_; + + return 'positive round trip jitter delay '; +} + +sub prefix_nrtj_output { + my ($self, %options) = @_; + + return 'negative round trip jitter delay '; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output' }, + { name => 'services', type => 3, cb_prefix_output => 'prefix_service_output', cb_long_output => 'service_long_output', + indent_long_output => ' ', message_multiple => 'All services are ok', + group => [ + { name => 'status', type => 0, skipped_code => { -10 => 1 } }, + { name => 'loss', type => 0, skipped_code => { -10 => 1 } }, + { name => 'rtt', type => 0, cb_prefix_output => 'prefix_rtt_output', skipped_code => { -10 => 1 } }, + { name => 'prtj', type => 0, cb_prefix_output => 'prefix_prtj_output', skipped_code => { -10 => 1 } }, + { name => 'nrtj', type => 0, cb_prefix_output => 'prefix_nrtj_output', skipped_code => { -10 => 1 } } + ] + } + ]; + + $self->{maps_counters}->{global} = [ + { label => 'services-detected', display_ok => 0, nlabel => 'services.detected.count', set => { + key_values => [ { name => 'detected' } ], + output_template => 'detected: %s', + perfdatas => [ + { template => '%s', min => 0 } + ] + } + } + ]; + + $self->{maps_counters}->{status} = [ + { + label => 'status', + type => 2, + set => { + key_values => [ + { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' }, + { name => 'probeStatus' } + ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; + + $self->{maps_counters}->{loss} = [ + { label => 'service-rpm-probe-loss-percentage', nlabel => 'service.rpm.probe.loss.percentage', set => { + key_values => [ { name => 'lastLossPercentage' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'loss: %.2f %%', + closure_custom_perfdata => $self->can('custom_services_loss_perfdata') + } + } + ]; + + $self->{maps_counters}->{rtt} = [ + { label => 'service-rpm-probe-rtt-delay-average', nlabel => 'service.rpm.probe.rtt.delay.average.microseconds', set => { + key_values => [ { name => 'lastRTTAvgDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'average: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + }, + { label => 'service-rpm-probe-rtt-delay-jitter', nlabel => 'service.rpm.probe.rtt.delay.jitter.microseconds', set => { + key_values => [ { name => 'lastRTTJitterDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'jitter: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + }, + { label => 'service-rpm-probe-rtt-delay-stdev', nlabel => 'service.rpm.probe.rtt.delay.stdev.microseconds', set => { + key_values => [ { name => 'lastRTTStdevDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'stdev: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + } + ]; + + $self->{maps_counters}->{prtj} = [ + { label => 'service-rpm-probe-prtj-delay-average', nlabel => 'service.rpm.probe.prtj.delay.average.microseconds', set => { + key_values => [ { name => 'lastPRTJAvgDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'average: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + }, + { label => 'service-rpm-probe-prtj-delay-jitter', nlabel => 'service.rpm.probe.prtj.delay.jitter.microseconds', set => { + key_values => [ { name => 'lastPRTJJitterDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'jitter: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + }, + { label => 'service-rpm-probe-prtj-delay-stdev', nlabel => 'service.rpm.probe.prtj.delay.stdev.microseconds', set => { + key_values => [ { name => 'lastPRTJStdevDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'stdev: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + } + ]; + + $self->{maps_counters}->{nrtj} = [ + { label => 'service-rpm-probe-nrtj-delay-average', nlabel => 'service.rpm.probe.nrtj.delay.average.microseconds', set => { + key_values => [ { name => 'lastNRTJAvgDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'average: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + }, + { label => 'service-rpm-probe-nrtj-delay-jitter', nlabel => 'service.rpm.probe.nrtj.delay.jitter.microseconds', set => { + key_values => [ { name => 'lastNRTJJitterDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'jitter: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + }, + { label => 'service-rpm-probe-nrtj-delay-stdev', nlabel => 'service.rpm.probe.nrtj.delay.stdev.microseconds', set => { + key_values => [ { name => 'lastNRTJStdevDelay' }, { name => 'testName' }, { name => 'probeType' }, { name => 'sourceAddress' }, { name => 'targetAddress' } ], + output_template => 'stdev: %s usec', + closure_custom_perfdata => $self->can('custom_services_perfdata') + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' }, + 'filter-type:s' => { name => 'filter_type' }, + 'custom-perfdata-instances:s' => { name => 'custom_perfdata_instances' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{custom_perfdata_instances}) || $self->{option_results}->{custom_perfdata_instances} eq '') { + $self->{option_results}->{custom_perfdata_instances} = '%(testName)'; + } + + $self->{custom_perfdata_instances} = $self->custom_perfdata_instances( + option_name => '--custom-perfdata-instances', + instances => $self->{option_results}->{custom_perfdata_instances}, + labels => { testName => 1, probeType => 1, sourceAddress => 1, targetAddress => 1 } + ); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_service_rpm_infos(); + + $self->{global} = { detected => 0 }; + $self->{services} = {}; + foreach (@$result) { + next if (!centreon::plugins::misc::is_empty($self->{option_results}->{filter_name}) && + $_->{testName} !~ /$self->{option_results}->{filter_name}/); + next if (!centreon::plugins::misc::is_empty($self->{option_results}->{filter_type}) && + $_->{probeType} !~ /$self->{option_results}->{filter_type}/); + + $self->{services}->{ $_->{testName} } = { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + status => { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + probeStatus => $_->{probeStatus} + }, + loss => { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + lastLossPercentage => $_->{lastLossPercentage} + }, + rtt => { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + lastRTTAvgDelay => $_->{lastRTTAvgDelay}, + lastRTTJitterDelay => $_->{lastRTTJitterDelay}, + lastRTTStdevDelay => $_->{lastRTTStdevDelay} + }, + prtj => { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + lastPRTJAvgDelay => $_->{lastPRTJAvgDelay}, + lastPRTJJitterDelay => $_->{lastPRTJJitterDelay}, + lastPRTJStdevDelay => $_->{lastPRTJStdevDelay} + }, + nrtj => { + testName => $_->{testName}, + targetAddress => $_->{targetAddress}, + sourceAddress => $_->{sourceAddress}, + probeType => $_->{probeType}, + lastNRTJAvgDelay => $_->{lastNRTJAvgDelay}, + lastNRTJJitterDelay => $_->{lastNRTJJitterDelay}, + lastNRTJStdevDelay => $_->{lastNRTJStdevDelay} + } + }; + + $self->{global}->{detected}++; + } +} + +1; + +__END__ + +=head1 MODE + +Check real-time performance monitoring (RPM) services. + +=over 8 + +=item B<--filter-name> + +Filter service by name. + +=item B<--filter-type> + +Filter service by type. + +=item B<--custom-perfdata-instances> + +Define performance data instances (default: C<%(testName)>) + +=item B<--unknown-status> + +Define the conditions to match for the status to be UNKNOWN. +You can use the following variables: C<%{testName}>, C<%{probeType}>, C<%{sourceAddress}>, C<%{targetAddress}>, C<%{probeStatus}> + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: C<%{testName}>, C<%{probeType}>, C<%{sourceAddress}>, C<%{targetAddress}>, C<%{probeStatus}> + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL. +You can use the following variables: C<%{testName}>, C<%{probeType}>, C<%{sourceAddress}>, C<%{targetAddress}>, C<%{probeStatus}> + +=item B<--warning-services-detected> + +Define the services detected conditions to match for the status to be WARNING. + +=item B<--critical-services-detected> + +Define the services detected conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-loss-percentage> + +Define the service RPM probe loss percentage conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-loss-percentage> + +Define the service RPM probe loss percentage conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-rtt-delay-average> + +Define the service RPM probe route-trip time delay average conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-rtt-delay-average> + +Define the service RPM probe route-trip time delay average conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-rtt-delay-jitter> + +Define the service RPM probe route-trip time delay jitter conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-rtt-delay-jitter> + +Define the service RPM probe route-trip time delay jitter conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-rtt-delay-stdev> + +Define the service RPM probe route-trip time delay standard deviation conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-rtt-delay-stdev> + +Define the service RPM probe route-trip time delay standard deviation conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-prtj-delay-average> + +Define the service RPM probe positive round trip jitter delay average conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-prtj-delay-average> + +Define the service RPM probe positive round trip jitter delay average conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-prtj-delay-jitter> + +Define the service RPM probe positive round trip jitter delay jitter conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-prtj-delay-jitter> + +Define the service RPM probe positive round trip jitter delay jitter conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-prtj-delay-stdev> + +Define the service RPM probe positive round trip jitter delay standard deviation conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-prtj-delay-stdev> + +Define the service RPM probe positive round trip jitter delay standard deviation conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-nrtj-delay-average> + +Define the service RPM probe negative round trip jitter delay average conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-nrtj-delay-average> + +Define the service RPM probe negative round trip jitter delay average conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-nrtj-delay-jitter> + +Define the service RPM probe negative round trip jitter delay jitter conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-nrtj-delay-jitter> + +Define the service RPM probe negative round trip jitter delay jitter conditions to match for the status to be CRITICAL. + +=item B<--warning-service-rpm-probe-nrtj-delay-stdev> + +Define the service RPM probe negative round trip jitter delay standard deviation conditions to match for the status to be WARNING. + +=item B<--critical-service-rpm-probe-nrtj-delay-stdev> + +Define the service RPM probe negative round trip jitter delay standard deviation conditions to match for the status to be CRITICAL. + +=back + +=cut diff --git a/src/network/juniper/common/junos/mode/bgppeerprefixstatistics.pm b/src/network/juniper/common/junos/snmp/mode/bgppeerprefixstatistics.pm similarity index 89% rename from src/network/juniper/common/junos/mode/bgppeerprefixstatistics.pm rename to src/network/juniper/common/junos/snmp/mode/bgppeerprefixstatistics.pm index 080fa7431..bc8e6a4a7 100644 --- a/src/network/juniper/common/junos/mode/bgppeerprefixstatistics.pm +++ b/src/network/juniper/common/junos/snmp/mode/bgppeerprefixstatistics.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::bgppeerprefixstatistics; +package network::juniper::common::junos::snmp::mode::bgppeerprefixstatistics; use base qw(centreon::plugins::templates::counter); @@ -200,7 +200,7 @@ __END__ =head1 MODE -Check BGP peer prefixes per AFI/SAFI (BGP4-V2-MIB-JUNIPER) +Check BGP peer prefixes per AFI/SAFI (C) =over 8 @@ -208,17 +208,45 @@ Check BGP peer prefixes per AFI/SAFI (BGP4-V2-MIB-JUNIPER) Filter by peer identifier (can be regexp) -=item B<--warning-*> +=item B<--warning-prefixes-in> -Specify warning threshold. -Can be: 'prefixes-in', 'prefixes-in-accepted', -'prefixes-in-rejected', 'prefixes-in-active', 'prefixes-out' +Threshold warning for prefixes in. -=item B<--critical-*> +=item B<--critical-prefixes-in> -Specify critical threshold. -Can be: 'prefixes-in', 'prefixes-in-accepted', -'prefixes-in-rejected', 'prefixes-in-active', 'prefixes-out' +Threshold critical for prefixes in. + +=item B<--warning-prefixes-in-accepted> + +Threshold warning for prefixes in accepted. + +=item B<--critical-prefixes-in-accepted> + +Threshold critical for prefixes in accepted. + +=item B<--warning-prefixes-in-rejected> + +Threshold warning for prefixes in rejected. + +=item B<--critical-prefixes-in-rejected> + +Threshold critical for prefixes in rejected. + +=item B<--warning-prefixes-in-active> + +Threshold warning for prefixes in active. + +=item B<--critical-prefixes-in-active> + +Threshold critical for prefixes in active. + +=item B<--warning-prefixes-out> + +Threshold warning for prefixes out. + +=item B<--critical-prefixes-out> + +Threshold critical for prefixes out. =back diff --git a/src/network/juniper/common/junos/mode/bgppeerstate.pm b/src/network/juniper/common/junos/snmp/mode/bgppeerstate.pm similarity index 90% rename from src/network/juniper/common/junos/mode/bgppeerstate.pm rename to src/network/juniper/common/junos/snmp/mode/bgppeerstate.pm index ae79b819b..7a4a978df 100644 --- a/src/network/juniper/common/junos/mode/bgppeerstate.pm +++ b/src/network/juniper/common/junos/snmp/mode/bgppeerstate.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::bgppeerstate; +package network::juniper::common::junos::snmp::mode::bgppeerstate; use base qw(centreon::plugins::templates::counter); @@ -181,7 +181,7 @@ __END__ =head1 MODE -Check BGP peer state (BGP4-V2-MIB-JUNIPER) +Check BGP peer state (C) =over 8 @@ -191,7 +191,7 @@ Filter by peer identifier (can be regexp) =item B<--filter-remote-ip> -Filter by remote ip address (can be regexp) +Filter by remote IP address (can be regexp) =item B<--filter-local-as> @@ -200,16 +200,16 @@ Filter by local AS (can be regexp) =item B<--warning-status> Specify warning threshold. -Can use special variables like %{peer_identifier}, %{peer_state}, %{peer_status}, -%{local_type}, %{local_ip}, %{local_port}, %{local_as}, -%{remote_type}, %{remote_ip}, %{remote_port}, %{remote_as} +Can use special variables like C<%{peer_identifier}>, C<%{peer_state}>, C<%{peer_status}>, +C<%{local_type}>, C<%{local_ip}>, C<%{local_port}>, C<%{local_as}>, +C<%{remote_type}>, C<%{remote_ip}>, C<%{remote_port}>, C<%{remote_as}> =item B<--critical-status> -Specify critical threshold (default: '%{peer_status} =~ /running/ && %{peer_state} !~ /established/'). -Can use special variables like %{peer_identifier}, %{peer_state}, %{peer_status}, -%{local_type}, %{local_ip}, %{local_port}, %{local_as}, -%{remote_type}, %{remote_ip}, %{remote_port}, %{remote_as} +Specify critical threshold (default: C<'%{peer_status} =~ /running/ && %{peer_state} !~ /established/'>). +Can use special variables like C<%{peer_identifier}>, C<%{peer_state}>, C<%{peer_status}>, +C<%{local_type}>, C<%{local_ip}>, C<%{local_port}>, C<%{local_as}>, +C<%{remote_type}>, C<%{remote_ip}>, C<%{remote_port}>, C<%{remote_as}> =back diff --git a/src/network/juniper/common/junos/mode/components/alarm.pm b/src/network/juniper/common/junos/snmp/mode/components/alarm.pm similarity index 97% rename from src/network/juniper/common/junos/mode/components/alarm.pm rename to src/network/juniper/common/junos/snmp/mode/components/alarm.pm index da5a9dfd9..ba5771f7e 100644 --- a/src/network/juniper/common/junos/mode/components/alarm.pm +++ b/src/network/juniper/common/junos/snmp/mode/components/alarm.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::components::alarm; +package network::juniper::common::junos::snmp::mode::components::alarm; use strict; use warnings; diff --git a/src/network/juniper/common/junos/mode/components/fru.pm b/src/network/juniper/common/junos/snmp/mode/components/fru.pm similarity index 98% rename from src/network/juniper/common/junos/mode/components/fru.pm rename to src/network/juniper/common/junos/snmp/mode/components/fru.pm index 540de8e6f..1a3f9c62b 100644 --- a/src/network/juniper/common/junos/mode/components/fru.pm +++ b/src/network/juniper/common/junos/snmp/mode/components/fru.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::components::fru; +package network::juniper::common::junos::snmp::mode::components::fru; use strict; use warnings; diff --git a/src/network/juniper/common/junos/mode/components/operating.pm b/src/network/juniper/common/junos/snmp/mode/components/operating.pm similarity index 99% rename from src/network/juniper/common/junos/mode/components/operating.pm rename to src/network/juniper/common/junos/snmp/mode/components/operating.pm index fc915a738..dcc59f8d7 100644 --- a/src/network/juniper/common/junos/mode/components/operating.pm +++ b/src/network/juniper/common/junos/snmp/mode/components/operating.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::components::operating; +package network::juniper::common::junos::snmp::mode::components::operating; use strict; use warnings; diff --git a/src/network/juniper/common/junos/mode/cos.pm b/src/network/juniper/common/junos/snmp/mode/cos.pm similarity index 99% rename from src/network/juniper/common/junos/mode/cos.pm rename to src/network/juniper/common/junos/snmp/mode/cos.pm index c78da7454..ee88016d2 100644 --- a/src/network/juniper/common/junos/mode/cos.pm +++ b/src/network/juniper/common/junos/snmp/mode/cos.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::cos; +package network::juniper::common::junos::snmp::mode::cos; use base qw(centreon::plugins::templates::counter); diff --git a/src/network/juniper/common/junos/mode/cpsessions.pm b/src/network/juniper/common/junos/snmp/mode/cpsessions.pm similarity index 98% rename from src/network/juniper/common/junos/mode/cpsessions.pm rename to src/network/juniper/common/junos/snmp/mode/cpsessions.pm index 270e88ddf..39b03db31 100644 --- a/src/network/juniper/common/junos/mode/cpsessions.pm +++ b/src/network/juniper/common/junos/snmp/mode/cpsessions.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::cpsessions; +package network::juniper::common::junos::snmp::mode::cpsessions; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/junos/mode/cpu.pm b/src/network/juniper/common/junos/snmp/mode/cpu.pm similarity index 87% rename from src/network/juniper/common/junos/mode/cpu.pm rename to src/network/juniper/common/junos/snmp/mode/cpu.pm index f0919b239..7fd2b7ecf 100644 --- a/src/network/juniper/common/junos/mode/cpu.pm +++ b/src/network/juniper/common/junos/snmp/mode/cpu.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::cpu; +package network::juniper::common::junos::snmp::mode::cpu; use base qw(centreon::plugins::templates::counter); @@ -147,12 +147,39 @@ Check CPU usage. =item B<--filter> -Filter operating (default: 'routing|fpc'). +Filter operating (default: C<'routing|fpc'>). -=item B<--warning-*> B<--critical-*> +=item B<--warning-utilization> -Thresholds. -Can be: 'utilization', 'load-1m', 'load-5m', 'load-15m'. +Warning threshold for CPU utilization (in percent). + +=item B<--critical-utilization> + +Critical threshold for CPU utilization (in percent). + +=item B<--warning-load-1m> + +Warning threshold for CPU load 1 minute (in percent). + +=item B<--critical-load-1m> + +Critical threshold for CPU load 1 minute (in percent). + +=item B<--warning-load-5m> + +Warning threshold for CPU load 5 minutes (in percent). + +=item B<--critical-load-5m> + +Critical threshold for CPU load 5 minutes (in percent). + +=item B<--warning-load-15m> + +Warning threshold for CPU load 15 minutes (in percent). + +=item B<--critical-load-15m> + +Critical threshold for CPU load 15 minutes (in percent). =back diff --git a/src/network/juniper/common/junos/mode/cpuforwarding.pm b/src/network/juniper/common/junos/snmp/mode/cpuforwarding.pm similarity index 98% rename from src/network/juniper/common/junos/mode/cpuforwarding.pm rename to src/network/juniper/common/junos/snmp/mode/cpuforwarding.pm index 16305466b..bb6ce59bf 100644 --- a/src/network/juniper/common/junos/mode/cpuforwarding.pm +++ b/src/network/juniper/common/junos/snmp/mode/cpuforwarding.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::cpuforwarding; +package network::juniper::common::junos::snmp::mode::cpuforwarding; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/junos/mode/flowsessions.pm b/src/network/juniper/common/junos/snmp/mode/flowsessions.pm similarity index 98% rename from src/network/juniper/common/junos/mode/flowsessions.pm rename to src/network/juniper/common/junos/snmp/mode/flowsessions.pm index 3eff4bb1f..3f3a5730a 100644 --- a/src/network/juniper/common/junos/mode/flowsessions.pm +++ b/src/network/juniper/common/junos/snmp/mode/flowsessions.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::flowsessions; +package network::juniper::common::junos::snmp::mode::flowsessions; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/junos/mode/hardware.pm b/src/network/juniper/common/junos/snmp/mode/hardware.pm similarity index 92% rename from src/network/juniper/common/junos/mode/hardware.pm rename to src/network/juniper/common/junos/snmp/mode/hardware.pm index 9306ec40e..f86f95368 100644 --- a/src/network/juniper/common/junos/mode/hardware.pm +++ b/src/network/juniper/common/junos/snmp/mode/hardware.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::hardware; +package network::juniper::common::junos::snmp::mode::hardware; use base qw(centreon::plugins::templates::hardware); @@ -64,7 +64,7 @@ sub set_system { ] }; - $self->{components_path} = 'network::juniper::common::junos::mode::components'; + $self->{components_path} = 'network::juniper::common::junos::snmp::mode::components'; $self->{components_module} = ['fru', 'operating', 'alarm']; } @@ -200,14 +200,14 @@ __END__ =head1 MODE -Check Hardware (JUNIPER-MIB) (frus, operating). +Check Hardware (JUNIPER-MIB) (field-replaceable units, operating). =over 8 =item B<--component> -Which component to check (default: '.*'). -Can be: 'fru', 'operating', 'alarm'. +Which component to check (default: C<'.*'>). +Can be: C, C, C. =item B<--add-name-instance> @@ -215,33 +215,32 @@ Add literal description for instance value (used in filter, absent-problem and t =item B<--filter> -Exclude the items given as a comma-separated list (example: --filter=fru). -You can also exclude items from specific instances: --filter=fru,7.3.0.0 +Exclude the items given as a comma-separated list (example: C<--filter=fru>). +You can also exclude items from specific instances: C<--filter=fru,7.3.0.0> =item B<--absent-problem> Return an error if an entity is not 'present' (default is skipping) (comma separated list) -Can be specific or global: --absent-problem=fru,7.1.0.0 +Can be specific or global: C<--absent-problem=fru,7.1.0.0> =item B<--no-component> -Define the expected status if no components are found (default: critical). - +Define the expected status if no components are found (default: C). =item B<--threshold-overload> Use this option to override the status returned by the plugin when the status label matches a regular expression (syntax: section,[instance,]status,regexp). -Example: --threshold-overload='operating,CRITICAL,^(?!(running)$)' +Example: C<--threshold-overload='operating,CRITICAL,^(?!(running)$)'> =item B<--warning> Set warning threshold (syntax: type,regexp,threshold) -Example: --warning='operating-temperature,.*,30' +Example: C<--warning='operating-temperature,.*,30'> =item B<--critical> Set critical threshold (syntax: type,regexp,threshold) -Example: --critical='operating-temperature,.*,40' +Example: C<--critical='operating-temperature,.*,40'> =item B<--reload-cache-time> diff --git a/src/network/juniper/common/junos/mode/interfaces.pm b/src/network/juniper/common/junos/snmp/mode/interfaces.pm similarity index 74% rename from src/network/juniper/common/junos/mode/interfaces.pm rename to src/network/juniper/common/junos/snmp/mode/interfaces.pm index a32b35d33..b716b9f05 100644 --- a/src/network/juniper/common/junos/mode/interfaces.pm +++ b/src/network/juniper/common/junos/snmp/mode/interfaces.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::interfaces; +package network::juniper::common::junos::snmp::mode::interfaces; use base qw(snmp_standard::mode::interfaces); @@ -204,7 +204,7 @@ sub custom_add_result { } $self->{int}->{$options{instance}}->{bias_current} = undef; if (defined($result->{bias_current}) && $result->{bias_current} != 0) { - $self->{int}->{$options{instance}}->{bias_current} = $result->{bias_current} / 100; + $self->{int}->{$options{instance}}->{bias_current} = $result->{bias_current} / 1000; } $self->{int}->{$options{instance}}->{output_power} = undef; if (defined($result->{output_power}) && $result->{output_power} != 0) { @@ -248,7 +248,7 @@ Check interfaces. =item B<--add-global> -Check global port statistics (by default if no --add-* option is set). +Check global port statistics (by default if no C<--add-*> option is set). =item B<--add-status> @@ -256,7 +256,7 @@ Check interface status. =item B<--add-duplex-status> -Check duplex status (with --warning-status and --critical-status). +Check duplex status (with C<--warning-status> and C<--critical-status>). =item B<--add-traffic> @@ -284,17 +284,17 @@ Check interface optical metrics. =item B<--check-metrics> -If the expression is true, metrics are checked (default: '%{opstatus} eq "up"'). +If the expression is true, metrics are checked (default: C<'%{opstatus} eq "up"'>). =item B<--warning-status> Define the conditions to match for the status to be WARNING. -You can use the following variables: %{admstatus}, %{opstatus}, %{duplexstatus}, %{display} +You can use the following variables: C<%{admstatus}>, C<%{opstatus}>, C<%{duplexstatus}>, C<%{display}> =item B<--critical-status> -Define the conditions to match for the status to be CRITICAL (default: '%{admstatus} eq "up" and %{opstatus} ne "up"'). -You can use the following variables: %{admstatus}, %{opstatus}, %{duplexstatus}, %{display} +Define the conditions to match for the status to be CRITICAL (default: C<'%{admstatus} eq "up" and %{opstatus} ne "up"'>). +You can use the following variables: C<%{admstatus}>, C<%{opstatus}>, C<%{duplexstatus}>, C<%{display}> =item B<--warning-errors> @@ -304,31 +304,205 @@ Set warning threshold for all error counters. Set critical threshold for all error counters. -=item B<--warning-*> B<--critical-*> +=item B<--warning-total-port> -Thresholds (will superseed --[warning-critical]-errors). -Can be: 'total-port', 'total-admin-up', 'total-admin-down', 'total-oper-up', 'total-oper-down', -'in-traffic', 'out-traffic', 'in-error', 'in-discard', 'out-error', 'out-discard', -'in-ucast', 'in-bcast', 'in-mcast', 'out-ucast', 'out-bcast', 'out-mcast', -'speed' (b/s). +Threshold. -And also: 'fcs-errors (%)', 'input-power' (dBm), 'bias-current' (mA), 'output-power' (dBm), 'module-temperature' (C). +=item B<--critical-total-port> + +Threshold. + +=item B--warning-total-admin-up> + +Threshold. + +=item B<--critical-total-admin-up> + +Threshold. + +=item B<--warning-total-admin-down> + +Threshold. + +=item B<--critical-total-admin-down> + +Threshold. + +=item B<--warning-total-oper-up> + +Threshold. + +=item B<--critical-total-oper-up> + +Threshold. + +=item B<--warning-total-oper-down> + +Threshold. + +=item B<--critical-total-oper-down> + +Threshold. + +=item B<--warning-in-traffic> + +Set warning threshold for in traffic. + +=item B<--critical-in-traffic> + +Set critical threshold for in traffic. + +=item B<--warning-out-traffic> + +Set warning threshold for out traffic. + +=item B<--critical-out-traffic> + +Set critical threshold for out traffic. + +=item B<--warning-in-error> + +Set warning threshold for in error traffic. + +=item B<--critical-in-error> + +Set critical threshold for in error traffic. + +=item B<--warning-in-discard> + +Set warning threshold for in discard traffic. + +=item B<--critical-in-discard> + +Set critical threshold for in discard traffic. + +=item B--warning-out-error> + +Set warning threshold for out error traffic. + +=item B<--critical-out-error> + +Set critical threshold for out error traffic. + +=item B<--warning-out-discard> + +Set warning threshold for out discard traffic. + +=item B<--critical-out-discard> + +Set critical threshold for out discard traffic. + +=item B<--warning-in-ucast> + +Set warning threshold for in unicast traffic. + +=item B<--critical-in-ucast> + +Set critical threshold for in unicast traffic. + +=item B<--warning-in-bcast> + +Set warning threshold for in broadcast traffic. + +=item B<--critical-in-bcast> + +Set critical threshold for in broadcast traffic. + +=item B<--warning-in-mcast> + +Set warning threshold for in multicast traffic. + +=item B<--critical-in-mcast> + +Set critical threshold for in multicast traffic. + +=item B<--warning-out-ucast> + +Set warning threshold for out unicast traffic. + +=item B<--critical-out-ucast> + +Set critical threshold for out unicast traffic. + +=item B<--warning-out-bcast> + +Set warning threshold for out broadcast traffic. + +=item B<--critical-out-bcast> + +Set critical threshold for out broadcast traffic. + +=item B<--warning-out-mcast> + +Set warning threshold for out multicast traffic. + +=item B<--critical-out-mcast> + +Set critical threshold for out multicast traffic. + +=item B<--warning-speed> + +Set warning threshold for speed (in b/s). + +=item B<--critical-speed> + +Set critical threshold for speed (in b/s). + +=item B<--warning-fcs-errors> + +Set warning threshold for Frame Check Sum errors (in percent). + +=item B<--critical-fcs-errors> + +Set critical threshold for Frame Check Sum errors (in percent). + +=item B<--warning-input-power> + +Set warning threshold for input power (dBm). + +=item B<--critical-input-power> + +Set critical threshold for input power (dBm). + +=item B<--warning-bias-current> + +Set warning threshold for bias current (mA). + +=item B<--critical-bias-current> + +Set critical threshold for bias current (mA). + +=item B<--warning-output-power> + +Set warning threshold for output power (dBm). + +=item B<--critical-output-power> + +Set critical threshold for output power (dBm). + +=item B<--warning-module-temperature> + +Set warning threshold for module temperature (C). + +=item B<--critical-module-temperature> + +Set critical threshold for module temperature (C). =item B<--units-traffic> -Units of thresholds for the traffic (default: 'percent_delta') ('percent_delta', 'bps', 'counter'). +Units of thresholds for the traffic (default: C<%{percent_delta}>) (C<%{percent_delta}>, C<%{bps}>, C<%{counter}>). =item B<--units-errors> -Units of thresholds for errors/discards (default: 'percent_delta') ('percent_delta', 'percent', 'delta', 'deltaps', 'counter'). +Units of thresholds for errors/discards (default: C<%{percent_delta}>) (C<%{percent_delta}>, C<%{percent}>, C<%{delta}>, C<%{deltaps}>, C<%{counter}>). =item B<--units-cast> -Units of thresholds for communication types (default: 'percent_delta') ('percent_delta', 'percent', 'delta', 'deltaps', 'counter'). +Units of thresholds for communication types (default: C<%{percent_delta}>) (C<%{percent_delta}>, C<%{percent}>, C<%{delta}>, C<%{deltaps}>, C<%{counter}>). =item B<--nagvis-perfdata> -Display traffic perfdata to be compatible with nagvis widget. +Display traffic performance data to be compatible with NagVis widget. =item B<--interface> @@ -336,7 +510,7 @@ Set the interface (number expected) example: 1,2,... (empty means 'check all int =item B<--name> -Allows you to define the interface (in option --interface) by name instead of OID index. The name matching mode supports regular expressions. +Allows you to define the interface (in option C<--interface>) by name instead of OID index. The name matching mode supports regular expressions. =item B<--speed> @@ -360,11 +534,11 @@ Time in minutes before reloading cache file (default: 180). =item B<--oid-filter> -Define the OID to be used to filter interfaces (default: ifName) (values: ifDesc, ifAlias, ifName, IpAddr). +Define the OID to be used to filter interfaces (default: C) (values: C, C, C, C). =item B<--oid-display> -Define the OID that will be used to name the interfaces (default: ifName) (values: ifDesc, ifAlias, ifName, IpAddr). +Define the OID that will be used to name the interfaces (default: C) (values: C, C, C, C). =item B<--oid-extra-display> @@ -374,7 +548,7 @@ Add an OID to display. Modify the interface name displayed by using a regular expression. -Example: adding --display-transform-src='eth' --display-transform-dst='ens' will replace all occurrences of 'eth' with 'ens' +Example: adding C<--display-transform-src='eth' --display-transform-dst='ens'> will replace all occurrences of 'eth' with 'ens' =item B<--show-cache> diff --git a/src/network/juniper/common/junos/mode/ipsectunnel.pm b/src/network/juniper/common/junos/snmp/mode/ipsectunnel.pm similarity index 99% rename from src/network/juniper/common/junos/mode/ipsectunnel.pm rename to src/network/juniper/common/junos/snmp/mode/ipsectunnel.pm index 2f8e12ba9..c236c4971 100644 --- a/src/network/juniper/common/junos/mode/ipsectunnel.pm +++ b/src/network/juniper/common/junos/snmp/mode/ipsectunnel.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::ipsectunnel; +package network::juniper::common::junos::snmp::mode::ipsectunnel; use base qw(centreon::plugins::templates::counter); diff --git a/src/network/juniper/common/junos/mode/ldpsessionstatus.pm b/src/network/juniper/common/junos/snmp/mode/ldpsessionstatus.pm similarity index 98% rename from src/network/juniper/common/junos/mode/ldpsessionstatus.pm rename to src/network/juniper/common/junos/snmp/mode/ldpsessionstatus.pm index 5f2dbf635..95773773b 100644 --- a/src/network/juniper/common/junos/mode/ldpsessionstatus.pm +++ b/src/network/juniper/common/junos/snmp/mode/ldpsessionstatus.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::ldpsessionstatus; +package network::juniper::common::junos::snmp::mode::ldpsessionstatus; use base qw(centreon::plugins::templates::counter); diff --git a/src/network/juniper/common/junos/mode/listbgppeers.pm b/src/network/juniper/common/junos/snmp/mode/listbgppeers.pm similarity index 98% rename from src/network/juniper/common/junos/mode/listbgppeers.pm rename to src/network/juniper/common/junos/snmp/mode/listbgppeers.pm index bd926d16f..fd31c8907 100644 --- a/src/network/juniper/common/junos/mode/listbgppeers.pm +++ b/src/network/juniper/common/junos/snmp/mode/listbgppeers.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::listbgppeers; +package network::juniper::common::junos::snmp::mode::listbgppeers; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/junos/mode/lspstatus.pm b/src/network/juniper/common/junos/snmp/mode/lspstatus.pm similarity index 94% rename from src/network/juniper/common/junos/mode/lspstatus.pm rename to src/network/juniper/common/junos/snmp/mode/lspstatus.pm index 608b53577..ebecce0aa 100644 --- a/src/network/juniper/common/junos/mode/lspstatus.pm +++ b/src/network/juniper/common/junos/snmp/mode/lspstatus.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::lspstatus; +package network::juniper::common::junos::snmp::mode::lspstatus; use base qw(centreon::plugins::templates::counter); @@ -185,34 +185,34 @@ __END__ =head1 MODE -Check LSPs (Label Switched Path) status. +Check LSP (Label Switched Path) status. =over 8 =item B<--filter-*> -Filter LSPs. -Can be: 'name', 'from', 'to' (can be a regexp). +Filter Label Switched Paths. +Can be: C, C, C (can be a regexp). =item B<--warning-status> -Define the conditions to match for the status to be WARNING (default: ''). -You can use the following variables: %{state} +Define the conditions to match for the status to be WARNING (default: C<''>). +You can use the following variables: C<%{state}> =item B<--critical-status> -Define the conditions to match for the status to be CRITICAL (default: '%{state} !~ /up/i'). -You can use the following variables: %{state} +Define the conditions to match for the status to be CRITICAL (default: C<'%{state} !~ /up/i'>). +You can use the following variables: C<%{state}> =item B<--warning-*> Warning threshold. -Can be: 'transition-count', 'last-transition' (seconds). +Can be: C<%{transition-count}>, C<%{last-transition}> (seconds). =item B<--critical-*> Critical threshold. -Can be: 'transition-count', 'last-transition' (seconds). +Can be: C<%{transition-count}>, C<%{last-transition}> (seconds). =back diff --git a/src/network/juniper/common/junos/mode/memory.pm b/src/network/juniper/common/junos/snmp/mode/memory.pm similarity index 98% rename from src/network/juniper/common/junos/mode/memory.pm rename to src/network/juniper/common/junos/snmp/mode/memory.pm index 06ca90b64..743262d0f 100644 --- a/src/network/juniper/common/junos/mode/memory.pm +++ b/src/network/juniper/common/junos/snmp/mode/memory.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::memory; +package network::juniper::common::junos::snmp::mode::memory; use base qw(centreon::plugins::templates::counter); diff --git a/src/network/juniper/common/junos/mode/memoryforwarding.pm b/src/network/juniper/common/junos/snmp/mode/memoryforwarding.pm similarity index 98% rename from src/network/juniper/common/junos/mode/memoryforwarding.pm rename to src/network/juniper/common/junos/snmp/mode/memoryforwarding.pm index f0951c4be..dc9dd6fc9 100644 --- a/src/network/juniper/common/junos/mode/memoryforwarding.pm +++ b/src/network/juniper/common/junos/snmp/mode/memoryforwarding.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::memoryforwarding; +package network::juniper::common::junos::snmp::mode::memoryforwarding; use base qw(centreon::plugins::mode); diff --git a/src/network/juniper/common/junos/mode/rsvpsessionstatus.pm b/src/network/juniper/common/junos/snmp/mode/rsvpsessionstatus.pm similarity index 98% rename from src/network/juniper/common/junos/mode/rsvpsessionstatus.pm rename to src/network/juniper/common/junos/snmp/mode/rsvpsessionstatus.pm index 2addee614..0d4e72301 100644 --- a/src/network/juniper/common/junos/mode/rsvpsessionstatus.pm +++ b/src/network/juniper/common/junos/snmp/mode/rsvpsessionstatus.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::rsvpsessionstatus; +package network::juniper::common::junos::snmp::mode::rsvpsessionstatus; use base qw(centreon::plugins::templates::counter); diff --git a/src/network/juniper/common/junos/mode/stack.pm b/src/network/juniper/common/junos/snmp/mode/stack.pm similarity index 99% rename from src/network/juniper/common/junos/mode/stack.pm rename to src/network/juniper/common/junos/snmp/mode/stack.pm index 5a76cba2b..709f1b1e5 100644 --- a/src/network/juniper/common/junos/mode/stack.pm +++ b/src/network/juniper/common/junos/snmp/mode/stack.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::common::junos::mode::stack; +package network::juniper::common::junos::snmp::mode::stack; use base qw(centreon::plugins::templates::counter); diff --git a/src/network/juniper/ex/plugin.pm b/src/network/juniper/ex/snmp/plugin.pm similarity index 72% rename from src/network/juniper/ex/plugin.pm rename to src/network/juniper/ex/snmp/plugin.pm index 9556a4e6f..cbe1fce50 100644 --- a/src/network/juniper/ex/plugin.pm +++ b/src/network/juniper/ex/snmp/plugin.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::ex::plugin; +package network::juniper::ex::snmp::plugin; use strict; use warnings; @@ -29,17 +29,16 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; - %{$self->{modes}} = ( - 'cpu' => 'network::juniper::common::junos::mode::cpu', - 'hardware' => 'network::juniper::common::junos::mode::hardware', + $self->{modes} = { + 'cpu' => 'network::juniper::common::junos::snmp::mode::cpu', + 'hardware' => 'network::juniper::common::junos::snmp::mode::hardware', 'interfaces' => 'snmp_standard::mode::interfaces', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', - 'memory' => 'network::juniper::common::junos::mode::memory', + 'memory' => 'network::juniper::common::junos::snmp::mode::memory', 'list-storages' => 'snmp_standard::mode::liststorages', - 'stack' => 'network::juniper::common::junos::mode::stack', - 'storage' => 'snmp_standard::mode::storage', - ); + 'stack' => 'network::juniper::common::junos::snmp::mode::stack', + 'storage' => 'snmp_standard::mode::storage' + }; return $self; } diff --git a/src/network/juniper/ggsn/mode/apnstats.pm b/src/network/juniper/ggsn/snmp/mode/apnstats.pm similarity index 81% rename from src/network/juniper/ggsn/mode/apnstats.pm rename to src/network/juniper/ggsn/snmp/mode/apnstats.pm index b4079d07c..84c5a50b6 100644 --- a/src/network/juniper/ggsn/mode/apnstats.pm +++ b/src/network/juniper/ggsn/snmp/mode/apnstats.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::ggsn::mode::apnstats; +package network::juniper::ggsn::snmp::mode::apnstats; use base qw(centreon::plugins::templates::counter); @@ -259,29 +259,117 @@ __END__ =head1 MODE -Check APN statistics. +Check Access Point Name statistics. =over 8 -=item B<--warning-*> +=item B<--warning-traffic-in> -Warning threshold. -Can be: 'traffic-in' (bps), 'traffic-out' (bps), 'drop-in' (%), 'drop-out' (%), -'active-pdp', 'attempted-activation-pdp', 'attempted-dyn-activation-pdp', 'attempted-deactivation-pdp', -'attempted-self-deactivation-pdp', 'completed-activation-pdp', 'completed-dyn-activation-pdp', -'completed-deactivation-pdp', 'completed-self-deactivation-pdp'. +Warning threshold for traffic in (bps). -=item B<--critical-*> +=item B<--critical-traffic-in> -Critical threshold. -Can be: 'traffic-in' (bps), 'traffic-out' (bps), 'drop-in' (%), 'drop-out' (%), -'active-pdp', 'attempted-activation-pdp', 'attempted-dyn-activation-pdp', 'attempted-deactivation-pdp', -'attempted-self-deactivation-pdp', 'completed-activation-pdp', 'completed-dyn-activation-pdp', -'completed-deactivation-pdp', 'completed-self-deactivation-pdp'. +Critical threshold for traffic in (bps). + +=item B<--warning-traffic-out> + +Warning threshold for traffic out (bps). + +=item B<--critical-traffic-out> + +Critical threshold for traffic out (bps). + +=item B<--warning-drop-in> + +Warning threshold for drop in packets (%). + +=item B<--critical-drop-in> + +Critical threshold for drop in packets (%). + +=item B<--warning-drop-out> + +Warning threshold for drop out packets (%). + +=item B<--critical-drop-out> + +Critical threshold for drop out packets (%). + +=item B<--warning-active-pdp> + +Warning threshold for active Packet Data Protocol contexts. + +=item B<--critical-active-pdp> + +Critical threshold for active Packet Data Protocol contexts. + +=item B<--warning-attempted-activation-pdp> + +Warning threshold for attempted activation Packet Data Protocol contexts. + +=item B<--critical-attempted-activation-pdp> + +Critical threshold for attempted activation Packet Data Protocol contexts. + +=item B<--warning-attempted-dyn-activation-pdp> + +Warning threshold for attempted dynamic activation Packet Data Protocol contexts. + +=item B<--critical-attempted-dyn-activation-pdp> + +Critical threshold for attempted dynamic activation Packet Data Protocol contexts. + +=item B<--warning-attempted-deactivation-pdp> + +Warning threshold for attempted deactivation Packet Data Protocol contexts. + +=item B<--critical-attempted-deactivation-pdp> + +Critical threshold for attempted deactivation Packet Data Protocol contexts. + +=item B<--warning-attempted-self-deactivation-pdp> + +Warning threshold for attempted self-deactivation Packet Data Protocol contexts. + +=item B<--critical-attempted-self-deactivation-pdp> + +Critical threshold for attempted self-deactivation Packet Data Protocol contexts. + +=item B<--warning-completed-activation-pdp> + +Warning threshold for completed activation Packet Data Protocol contexts. + +=item B<--critical-completed-activation-pdp> + +Critical threshold for completed activation Packet Data Protocol contexts. + +=item B<--warning-completed-dyn-activation-pdp> + +Warning threshold for completed dynamic activation Packet Data Protocol contexts. + +=item B<--critical-completed-dyn-activation-pdp> + +Critical threshold for completed dynamic activation Packet Data Protocol contexts. + +=item B<--warning-completed-deactivation-pdp> + +Warning threshold for completed deactivation Packet Data Protocol contexts. + +=item B<--critical-completed-deactivation-pdp> + +Critical threshold for completed deactivation Packet Data Protocol contexts. + +=item B<--warning-completed-self-deactivation-pdp> + +Warning threshold for completed self-deactivation Packet Data Protocol contexts. + +=item B<--critical-completed-self-deactivation-pdp> + +Critical threshold for completed self-deactivation Packet Data Protocol contexts. =item B<--filter-name> -Filter APN name (can be a regexp). +Filter Access Point Name name (can be a regexp). =back diff --git a/src/network/juniper/ggsn/mode/globalstats.pm b/src/network/juniper/ggsn/snmp/mode/globalstats.pm similarity index 79% rename from src/network/juniper/ggsn/mode/globalstats.pm rename to src/network/juniper/ggsn/snmp/mode/globalstats.pm index 785f27129..b108ffbb6 100644 --- a/src/network/juniper/ggsn/mode/globalstats.pm +++ b/src/network/juniper/ggsn/snmp/mode/globalstats.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::ggsn::mode::globalstats; +package network::juniper::ggsn::snmp::mode::globalstats; use base qw(centreon::plugins::templates::counter); @@ -247,21 +247,109 @@ Check global statistics. =over 8 -=item B<--warning-*> +=item B<--warning-traffic-in> -Warning threshold. -Can be: 'traffic-in' (bps), 'traffic-out' (bps), 'drop-in' (%), 'drop-out' (%), -'active-pdp', 'attempted-activation-pdp', 'attempted-update-pdp', 'attempted-deactivation-pdp', -'attempted-self-deactivation-pdp', 'completed-activation-pdp', 'completed-update-pdp', -'completed-deactivation-pdp', 'completed-self-deactivation-pdp'. +Warning threshold for traffic in (in bps). -=item B<--critical-*> +=item B<--critical-traffic-in> -Critical threshold. -Can be: 'traffic-in' (bps), 'traffic-out' (bps), 'drop-in' (%), 'drop-out' (%), -'active-pdp', 'attempted-activation-pdp', 'attempted-update-pdp', 'attempted-deactivation-pdp', -'attempted-self-deactivation-pdp', 'completed-activation-pdp', 'completed-update-pdp', -'completed-deactivation-pdp', 'completed-self-deactivation-pdp'. +Critical threshold for traffic in (in bps). + +=item B<--warning-traffic-out> + +Warning threshold for traffic out (in bps). + +=item B<--critical-traffic-out> + +Critical threshold for traffic out (in bps). + +=item B<--warning-drop-in> + +Warning threshold for drop in packets (in %). + +=item B<--critical-drop-in> + +Critical threshold for drop in packets (in %). + +=item B<--warning-drop-out> + +Warning threshold for drop out packets (in %). + +=item B<--critical-drop-out> + +Critical threshold for drop out packets (in %). + +=item B<--warning-active-pdp> + +Warning threshold for active Packet Data Protocol contexts. + +=item B<--critical-active-pdp> + +Critical threshold for active Packet Data Protocol contexts. + +=item B--warning-attempted-activation-pdp> + +Warning threshold for attempted activation of Packet Data Protocol contexts. + +=item B<--critical-attempted-activation-pdp> + +Critical threshold for attempted activation of Packet Data Protocol contexts. + +=item B<--warning-attempted-update-pdp> + +Warning threshold for attempted update of Packet Data Protocol contexts. + +=item B<--critical-attempted-update-pdp> + +Critical threshold for attempted update of Packet Data Protocol contexts. + +=item B<--warning-attempted-deactivation-pdp> + +Warning threshold for attempted deactivation of Packet Data Protocol contexts. + +=item B<--critical-attempted-deactivation-pdp> + +Critical threshold for attempted deactivation of Packet Data Protocol contexts. + +=item B<--warning-attempted-self-deactivation-pdp> + +Warning threshold for attempted self-deactivation of Packet Data Protocol contexts. + +=item B<--critical-attempted-self-deactivation-pdp> + +Critical threshold for attempted self-deactivation of Packet Data Protocol contexts. + +=item B<--warning-completed-activation-pdp> + +Warning threshold for completed activation of Packet Data Protocol contexts. + +=item B<--critical-completed-activation-pdp> + +Critical threshold for completed activation of Packet Data Protocol contexts. + +=item B<--warning-completed-update-pdp> + +Warning threshold for completed update of Packet Data Protocol contexts. + +=item B<--critical-completed-update-pdp> + +Critical threshold for completed update of Packet Data Protocol contexts. + +=item B<--warning-completed-deactivation-pdp> + +Warning threshold for completed deactivation of Packet Data Protocol contexts. + +=item B<--critical-completed-deactivation-pdp> + +Critical threshold for completed deactivation of Packet Data Protocol contexts. + +=item B<--warning-completed-self-deactivation-pdp> + +Warning threshold for completed self-deactivation of Packet Data Protocol contexts. + +=item B<--critical-completed-self-deactivation-pdp> + +Critical threshold for completed self-deactivation of Packet Data Protocol contexts. =back diff --git a/src/network/juniper/ggsn/plugin.pm b/src/network/juniper/ggsn/snmp/plugin.pm similarity index 87% rename from src/network/juniper/ggsn/plugin.pm rename to src/network/juniper/ggsn/snmp/plugin.pm index 0d248fa2a..c5aefe6fc 100644 --- a/src/network/juniper/ggsn/plugin.pm +++ b/src/network/juniper/ggsn/snmp/plugin.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::ggsn::plugin; +package network::juniper::ggsn::snmp::plugin; use strict; use warnings; @@ -29,11 +29,10 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; - %{$self->{modes}} = ( + $self->{modes} = { 'apn-stats' => 'network::juniper::ggsn::mode::apnstats', - 'global-stats' => 'network::juniper::ggsn::mode::globalstats', - ); + 'global-stats' => 'network::juniper::ggsn::mode::globalstats' + }; return $self; } @@ -44,6 +43,6 @@ __END__ =head1 PLUGIN DESCRIPTION -Check Juniper GGSN Module in SNMP. +Check Juniper Gateway General Packet Radio Service Support Node Module in SNMP. =cut diff --git a/src/network/juniper/isg/snmp/plugin.pm b/src/network/juniper/isg/snmp/plugin.pm index a3db3efb8..2a4b8dfa9 100644 --- a/src/network/juniper/isg/snmp/plugin.pm +++ b/src/network/juniper/isg/snmp/plugin.pm @@ -29,15 +29,14 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; - %{$self->{modes}} = ( + $self->{modes} = { 'cpu' => 'network::juniper::common::screenos::snmp::mode::cpu', 'hardware' => 'network::juniper::common::screenos::snmp::mode::hardware', 'interfaces' => 'snmp_standard::mode::interfaces', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', 'memory' => 'network::juniper::common::screenos::snmp::mode::memory', - 'sessions' => 'network::juniper::common::screenos::snmp::mode::sessions', - ); + 'sessions' => 'network::juniper::common::screenos::snmp::mode::sessions' + }; return $self; } @@ -48,6 +47,6 @@ __END__ =head1 PLUGIN DESCRIPTION -Check Juniper ISG series in SNMP. +Check Juniper Integrated Security Gateways series in SNMP. =cut diff --git a/src/network/juniper/mag/mode/bladetemperature.pm b/src/network/juniper/mag/snmp/mode/bladetemperature.pm similarity index 96% rename from src/network/juniper/mag/mode/bladetemperature.pm rename to src/network/juniper/mag/snmp/mode/bladetemperature.pm index 58d121a18..5d0d611b3 100644 --- a/src/network/juniper/mag/mode/bladetemperature.pm +++ b/src/network/juniper/mag/snmp/mode/bladetemperature.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::mag::mode::bladetemperature; +package network::juniper::mag::snmp::mode::bladetemperature; use base qw(centreon::plugins::mode); @@ -86,11 +86,11 @@ Check temperature of MAG application blade (JUNIPER-IVE-MIB). =item B<--warning> -Warning threshold in degree celsius. +Warning threshold in degree Celsius. =item B<--critical> -Critical threshold in degree celsius. +Critical threshold in degree Celsius. =back diff --git a/src/network/juniper/mag/plugin.pm b/src/network/juniper/mag/snmp/plugin.pm similarity index 82% rename from src/network/juniper/mag/plugin.pm rename to src/network/juniper/mag/snmp/plugin.pm index 9fe2558c1..324dfd18b 100644 --- a/src/network/juniper/mag/plugin.pm +++ b/src/network/juniper/mag/snmp/plugin.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::mag::plugin; +package network::juniper::mag::snmp::plugin; use strict; use warnings; @@ -29,18 +29,17 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; - %{$self->{modes}} = ( - 'blade-temperature' => 'network::juniper::mag::mode::bladetemperature', - 'cpu' => 'network::juniper::common::ive::mode::cpu', - 'disk' => 'network::juniper::common::ive::mode::disk', + $self->{modes} = { + 'blade-temperature' => 'network::juniper::mag::snmp::mode::bladetemperature', + 'cpu' => 'network::juniper::common::ive::snmp::mode::cpu', + 'disk' => 'network::juniper::common::ive::snmp::mode::disk', 'interfaces' => 'snmp_standard::mode::interfaces', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', - 'logfile' => 'network::juniper::common::ive::mode::logfile', - 'users' => 'network::juniper::common::ive::mode::users', + 'logfile' => 'network::juniper::common::ive::snmp::mode::logfile', + 'users' => 'network::juniper::common::ive::snmp::mode::users', 'memory' => 'snmp_standard::mode::memory', - 'swap' => 'snmp_standard::mode::swap', - ); + 'swap' => 'snmp_standard::mode::swap' + }; return $self; } diff --git a/src/network/juniper/mseries/netconf/mode/cache.pm b/src/network/juniper/mseries/netconf/mode/cache.pm new file mode 100644 index 000000000..b85d3a6c4 --- /dev/null +++ b/src/network/juniper/mseries/netconf/mode/cache.pm @@ -0,0 +1,78 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::mseries::netconf::mode::cache; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'commands:s' => { name => 'commands' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (!defined($self->{option_results}->{commands}) || $self->{option_results}->{commands} eq '') { + $self->{option_results}->{commands} = 'bgp,cpu,disk,hardware,interface,interface_optical,ldp,lsp,memory,ospf,rsvp,service_rpm'; + } + + $self->{option_results}->{commands} = [ split(/,/, $self->{option_results}->{commands}) ]; +} + +sub manage_selection { + my ($self, %options) = @_; + + $options{custom}->cache_commands(commands => $self->{option_results}->{commands}); + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'Cache files created successfully' + ); +} + +1; + +__END__ + +=head1 MODE + +Create cache files (other modes could use it with --cache-use option). + +=over 8 + +=item B<--commands> + +For which modes the cache file is done (default: 'bgp,cpu,disk,hardware,ldp,lsp,interface,memory,rsvp'). + +=back + +=cut diff --git a/src/network/juniper/mseries/netconf/plugin.pm b/src/network/juniper/mseries/netconf/plugin.pm new file mode 100644 index 000000000..76055bd91 --- /dev/null +++ b/src/network/juniper/mseries/netconf/plugin.pm @@ -0,0 +1,67 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::juniper::mseries::netconf::plugin; + +use strict; +use warnings; +use base qw(centreon::plugins::script_custom); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{modes} = { + 'bgp' => 'network::juniper::common::junos::netconf::mode::bgp', + 'cache' => 'network::juniper::mseries::netconf::mode::cache', + 'collection' => 'network::juniper::common::junos::netconf::mode::collection', + 'cpu' => 'network::juniper::common::junos::netconf::mode::cpu', + 'disks' => 'network::juniper::common::junos::netconf::mode::disks', + 'hardware' => 'network::juniper::common::junos::netconf::mode::hardware', + 'interfaces' => 'network::juniper::common::junos::netconf::mode::interfaces', + 'ldp' => 'network::juniper::common::junos::netconf::mode::ldp', + 'lsp' => 'network::juniper::common::junos::netconf::mode::lsp', + 'list-bgp' => 'network::juniper::common::junos::netconf::mode::listbgp', + 'list-disks' => 'network::juniper::common::junos::netconf::mode::listdisks', + 'list-interfaces' => 'network::juniper::common::junos::netconf::mode::listinterfaces', + 'list-ldp' => 'network::juniper::common::junos::netconf::mode::listldp', + 'list-lsp' => 'network::juniper::common::junos::netconf::mode::listlsp', + 'list-rsvp' => 'network::juniper::common::junos::netconf::mode::listrsvp', + 'list-services-rpm' => 'network::juniper::common::junos::netconf::mode::listservicesrpm', + 'memory' => 'network::juniper::common::junos::netconf::mode::memory', + 'ospf' => 'network::juniper::common::junos::netconf::mode::ospf', + 'rsvp' => 'network::juniper::common::junos::netconf::mode::rsvp', + 'services-rpm' => 'network::juniper::common::junos::netconf::mode::servicesrpm' + }; + + $self->{custom_modes}->{netconf} = 'network::juniper::common::junos::netconf::custom::netconf'; + return $self; +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check Juniper MX Series with API (Netconf over ssh,...). + +=cut diff --git a/src/network/juniper/mseries/plugin.pm b/src/network/juniper/mseries/snmp/plugin.pm similarity index 82% rename from src/network/juniper/mseries/plugin.pm rename to src/network/juniper/mseries/snmp/plugin.pm index 76707a4bb..fb92ad1bd 100644 --- a/src/network/juniper/mseries/plugin.pm +++ b/src/network/juniper/mseries/snmp/plugin.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::mseries::plugin; +package network::juniper::mseries::snmp::plugin; use strict; use warnings; @@ -29,21 +29,20 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; $self->{modes} = { - 'bgp-peer-state' => 'network::juniper::common::junos::mode::bgppeerstate', - 'bgp-peer-prefix-statistics' => 'network::juniper::common::junos::mode::bgppeerprefixstatistics', - 'cos' => 'network::juniper::common::junos::mode::cos', - 'cpu' => 'network::juniper::common::junos::mode::cpu', - 'hardware' => 'network::juniper::common::junos::mode::hardware', - 'interfaces' => 'network::juniper::common::junos::mode::interfaces', - 'ldp-session-status' => 'network::juniper::common::junos::mode::ldpsessionstatus', - 'lsp-status' => 'network::juniper::common::junos::mode::lspstatus', - 'list-bgp-peers' => 'network::juniper::common::junos::mode::listbgppeers', + 'bgp-peer-state' => 'network::juniper::common::junos::snmp::mode::bgppeerstate', + 'bgp-peer-prefix-statistics' => 'network::juniper::common::junos::snmp::mode::bgppeerprefixstatistics', + 'cos' => 'network::juniper::common::junos::snmp::mode::cos', + 'cpu' => 'network::juniper::common::junos::snmp::mode::cpu', + 'hardware' => 'network::juniper::common::junos::snmp::mode::hardware', + 'interfaces' => 'network::juniper::common::junos::snmp::mode::interfaces', + 'ldp-session-status' => 'network::juniper::common::junos::snmp::mode::ldpsessionstatus', + 'lsp-status' => 'network::juniper::common::junos::snmp::mode::lspstatus', + 'list-bgp-peers' => 'network::juniper::common::junos::snmp::mode::listbgppeers', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', 'list-storages' => 'snmp_standard::mode::liststorages', - 'memory' => 'network::juniper::common::junos::mode::memory', - 'rsvp-session-status' => 'network::juniper::common::junos::mode::rsvpsessionstatus', + 'memory' => 'network::juniper::common::junos::snmp::mode::memory', + 'rsvp-session-status' => 'network::juniper::common::junos::snmp::mode::rsvpsessionstatus', 'storage' => 'snmp_standard::mode::storage' }; diff --git a/src/network/juniper/sa/plugin.pm b/src/network/juniper/sa/snmp/plugin.pm similarity index 92% rename from src/network/juniper/sa/plugin.pm rename to src/network/juniper/sa/snmp/plugin.pm index 2d83780b6..b377134ad 100644 --- a/src/network/juniper/sa/plugin.pm +++ b/src/network/juniper/sa/snmp/plugin.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::sa::plugin; +package network::juniper::sa::snmp::plugin; use strict; use warnings; @@ -31,11 +31,11 @@ sub new { $self->{version} = '1.0'; %{$self->{modes}} = ( - 'cpu' => 'network::juniper::common::ive::mode::cpu', + 'cpu' => 'network::juniper::common::ive::snmp::mode::cpu', 'cpu-detailed' => 'snmp_standard::mode::cpudetailed', - 'disk' => 'network::juniper::common::ive::mode::disk', - 'logfile' => 'network::juniper::common::ive::mode::logfile', - 'users' => 'network::juniper::common::ive::mode::users', + 'disk' => 'network::juniper::common::ive::snmp::mode::disk', + 'logfile' => 'network::juniper::common::ive::snmp::mode::logfile', + 'users' => 'network::juniper::common::ive::snmp::mode::users', 'interfaces' => 'snmp_standard::mode::interfaces', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', 'memory' => 'snmp_standard::mode::memory', diff --git a/src/network/juniper/srx/plugin.pm b/src/network/juniper/srx/snmp/plugin.pm similarity index 79% rename from src/network/juniper/srx/plugin.pm rename to src/network/juniper/srx/snmp/plugin.pm index 84f717786..530ab6eea 100644 --- a/src/network/juniper/srx/plugin.pm +++ b/src/network/juniper/srx/snmp/plugin.pm @@ -18,7 +18,7 @@ # limitations under the License. # -package network::juniper::srx::plugin; +package network::juniper::srx::snmp::plugin; use strict; use warnings; @@ -29,21 +29,20 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; - %{$self->{modes}} = ( - 'hardware' => 'network::juniper::common::junos::mode::hardware', - 'cpu' => 'network::juniper::common::junos::mode::cpu', - 'cpu-forwarding' => 'network::juniper::common::junos::mode::cpuforwarding', # packet forwarding engine - 'memory' => 'network::juniper::common::junos::mode::memory', - 'memory-forwarding' => 'network::juniper::common::junos::mode::memoryforwarding', # packet forwarding engine - 'cp-sessions' => 'network::juniper::common::junos::mode::cpsessions', # CP = 'central point' - 'flow-sessions' => 'network::juniper::common::junos::mode::flowsessions', - 'interfaces' => 'network::juniper::common::junos::mode::interfaces', - 'ipsec-tunnel' => 'network::juniper::common::junos::mode::ipsectunnel', + $self->{modes} = { + 'hardware' => 'network::juniper::common::junos::snmp::mode::hardware', + 'cpu' => 'network::juniper::common::junos::snmp::mode::cpu', + 'cpu-forwarding' => 'network::juniper::common::junos::snmp::mode::cpuforwarding', # packet forwarding engine + 'memory' => 'network::juniper::common::junos::snmp::mode::memory', + 'memory-forwarding' => 'network::juniper::common::junos::snmp::mode::memoryforwarding', # packet forwarding engine + 'cp-sessions' => 'network::juniper::common::junos::mode::snmp::cpsessions', # CP = 'central point' + 'flow-sessions' => 'network::juniper::common::junos::mode::snmp::flowsessions', + 'interfaces' => 'network::juniper::common::junos::mode::snmp::interfaces', + 'ipsec-tunnel' => 'network::juniper::common::junos::mode::snmp::ipsectunnel', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', 'list-storages' => 'snmp_standard::mode::liststorages', - 'storage' => 'snmp_standard::mode::storage', - ); + 'storage' => 'snmp_standard::mode::storage' + }; return $self; } diff --git a/src/network/juniper/ssg/snmp/plugin.pm b/src/network/juniper/ssg/snmp/plugin.pm index 776521188..32aa0fbcf 100644 --- a/src/network/juniper/ssg/snmp/plugin.pm +++ b/src/network/juniper/ssg/snmp/plugin.pm @@ -29,8 +29,7 @@ sub new { my $self = $class->SUPER::new(package => __PACKAGE__, %options); bless $self, $class; - $self->{version} = '1.0'; - %{$self->{modes}} = ( + $self->{modes} = { 'cpu' => 'network::juniper::common::screenos::snmp::mode::cpu', 'hardware' => 'network::juniper::common::screenos::snmp::mode::hardware', 'interfaces' => 'snmp_standard::mode::interfaces', @@ -40,8 +39,8 @@ sub new { 'nsrp' => 'network::juniper::common::screenos::snmp::mode::nsrp', 'sessions' => 'network::juniper::common::screenos::snmp::mode::sessions', 'vpn-status' => 'network::juniper::common::screenos::snmp::mode::vpnstatus', - 'vpn-usage' => 'network::juniper::common::screenos::snmp::mode::vpnusage', - ); + 'vpn-usage' => 'network::juniper::common::screenos::snmp::mode::vpnusage' + }; return $self; } diff --git a/tests/network/juniper/mseries/netconf/bgp.robot b/tests/network/juniper/mseries/netconf/bgp.robot new file mode 100644 index 000000000..f3c1260ab --- /dev/null +++ b/tests/network/juniper/mseries/netconf/bgp.robot @@ -0,0 +1,35 @@ +*** Settings *** +Documentation Juniper Mseries Netconf BGP + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=bgp + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + ... --sshcli-option="-f=${CURDIR}${/}data${/}bgp.netconf" + +*** Test Cases *** +Bgp ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 --filter-snmp-index=1 + ... OK: BGP peer [local address '10.0.0.1:56674', AS '29283'][peer address '10.0.0.2:179', AS '29283'] state: Established - traffic bgp-peer-traffic-in : Buffer creation, bgp-peer-traffic-out : Buffer creation - All BGP ribs are ok | 'bgp.peers.detected.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~ACX7024-VRF.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~ACX7024-VRF.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~AELIA-VPNIP-100268-VPN121.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~AELIA-VPNIP-100268-VPN121.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~AF-VPNIP-000723AA-VPN380.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~AF-VPNIP-000723AA-VPN380.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~AF-VPNIP-000723AA-VPN381.inet.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~AF-VPNIP-000723AA-VPN381.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~ANSIBLE-UPDATE.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~ANSIBLE-UPDATE.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~DIOR-LANISS-104088.l2vpn.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~DSNA-LANISS-129097-VPN22102.l2vpn.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~EID-TEST.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~EID-TEST.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~INFRA-MGNT-VPN101.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~INFRA-MGNT-VPN101.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~INTERNET.inet.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~INTERNET.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~ISP.inet.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~ISP.inet6.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~ISP1-IXIA.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~ISP1-IXIA.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~JCLOET.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~JCLOET.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~L3VPN-IXIA.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~L3VPN-IXIA.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~LANISSIMO_IXIA.l2vpn.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~LUCIE-POTIER.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~LUCIE-POTIER.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~MULTICAST-IXIA.l2vpn.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~NATIXIS-VPLS.l2vpn.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~NATIXIS-VPNIP-125980-VPN356.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~NATIXIS-VPNIP-125980-VPN356.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~NATIXIS-VPNIP.inet.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~NATIXIS-VPNIP.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~OPERATEUR-EXTNNI-123456-PW20123.l2vpn.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~PROD-TEST-1003.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~PROD-TEST-1003.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~TEST-BUR-VPNIP-034495AC.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~TEST-BUR-VPNIP-034495AC.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~TEST-REF-RESEAU.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~TEST-REF-RESEAU.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~THE-DHCP-SERVER.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~THE-DHCP-SERVER.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~TIP-ISP.inet.0#bgp.peer.rib.prefixes.active.count'=10;;;0; '10.0.0.1:56674~10.0.0.2:179~TIP-ISP.inet6.0#bgp.peer.rib.prefixes.active.count'=7;;;0; '10.0.0.1:56674~10.0.0.2:179~VALID-VPN-1234.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~VALID-VPN-1234.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~VPNIP-SOC-VPN1010.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~VPNIP-SOC-VPN1010.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~VPNL3-CLIENT1.inet.0#bgp.peer.rib.prefixes.active.count'=1;;;0; '10.0.0.1:56674~10.0.0.2:179~VPNL3-CLIENT1.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~VPNL3-CLIENT2.inet.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~VPNL3-CLIENT2.inet6.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:56674~10.0.0.2:179~bgp.l2vpn.0#bgp.peer.rib.prefixes.active.count'=6;;;0; '10.0.0.1:56674~10.0.0.2:179~bgp.l3vpn-inet6.0#bgp.peer.rib.prefixes.active.count'=9;;;0; '10.0.0.1:56674~10.0.0.2:179~bgp.l3vpn.0#bgp.peer.rib.prefixes.active.count'=46;;;0; '10.0.0.1:56674~10.0.0.2:179~xVALIDATION-LANISS-1234-VPN20998.l2vpn.0#bgp.peer.rib.prefixes.active.count'=0;;;0; + ... 2 --filter-local-address=172.16.202.13 + ... CRITICAL: BGP peer [local address '172.16.202.13', AS '29283'][peer address '172.16.202.14', AS '64610'] state: Idle | 'bgp.peers.detected.count'=1;;;0; + ... 3 --filter-peer-address=172.16.203.245 + ... CRITICAL: BGP peer [local address 'unspecified', AS '29283'][peer address '172.16.203.245', AS '64614'] state: Idle | 'bgp.peers.detected.count'=1;;;0; + ... 4 --filter-rib-name=bgp.l3vpn.0 + ... CRITICAL: BGP peer [local address 'unspecified', AS '1273'][peer address '2001:5000:1234::2', AS '29283'] state: Idle | 'bgp.peers.detected.count'=23;;;0; '10.0.0.1:56674~10.0.0.2:179~bgp.l3vpn.0#bgp.peer.rib.prefixes.active.count'=46;;;0; '10.0.0.1:179~10.0.0.4:58321~bgp.l3vpn.0#bgp.peer.rib.prefixes.active.count'=20;;;0; '10.0.0.1:60110~10.0.0.6:179~bgp.l3vpn.0#bgp.peer.rib.prefixes.active.count'=0;;;0; '10.0.0.1:58984~10.0.0.7:179~bgp.l3vpn.0#bgp.peer.rib.prefixes.active.count'=0;;;0; diff --git a/tests/network/juniper/mseries/netconf/cpu.robot b/tests/network/juniper/mseries/netconf/cpu.robot new file mode 100644 index 000000000..9e85b4b77 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/cpu.robot @@ -0,0 +1,57 @@ +*** Settings *** +Documentation Juniper Mseries Netconf CPU + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=cpu + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + ... --sshcli-option="-f=${CURDIR}${/}data${/}cpu.netconf" + +*** Test Cases *** +Cpu ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 2 --filter-name='5' + ... OK: CPU 'fpc slot 5' average usage: 2.00 % (1m), 2.00 % (5m), 2.00 % (15m) | 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 + ... 3 --filter-name='[0-2]' + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 4 --warning-average-1m=6 + ... WARNING: CPU 'fpc slot 0' average usage: 15.00 % (1m) - CPU 'fpc slot 2' average usage: 7.00 % (1m) | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;0:6;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;0:6;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;0:6;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;0:6;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 5 --warning-average-1m=16 + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;0:16;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;0:16;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;0:16;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;0:16;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 6 --critical-average-1m=6 + ... CRITICAL: CPU 'fpc slot 0' average usage: 15.00 % (1m) - CPU 'fpc slot 2' average usage: 7.00 % (1m) | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;0:6;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;0:6;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;0:6;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;0:6;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 7 --critical-average-1m=16 + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;0:16;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;0:16;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;0:16;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;0:16;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 8 --warning-average-5m=6 + ... WARNING: CPU 'fpc slot 0' average usage: 15.00 % (5m) - CPU 'fpc slot 2' average usage: 7.00 % (5m) | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;0:6;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;0:6;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;0:6;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;0:6;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 9 --warning-average-5m=16 + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;0:16;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;0:16;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;0:16;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;0:16;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 10 --critical-average-5m=6 + ... CRITICAL: CPU 'fpc slot 0' average usage: 15.00 % (5m) - CPU 'fpc slot 2' average usage: 7.00 % (5m) | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;0:6;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;0:6;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;0:6;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;0:6;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 11 --critical-average-5m=16 + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;0:16;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;0:16;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;0:16;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;0:16;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;;0;100 + ... 12 --warning-average-15m=6 + ... WARNING: CPU 'fpc slot 0' average usage: 15.00 % (15m) - CPU 'fpc slot 2' average usage: 7.00 % (15m) | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;0:6;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;0:6;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;0:6;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;0:6;;0;100 + ... 13 --warning-average-15m=16 + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;0:16;;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;0:16;;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;0:16;;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;0:16;;0;100 + ... 14 --critical-average-15m=6 + ... CRITICAL: CPU 'fpc slot 0' average usage: 15.00 % (15m) - CPU 'fpc slot 2' average usage: 7.00 % (15m) | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;0:6;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;0:6;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;0:6;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;0:6;0;100 + ... 15 --critical-average-15m=16 + ... OK: All CPU usages are ok | 'fpc slot 0#cpu.utilization.1m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.5m.percentage'=15.00%;;;0;100 'fpc slot 0#cpu.utilization.15m.percentage'=15.00%;;0:16;0;100 'fpc slot 2#cpu.utilization.1m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.5m.percentage'=7.00%;;;0;100 'fpc slot 2#cpu.utilization.15m.percentage'=7.00%;;0:16;0;100 'fpc slot 5#cpu.utilization.1m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.5m.percentage'=2.00%;;;0;100 'fpc slot 5#cpu.utilization.15m.percentage'=2.00%;;0:16;0;100 'route engine slot 0#cpu.utilization.1m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.5m.percentage'=4.00%;;;0;100 'route engine slot 0#cpu.utilization.15m.percentage'=4.00%;;0:16;0;100 diff --git a/tests/network/juniper/mseries/netconf/data/bgp.netconf b/tests/network/juniper/mseries/netconf/data/bgp.netconf new file mode 100644 index 000000000..746ee0fe4 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/bgp.netconf @@ -0,0 +1,3458 @@ + + + 10.0.0.2+179 + 29283 + 10.0.0.1+56674 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Established + Sync + + OpenConfirm + RecvKeepAlive + None + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 0 + 10.0.0.2 + 10.0.0.1 + 36 + 12 + 1 + 2 + 1 + + bgpio-0 + Enabled + + + disabled + down + + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast + inet-vpn-unicast l2vpn inet6-vpn-unicast + 2 + 300 + + Notification + inet-vpn-unicast l2vpn inet6-vpn-unicast + inet-vpn-unicast l2vpn inet6-vpn-unicast + inet-vpn-unicast l2vpn inet6-vpn-unicast + + + 29283 + + inet-vpn-unicast l2vpn inet6-vpn-unicast + + bgp.l3vpn.0 + 20000 + BGP restart is complete + VPN restart is complete + in sync + 46 + 46 + 46 + 0 + 52 + + + bgp.l3vpn-inet6.0 + 30000 + BGP restart is complete + VPN restart is complete + in sync + 9 + 9 + 9 + 0 + 4 + + + bgp.l2vpn.0 + 40000 + BGP restart is complete + VPN restart is complete + in sync + 6 + 6 + 6 + 0 + 26 + + + AELIA-VPNIP-100268-VPN121.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 3 + 3 + 0 + + + TIP-ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 10 + 17 + 17 + 0 + + + TIP-ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 7 + 9 + 9 + 0 + + + ISP1-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 1 + 1 + 0 + + + ACX7024-VRF.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + AF-VPNIP-000723AA-VPN380.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + ANSIBLE-UPDATE.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + EID-TEST.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + INTERNET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + INFRA-MGNT-VPN101.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + NATIXIS-VPNIP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 3 + 3 + 0 + + + PROD-TEST-1003.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + TEST-REF-RESEAU.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + VPNL3-CLIENT1.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + VPNL3-CLIENT2.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AELIA-VPNIP-100268-VPN121.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INTERNET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + INFRA-MGNT-VPN101.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + PROD-TEST-1003.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-REF-RESEAU.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT1.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DIOR-LANISS-104088.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DSNA-LANISS-129097-VPN22102.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LANISSIMO_IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + MULTICAST-IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + NATIXIS-VPLS.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + xVALIDATION-LANISS-1234-VPN20998.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + OPERATEUR-EXTNNI-123456-PW20123.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + 2 + 8 + 3562871 + 330004 + 83 + 0 + 6275636 + 326794 + 293 + 0 + 6227858 + + 1 + 0 + bgp.l3vpn.0 + inet-vpn-unicast + + + 2 + 0 + bgp.l3vpn-inet6.0 + inet6-vpn-unicast + + + 3 + 0 + bgp.l2vpn.0 + l2vpn + + + + 10.0.0.3+179 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group between RR + IBGP-RR-TO-RR + master + master + Internal + Connect + + + Active + ConnectRetry + None + + LocalAddress HoldTime LogUpDown AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.0.0.4+58321 + 29283 + 10.0.0.1+179 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Established + Sync + + OpenConfirm + RecvKeepAlive + None + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 0 + 10.0.0.4 + 10.0.0.1 + 36 + 12 + 1 + 0 + 2 + + bgpio-0 + Enabled + + + disabled + down + + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast + inet-vpn-unicast l2vpn inet6-vpn-unicast + 2 + 300 + + Notification + inet-vpn-unicast l2vpn inet6-vpn-unicast + inet-vpn-unicast l2vpn inet6-vpn-unicast + inet-vpn-unicast l2vpn inet6-vpn-unicast + + + 29283 + + inet-vpn-unicast l2vpn inet6-vpn-unicast + + bgp.l3vpn.0 + 20000 + BGP restart is complete + VPN restart is complete + in sync + 20 + 20 + 20 + 0 + 78 + + + bgp.l3vpn-inet6.0 + 30000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 13 + + + bgp.l2vpn.0 + 40000 + BGP restart is complete + VPN restart is complete + in sync + 14 + 14 + 14 + 0 + 18 + + + AELIA-VPNIP-100268-VPN121.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TIP-ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TIP-ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + INTERNET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INFRA-MGNT-VPN101.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + NATIXIS-VPNIP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 3 + 3 + 0 + + + PROD-TEST-1003.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + TEST-REF-RESEAU.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 2 + 2 + 0 + + + VPNL3-CLIENT1.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AELIA-VPNIP-100268-VPN121.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INTERNET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INFRA-MGNT-VPN101.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + PROD-TEST-1003.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-REF-RESEAU.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT1.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DIOR-LANISS-104088.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DSNA-LANISS-129097-VPN22102.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LANISSIMO_IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + MULTICAST-IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPLS.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + xVALIDATION-LANISS-1234-VPN20998.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 1 + 1 + 1 + 0 + + + OPERATEUR-EXTNNI-123456-PW20123.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 2 + 2 + 2 + 0 + + 4 + 5 + 3562989 + 329909 + 31 + 0 + 6270457 + 326854 + 342 + 0 + 6232917 + + 1 + 0 + bgp.l3vpn.0 + inet-vpn-unicast + + + 2 + 0 + bgp.l3vpn-inet6.0 + inet6-vpn-unicast + + + 3 + 0 + bgp.l2vpn.0 + l2vpn + + + + 10.0.0.5+179 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Connect + + + Active + ConnectRetry + None + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.0.0.6+179 + 29283 + 10.0.0.1+60110 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Established + Sync + + OpenConfirm + Refresh + Hold Timer Expired Error + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 3 + HoldTime + + Hold Timer Expired Error + 3 + 0 + + 10.0.0.6 + 10.0.0.1 + 36 + 12 + 1 + 3 + 6 + + bgpio-0 + Enabled + + + disabled + down + + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + 2 + 300 + + Notification + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + + + 29283 + + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + + bgp.l3vpn.0 + 20000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 98 + + + bgp.l3vpn-inet6.0 + 30000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 13 + + + bgp.l2vpn.0 + 40000 + BGP restart is complete + VPN restart is complete + in sync + 3 + 3 + 3 + 0 + 29 + + + bgp.evpn.0 + 50000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 3 + + + AELIA-VPNIP-100268-VPN121.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TIP-ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TIP-ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INTERNET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INFRA-MGNT-VPN101.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + PROD-TEST-1003.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-REF-RESEAU.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT1.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AELIA-VPNIP-100268-VPN121.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + not advertising + + AF-VPNIP-000723AA-VPN381.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INTERNET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INFRA-MGNT-VPN101.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + PROD-TEST-1003.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-REF-RESEAU.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT1.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DIOR-LANISS-104088.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DSNA-LANISS-129097-VPN22102.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LANISSIMO_IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + MULTICAST-IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + 0 + 0 + 0 + 0 + 0 + + + NATIXIS-VPLS.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + xVALIDATION-LANISS-1234-VPN20998.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + OPERATEUR-EXTNNI-123456-PW20123.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EVPN-VLAN-BASED.evpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EVPN-VPWS-BNG-1.evpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + __default_evpn__.evpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + 2 + 7 + 2583845 + 239226 + 8 + 1 + 4545618 + 236912 + 136 + 0 + 4512735 + + 1 + 0 + bgp.l3vpn.0 + inet-vpn-unicast + + + 2 + 0 + bgp.l3vpn-inet6.0 + inet6-vpn-unicast + + + 3 + 0 + bgp.l2vpn.0 + l2vpn + + + 4 + 0 + bgp.evpn.0 + evpn + + + + 10.0.0.7+179 + 29283 + 10.0.0.1+58984 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Established + Sync + + OpenConfirm + RecvKeepAlive + Hold Timer Expired Error + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 8 + HoldTime + + Hold Timer Expired Error + 7 + 0 + + + Cease + 0 + 1 + + 10.0.0.7 + 10.0.0.1 + 36 + 12 + 1 + 1 + 7 + + bgpio-0 + Enabled + + + disabled + down + + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + 2 + 300 + + Notification + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + + + 29283 + + inet-vpn-unicast l2vpn inet6-vpn-unicast evpn + + bgp.l3vpn.0 + 20000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 98 + + + bgp.l3vpn-inet6.0 + 30000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 13 + + + bgp.l2vpn.0 + 40000 + BGP restart is complete + VPN restart is complete + in sync + 3 + 3 + 3 + 0 + 29 + + + bgp.evpn.0 + 50000 + BGP restart is complete + VPN restart is complete + in sync + 0 + 0 + 0 + 0 + 3 + + + AELIA-VPNIP-100268-VPN121.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TIP-ISP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TIP-ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INTERNET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INFRA-MGNT-VPN101.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + PROD-TEST-1003.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-REF-RESEAU.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT1.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ACX7024-VRF.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AELIA-VPNIP-100268-VPN121.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN380.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + AF-VPNIP-000723AA-VPN381.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ANSIBLE-UPDATE.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EID-TEST.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-BUR-VPNIP-034495AC.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + 0 + INTERNET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + INFRA-MGNT-VPN101.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + ISP1-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + JCLOET.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + L3VPN-IXIA.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LUCIE-POTIER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPNIP-125980-VPN356.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + PROD-TEST-1003.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + TEST-REF-RESEAU.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + THE-DHCP-SERVER.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VALID-VPN-1234.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNIP-SOC-VPN1010.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT1.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + VPNL3-CLIENT2.inet6.0 + BGP restart is complete + VPN restart is complete + not advertising + IBGP Peer Group for RR Clients (Redback) + 0 + 0 + 0 + + + DIOR-LANISS-104088.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + DSNA-LANISS-129097-VPN22102.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + LANISSIMO_IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + MULTICAST-IXIA.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + NATIXIS-VPLS.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + xVALIDATION-LANISS-1234-VPN20998.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + OPERATEUR-EXTNNI-123456-PW20123.l2vpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EVPN-VLAN-BASED.evpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + EVPN-VPWS-BNG-1.evpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + + __default_evpn__.evpn.0 + BGP restart is complete + VPN restart is complete + not advertising + 0 + 0 + 0 + 0 + + 8 + 1 + 3196542 + 295957 + 9 + 0 + 5623572 + 293058 + 155 + 0 + 5580826 + + 1 + 0 + bgp.l3vpn.0 + inet-vpn-unicast + + + 2 + 0 + bgp.l3vpn-inet6.0 + inet6-vpn-unicast + + + 3 + 0 + bgp.l2vpn.0 + l2vpn + + + 4 + 0 + bgp.evpn.0 + evpn + + + + 10.0.0.13 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Active + + + Idle + Start + None + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.0.0.14 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group for RR Clients + IBGP-RR-TO-CLIENT + master + master + Internal + + Active + + + Idle + Start + None + + LocalAddress HoldTime LogUpDown Cluster AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast inet6-vpn-unicast evpn l2vpn-signaling + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.201.1.1+179 + 29283 + 10.0.0.1 + 29283 + inet-unicast + IBGP-RR-TO-CLIENT-REDBACK + master + master + Internal + + Connect + + + Active + ConnectRetry + None + + LocalAddress HoldTime LogUpDown Cluster NoClientReflect AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.201.2.1+179 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group for RR Clients (Redback) + IBGP-RR-TO-CLIENT-REDBACK + master + master + Internal + + Connect + + + Active + ConnectRetry + None + + LocalAddress HoldTime LogUpDown Cluster NoClientReflect AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.201.3.1 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group for RR Clients (Redback) + IBGP-RR-TO-CLIENT-REDBACK + master + master + Internal + + Active + + + Idle + Start + None + + LocalAddress HoldTime LogUpDown Cluster NoClientReflect AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 10.201.4.1 + 29283 + 10.0.0.1 + 29283 + IBGP Peer Group for RR Clients (Redback) + IBGP-RR-TO-CLIENT-REDBACK + master + master + Internal + + Active + + + Idle + Start + None + + LocalAddress HoldTime LogUpDown Cluster NoClientReflect AddressFamily Rib-group Refresh + VpnApplyExport + GracefulShutdownRcv + + inet-vpn-unicast + 10.0.0.1 + 36 + 170 + 0 + + 0 + + + 172.16.200.24 + 65000 + unspecified + 29283 + AS65000 + ISP + ISP + External + Active + + + Idle + Start + None + + + LOCAL-BGP-PEER + + + LIEN-NOMINAL + + Multihop Ttl LogUpDown AddressFamily PeerAS PrefixLimit Refresh + + GracefulShutdownRcv + + inet-unicast + 90 + 170 + 0 + + inet-unicast + 2000 + Log Only + + + 0 + + + 172.16.200.215 + 65001 + unspecified + 29283 + AS65001 + AELIA-VPNIP-100268-VPN121 + AELIA-VPNIP-100268-VPN121 + External + Active + + + Idle + Start + None + + + AELIA-VPNIP-100268-VPN121-BGP-FROM-PANTIN-IMPORT + + Multihop HoldTime Ttl LogUpDown AddressFamily PeerAS PrefixLimit Refresh + + GracefulShutdownRcv + + inet-unicast + 45 + 170 + 0 + + 2000 + Log Only + + + 0 + + + 172.16.202.14 + 64610 + 172.16.202.13 + 29283 + AS64610 + NATIXIS-VPNIP-125980-VPN356 + NATIXIS-VPNIP-125980-VPN356 + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + + LOCAL-BGP-PEER + + + LIEN-SECOURS + + LocalAddress LogUpDown AddressFamily PeerAS PrefixLimit Refresh + + GracefulShutdownRcv + + inet-unicast + 172.16.202.13 + 90 + 170 + 0 + + inet-unicast + 2000 + Log Only + + + 0 + + + 172.16.203.245 + 64614 + unspecified + 29283 + AS64614 + TEST-BUR-VPNIP-034495AC + TEST-BUR-VPNIP-034495AC + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + + LIEN-NOMINAL + + HoldTime LogUpDown AddressFamily PeerAS PrefixLimit Refresh + + GracefulShutdownRcv + + inet-unicast + 15 + 170 + 0 + + inet-unicast + 2000 + Log Only + + 1 + + 0 + + + 192.168.255.254 + 99999 + 192.168.255.253 + 29283 + EBGP Peer Group with ISP1 + EBGP-RR-TO-ISP1 + ISP1-IXIA + ISP1-IXIA + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + LocalAddress AddressFamily PeerAS LocalAS Refresh + + GracefulShutdownRcv + + inet-unicast + 192.168.255.253 + 90 + 170 + 0 + 29283 + 29283 + + 0 + + + 195.2.22.173 + 1273 + unspecified + 29283 + VODAFONE-EBGP-IPV4 + TIP-ISP + TIP-ISP + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + + TO-INTERNET-ISP + + + ROUTE-VALIDATION FROM-INTERNET-ISP + + AuthKey RemovePrivateAS AddressFamily PeerAS Multipath Refresh + MultipathAs + GracefulShutdownRcv + + + inet-unicast + 90 + 170 + 0 + + 0 + + + 195.2.22.174 + 29283 + unspecified + 1273 + EBGP-IPV4 + VODAFONE + VODAFONE + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + + VODAFONE-TO-TEST + + AuthKey RemovePrivateAS AddressFamily PeerAS Multipath Refresh + MultipathAs + GracefulShutdownRcv + + + inet-unicast + 90 + 170 + 0 + + 0 + + + 198.18.0.18 + 65533 + 213.174.107.246 + 65001 + 65001 + VALID-VPN-1234 + VALID-VPN-1234 + External + Active + + + Idle + Start + None + + Multihop LocalAddress HoldTime Ttl LogUpDown AddressFamily PeerAS PrefixLimit LocalAS Refresh + + GracefulShutdownRcv + + inet-unicast + 213.174.107.246 + 45 + 170 + 0 + + inet-unicast + 100 + Log Only + + 65001 + 29283 + + 0 + + + 198.18.0.19 + 65533 + 213.174.107.246 + 65001 + 65001 + VALID-VPN-1234 + VALID-VPN-1234 + External + Active + + + Idle + Start + None + + Multihop LocalAddress HoldTime Ttl LogUpDown AddressFamily PeerAS PrefixLimit LocalAS Refresh + + GracefulShutdownRcv + + inet-unicast + 213.174.107.246 + 45 + 170 + 0 + + inet-unicast + 100 + Log Only + + 65001 + 29283 + + 0 + + + 2001:5000:1234::1 + 1273 + unspecified + 29283 + VODAFONE-EBGP-IPV6 + TIP-ISP + TIP-ISP + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + + TO-INTERNET-ISP + + + FROM-INTERNET-ISP + + AuthKey RemovePrivateAS AddressFamily PeerAS Multipath Refresh + MultipathAs + GracefulShutdownRcv + + + inet6-unicast + 90 + 170 + 0 + + 0 + + + 2001:5000:1234::2 + 29283 + unspecified + 1273 + EBGP-IPV6 + VODAFONE + VODAFONE + External + Idle + PeerInterfaceUnknown + + NoState + NoEvent + None + + + VODAFONE-TO-TEST + + AuthKey RemovePrivateAS AddressFamily PeerAS Multipath Refresh + MultipathAs + GracefulShutdownRcv + + + inet6-unicast + 90 + 170 + 0 + + 0 + + + + diff --git a/tests/network/juniper/mseries/netconf/data/cpu.netconf b/tests/network/juniper/mseries/netconf/data/cpu.netconf new file mode 100644 index 000000000..403110233 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/cpu.netconf @@ -0,0 +1,96 @@ + + + 0 + master + master (default) + OK + 29 degrees C / 84 degrees F + 48 degrees C / 118 degrees F + 49100 MB + (49152 MB installed) + 5 + 3 + 0 + 3 + 0 + 94 + 2 + 0 + 2 + 0 + 96 + 2 + 0 + 2 + 0 + 96 + 2 + 0 + 2 + 0 + 96 + RE-S-2X00x6 + EAAF6591 + 2024-04-25 09:06:32 CEST + 40 days, 4 hours, 58 minutes, 16 seconds + 0x2000:hypervisor reboot + 0.49 + 0.36 + 0.33 + + + + + 0 + Online + 44 + 16 + 0 + 15 + 15 + 15 + 3584 + 9 + 25 + + + 1 + Empty + + + 2 + Online + 25 + 7 + 0 + 7 + 7 + 7 + 23584 + 12 + 4 + + + 3 + Empty + + + 4 + Empty + + + 5 + Online + 35 + 1 + 0 + 2 + 2 + 2 + 32768 + 16 + 0 + + + diff --git a/tests/network/juniper/mseries/netconf/data/disk.netconf b/tests/network/juniper/mseries/netconf/data/disk.netconf new file mode 100644 index 000000000..2e5d15626 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/disk.netconf @@ -0,0 +1,103 @@ + + + + /dev/gpt/junos + + + 20901930 + + + 4597380 + + + 14632396 + + + 24 + + + /.mount + + + + + /dev/gpt/config + + + 913304 + + + 376 + + + 839864 + + + 0 + + + /.mount/config + + + + + /dev/gpt/var + + + 29547144 + + + 14426528 + + + 12756848 + + + 53 + + + /.mount/var + + + + + tmpfs + + + 87427200 + + + 536 + + + 87426664 + + + 0 + + + /.mount/tmp + + + + + tmpfs + + + 16759608 + + + 2632 + + + 16756976 + + + 0 + + + /.mount/mfs + + + + diff --git a/tests/network/juniper/mseries/netconf/data/hardware.netconf b/tests/network/juniper/mseries/netconf/data/hardware.netconf new file mode 100644 index 000000000..700fd1aaa --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/hardware.netconf @@ -0,0 +1,1302 @@ + + + PEM 0 + Temp + OK + 35 degrees C / 95 degrees F + + + PEM 1 + Temp + OK + 30 degrees C / 86 degrees F + + + PEM 2 + Temp + OK + 30 degrees C / 86 degrees F + + + PEM 3 + Temp + OK + 35 degrees C / 95 degrees F + + + Routing Engine 0 + Temp + OK + 29 degrees C / 84 degrees F + + + Routing Engine 0 CPU + OK + 49 degrees C / 120 degrees F + + + Routing Engine 1 + Temp + Absent + + + Routing Engine 1 CPU + Absent + + + CB 0 Intake + Temp + OK + 33 degrees C / 91 degrees F + + + CB 0 Exhaust A + Temp + OK + 37 degrees C / 98 degrees F + + + CB 0 Exhaust B + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 PMBus POLs (Highest) + Temp + OK + 57 degrees C / 134 degrees F + + + CB 0 MAX20743_RT POL (Highest) + Temp + OK + 55 degrees C / 131 degrees F + + + CB 0 RT BCM59850 (Highest) + Temp + OK + 51 degrees C / 123 degrees F + + + CB 0 ZF 0 External MAX6657 + Temp + OK + 60 degrees C / 140 degrees F + + + CB 0 ZF 0 Internal (Highest) + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Main + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 0 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Remote 1 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Remote 2 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 3 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 4 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Remote 5 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 6 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 RT BCM59850_01 Core 0 + Temp + OK + 49 degrees C / 120 degrees F + + + CB 0 RT BCM59850_01 Core 1 + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 RT BCM59850_15 Core 0 + Temp + OK + 46 degrees C / 114 degrees F + + + CB 0 RT BCM59850_15 Core 1 + Temp + OK + 45 degrees C / 113 degrees F + + + CB 0 RT BCM59850_17 Core 0 + Temp + OK + 51 degrees C / 123 degrees F + + + CB 0 RT BCM59850_17 Core 1 + Temp + OK + 49 degrees C / 120 degrees F + + + CB 0 MAX20743_PLL_VDD_1V25 T1 + Temp + OK + 48 degrees C / 118 degrees F + + + CB 0 MAX20730_VDD_5V0 T1 + Temp + OK + 33 degrees C / 91 degrees F + + + CB 0 MAX20730_VDD_3V3 T1 + Temp + OK + 37 degrees C / 98 degrees F + + + CB 0 MAX20730_VDD_2V5 T1 + Temp + OK + 40 degrees C / 104 degrees F + + + CB 0 MAX20730_VDD_1V8 T1 + Temp + OK + 39 degrees C / 102 degrees F + + + CB 0 MAX20743_VDD_1V2 T1 + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 MAX20730_VDD_1V0 T1 + Temp + OK + 26 degrees C / 78 degrees F + + + CB 0 MAX20754_ZF0_VDD_0V75 T1 + Temp + OK + 42 degrees C / 107 degrees F + + + CB 0 MAX20754_ZF0_VDD_0V75 T2 + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 MAX20754_ZF0_VDDM_0V8 T1 + Temp + OK + 42 degrees C / 107 degrees F + + + CB 0 MAX20754_ZF0_VDDM_0V8 T2 + Temp + OK + 43 degrees C / 109 degrees F + + + CB 0 MAX20754_ZF0_AVDD_0V9 T1 + Temp + OK + 41 degrees C / 105 degrees F + + + CB 0 MAX20754_ZF0_AVDD_0V9 T2 + Temp + OK + 49 degrees C / 120 degrees F + + + CB 0 MAX20743_ZF0_AVDDH_1V1 T1 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 MAX20754_RT00_11_AVDD_0V8 T1 + Temp + OK + 41 degrees C / 105 degrees F + + + CB 0 MAX20754_RT00_11_AVDD_0V8 T2 + Temp + OK + 57 degrees C / 134 degrees F + + + CB 0 MAX20754_RT12_23_AVDD_0V8 T1 + Temp + OK + 42 degrees C / 107 degrees F + + + CB 0 MAX20754_RT12_23_AVDD_0V8 T2 + Temp + OK + 48 degrees C / 118 degrees F + + + CB 0 MAX20743_RT00_02_DVDD_0V8 T1 + Temp + OK + 54 degrees C / 129 degrees F + + + CB 0 MAX20743_RT03_05_DVDD_0V8 T1 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 MAX20743_RT06_08_DVDD_0V8 T1 + Temp + OK + 55 degrees C / 131 degrees F + + + CB 0 MAX20743_RT09_11_DVDD_0V8 T1 + Temp + OK + 55 degrees C / 131 degrees F + + + CB 0 MAX20743_RT12_14_DVDD_0V8 T1 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 MAX20743_RT15_17_DVDD_0V8 T1 + Temp + OK + 47 degrees C / 116 degrees F + + + CB 0 MAX20743_RT18_20_DVDD_0V8 T1 + Temp + OK + 48 degrees C / 118 degrees F + + + CB 0 MAX20743_RT21_23_DVDD_0V8 T1 + Temp + OK + 46 degrees C / 114 degrees F + + + CB 0 BMR453_A T1 + Temp + OK + 44 degrees C / 111 degrees F + + + CB 0 BMR453_A T2 + Temp + OK + 35 degrees C / 95 degrees F + + + CB 0 BMR453_B T1 + Temp + OK + 54 degrees C / 129 degrees F + + + CB 0 BMR453_B T2 + Temp + OK + 47 degrees C / 116 degrees F + + + CB 0 PIM4820 T1 + Temp + OK + 53 degrees C / 127 degrees F + + + FPC 0 Intake + Temp + OK + 45 degrees C / 113 degrees F + + + FPC 0 Exhaust A + Temp + OK + 44 degrees C / 111 degrees F + + + FPC 0 Exhaust B + Temp + OK + 64 degrees C / 147 degrees F + + + FPC 0 XL TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XL Chip + Temp + OK + 77 degrees C / 170 degrees F + + + FPC 0 XL_XR0 TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XL_XR0 Chip + Temp + OK + 79 degrees C / 174 degrees F + + + FPC 0 XL_XR1 TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XL_XR1 Chip + Temp + OK + 82 degrees C / 179 degrees F + + + FPC 0 XQ TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XQ Chip + Temp + OK + 85 degrees C / 185 degrees F + + + FPC 0 XQ_XR0 TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XQ_XR0 Chip + Temp + OK + 87 degrees C / 188 degrees F + + + FPC 0 XM TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XM Chip + Temp + OK + 99 degrees C / 210 degrees F + + + FPC 0 XF TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XF Chip + Temp + OK + 90 degrees C / 194 degrees F + + + FPC 0 PLX PCIe Switch TSen + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 0 PLX PCIe Switch Chip + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 0 Aloha FPGA 0 TSen + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 0 Aloha FPGA 0 Chip + Temp + OK + 66 degrees C / 150 degrees F + + + FPC 0 Aloha FPGA 1 TSen + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 0 Aloha FPGA 1 Chip + Temp + OK + 91 degrees C / 195 degrees F + + + FPC 5 Intake + Temp + OK + 32 degrees C / 89 degrees F + + + FPC 5 Exhaust A + Temp + OK + 35 degrees C / 95 degrees F + + + FPC 5 Exhaust B + Temp + OK + 56 degrees C / 132 degrees F + + + FPC 5 ZT0 Chip + Temp + OK + 77 degrees C / 170 degrees F + + + FPC 5 ZT1 Chip + Temp + OK + 81 degrees C / 177 degrees F + + + FPC 5 PCIE_SW Chip + Temp + OK + 61 degrees C / 141 degrees F + + + FPC 5 ZT0 TestMacro + Temp + OK + 66 degrees C / 150 degrees F + + + FPC 5 ZT0 hbmio_grp3 + Temp + OK + 67 degrees C / 152 degrees F + + + FPC 5 ZT0 hbmio_grp0 + Temp + OK + 68 degrees C / 154 degrees F + + + FPC 5 ZT0 gumem1 + Temp + OK + 69 degrees C / 156 degrees F + + + FPC 5 ZT0 llm + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 ZT0 wanio_sd + Temp + OK + 69 degrees C / 156 degrees F + + + FPC 5 ZT0 fabio_sd + Temp + OK + 75 degrees C / 167 degrees F + + + FPC 5 ZT0 flexmem + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 ZT1 TestMacro + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 ZT1 hbmio_grp3 + Temp + OK + 71 degrees C / 159 degrees F + + + FPC 5 ZT1 hbmio_grp0 + Temp + OK + 72 degrees C / 161 degrees F + + + FPC 5 ZT1 gumem1 + Temp + OK + 73 degrees C / 163 degrees F + + + FPC 5 ZT1 llm + Temp + OK + 73 degrees C / 163 degrees F + + + FPC 5 ZT1 wanio_sd + Temp + OK + 72 degrees C / 161 degrees F + + + FPC 5 ZT1 fabio_sd + Temp + OK + 77 degrees C / 170 degrees F + + + FPC 5 ZT1 flexmem + Temp + OK + 73 degrees C / 163 degrees F + + + FPC 5 ZT0 HBM0 + Temp + OK + 63 degrees C / 145 degrees F + + + FPC 5 ZT0 HBM1 + Temp + OK + 64 degrees C / 147 degrees F + + + FPC 5 ZT1 HBM0 + Temp + OK + 66 degrees C / 150 degrees F + + + FPC 5 ZT1 HBM1 + Temp + OK + 67 degrees C / 152 degrees F + + + FPC 5 FAB RT1.0 + Temp + OK + 72 degrees C / 161 degrees F + + + FPC 5 FAB RT2.0 + Temp + OK + 65 degrees C / 149 degrees F + + + FPC 5 FAB RT3.0 + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 FAB RT4.0 + Temp + OK + 58 degrees C / 136 degrees F + + + FPC 5 FAB RT5.0 + Temp + OK + 60 degrees C / 140 degrees F + + + FPC 5 FAB RT6.0 + Temp + OK + 50 degrees C / 122 degrees F + + + FPC 5 FAB RT7.0 + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 5 FAB RT8.0 + Temp + OK + 38 degrees C / 100 degrees F + + + FPC 5 WAN RT9.0 + Temp + OK + 47 degrees C / 116 degrees F + + + FPC 5 WAN RT9.1 + Temp + OK + 49 degrees C / 120 degrees F + + + FPC 5 WAN RT10.0 + Temp + OK + 44 degrees C / 111 degrees F + + + FPC 5 WAN RT10.1 + Temp + OK + 42 degrees C / 107 degrees F + + + FPC 5 PIM4820 T1 + Temp + OK + 64 degrees C / 147 degrees F + + + FPC 5 BMR456-12V-BRICK-A T1 + Temp + OK + 57 degrees C / 134 degrees F + + + FPC 5 BMR456-12V-BRICK-B T1 + Temp + OK + 60 degrees C / 140 degrees F + + + FPC 5 MAX20730-ZT0-AVDDH T1 + Temp + OK + 57 degrees C / 134 degrees F + + + FPC 5 MAX20730-ZT0-HBM-VDDQ T1 + Temp + OK + 65 degrees C / 149 degrees F + + + FPC 5 MAX20730-ZT0-HBM-VDDC T1 + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 5 MAX20730-ZT1-AVDDH T1 + Temp + OK + 65 degrees C / 149 degrees F + + + FPC 5 MAX20730-ZT1-HBM-VDDQ T1 + Temp + OK + 61 degrees C / 141 degrees F + + + FPC 5 MAX20730-ZT1-HBM-VDDC T1 + Temp + OK + 61 degrees C / 141 degrees F + + + FPC 5 CPU0_PMB + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 5 CPU7_PMB + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 5 DDR4 A + Temp + OK + 38 degrees C / 100 degrees F + + + FPC 5 DDR4 B + Temp + OK + 36 degrees C / 96 degrees F + + + Top Rear Fan + Fans + OK + Spinning at intermediate-speed + + + Bottom Rear Fan + Fans + OK + Spinning at intermediate-speed + + + Top Middle Fan + Fans + OK + Spinning at intermediate-speed + + + Bottom Middle Fan + Fans + OK + Spinning at intermediate-speed + + + Top Front Fan + Fans + OK + Spinning at intermediate-speed + + + Bottom Front Fan + Fans + OK + Spinning at intermediate-speed + + + + + PEM 0 + Online + + OK + 1 + 1 + 48.0 V input + 53500 + + + 2440 + 2440 + + + 318 + 0 + 6 + 53 + 13 + + + + PEM 1 + Online + + OK + 1 + 1 + 48.0 V input + 53000 + + + 2440 + 2440 + + + 106 + 1 + 2 + 53 + 4 + + + + PEM 2 + Online + + OK + 1 + 1 + 48.0 V input + 54000 + + + 2440 + 2440 + + + 270 + 0 + 5 + 54 + 11 + + + + PEM 3 + Online + + OK + 1 + 1 + 48.0 V input + 53500 + + + 2440 + 2440 + + + 54 + 1 + 1 + 54 + 2 + + + + + 0 + 2440 + 2440 + 884 + 1556 + 588 + + + 1 + 2440 + 2440 + 546 + 1894 + 160 + + 4880 + 4880 + 3450 + + + + + Top Rear Fan + OK + 3930 + Spinning at intermediate-speed + + + Bottom Rear Fan + OK + 3810 + Spinning at intermediate-speed + + + Top Middle Fan + OK + 3810 + Spinning at intermediate-speed + + + Bottom Middle Fan + OK + 3780 + Spinning at intermediate-speed + + + Top Front Fan + OK + 3870 + Spinning at intermediate-speed + + + Bottom Front Fan + OK + 3870 + Spinning at intermediate-speed + + + + + 0 + Online + 44 + 16 + 0 + 15 + 15 + 15 + 3584 + 9 + 25 + + + 1 + Empty + + + 2 + Empty + + + 3 + Empty + + + 4 + Empty + + + 5 + Online + 35 + 1 + 0 + 1 + 1 + 1 + 32768 + 16 + 0 + + + + + + 0 + Online + + + 2 + Online + 10x 1GE(LAN) -E SFP + + + 3 + Online + 10x 1GE(LAN) -E SFP + + + + 1 + Online + + + + 2 + Online + + + 0 + Online + 4x 10GE(LAN) SFP+ + + + + + +FEB + + 0 + Online + 56 degrees C / 132 degrees F + 11 + 0 + 12 + 13 + 2048 + 2024-10-21 10:46:21 CEST + 38 days, 23 hours, 26 minutes, 50 seconds + + + + + + Chassis + BF826 + MX104 + + Midplane + REV 58 + 750-062050 + CAKD6651 + MX104 + IPMVM10FRB + CHAS-MX104-S + + + PEM 0 + REV 05 + 740-045932 + 1H077510178 + DC Power Entry Module + IPUPAMJKAA + PWR-MX104-DC-S + + + PEM 1 + REV 05 + 740-045932 + 1H077510150 + DC Power Entry Module + IPUPAMJKAA + PWR-MX104-DC-S + + + Routing Engine 0 + REV 04 + 750-061985 + CAJX0567 + RE-MX-104 + IPUCBEWCAB + RE-S-MX104-S + + + Routing Engine 1 + REV 04 + 750-061985 + CAKE4189 + RE-MX-104 + IPUCBEWCAB + RE-S-MX104-S + + + AFEB 0 + BUILTIN + BUILTIN + Forwarding Engine Processor + + + FPC 0 + BUILTIN + BUILTIN + MPC BUILTIN + + MIC 1 + REV 18 + 750-049846 + CAKD8930 + 3D 20x 1GE(LAN)-E,SFP + IPUIBVXMAB + MIC-3D-20GE-SFP-E + + PIC 2 + BUILTIN + BUILTIN + 10x 1GE(LAN) -E SFP + + Xcvr 0 + REV 01 + 740-013111 + P06AUEU + SFP-T + + + Xcvr 1 + REV 01 + 740-013111 + I272653 + SFP-T + + + Xcvr 2 + REV 01 + 740-011783 + SOSB53T_WL841 + SFP-LX10 + + + Xcvr 3 + REV 01 + 740-011783 + SOSB53T_WL766 + SFP-LX10 + + + Xcvr 4 + REV 01 + 740-020424 + SOSB53T_WE291 + SFP-LX10 + + + Xcvr 5 + REV 01 + 740-011783 + SOSB53L13107 + SFP-1000BASE-BX10-D + + + Xcvr 6 + NON-JNPR + SO110180904 + SFP-LX10 + + + + PIC 3 + BUILTIN + BUILTIN + 10x 1GE(LAN) -E SFP + + Xcvr 0 + REV 01 + 740-013111 + I160709 + SFP-T + + + Xcvr 1 + REV 01 + 740-013111 + I160624 + SFP-T + + + Xcvr 3 + REV 01 + 740-026193 + SO0B53T_C041 + SFP-1000BASE-BX10-D + + + Xcvr 4 + REV 01 + 740-013111 + I272652 + SFP-T + + + + + + FPC 1 + BUILTIN + BUILTIN + MPC BUILTIN + + + FPC 2 + BUILTIN + BUILTIN + MPC BUILTIN + + MIC 0 + BUILTIN + BUILTIN + 4x 10GE(LAN) SFP+ + + PIC 0 + BUILTIN + BUILTIN + 4x 10GE(LAN) SFP+ + + Xcvr 0 + REV 01 + 740-021309 + SOP131LXK789 + SFP+-10G-LR + + + Xcvr 1 + REV 01 + 740-021309 + SOP131LXG307 + SFP+-10G-LR + + + Xcvr 2 + i + NON-JNPR + SOP131LM2953 + SFP+-10G-LR + + + + + + Fan Tray 0 + REV 03 + 711-049570 + CAKD1828 + Fan Tray + IPUCBEVCAA + FANTRAY-MX104-S + + + \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/data/hardware_no_fan.netconf b/tests/network/juniper/mseries/netconf/data/hardware_no_fan.netconf new file mode 100644 index 000000000..bd05715f7 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/hardware_no_fan.netconf @@ -0,0 +1,1221 @@ + + + PEM 0 + Temp + OK + 35 degrees C / 95 degrees F + + + PEM 1 + Temp + OK + 30 degrees C / 86 degrees F + + + PEM 2 + Temp + OK + 30 degrees C / 86 degrees F + + + PEM 3 + Temp + OK + 35 degrees C / 95 degrees F + + + Routing Engine 0 + Temp + OK + 29 degrees C / 84 degrees F + + + Routing Engine 0 CPU + OK + 49 degrees C / 120 degrees F + + + Routing Engine 1 + Temp + Absent + + + Routing Engine 1 CPU + Absent + + + CB 0 Intake + Temp + OK + 33 degrees C / 91 degrees F + + + CB 0 Exhaust A + Temp + OK + 37 degrees C / 98 degrees F + + + CB 0 Exhaust B + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 PMBus POLs (Highest) + Temp + OK + 57 degrees C / 134 degrees F + + + CB 0 MAX20743_RT POL (Highest) + Temp + OK + 55 degrees C / 131 degrees F + + + CB 0 RT BCM59850 (Highest) + Temp + OK + 51 degrees C / 123 degrees F + + + CB 0 ZF 0 External MAX6657 + Temp + OK + 60 degrees C / 140 degrees F + + + CB 0 ZF 0 Internal (Highest) + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Main + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 0 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Remote 1 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Remote 2 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 3 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 4 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 ZF 0 Internal Remote 5 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 ZF 0 Internal Remote 6 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 RT BCM59850_01 Core 0 + Temp + OK + 49 degrees C / 120 degrees F + + + CB 0 RT BCM59850_01 Core 1 + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 RT BCM59850_15 Core 0 + Temp + OK + 46 degrees C / 114 degrees F + + + CB 0 RT BCM59850_15 Core 1 + Temp + OK + 45 degrees C / 113 degrees F + + + CB 0 RT BCM59850_17 Core 0 + Temp + OK + 51 degrees C / 123 degrees F + + + CB 0 RT BCM59850_17 Core 1 + Temp + OK + 49 degrees C / 120 degrees F + + + CB 0 MAX20743_PLL_VDD_1V25 T1 + Temp + OK + 48 degrees C / 118 degrees F + + + CB 0 MAX20730_VDD_5V0 T1 + Temp + OK + 33 degrees C / 91 degrees F + + + CB 0 MAX20730_VDD_3V3 T1 + Temp + OK + 37 degrees C / 98 degrees F + + + CB 0 MAX20730_VDD_2V5 T1 + Temp + OK + 40 degrees C / 104 degrees F + + + CB 0 MAX20730_VDD_1V8 T1 + Temp + OK + 39 degrees C / 102 degrees F + + + CB 0 MAX20743_VDD_1V2 T1 + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 MAX20730_VDD_1V0 T1 + Temp + OK + 26 degrees C / 78 degrees F + + + CB 0 MAX20754_ZF0_VDD_0V75 T1 + Temp + OK + 42 degrees C / 107 degrees F + + + CB 0 MAX20754_ZF0_VDD_0V75 T2 + Temp + OK + 50 degrees C / 122 degrees F + + + CB 0 MAX20754_ZF0_VDDM_0V8 T1 + Temp + OK + 42 degrees C / 107 degrees F + + + CB 0 MAX20754_ZF0_VDDM_0V8 T2 + Temp + OK + 43 degrees C / 109 degrees F + + + CB 0 MAX20754_ZF0_AVDD_0V9 T1 + Temp + OK + 41 degrees C / 105 degrees F + + + CB 0 MAX20754_ZF0_AVDD_0V9 T2 + Temp + OK + 49 degrees C / 120 degrees F + + + CB 0 MAX20743_ZF0_AVDDH_1V1 T1 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 MAX20754_RT00_11_AVDD_0V8 T1 + Temp + OK + 41 degrees C / 105 degrees F + + + CB 0 MAX20754_RT00_11_AVDD_0V8 T2 + Temp + OK + 57 degrees C / 134 degrees F + + + CB 0 MAX20754_RT12_23_AVDD_0V8 T1 + Temp + OK + 42 degrees C / 107 degrees F + + + CB 0 MAX20754_RT12_23_AVDD_0V8 T2 + Temp + OK + 48 degrees C / 118 degrees F + + + CB 0 MAX20743_RT00_02_DVDD_0V8 T1 + Temp + OK + 54 degrees C / 129 degrees F + + + CB 0 MAX20743_RT03_05_DVDD_0V8 T1 + Temp + OK + 52 degrees C / 125 degrees F + + + CB 0 MAX20743_RT06_08_DVDD_0V8 T1 + Temp + OK + 55 degrees C / 131 degrees F + + + CB 0 MAX20743_RT09_11_DVDD_0V8 T1 + Temp + OK + 55 degrees C / 131 degrees F + + + CB 0 MAX20743_RT12_14_DVDD_0V8 T1 + Temp + OK + 53 degrees C / 127 degrees F + + + CB 0 MAX20743_RT15_17_DVDD_0V8 T1 + Temp + OK + 47 degrees C / 116 degrees F + + + CB 0 MAX20743_RT18_20_DVDD_0V8 T1 + Temp + OK + 48 degrees C / 118 degrees F + + + CB 0 MAX20743_RT21_23_DVDD_0V8 T1 + Temp + OK + 46 degrees C / 114 degrees F + + + CB 0 BMR453_A T1 + Temp + OK + 44 degrees C / 111 degrees F + + + CB 0 BMR453_A T2 + Temp + OK + 35 degrees C / 95 degrees F + + + CB 0 BMR453_B T1 + Temp + OK + 54 degrees C / 129 degrees F + + + CB 0 BMR453_B T2 + Temp + OK + 47 degrees C / 116 degrees F + + + CB 0 PIM4820 T1 + Temp + OK + 53 degrees C / 127 degrees F + + + FPC 0 Intake + Temp + OK + 45 degrees C / 113 degrees F + + + FPC 0 Exhaust A + Temp + OK + 44 degrees C / 111 degrees F + + + FPC 0 Exhaust B + Temp + OK + 64 degrees C / 147 degrees F + + + FPC 0 XL TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XL Chip + Temp + OK + 77 degrees C / 170 degrees F + + + FPC 0 XL_XR0 TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XL_XR0 Chip + Temp + OK + 79 degrees C / 174 degrees F + + + FPC 0 XL_XR1 TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XL_XR1 Chip + Temp + OK + 82 degrees C / 179 degrees F + + + FPC 0 XQ TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XQ Chip + Temp + OK + 85 degrees C / 185 degrees F + + + FPC 0 XQ_XR0 TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XQ_XR0 Chip + Temp + OK + 87 degrees C / 188 degrees F + + + FPC 0 XM TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XM Chip + Temp + OK + 99 degrees C / 210 degrees F + + + FPC 0 XF TSen + Temp + OK + 84 degrees C / 183 degrees F + + + FPC 0 XF Chip + Temp + OK + 90 degrees C / 194 degrees F + + + FPC 0 PLX PCIe Switch TSen + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 0 PLX PCIe Switch Chip + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 0 Aloha FPGA 0 TSen + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 0 Aloha FPGA 0 Chip + Temp + OK + 66 degrees C / 150 degrees F + + + FPC 0 Aloha FPGA 1 TSen + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 0 Aloha FPGA 1 Chip + Temp + OK + 91 degrees C / 195 degrees F + + + FPC 5 Intake + Temp + OK + 32 degrees C / 89 degrees F + + + FPC 5 Exhaust A + Temp + OK + 35 degrees C / 95 degrees F + + + FPC 5 Exhaust B + Temp + OK + 56 degrees C / 132 degrees F + + + FPC 5 ZT0 Chip + Temp + OK + 77 degrees C / 170 degrees F + + + FPC 5 ZT1 Chip + Temp + OK + 81 degrees C / 177 degrees F + + + FPC 5 PCIE_SW Chip + Temp + OK + 61 degrees C / 141 degrees F + + + FPC 5 ZT0 TestMacro + Temp + OK + 66 degrees C / 150 degrees F + + + FPC 5 ZT0 hbmio_grp3 + Temp + OK + 67 degrees C / 152 degrees F + + + FPC 5 ZT0 hbmio_grp0 + Temp + OK + 68 degrees C / 154 degrees F + + + FPC 5 ZT0 gumem1 + Temp + OK + 69 degrees C / 156 degrees F + + + FPC 5 ZT0 llm + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 ZT0 wanio_sd + Temp + OK + 69 degrees C / 156 degrees F + + + FPC 5 ZT0 fabio_sd + Temp + OK + 75 degrees C / 167 degrees F + + + FPC 5 ZT0 flexmem + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 ZT1 TestMacro + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 ZT1 hbmio_grp3 + Temp + OK + 71 degrees C / 159 degrees F + + + FPC 5 ZT1 hbmio_grp0 + Temp + OK + 72 degrees C / 161 degrees F + + + FPC 5 ZT1 gumem1 + Temp + OK + 73 degrees C / 163 degrees F + + + FPC 5 ZT1 llm + Temp + OK + 73 degrees C / 163 degrees F + + + FPC 5 ZT1 wanio_sd + Temp + OK + 72 degrees C / 161 degrees F + + + FPC 5 ZT1 fabio_sd + Temp + OK + 77 degrees C / 170 degrees F + + + FPC 5 ZT1 flexmem + Temp + OK + 73 degrees C / 163 degrees F + + + FPC 5 ZT0 HBM0 + Temp + OK + 63 degrees C / 145 degrees F + + + FPC 5 ZT0 HBM1 + Temp + OK + 64 degrees C / 147 degrees F + + + FPC 5 ZT1 HBM0 + Temp + OK + 66 degrees C / 150 degrees F + + + FPC 5 ZT1 HBM1 + Temp + OK + 67 degrees C / 152 degrees F + + + FPC 5 FAB RT1.0 + Temp + OK + 72 degrees C / 161 degrees F + + + FPC 5 FAB RT2.0 + Temp + OK + 65 degrees C / 149 degrees F + + + FPC 5 FAB RT3.0 + Temp + OK + 70 degrees C / 158 degrees F + + + FPC 5 FAB RT4.0 + Temp + OK + 58 degrees C / 136 degrees F + + + FPC 5 FAB RT5.0 + Temp + OK + 60 degrees C / 140 degrees F + + + FPC 5 FAB RT6.0 + Temp + OK + 50 degrees C / 122 degrees F + + + FPC 5 FAB RT7.0 + Temp + OK + 52 degrees C / 125 degrees F + + + FPC 5 FAB RT8.0 + Temp + OK + 38 degrees C / 100 degrees F + + + FPC 5 WAN RT9.0 + Temp + OK + 47 degrees C / 116 degrees F + + + FPC 5 WAN RT9.1 + Temp + OK + 49 degrees C / 120 degrees F + + + FPC 5 WAN RT10.0 + Temp + OK + 44 degrees C / 111 degrees F + + + FPC 5 WAN RT10.1 + Temp + OK + 42 degrees C / 107 degrees F + + + FPC 5 PIM4820 T1 + Temp + OK + 64 degrees C / 147 degrees F + + + FPC 5 BMR456-12V-BRICK-A T1 + Temp + OK + 57 degrees C / 134 degrees F + + + FPC 5 BMR456-12V-BRICK-B T1 + Temp + OK + 60 degrees C / 140 degrees F + + + FPC 5 MAX20730-ZT0-AVDDH T1 + Temp + OK + 57 degrees C / 134 degrees F + + + FPC 5 MAX20730-ZT0-HBM-VDDQ T1 + Temp + OK + 65 degrees C / 149 degrees F + + + FPC 5 MAX20730-ZT0-HBM-VDDC T1 + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 5 MAX20730-ZT1-AVDDH T1 + Temp + OK + 65 degrees C / 149 degrees F + + + FPC 5 MAX20730-ZT1-HBM-VDDQ T1 + Temp + OK + 61 degrees C / 141 degrees F + + + FPC 5 MAX20730-ZT1-HBM-VDDC T1 + Temp + OK + 61 degrees C / 141 degrees F + + + FPC 5 CPU0_PMB + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 5 CPU7_PMB + Temp + OK + 54 degrees C / 129 degrees F + + + FPC 5 DDR4 A + Temp + OK + 38 degrees C / 100 degrees F + + + FPC 5 DDR4 B + Temp + OK + 36 degrees C / 96 degrees F + + + + + PEM 0 + Online + + OK + 1 + 1 + 48.0 V input + 53500 + + + 2440 + 2440 + + + 318 + 0 + 6 + 53 + 13 + + + + PEM 1 + Online + + OK + 1 + 1 + 48.0 V input + 53000 + + + 2440 + 2440 + + + 106 + 1 + 2 + 53 + 4 + + + + PEM 2 + Online + + OK + 1 + 1 + 48.0 V input + 54000 + + + 2440 + 2440 + + + 270 + 0 + 5 + 54 + 11 + + + + PEM 3 + Online + + OK + 1 + 1 + 48.0 V input + 53500 + + + 2440 + 2440 + + + 54 + 1 + 1 + 54 + 2 + + + + + 0 + 2440 + 2440 + 884 + 1556 + 588 + + + 1 + 2440 + 2440 + 546 + 1894 + 160 + + 4880 + 4880 + 3450 + + + + + + + 0 + Online + 44 + 16 + 0 + 15 + 15 + 15 + 3584 + 9 + 25 + + + 1 + Empty + + + 2 + Empty + + + 3 + Empty + + + 4 + Empty + + + 5 + Online + 35 + 1 + 0 + 1 + 1 + 1 + 32768 + 16 + 0 + + + + + + 0 + Online + + + 2 + Online + 10x 1GE(LAN) -E SFP + + + 3 + Online + 10x 1GE(LAN) -E SFP + + + + 1 + Online + + + + 2 + Online + + + 0 + Online + 4x 10GE(LAN) SFP+ + + + + + +FEB + + 0 + Online + 56 degrees C / 132 degrees F + 11 + 0 + 12 + 13 + 2048 + 2024-10-21 10:46:21 CEST + 38 days, 23 hours, 26 minutes, 50 seconds + + + + + + Chassis + BF826 + MX104 + + Midplane + REV 58 + 750-062050 + CAKD6651 + MX104 + IPMVM10FRB + CHAS-MX104-S + + + PEM 0 + REV 05 + 740-045932 + 1H077510178 + DC Power Entry Module + IPUPAMJKAA + PWR-MX104-DC-S + + + PEM 1 + REV 05 + 740-045932 + 1H077510150 + DC Power Entry Module + IPUPAMJKAA + PWR-MX104-DC-S + + + Routing Engine 0 + REV 04 + 750-061985 + CAJX0567 + RE-MX-104 + IPUCBEWCAB + RE-S-MX104-S + + + Routing Engine 1 + REV 04 + 750-061985 + CAKE4189 + RE-MX-104 + IPUCBEWCAB + RE-S-MX104-S + + + AFEB 0 + BUILTIN + BUILTIN + Forwarding Engine Processor + + + FPC 0 + BUILTIN + BUILTIN + MPC BUILTIN + + MIC 1 + REV 18 + 750-049846 + CAKD8930 + 3D 20x 1GE(LAN)-E,SFP + IPUIBVXMAB + MIC-3D-20GE-SFP-E + + PIC 2 + BUILTIN + BUILTIN + 10x 1GE(LAN) -E SFP + + Xcvr 0 + REV 01 + 740-013111 + P06AUEU + SFP-T + + + Xcvr 1 + REV 01 + 740-013111 + I272653 + SFP-T + + + Xcvr 2 + REV 01 + 740-011783 + SOSB53T_WL841 + SFP-LX10 + + + Xcvr 3 + REV 01 + 740-011783 + SOSB53T_WL766 + SFP-LX10 + + + Xcvr 4 + REV 01 + 740-020424 + SOSB53T_WE291 + SFP-LX10 + + + Xcvr 5 + REV 01 + 740-011783 + SOSB53L13107 + SFP-1000BASE-BX10-D + + + Xcvr 6 + NON-JNPR + SO110180904 + SFP-LX10 + + + + PIC 3 + BUILTIN + BUILTIN + 10x 1GE(LAN) -E SFP + + Xcvr 0 + REV 01 + 740-013111 + I160709 + SFP-T + + + Xcvr 1 + REV 01 + 740-013111 + I160624 + SFP-T + + + Xcvr 3 + REV 01 + 740-026193 + SO0B53T_C041 + SFP-1000BASE-BX10-D + + + Xcvr 4 + REV 01 + 740-013111 + I272652 + SFP-T + + + + + + FPC 1 + BUILTIN + BUILTIN + MPC BUILTIN + + + FPC 2 + BUILTIN + BUILTIN + MPC BUILTIN + + MIC 0 + BUILTIN + BUILTIN + 4x 10GE(LAN) SFP+ + + PIC 0 + BUILTIN + BUILTIN + 4x 10GE(LAN) SFP+ + + Xcvr 0 + REV 01 + 740-021309 + SOP131LXK789 + SFP+-10G-LR + + + Xcvr 1 + REV 01 + 740-021309 + SOP131LXG307 + SFP+-10G-LR + + + Xcvr 2 + i + NON-JNPR + SOP131LM2953 + SFP+-10G-LR + + + + + + \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/data/interfaces-discovery.netconf b/tests/network/juniper/mseries/netconf/data/interfaces-discovery.netconf new file mode 100644 index 000000000..f27b1360e --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/interfaces-discovery.netconf @@ -0,0 +1,765 @@ + + + + + gr-0/0/0 + + + up + + + up + + + 173 + + + 545 + + + 176 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-0/0/0 + + + up + + + up + + + 177 + + + 546 + + + 180 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lc-0/0/0 + + + up + + + up + + + 164 + + + 506 + + + 167 + + + Unspecified + + + Unspecified + + + 0 + + + 800mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + lc-0/0/0.32769 + + + 338 + + + 507 + + + 150 + + + + + + ENET2 + + + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + vpls + + + Unlimited + + + 183 + + + 1 + + + + + 0x0 + + + + + + + + lt-0/0/0 + + + up + + + up + + + 189 + + + 549 + + + 192 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d4:40 + + + 64:c3:d6:37:d4:40 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-0/0/0 + + + up + + + up + + + 185 + + + 548 + + + 188 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/data/interfaces.netconf b/tests/network/juniper/mseries/netconf/data/interfaces.netconf new file mode 100644 index 000000000..d1208f863 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/interfaces.netconf @@ -0,0 +1,48236 @@ + + + + + gr-0/0/0 + + + up + + + up + + + 173 + + + 545 + + + 176 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-0/0/0 + + + up + + + up + + + 177 + + + 546 + + + 180 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lc-0/0/0 + + + up + + + up + + + 164 + + + 506 + + + 167 + + + Unspecified + + + Unspecified + + + 0 + + + 800mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + lc-0/0/0.32769 + + + 338 + + + 507 + + + 150 + + + + + + ENET2 + + + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + vpls + + + Unlimited + + + 183 + + + 1 + + + + + 0x0 + + + + + + + + lt-0/0/0 + + + up + + + up + + + 189 + + + 549 + + + 192 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d4:40 + + + 64:c3:d6:37:d4:40 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-0/0/0 + + + up + + + up + + + 185 + + + 548 + + + 188 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-0/0/0 + + + up + + + up + + + 165 + + + 543 + + + 168 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-0/0/0 + + + up + + + up + + + 169 + + + 544 + + + 172 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pfe-0/0/0 + + + up + + + up + + + 202 + + + 510 + + + 205 + + + Unspecified + + + Unspecified + + + 0 + + + 800mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + pfe-0/0/0.16383 + + + 340 + + + 511 + + + 152 + + + + + + + ENET2 + + + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 186 + + + 1 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 187 + + + 1 + + + + + + + + + + pfh-0/0/0 + + + up + + + up + + + 201 + + + 508 + + + 204 + + + Unspecified + + + Unspecified + + + 0 + + + 800mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + pfh-0/0/0.16383 + + + 341 + + + 509 + + + 153 + + + + + + + ENET2 + + + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 188 + + + 1 + + + + + + + + + pfh-0/0/0.16384 + + + 342 + + + 521 + + + 154 + + + + + + + ENET2 + + + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 189 + + + 2 + + + + + + + + + + si-0/0/0 + + + up + + + up + + + 197 + + + 552 + + + 200 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-0/0/0 + + + up + + + up + + + 203 + + + 551 + + + 206 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-0/0/0 + + + up + + + up + + + 193 + + + 550 + + + 196 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-0/0/0 + + + up + + + up + + + 181 + + + 547 + + + 184 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + gr-0/1/0 + + + up + + + up + + + 174 + + + 555 + + + 177 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-0/1/0 + + + up + + + up + + + 178 + + + 556 + + + 181 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-0/1/0 + + + up + + + up + + + 190 + + + 559 + + + 193 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d4:e9 + + + 64:c3:d6:37:d4:e9 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-0/1/0 + + + up + + + up + + + 186 + + + 558 + + + 189 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-0/1/0 + + + up + + + up + + + 166 + + + 553 + + + 169 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-0/1/0 + + + up + + + up + + + 170 + + + 554 + + + 173 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-0/1/0 + + + up + + + up + + + 198 + + + 562 + + + 201 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-0/1/0 + + + up + + + up + + + 204 + + + 561 + + + 207 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-0/1/0 + + + up + + + up + + + 194 + + + 560 + + + 197 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-0/1/0 + + + up + + + up + + + 182 + + + 557 + + + 185 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ge-0/2/0 + + + up + + + down + + + 257 + + + 522 + + + 260 + + + Vers swa-ory523-123-01 TEST TVD + + + Flexible-Ethernet + + + 2000 + + + LAN-PHY + + + 2008 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + Copper + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + 0x0 + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:92 + + + 64:c3:d6:37:d5:92 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + incomplete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/2/0.199 + + + 343 + + + 666 + + + 155 + + + VLAN SERVICE VPLS + + + + + + 0x0 + + + + [ 0x8100.199 ] + + + VLAN-VPLS + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + vpls + + + 2000 + + + 190 + + + 8 + + + down + + + 640 + + + __all_ces__ + + + + + 0x2 + + + + + + + ge-0/2/0.32767 + + + 344 + + + 667 + + + 156 + + + + + + 0x0 + + + + [ 0x0000.0 ] + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 191 + + + 0 + + + + + + + + + __default_arp_policer__ + + + + + + + + gr-0/2/0 + + + up + + + up + + + 175 + + + 565 + + + 178 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-0/2/0 + + + up + + + up + + + 179 + + + 566 + + + 182 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-0/2/0 + + + up + + + up + + + 191 + + + 569 + + + 194 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:92 + + + 64:c3:d6:37:d5:92 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-0/2/0 + + + up + + + up + + + 187 + + + 568 + + + 190 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-0/2/0 + + + up + + + up + + + 167 + + + 563 + + + 170 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-0/2/0 + + + up + + + up + + + 171 + + + 564 + + + 174 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-0/2/0 + + + up + + + up + + + 199 + + + 572 + + + 202 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-0/2/0 + + + up + + + up + + + 205 + + + 571 + + + 208 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-0/2/0 + + + up + + + up + + + 195 + + + 570 + + + 198 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-0/2/0 + + + up + + + up + + + 183 + + + 567 + + + 186 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ge-0/2/1 + + + up + + + up + + + 258 + + + 523 + + + 261 + + + test + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + Copper + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:93 + + + 64:c3:d6:37:d5:93 + + + 2024-10-21 10:47:05 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 129057653 + + + 0 + + + 2016480 + + + 0 + + + 336788 + + + 0 + + + 7813 + + + 0 + + + 1671879 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2016479 + + + 2016479 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + complete + + + OK + + + full-duplex + + + 100 Mbps + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/2/2 + + + up + + + up + + + 259 + + + 524 + + + 262 + + + \'[CLIENT]VPNIP-16848602-smartcall\' + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Fiber + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:94 + + + 64:c3:d6:37:d5:94 + + + 2024-10-21 10:47:05 CEST (5w3d 23:02 ago) + + + Never + + + + 47649741 + + + 80 + + + 42660304 + + + 64 + + + 1104214 + + + 1 + + + 1103901 + + + 1 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 150315 + + + 150315 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 953586 + + + 953586 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 102758291 + + + 99968697 + + + 1104214 + + + 1103901 + + + 1104212 + + + 1103901 + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1104214 + + + 0 + + + 0 + + + 0 + + + 1103901 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + complete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/2/2.0 + + + 345 + + + 677 + + + 157 + + + + + + 0x0 + + + + ENET2 + + + + + + 47649039 + + + 42659561 + + + 1104197 + + + 1103885 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 47649039 + + + 80 + + + 42659561 + + + 64 + + + 1104197 + + + 1 + + + 1103885 + + + 1 + + + + + + + multiservice + + + Unlimited + + + 192 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 193 + + + 0 + + + + + + + ge-0/2/3 + + + up + + + up + + + 260 + + + 525 + + + 263 + + + \'[CLIENT]VPNIP-16843185\' + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Fiber + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:95 + + + 64:c3:d6:37:d5:95 + + + 2024-10-21 10:47:05 CEST (5w3d 23:02 ago) + + + Never + + + + 159238602 + + + 56 + + + 63173103 + + + 48 + + + 1360961 + + + 0 + + + 848188 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 191233 + + + 191233 + + + 0 + + + + + 1 + + + FC-STD + + + 2842 + + + 2842 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 205812 + + + 205812 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 448301 + + + 448301 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 204006409 + + + 97330588 + + + 1360961 + + + 848188 + + + 1360960 + + + 848188 + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1360961 + + + 0 + + + 0 + + + 0 + + + 848188 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + complete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/2/3.0 + + + 346 + + + 675 + + + 158 + + + + + + 0x0 + + + + ENET2 + + + + + + 159238264 + + + 63172826 + + + 1360955 + + + 848183 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 159238264 + + + 56 + + + 63172826 + + + 48 + + + 1360955 + + + 0 + + + 848183 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 194 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 195 + + + 0 + + + + + + + ge-0/2/4 + + + up + + + up + + + 261 + + + 526 + + + 264 + + + INTPRE-16178705 surflink labo Mobility + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Fiber + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:96 + + + 64:c3:d6:37:d5:96 + + + 2024-10-21 10:47:05 CEST (5w3d 23:02 ago) + + + Never + + + + 4926858437 + + + 584 + + + 44859846953 + + + 3240 + + + 33863233 + + + 1 + + + 54102684 + + + 3 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 40154706 + + + 40154706 + + + 0 + + + + + 1 + + + FC-STD + + + 1089120 + + + 1089120 + + + 0 + + + + + 2 + + + FC-MET + + + 254215 + + + 254215 + + + 0 + + + + + 3 + + + FC-CRIT + + + 1032621 + + + 1032621 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 11123692 + + + 11123692 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 448330 + + + 448330 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5773562039 + + + 46278845465 + + + 34199754 + + + 54102685 + + + 34199753 + + + 54102685 + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 34199754 + + + 336521 + + + 336521 + + + 0 + + + 54102684 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + complete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/2/4.0 + + + 347 + + + 661 + + + 159 + + + + + + 0x0 + + + + ENET2 + + + + + + 4926858099 + + + 44859846671 + + + 33863227 + + + 54102679 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 4926858099 + + + 584 + + + 44859846671 + + + 3240 + + + 33863227 + + + 1 + + + 54102679 + + + 3 + + + + + + + multiservice + + + Unlimited + + + 196 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 197 + + + 0 + + + + + + + ge-0/2/5 + + + up + + + up + + + 262 + + + 527 + + + 265 + + + \'[CLIENT]VPNIP-16180146_Lien_Secondaire_Bureaux_ORY523\' + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + Fiber + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:97 + + + 64:c3:d6:37:d5:97 + + + 2024-10-21 10:47:05 CEST (5w3d 23:02 ago) + + + Never + + + + 155550546 + + + 40 + + + 7062356251 + + + 26432 + + + 1432233 + + + 0 + + + 38750589 + + + 14 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 37796918 + + + 37796918 + + + 0 + + + + + 1 + + + FC-STD + + + 32 + + + 32 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 953638 + + + 953638 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 218532568 + + + 8098479403 + + + 1432233 + + + 38750588 + + + 1432231 + + + 38750588 + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1432233 + + + 0 + + + 0 + + + 0 + + + 38750588 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + complete + + + OK + + + full-duplex + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/2/5.0 + + + 348 + + + 673 + + + 160 + + + + + + 0x0 + + + + ENET2 + + + + + + 155549754 + + + 7062355490 + + + 1432215 + + + 38750574 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 155549754 + + + 40 + + + 7062355490 + + + 26432 + + + 1432215 + + + 0 + + + 38750574 + + + 14 + + + + + + + multiservice + + + Unlimited + + + 198 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 199 + + + 0 + + + + + + + ge-0/2/6 + + + up + + + up + + + 263 + + + 528 + + + 266 + + + BLOA - PCA JO - Test Microtik TBLAVET 25.07.24 - Usage Interne + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + Fiber + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:98 + + + 64:c3:d6:37:d5:98 + + + 2024-10-21 10:47:05 CEST (5w3d 23:02 ago) + + + Never + + + + 107712390 + + + 184 + + + 0 + + + 0 + + + 1856935 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 142536468 + + + 0 + + + 1856936 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 1856936 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1856935 + + + 1856935 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + complete + + + OK + + + full-duplex + + + Symmetric + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/2/6.0 + + + 349 + + + 676 + + + 161 + + + + + + 0x0 + + + + ENET2 + + + + + + 107712390 + + + 0 + + + 1856935 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 107712390 + + + 184 + + + 0 + + + 0 + + + 1856935 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 200 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 201 + + + 0 + + + + + + + ge-0/2/7 + + + up + + + down + + + 264 + + + 529 + + + 267 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:99 + + + 64:c3:d6:37:d5:99 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/2/8 + + + up + + + down + + + 265 + + + 530 + + + 268 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:9a + + + 64:c3:d6:37:d5:9a + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/2/9 + + + up + + + down + + + 266 + + + 531 + + + 269 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d5:9b + + + 64:c3:d6:37:d5:9b + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/3/0 + + + up + + + down + + + 267 + + + 532 + + + 270 + + + vers CPE ory 522 Visio - Bureau EID + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Copper + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:3b + + + 64:c3:d6:37:d6:3b + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + incomplete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/3/0.0 + + + 350 + + + 645 + + + 162 + + + + + + 0x0 + + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 202 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 203 + + + 0 + + + + + + + gr-0/3/0 + + + up + + + up + + + 176 + + + 575 + + + 179 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-0/3/0 + + + up + + + up + + + 180 + + + 576 + + + 183 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-0/3/0 + + + up + + + up + + + 192 + + + 579 + + + 195 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:3b + + + 64:c3:d6:37:d6:3b + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-0/3/0 + + + up + + + up + + + 188 + + + 578 + + + 191 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-0/3/0 + + + up + + + up + + + 168 + + + 573 + + + 171 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-0/3/0 + + + up + + + up + + + 172 + + + 574 + + + 175 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-0/3/0 + + + up + + + up + + + 200 + + + 582 + + + 203 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-0/3/0 + + + up + + + up + + + 206 + + + 581 + + + 209 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-0/3/0 + + + up + + + up + + + 196 + + + 580 + + + 199 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-0/3/0 + + + up + + + up + + + 184 + + + 577 + + + 187 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ge-0/3/1 + + + up + + + down + + + 268 + + + 533 + + + 271 + + + HICTESTORY (Offre Hub_IP_Connect) + + + Flexible-Ethernet + + + 9192 + + + LAN-PHY + + + 9200 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Copper + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + 0x0 + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:3c + + + 64:c3:d6:37:d6:3c + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + incomplete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/3/1.2301 + + + 351 + + + 653 + + + 163 + + + VLAN SERVICE VPLS + + + + + + 0x0 + + + + [ 0x8100.2301 ] In(pop) Out(push 0x8100.2301) + + + VLAN-VPLS + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + vpls + + + 9192 + + + 204 + + + 6 + + + down + + + 642 + + + __all_ces__ + + + + + 0x2 + + + + + VPLS-BM-10M-ge-0/3/1.2301-i + + + + + + + + + ge-0/3/1.4002 + + + 352 + + + 646 + + + 164 + + + VLAN MGMT CPE VPLS + + + + + + 0x0 + + + + [ 0x8100.4002 ] + + + VLAN-Bridge + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + bridge + + + 9192 + + + 205 + + + 5 + + + up + + + 643 + + + __all_ces__ + + + + + 0x42 + + + + + + + ge-0/3/1.32767 + + + 353 + + + 647 + + + 165 + + + + + + 0x0 + + + + [ 0x0000.0 ] + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 206 + + + 0 + + + + + + + + + __default_arp_policer__ + + + + + + + + ge-0/3/2 + + + down + + + down + + + 269 + + + 534 + + + 272 + + + test Extendlan-lanissimo + + + Flexible-Ethernet + + + 9192 + + + LAN-PHY + + + 9200 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + + 0x0 + + + + + 0x0 + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:3d + + + 64:c3:d6:37:d6:3d + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/3/2.2301 + + + 354 + + + 652 + + + 166 + + + VLAN SERVICE VPLS + + + + + + 0x0 + + + + [ 0x8100.2301 ] In(pop) Out(push 0x8100.2301) + + + VLAN-VPLS + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + vpls + + + 9192 + + + 207 + + + 6 + + + down + + + 646 + + + __all_ces__ + + + + 0x2 + + + + + VPLS-BM-10M-ge-0/3/2.2301-i + + + + + + + + + ge-0/3/2.4002 + + + 355 + + + 648 + + + 167 + + + VLAN MGMT CPE VPLS + + + + + + 0x0 + + + + [ 0x8100.4002 ] + + + VLAN-Bridge + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + bridge + + + 9192 + + + 208 + + + 5 + + + up + + + 647 + + + __all_ces__ + + + + 0x42 + + + + + + + ge-0/3/2.32767 + + + 356 + + + 649 + + + 168 + + + + + + 0x0 + + + + [ 0x0000.0 ] + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 209 + + + 0 + + + + + + + + + __default_arp_policer__ + + + + + + + + ge-0/3/3 + + + up + + + up + + + 270 + + + 535 + + + 273 + + + TEST-PROV-VPNIP-14459127 + + + Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Fiber + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:3e + + + 64:c3:d6:37:d6:3e + + + 2024-10-21 10:47:06 CEST (5w3d 23:02 ago) + + + Never + + + + 293196844 + + + 0 + + + 2168330263 + + + 0 + + + 5409192 + + + 0 + + + 4424279 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 3975984 + + + 3975984 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 448295 + + + 448295 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 456659227 + + + 2295465815 + + + 5745714 + + + 4424279 + + + 5745713 + + + 4424279 + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5745714 + + + 336522 + + + 336522 + + + 0 + + + 4424279 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/3/3.0 + + + 357 + + + 650 + + + 169 + + + + + + 0x0 + + + + ENET2 + + + + + + 293196582 + + + 2168329972 + + + 5409187 + + + 4424274 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 293196582 + + + 0 + + + 2168329972 + + + 0 + + + 5409187 + + + 0 + + + 4424274 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 210 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + pppoe + + + + + DP-PPPOE + + + None + + + 1 + + + Off + + + Off + + + Off + + + Off + + + pop-ory523-123-11 + + + + + 211 + + + 0 + + + + + + + ge-0/3/4 + + + up + + + down + + + 271 + + + 536 + + + 274 + + + Nortel ex NOC + + + Flexible-Ethernet + + + 1522 + + + LAN-PHY + + + 1530 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + Copper + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + 0x0 + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:3f + + + 64:c3:d6:37:d6:3f + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + incomplete + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/3/4.118 + + + 358 + + + 654 + + + 170 + + + VLAN SERVICE VPLS + + + + + + 0x0 + + + + [ 0x8100.118 ] In(pop) Out(push 0x8100.118) + + + VLAN-VPLS + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + vpls + + + 1522 + + + 212 + + + 7 + + + down + + + 648 + + + __all_ces__ + + + + + 0x2 + + + + + VPLS-BM-100M-ge-0/3/4.118-i + + + VPLS-LIMIT-100M-ge-0/3/4.118-o + + + + + + + + + ge-0/3/4.32767 + + + 359 + + + 651 + + + 171 + + + + + + 0x0 + + + + [ 0x0000.0 ] + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 213 + + + 0 + + + + + + + + + __default_arp_policer__ + + + + + + + + ge-0/3/5 + + + up + + + down + + + 272 + + + 537 + + + 275 + + + EID-EXTDLAN-3456789_TEST-LUCIE + + + Flexible-Ethernet + + + 9192 + + + LAN-PHY + + + 9200 + + + disabled + + + 100mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + disabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + 0x0 + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:40 + + + 64:c3:d6:37:d6:40 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 15000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 10000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 10000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 5000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ge-0/3/5.4002 + + + 360 + + + 670 + + + 172 + + + VLAN MGMT CPE VPLS + + + + + + 0x0 + + + + [ 0x8100.4002 ] + + + VLAN-Bridge + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + bridge + + + 9192 + + + 214 + + + 5 + + + up + + + 650 + + + __all_ces__ + + + + 0x42 + + + + + + + ge-0/3/5.32767 + + + 361 + + + 671 + + + 173 + + + + + + 0x0 + + + + [ 0x0000.0 ] + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + multiservice + + + Unlimited + + + 215 + + + 0 + + + + + + + + + __default_arp_policer__ + + + + + + + + ge-0/3/6 + + + up + + + down + + + 273 + + + 538 + + + 276 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:41 + + + 64:c3:d6:37:d6:41 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/3/7 + + + up + + + down + + + 274 + + + 539 + + + 277 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:42 + + + 64:c3:d6:37:d6:42 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/3/8 + + + up + + + down + + + 275 + + + 540 + + + 278 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:43 + + + 64:c3:d6:37:d6:43 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ge-0/3/9 + + + up + + + down + + + 276 + + + 541 + + + 279 + + + Description interface + + + Ethernet + + + 1514 + + + LAN-PHY + + + 1522 + + + disabled + + + 1000mbps + + + none + + + none + + + none + + + none + + + disabled + + + enabled + + + enabled + + + online + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:44 + + + 64:c3:d6:37:d6:44 + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + no-autonegotiation + + + OK + + + unknown + + + None + + + + Symmetric + + + Link OK + + + 1000 Mbps + + + full-duplex + + + + + + 0 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 150000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 100000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 100000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 50000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + Disabled + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + gr-1/0/0 + + + up + + + up + + + 215 + + + 585 + + + 218 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-1/0/0 + + + up + + + up + + + 219 + + + 586 + + + 222 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-1/0/0 + + + up + + + up + + + 231 + + + 589 + + + 234 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d6:e5 + + + 64:c3:d6:37:d6:e5 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-1/0/0 + + + up + + + up + + + 227 + + + 588 + + + 230 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-1/0/0 + + + up + + + up + + + 207 + + + 583 + + + 210 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-1/0/0 + + + up + + + up + + + 211 + + + 584 + + + 214 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-1/0/0 + + + up + + + up + + + 239 + + + 592 + + + 242 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-1/0/0 + + + up + + + up + + + 243 + + + 591 + + + 246 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-1/0/0 + + + up + + + up + + + 235 + + + 590 + + + 238 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-1/0/0 + + + up + + + up + + + 223 + + + 587 + + + 226 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + gr-1/1/0 + + + up + + + up + + + 216 + + + 595 + + + 219 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-1/1/0 + + + up + + + up + + + 220 + + + 596 + + + 223 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-1/1/0 + + + up + + + up + + + 232 + + + 599 + + + 235 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d7:8e + + + 64:c3:d6:37:d7:8e + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-1/1/0 + + + up + + + up + + + 228 + + + 598 + + + 231 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-1/1/0 + + + up + + + up + + + 208 + + + 593 + + + 211 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-1/1/0 + + + up + + + up + + + 212 + + + 594 + + + 215 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-1/1/0 + + + up + + + up + + + 240 + + + 602 + + + 243 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-1/1/0 + + + up + + + up + + + 244 + + + 601 + + + 247 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-1/1/0 + + + up + + + up + + + 236 + + + 600 + + + 239 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-1/1/0 + + + up + + + up + + + 224 + + + 597 + + + 227 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + gr-1/2/0 + + + up + + + up + + + 217 + + + 605 + + + 220 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-1/2/0 + + + up + + + up + + + 221 + + + 606 + + + 224 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-1/2/0 + + + up + + + up + + + 233 + + + 609 + + + 236 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d8:37 + + + 64:c3:d6:37:d8:37 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-1/2/0 + + + up + + + up + + + 229 + + + 608 + + + 232 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-1/2/0 + + + up + + + up + + + 209 + + + 603 + + + 212 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-1/2/0 + + + up + + + up + + + 213 + + + 604 + + + 216 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-1/2/0 + + + up + + + up + + + 241 + + + 612 + + + 244 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-1/2/0 + + + up + + + up + + + 245 + + + 611 + + + 248 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-1/2/0 + + + up + + + up + + + 237 + + + 610 + + + 240 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-1/2/0 + + + up + + + up + + + 225 + + + 607 + + + 228 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + gr-1/3/0 + + + up + + + up + + + 218 + + + 615 + + + 221 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-1/3/0 + + + up + + + up + + + 222 + + + 616 + + + 225 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-1/3/0 + + + up + + + up + + + 234 + + + 619 + + + 237 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d8:e0 + + + 64:c3:d6:37:d8:e0 + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-1/3/0 + + + up + + + up + + + 230 + + + 618 + + + 233 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-1/3/0 + + + up + + + up + + + 210 + + + 613 + + + 213 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-1/3/0 + + + up + + + up + + + 214 + + + 614 + + + 217 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-1/3/0 + + + up + + + up + + + 242 + + + 622 + + + 245 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-1/3/0 + + + up + + + up + + + 246 + + + 621 + + + 249 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-1/3/0 + + + up + + + up + + + 238 + + + 620 + + + 241 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-1/3/0 + + + up + + + up + + + 226 + + + 617 + + + 229 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + gr-2/0/0 + + + up + + + up + + + 249 + + + 625 + + + 252 + + + GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ip-2/0/0 + + + up + + + up + + + 250 + + + 626 + + + 253 + + + IPIP + + + IP-over-IP + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + lt-2/0/0 + + + up + + + up + + + 253 + + + 629 + + + 256 + + + Logical-tunnel + + + Logical-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d9:8a + + + 64:c3:d6:37:d9:8a + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mt-2/0/0 + + + up + + + up + + + 252 + + + 628 + + + 255 + + + Multicast-GRE + + + GRE + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pd-2/0/0 + + + up + + + up + + + 247 + + + 623 + + + 250 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pe-2/0/0 + + + up + + + up + + + 248 + + + 624 + + + 251 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + si-2/0/0 + + + up + + + up + + + 255 + + + 632 + + + 258 + + + Adaptive-Services + + + Adaptive-Services + + + 9192 + + + 10000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + 0x0 + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + ud-2/0/0 + + + up + + + up + + + 256 + + + 631 + + + 259 + + + UDPT + + + UDP-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ut-2/0/0 + + + up + + + up + + + 254 + + + 630 + + + 257 + + + Uplink-tunnel + + + Uplink-tunnel + + + Unlimited + + + 100000mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + 13 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + 2024-10-21 10:46:44 CEST (5w3d 23:02 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vt-2/0/0 + + + up + + + up + + + 251 + + + 627 + + + 254 + + + Loopback + + + Virtual-loopback-tunnel + + + Unlimited + + + 100000mbps + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + xe-2/0/0 + + + up + + + up + + + 277 + + + 512 + + + 280 + + + [INFRA BB] pe-ory361-rgo-11 xe-1/2/6 - lag ae0 - LO:(2014743) + + + Ethernet + + + LAN-PHY + + + 9192 + + + 9200 + + + disabled + + + 10Gbps + + + none + + + none + + + none + + + none + + + disabled + + + Auto + + + Disabled + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:dc:30 + + + 64:c3:d6:37:d9:8a + + + 2024-10-21 10:47:08 CEST (5w3d 23:02 ago) + + + Never + + + + 74523105570 + + + 381904 + + + 11969493866 + + + 10280 + + + 163572753 + + + 1091 + + + 118221433 + + + 20 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 40945490 + + + 40945490 + + + 0 + + + + + 1 + + + FC-STD + + + 1 + + + 1 + + + 0 + + + + + 2 + + + FC-MET + + + 10 + + + 10 + + + 0 + + + + + 3 + + + FC-CRIT + + + 35834 + + + 35834 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 4 + + + 4 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 80606193 + + + 80606193 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 1 + + + + + 77419410921 + + + 13953959153 + + + 163572647 + + + 121587523 + + + 158799174 + + + 116810030 + + + 1510 + + + 1545 + + + 4771963 + + + 4775948 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 163572647 + + + 0 + + + 0 + + + 0 + + + 121587523 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 500000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + + + Disable + + + + Disabled + + + + xe-2/0/0.0 + + + 362 + + + 633 + + + 174 + + + + + + 0x0 + + + + ENET2 + + + + + + 74488882728 + + + 9359509734 + + + 163479244 + + + 85954984 + + + + + 10183584 + + + 910255053 + + + 27824 + + + 11315415 + + + + + 74478699144 + + + 381904 + + + 8449254681 + + + 6512 + + + 163451420 + + + 1091 + + + 74639569 + + + 13 + + + + + + + aenet + + + ae0.0 + + + 216 + + + 0 + + + + + + + xe-2/0/1 + + + up + + + up + + + 278 + + + 513 + + + 281 + + + [INFRA BB] pe-ory400-a750-11 xe-1/2/6 - lag ae1 - LO:(2014746) + + + Ethernet + + + LAN-PHY + + + 9192 + + + 9200 + + + disabled + + + 10Gbps + + + none + + + none + + + none + + + none + + + disabled + + + Auto + + + Disabled + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:dc:31 + + + 64:c3:d6:37:d9:8b + + + 2024-10-21 10:47:08 CEST (5w3d 23:02 ago) + + + Never + + + + 60476556537 + + + 95816 + + + 7822962846 + + + 3012704 + + + 186785165 + + + 46 + + + 116512927 + + + 1660 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 11163171 + + + 11163171 + + + 0 + + + + + 1 + + + FC-STD + + + 5 + + + 5 + + + 0 + + + + + 2 + + + FC-MET + + + 9 + + + 9 + + + 0 + + + + + 3 + + + FC-CRIT + + + 36069 + + + 36069 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 2 + + + 2 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 108679590 + + + 108679590 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 1 + + + + + 63790164561 + + + 9383179275 + + + 186785154 + + + 119877980 + + + 182010545 + + + 115099085 + + + 1560 + + + 1503 + + + 4773049 + + + 4777408 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 186785154 + + + 0 + + + 0 + + + 0 + + + 119877980 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 500000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + + + Disable + + + + Disabled + + + + xe-2/0/1.0 + + + 363 + + + 634 + + + 175 + + + + + + 0x0 + + + + ENET2 + + + + + + 60442259152 + + + 4012500867 + + + 186691707 + + + 63615067 + + + + + 10214344 + + + 1324511056 + + + 27832 + + + 18756252 + + + + + 60432044808 + + + 95816 + + + 2687989811 + + + 4160 + + + 186663875 + + + 46 + + + 44858815 + + + 10 + + + + + + + aenet + + + ae1.0 + + + 217 + + + 0 + + + + + + + xe-2/0/2 + + + up + + + up + + + 279 + + + 514 + + + 282 + + + Ethernet + + + LAN-PHY + + + 1514 + + + 1522 + + + disabled + + + 10Gbps + + + none + + + none + + + none + + + none + + + enabled + + + Auto + + + Disabled + + + + + + + + 0x0 + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d9:8c + + + 64:c3:d6:37:d9:8c + + + 2024-10-21 10:47:13 CEST (5w3d 23:02 ago) + + + Never + + + + 500059615 + + + 0 + + + 509065591 + + + 0 + + + 9009300 + + + 0 + + + 9171463 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + 0 + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 9087298 + + + 9087298 + + + 0 + + + + + 1 + + + FC-STD + + + 8 + + + 8 + + + 0 + + + + + 2 + + + FC-MET + + + 27 + + + 27 + + + 0 + + + + + 3 + + + FC-CRIT + + + 81309 + + + 81309 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 9 + + + 9 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 2812 + + + 2812 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + 0 + + + 6 + + + + + 716083826 + + + 728601465 + + + 9009302 + + + 9171463 + + + 9009300 + + + 9168646 + + + 0 + + + 2817 + + + 0 + + + 0 + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 2 + + + 0 + + + + + 9009302 + + + 0 + + + 0 + + + 0 + + + 9171463 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 500000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + + + Disable + + + + Disabled + + + + xe-2/0/2.0 + + + 364 + + + 669 + + + 180 + + + vers_EXFO_TEST_DEBIT + + + + + + 0x0 + + + + ENET2 + + + + + + 126394981 + + + 129196366 + + + 1477631 + + + 1530619 + + + + + 38700 + + + 27132 + + + 645 + + + 646 + + + + + 126356281 + + + 0 + + + 129169234 + + + 0 + + + 1476986 + + + 0 + + + 1529973 + + + 0 + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 1 + + + 0 + + + 0 + + + 234 + + + 10 + + + + + + 0x2 + + + + + + + + + + + + + + 213.174.106.204/30 + + + 213.174.106.205 + + + 213.174.106.207 + + + 184 + + + + + + multiservice + + + Unlimited + + + 235 + + + 10 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + + + xe-2/0/3 + + + up + + + down + + + 280 + + + 515 + + + 283 + + + Ethernet + + + LAN-PHY + + + 1514 + + + 1522 + + + disabled + + + 10Gbps + + + none + + + none + + + none + + + none + + + enabled + + + Auto + + + Disabled + + + + + + + + + 0x0 + + + + + + + 0x0 + + + + + + + + 8 + + + 8 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d9:8d + + + 64:c3:d6:37:d9:8d + + + 2024-11-20 10:19:42 CET (1w1d 22:29 ago) + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + + + + + + + + + + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 2 + + + + + + + Output + + + + 0 + + + FC-BE + + + r + + + r + + + r + + + 0 + + + low + + + none + + + + + 1 + + + FC-STD + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 2 + + + FC-MET + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 3 + + + FC-CRIT + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 4 + + + FC-CRIT-PLUS + + + 15 + + + 1500000000 + + + 15 + + + 0 + + + medium-low + + + none + + + + + 5 + + + FC-TR-VPNIP + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + medium-high + + + none + + + + + 6 + + + FC-TR + + + 10 + + + 1000000000 + + + 10 + + + 0 + + + high + + + none + + + + + 7 + + + FC-NC + + + 5 + + + 500000000 + + + 5 + + + 0 + + + strict-high + + + none + + + + + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + best-effort + + + 0 + + + 0 + + + 0 + + + + + + + Disable + + + + Disabled + + + + xe-2/0/3.16386 + + + 365 + + + 660 + + + 177 + + + + + + 0x0 + + + + ENET2 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + .local. + + + up + + + up + + + 0 + + + 0 + + + 1 + + + Loopback + + + Interface-Specific + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + + 0x0 + + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + .local..0 + + + 0 + + + 0 + + + 1 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 133 + + + 0 + + + + + + + + + + Unspecified + + + 10.19.15.23 + + + Unspecified + + + 133 + + + + + + + + Unspecified + + + 10.19.15.25 + + + Unspecified + + + 182 + + + + + + + + Unspecified + + + 10.100.24.50 + + + Unspecified + + + 137 + + + + + + + + Unspecified + + + 10.100.25.118 + + + Unspecified + + + 151 + + + + + + + + Unspecified + + + 10.100.25.120 + + + Unspecified + + + 153 + + + + + + iso + + + Unlimited + + + 137 + + + 0 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 131 + + + 0 + + + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d594 + + + + + + + + Unspecified + + + 169 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d595 + + + + + + + + Unspecified + + + 163 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d596 + + + + + + + + Unspecified + + + 160 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d597 + + + + + + + + Unspecified + + + 166 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d63e + + + + + + + + Unspecified + + + 172 + + + + + + mpls + + + Unlimited + + + 3 + + + 130 + + + 0 + + + + + + + + 85 + + + Unlimited + + + 129 + + + 0 + + + + + + + + + .local..1 + + + 1 + + + 0 + + + 2 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 134 + + + 1 + + + + + + + + + + Unspecified + + + 10.0.0.4 + + + Unspecified + + + 130 + + + + + + + + Unspecified + + + 128.0.0.1 + + + Unspecified + + + 181 + + + + + + + + Unspecified + + + 128.0.0.4 + + + Unspecified + + + 129 + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 132 + + + 1 + + + + + + + + + + Unspecified + + + fe80::200:ff:fe00:4 + + + + + + + + Unspecified + + + 131 + + + + + + + + Unspecified + + + fec0::a:0:0:4 + + + + + + + + Unspecified + + + 132 + + + + + + vpls + + + Unlimited + + + 145 + + + 1 + + + + + + + + + .local..2 + + + 2 + + + 0 + + + 2 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 135 + + + 2 + + + + + + + + + + Unspecified + + + 127.0.0.1 + + + Unspecified + + + 135 + + + + + + + .local..3 + + + 325 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 146 + + + 3 + + + + + + + + + + Unspecified + + + 128.0.0.127 + + + Unspecified + + + 146 + + + + + + + .local..4 + + + 327 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 154 + + + 4 + + + + + + + + + .local..5 + + + 328 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + vpls + + + Unlimited + + + 155 + + + 5 + + + + + + + + + .local..6 + + + 329 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + vpls + + + Unlimited + + + 156 + + + 6 + + + + + + + + + .local..7 + + + 330 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + vpls + + + Unlimited + + + 157 + + + 7 + + + + + + + + + .local..8 + + + 331 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + vpls + + + Unlimited + + + 158 + + + 8 + + + + + + + + + .local..9 + + + 332 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 159 + + + 9 + + + + + + + + iso + + + Unlimited + + + 162 + + + 9 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 166 + + + 9 + + + + + + + + + .local..10 + + + 333 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 160 + + + 10 + + + + + + + + + + Unspecified + + + 213.174.106.205 + + + Unspecified + + + 183 + + + + + + iso + + + Unlimited + + + 163 + + + 10 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 167 + + + 10 + + + + + + + + + .local..11 + + + 334 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 161 + + + 11 + + + + + + + + + + Unspecified + + + 10.102.30.254 + + + Unspecified + + + 155 + + + + + + iso + + + Unlimited + + + 164 + + + 11 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 168 + + + 11 + + + + + + + + + .local..12 + + + 335 + + + 0 + + + 128 + + + + + + Unspecified + + + + + 0 + + + + + + mpls + + + Unlimited + + + 3 + + + 165 + + + 12 + + + + + + + + + .local..36735 + + + 262016 + + + 0 + + + 2 + + + + + + Unspecified + + + + + 0 + + + + + + + .local..36736 + + + 262017 + + + 0 + + + 2 + + + + + + Unspecified + + + + + 0 + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 136 + + + 36736 + + + + + + + + + .local..36737 + + + 262018 + + + 0 + + + 2 + + + + + + Unspecified + + + + + 0 + + + + + + + .local..36738 + + + 262019 + + + 0 + + + 1 + + + + + + Unspecified + + + + + 0 + + + + + + + + ae0 + + + up + + + up + + + 147 + + + 635 + + + 150 + + + [INFRA BB] pe-ory361-rgo-11 lag ae11 + + + Ethernet + + + 9192 + + + disabled + + + 10Gbps + + + none + + + none + + + disabled + + + disabled + + + Disabled + + + 1 + + + 1bps + + + + + + + + 0x0 + + + + + + 0x0 + + + + 64:c3:d6:37:dc:30 + + + 64:c3:d6:37:dc:30 + + + 2024-10-21 10:47:12 CEST (5w3d 23:02 ago) + + + Never + + + + 74523105570 + + + 381904 + + + 12230985122 + + + 10616 + + + 163572753 + + + 1091 + + + 118221434 + + + 20 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1510 + + + 1545 + + + 4771963 + + + 4775948 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Ingress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 40945490 + + + 40945490 + + + 0 + + + + + 1 + + + FC-STD + + + 1 + + + 1 + + + 0 + + + + + 2 + + + FC-MET + + + 10 + + + 10 + + + 0 + + + + + 3 + + + FC-CRIT + + + 35834 + + + 35834 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 4 + + + 4 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 80606193 + + + 80606193 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + ae0.0 + + + 323 + + + 637 + + + 148 + + + + + + 0x0 + + + + ENET2 + + + + + + + 163451420 + + + 1091 + + + 74478699144 + + + 381904 + + + 85927143 + + + 13 + + + 9349598048 + + + 6512 + + + + + 0 + + + 0 + + + 0 + + + + + xe-2/0/0.0 + + + 163451420 + + + 1091 + + + 74478699144 + + + 381904 + + + 85954985 + + + 13 + + + 9359509800 + + + 6512 + + + + + 1 + + + + + xe-2/0/0.0 + + + Actor + + + 127 + + + 64:c3:d6:37:dc:30 + + + 127 + + + 1 + + + 1 + + + + + xe-2/0/0.0 + + + Partner + + + 127 + + + d8:b1:22:93:65:40 + + + 127 + + + 15 + + + 12 + + + + + xe-2/0/0.0 + + + 772041 + + + 772181 + + + 0 + + + 0 + + + + + xe-2/0/0.0 + + + 0 + + + 0 + + + 772041 + + + 772181 + + + 0 + + + 0 + + + + + + + + inet + + + 9178 + + + 75000 + + + 75000 + + + 1 + + + 0 + + + 0 + + + 177 + + + 0 + + + + + 0x2 + + + + + + + + + + + + + 10.100.25.118/31 + + + 10.100.25.118 + + + Unspecified + + + 151 + + + + + + mpls + + + 9158 + + + 5 + + + 178 + + + 0 + + + + 0x2 + + + + + + multiservice + + + Unlimited + + + 179 + + + 0 + + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + + + ae1 + + + up + + + up + + + 148 + + + 636 + + + 151 + + + [INFRA BB] pe-ory400-a750-11 lag ae11 + + + Ethernet + + + 9192 + + + disabled + + + 10Gbps + + + none + + + none + + + disabled + + + disabled + + + Disabled + + + 1 + + + 1bps + + + + + + + + 0x0 + + + + + + 0x0 + + + + 64:c3:d6:37:dc:31 + + + 64:c3:d6:37:dc:31 + + + 2024-10-21 10:47:11 CEST (5w3d 23:02 ago) + + + Never + + + + 60476556537 + + + 95816 + + + 8253046142 + + + 3089696 + + + 186785165 + + + 46 + + + 116513110 + + + 1659 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1560 + + + 1503 + + + 4773049 + + + 4777408 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + Ingress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 0 + + + 0 + + + 0 + + + + + 1 + + + FC-STD + + + 0 + + + 0 + + + 0 + + + + + 2 + + + FC-MET + + + 0 + + + 0 + + + 0 + + + + + 3 + + + FC-CRIT + + + 0 + + + 0 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 0 + + + 0 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 0 + + + 0 + + + 0 + + + + + + + Egress queues + + + 8 + + + 8 + + + + + 0 + + + FC-BE + + + 11163171 + + + 11163171 + + + 0 + + + + + 1 + + + FC-STD + + + 5 + + + 5 + + + 0 + + + + + 2 + + + FC-MET + + + 9 + + + 9 + + + 0 + + + + + 3 + + + FC-CRIT + + + 36069 + + + 36069 + + + 0 + + + + + 4 + + + FC-CRIT-PLUS + + + 2 + + + 2 + + + 0 + + + + + 5 + + + FC-TR-VPNIP + + + 0 + + + 0 + + + 0 + + + + + 6 + + + FC-TR + + + 0 + + + 0 + + + 0 + + + + + 7 + + + FC-NC + + + 108679590 + + + 108679590 + + + 0 + + + + + + 0 + + + FC-BE + + + + + 1 + + + FC-STD + + + + + 2 + + + FC-MET + + + + + 3 + + + FC-CRIT + + + + + 4 + + + FC-CRIT-PLUS + + + + + 5 + + + FC-TR-VPNIP + + + + + 6 + + + FC-TR + + + + + 7 + + + FC-NC + + + + + ae1.0 + + + 324 + + + 638 + + + 149 + + + + + + 0x0 + + + + ENET2 + + + + + + + 186663875 + + + 46 + + + 60432044808 + + + 95816 + + + 63587422 + + + 10 + + + 4002722687 + + + 4160 + + + + + 0 + + + 0 + + + 0 + + + + + xe-2/0/1.0 + + + 186663875 + + + 46 + + + 60432044808 + + + 95816 + + + 63615240 + + + 10 + + + 4012645929 + + + 4160 + + + + + xe-2/0/1.0 + + + Actor + + + 127 + + + 64:c3:d6:37:dc:30 + + + 127 + + + 2 + + + 2 + + + + + xe-2/0/1.0 + + + Partner + + + 127 + + + d8:b1:22:93:03:00 + + + 127 + + + 17 + + + 12 + + + + + xe-2/0/1.0 + + + 772056 + + + 772181 + + + 0 + + + 0 + + + + + xe-2/0/1.0 + + + 0 + + + 0 + + + 772056 + + + 772181 + + + 0 + + + 0 + + + + + + + + inet + + + 9178 + + + 75000 + + + 75000 + + + 1 + + + 0 + + + 0 + + + 180 + + + 0 + + + + + 0x2 + + + + + + + + + + + + + 10.100.25.120/31 + + + 10.100.25.120 + + + Unspecified + + + 153 + + + + + + mpls + + + 9158 + + + 5 + + + 181 + + + 0 + + + + + 0x2 + + + + + + multiservice + + + Unlimited + + + 182 + + + 0 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + + + cbp0 + + + up + + + up + + + 150 + + + 502 + + + 153 + + + Ethernet + + + Ethernet + + + 9192 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:d4:51 + + + 64:c3:d6:37:d4:51 + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + demux0 + + + up + + + up + + + 149 + + + 501 + + + 152 + + + Software-Pseudo + + + Unspecified + + + 9192 + + + Unspecified + + + 1 + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + demux0.2147483648 + + + 366 + + + 641 + + + 6 + + + + + 0x0 + + + + ENET2 + + + + + + + ge-0/2/4.0 + + + 347 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 220 + + + 0 + + + + + + 0x2 + + + + + + + + + Unspecified + + + 0.0.0.0 + + + Unspecified + + + 158 + + + + + + inet6 + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 221 + + + 0 + + + + + + + 0x1000000 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d596 + + + + + + + + Unspecified + + + 160 + + + + + + + demux0.2147483649 + + + 367 + + + 659 + + + 7 + + + + + 0x0 + + + + ENET2 + + + + + + + ge-0/2/3.0 + + + 346 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 222 + + + 0 + + + + + + 0x2 + + + + + + + + + Unspecified + + + 0.0.0.0 + + + Unspecified + + + 161 + + + + + + inet6 + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 223 + + + 0 + + + + + + 0x1000000 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d595 + + + + + + + + Unspecified + + + 163 + + + + + + + demux0.2147483650 + + + 368 + + + 662 + + + 8 + + + + + 0x0 + + + + ENET2 + + + + + + + ge-0/2/5.0 + + + 348 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 224 + + + 0 + + + + + + 0x2 + + + + + + + + + Unspecified + + + 0.0.0.0 + + + Unspecified + + + 164 + + + + + + inet6 + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 225 + + + 0 + + + + + + 0x1000000 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d597 + + + + + + + + Unspecified + + + 166 + + + + + + + demux0.2147483651 + + + 369 + + + 663 + + + 10 + + + + + 0x0 + + + + ENET2 + + + + + + + ge-0/2/2.0 + + + 345 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 226 + + + 0 + + + + + + 0x2 + + + + + + + + + Unspecified + + + 0.0.0.0 + + + Unspecified + + + 167 + + + + + + inet6 + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 227 + + + 0 + + + + + + 0x1000000 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d594 + + + + + + + + Unspecified + + + 169 + + + + + + + demux0.2147483652 + + + 370 + + + 664 + + + 12 + + + + + 0x0 + + + + ENET2 + + + + + + + ge-0/3/3.0 + + + 357 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 228 + + + 0 + + + + + + 0x2 + + + + + + + + + Unspecified + + + 0.0.0.0 + + + Unspecified + + + 170 + + + + + + inet6 + + + 1500 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 229 + + + 0 + + + + + + 0x1000000 + + + + + + + + Unspecified + + + fe80::66c3:d6ff:fe37:d63e + + + + + + + + Unspecified + + + 172 + + + + + + + + dsc + + + up + + + up + + + 5 + + + 5 + + + 6 + + + Software-Pseudo + + + Unspecified + + + Unlimited + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + em0 + + + up + + + up + + + 65 + + + 17 + + + 2 + + + Ethernet + + + Ethernet + + + 1514 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + Unspecified + + + + 0x0 + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 02:00:00:00:00:04 + + + 02:00:00:00:00:04 + + + Unspecified + + + Never + + + Never + + + + 34784654355 + + + 38309033919 + + + 133066570 + + + 121640070 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + em0.0 + + + 3 + + + 18 + + + 2 + + + + + + 0x0 + + + + ENET2 + + + + + + 34250400745 + + + 37726135550 + + + 133064949 + + + 121640071 + + + + 0 + + + 640 + + + 0 + + + 8 + + + + + + 34250400745 + + + 37726135550 + + + 133064949 + + + 121640071 + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 4 + + + 0 + + + 0 + + + 138 + + + 1 + + + + + + + + + + 10/8 + + + 10.0.0.4 + + + 10.255.255.255 + + + 2 + + + + + + + + + + 128/2 + + + 128.0.0.1 + + + 191.255.255.255 + + + 9 + + + + + + + + + + 128/2 + + + 128.0.0.4 + + + 191.255.255.255 + + + 1 + + + + + + inet6 + + + 1500 + + + 75000 + + + 75000 + + + 3 + + + 0 + + + 0 + + + 139 + + + 1 + + + + + + + + + 0x0 + + + + fe80::/64 + + + fe80::200:ff:fe00:4 + + + + + + + + Unspecified + + + 3 + + + + + + + + + + fec0::/64 + + + fec0::a:0:0:4 + + + + + + + + Unspecified + + + 4 + + + + + + tnp + + + 1500 + + + 140 + + + 1 + + + + + + + + + + + Unspecified + + + 0x4 + + + Unspecified + + + 5 + + + + + + + + em1 + + + up + + + up + + + 66 + + + 23 + + + 3 + + + Ethernet + + + Ethernet + + + 1514 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + Unspecified + + + + 0x0 + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 02:00:01:00:00:04 + + + 02:00:01:00:00:04 + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + esi + + + up + + + up + + + 154 + + + 516 + + + 157 + + + Software-Pseudo + + + VxLAN-Tunnel-Endpoint + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti0 + + + up + + + up + + + 156 + + + 542 + + + 159 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti1 + + + up + + + up + + + 157 + + + 639 + + + 160 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti2 + + + up + + + up + + + 158 + + + 640 + + + 161 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti3 + + + up + + + up + + + 159 + + + 642 + + + 162 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti4 + + + up + + + up + + + 160 + + + 644 + + + 163 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti5 + + + up + + + up + + + 161 + + + 655 + + + 164 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti6 + + + up + + + up + + + 162 + + + 657 + + + 165 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fti7 + + + up + + + up + + + 163 + + + 658 + + + 166 + + + FTI + + + Flexible-tunnel-Interface + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + fxp0 + + + up + + + up + + + 67 + + + 1 + + + 4 + + + Ethernet + + + Ethernet + + + 1514 + + + 100mbps + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + 0x0 + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + d8:b1:22:e3:69:8b + + + d8:b1:22:e3:69:8b + + + Unspecified + + + 2024-11-20 10:07:18 CET (1w1d 22:42 ago) + + + Never + + + + 72083016 + + + 118998162 + + + 1022581 + + + 761640 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + fxp0.0 + + + 4 + + + 13 + + + 3 + + + [INFRA OOB] swa-m-ory523-123-01 fa0/2 - LC locale + + + + + + 0x0 + + + + ENET2 + + + + + + 37643515 + + + 115876560 + + + 533979 + + + 761640 + + + + + 37643515 + + + 115876560 + + + 533979 + + + 761640 + + + + + + + inet + + + 1500 + + + 75000 + + + 75000 + + + 3 + + + 0 + + + 0 + + + 141 + + + 0 + + + + + + + + + + + + + + + + 10.19.15/24 + + + 10.19.15.23 + + + 10.19.15.255 + + + 6 + + + + + + + + 10.19.15/24 + + + 10.19.15.25 + + + 10.19.15.255 + + + 10 + + + + + + + + gre + + + up + + + up + + + 10 + + + 8 + + + 11 + + + GRE + + + GRE + + + Unlimited + + + Unlimited + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + ipip + + + up + + + up + + + 11 + + + 9 + + + 12 + + + IPIP + + + IP-over-IP + + + Unlimited + + + Unlimited + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + irb + + + up + + + up + + + 152 + + + 505 + + + 155 + + + Ethernet + + + Ethernet + + + 1514 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:dc:60 + + + 64:c3:d6:37:dc:60 + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + irb.4002 + + + 339 + + + 656 + + + 151 + + + [IRB] Routing Instance INFRA-MGNT-CPE-L2 + + + + + + + 0x0 + + + + ENET2 + + + + + 1Gbps + + + + default-switch + + + INFRA-MGNT-CPE-L2 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + 9170 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 184 + + + 11 + + + + + + 0x2 + + + + + + + + + + + + + + 10.102.30/24 + + + 10.102.30.254 + + + 10.102.30.255 + + + 155 + + + + + + multiservice + + + 9170 + + + 185 + + + 11 + + + + 0x2 + + + + + + + __default_arp_policer__ + + + + + + + + jsrv + + + up + + + up + + + 146 + + + 517 + + + 149 + + + Ethernet + + + Ethernet + + + 1514 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:dc:30 + + + 64:c3:d6:37:dc:30 + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + jsrv.1 + + + 326 + + + 518 + + + 135 + + + + + 0x0 + + + + unknown + + + + + 1Gbps + + + + None + + + None + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + 1514 + + + 75000 + + + 75000 + + + 0 + + + 0 + + + 0 + + + 153 + + + 3 + + + + + + + + + + + + + 128/2 + + + 128.0.0.127 + + + 191.255.255.255 + + + 146 + + + + + + + + lo0 + + + up + + + up + + + 6 + + + 6 + + + 7 + + + Loopback + + + Unspecified + + + Unlimited + + + Unspecified + + + Unspecified + + + + + + + + + 0x0 + + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 68948696 + + + 68948696 + + + 1321834 + + + 1321834 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + lo0.0 + + + 322 + + + 16 + + + 131 + + + + + + Unspecified + + + + + + 26004 + + + 26004 + + + 165 + + + 165 + + + + + 26004 + + + 26004 + + + 165 + + + 165 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 144 + + + 0 + + + + + 0x2 + + + + + PROTECT-RE + + + + + + + + + + + Unspecified + + + 10.100.24.50 + + + Unspecified + + + 137 + + + + + + + lo0.16384 + + + 321 + + + 21 + + + 130 + + + + + + Unspecified + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 143 + + + 2 + + + + 0x2 + + + + + + + + Unspecified + + + 127.0.0.1 + + + Unspecified + + + 135 + + + + + + + lo0.16385 + + + 320 + + + 22 + + + 129 + + + + + + Unspecified + + + + + + 68921996 + + + 68921996 + + + 1321651 + + + 1321651 + + + + + 68921996 + + + 68921996 + + + 1321651 + + + 1321651 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 142 + + + 1 + + + + 0x2 + + + + + + + + lsi + + + up + + + up + + + 4 + + + 4 + + + 5 + + + Software-Pseudo + + + LSI + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + lsi.0 + + + 336 + + + 643 + + + 145 + + + + + + + 0x0 + + + + LSI-NULL + + + + + + 1426354 + + + 0 + + + 22259 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 1426354 + + + 0 + + + 22259 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 173 + + + 10 + + + + + + + + iso + + + Unlimited + + + 170 + + + 10 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 169 + + + 10 + + + + + + + + + lsi.1 + + + 337 + + + 668 + + + 146 + + + + + + + + LSI-NULL + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + inet + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 174 + + + 11 + + + + + + + + iso + + + Unlimited + + + 172 + + + 11 + + + + + + + + inet6 + + + Unlimited + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 171 + + + 11 + + + + + + + + + + me0 + + + up + + + up + + + 64 + + + 33 + + + 1 + + + Ethernet + + + Ethernet + + + 1514 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 02:00:ff:00:00:04 + + + 02:00:ff:00:00:04 + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + mtun + + + up + + + up + + + 68 + + + 12 + + + 5 + + + Multicast-GRE + + + GRE + + + Unlimited + + + Unlimited + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pimd + + + up + + + up + + + 26 + + + 11 + + + 130 + + + PIMD + + + PIM-Decapsulator + + + Unlimited + + + Unlimited + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pime + + + up + + + up + + + 25 + + + 10 + + + 129 + + + PIME + + + PIM-Encapsulator + + + Unlimited + + + Unlimited + + + 0 + + + 0 + + + + + + + + 0x0 + + + + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + pip0 + + + up + + + up + + + 151 + + + 503 + + + 154 + + + Ethernet + + + Ethernet + + + 9192 + + + Unspecified + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + 64:c3:d6:37:db:20 + + + 64:c3:d6:37:db:20 + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + pp0 + + + up + + + up + + + 133 + + + 504 + + + 136 + + + PPPoE + + + PPPoE + + + 1532 + + + Unspecified + + + + + + + + 0x0 + + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + Unspecified + + + Unspecified + + + Unspecified + + + + pp0.3221225472 + + + 536870941 + + + 200000029 + + + 1 + + + + + + + PPPoE + + + + + + + SessionUp + + + 1 + + + pop-ory523-123-11 + + + d4:77:98:86:78:80 + + + ge-0/2/3.0 + + + 346 + + + Disable + + + + + + 159238344 + + + 64868952 + + + 1360955 + + + 848179 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 159238344 + + + 0 + + + 64868952 + + + 0 + + + 1360955 + + + 0 + + + 848179 + + + 0 + + + + + 30 + + + 3 + + + 3 + + + + + + Stopped + + + + inet + + + Not-configured + + + + + inet6 + + + Not-configured + + + + + iso + + + Not-configured + + + + + mpls + + + Not-configured + + + + Success + + + Closed + + + + + + inet + + + 1492 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Unspecified + + + Unspecified + + + Unspecified + + + 0 + + + + + + + pp0.3221225473 + + + 536870942 + + + 200000030 + + + 2 + + + + + + + PPPoE + + + + + + + SessionUp + + + 1 + + + pop-ory523-123-11 + + + 2c:4f:52:71:0f:5b + + + ge-0/2/4.0 + + + 347 + + + Disable + + + + + + 4926858551 + + + 44968051970 + + + 33863233 + + + 54102677 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 4926858551 + + + 1488 + + + 44968051970 + + + 720 + + + 33863233 + + + 3 + + + 54102677 + + + 1 + + + + + 30 + + + 3 + + + 3 + + + + + + Stopped + + + + inet + + + Not-configured + + + + + inet6 + + + Not-configured + + + + + iso + + + Not-configured + + + + + mpls + + + Not-configured + + + + Success + + + Closed + + + + + + inet + + + 1500 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Unspecified + + + Unspecified + + + Unspecified + + + 0 + + + + + + + pp0.3221225476 + + + 536870945 + + + 200000033 + + + 5 + + + + + + + PPPoE + + + + + + + SessionUp + + + 1 + + + pop-ory523-123-11 + + + 70:fc:8c:14:d9:85 + + + ge-0/2/5.0 + + + 348 + + + Disable + + + + + + 155549956 + + + 7139861458 + + + 1432214 + + + 38750602 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 155549956 + + + 0 + + + 7139861458 + + + 20240 + + + 1432214 + + + 0 + + + 38750602 + + + 16 + + + + + 30 + + + 3 + + + 3 + + + + + + Stopped + + + + inet + + + Not-configured + + + + + inet6 + + + Not-configured + + + + + iso + + + Not-configured + + + + + mpls + + + Not-configured + + + + Success + + + Closed + + + + + + inet + + + 1500 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Unspecified + + + Unspecified + + + Unspecified + + + 0 + + + + + + + pp0.3221225477 + + + 536870949 + + + 200000037 + + + 9 + + + + + + + PPPoE + + + + + + + SessionUp + + + 2 + + + pop-ory523-123-11 + + + 70:fc:8c:42:db:f9 + + + ge-0/2/2.0 + + + 345 + + + Disable + + + + + + 47649225 + + + 44867331 + + + 1104196 + + + 1103885 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 47649225 + + + 0 + + + 44867331 + + + 0 + + + 1104196 + + + 0 + + + 1103885 + + + 0 + + + + + 30 + + + 3 + + + 3 + + + + + + Stopped + + + + inet + + + Not-configured + + + + + inet6 + + + Not-configured + + + + + iso + + + Not-configured + + + + + mpls + + + Not-configured + + + + Success + + + Closed + + + + + + inet + + + 1500 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Unspecified + + + Unspecified + + + Unspecified + + + 0 + + + + + + + pp0.3221225478 + + + 536870951 + + + 200000039 + + + 11 + + + + + + + PPPoE + + + + + + + SessionUp + + + 1 + + + pop-ory523-123-11 + + + a0:e0:af:ba:a7:4f + + + ge-0/3/3.0 + + + 357 + + + Disable + + + + + + 293196642 + + + 2177178520 + + + 5409187 + + + 4424274 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 293196642 + + + 0 + + + 2177178520 + + + 0 + + + 5409187 + + + 0 + + + 4424274 + + + 0 + + + + + 30 + + + 3 + + + 3 + + + + + + Stopped + + + + inet + + + Not-configured + + + + + inet6 + + + Not-configured + + + + + iso + + + Not-configured + + + + + mpls + + + Not-configured + + + + Success + + + Closed + + + + + + inet + + + 1500 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + Unspecified + + + Unspecified + + + Unspecified + + + 0 + + + + + + + + rbeb + + + up + + + up + + + 155 + + + 519 + + + 158 + + + Software-Pseudo + + + Remote-BEB + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + tap + + + up + + + up + + + 12 + + + 7 + + + 13 + + + Software-Pseudo + + + Interface-Specific + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Unspecified + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + vtep + + + up + + + up + + + 153 + + + 520 + + + 156 + + + Software-Pseudo + + + VxLAN-Tunnel-Endpoint + + + Unlimited + + + Unlimited + + + Unspecified + + + + + + + + 0x0 + + + + + + + Full-Duplex + + + + + + Unspecified + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + unsuppressed + + + Unspecified + + + Unspecified + + + Unspecified + + + Never + + + Never + + + + 0 + + + 0 + + + 0 + + + 0 + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/data/interfaces_optical.netconf b/tests/network/juniper/mseries/netconf/data/interfaces_optical.netconf new file mode 100644 index 000000000..67c8b3824 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/interfaces_optical.netconf @@ -0,0 +1,1378 @@ + + + + ge-0/2/2 + + + + 28.034 + + + 0.3160 + + + -5.00 + + + 37 degrees C / 99 degrees F + + + 3.2490 + + + 0.1890 + + + -7.24 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 85.000 + + + 1.000 + + + 80.000 + + + 2.000 + + + 0.7940 + + + -1.00 + + + 0.0790 + + + -11.02 + + + 0.6300 + + + -2.01 + + + 0.1000 + + + -10.00 + + + 95 degrees C / 203 degrees F + + + -45 degrees C / -49 degrees F + + + 90 degrees C / 194 degrees F + + + -40 degrees C / -40 degrees F + + + 3.599 + + + 3.000 + + + 3.500 + + + 3.099 + + + 0.6309 + + + -2.00 + + + 0.0025 + + + -26.02 + + + 0.5011 + + + -3.00 + + + 0.0031 + + + -25.09 + + + + + + ge-0/2/3 + + + + 26.322 + + + 0.3240 + + + -4.89 + + + 41 degrees C / 106 degrees F + + + 3.3150 + + + 0.3352 + + + -4.75 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 85.000 + + + 1.000 + + + 80.000 + + + 2.000 + + + 0.7940 + + + -1.00 + + + 0.0790 + + + -11.02 + + + 0.6300 + + + -2.01 + + + 0.1000 + + + -10.00 + + + 95 degrees C / 203 degrees F + + + -45 degrees C / -49 degrees F + + + 90 degrees C / 194 degrees F + + + -40 degrees C / -40 degrees F + + + 3.599 + + + 3.000 + + + 3.500 + + + 3.099 + + + 0.6309 + + + -2.00 + + + 0.0025 + + + -26.02 + + + 0.5011 + + + -3.00 + + + 0.0031 + + + -25.09 + + + + + + ge-0/2/4 + + + + 23.540 + + + 0.3120 + + + -5.06 + + + 38 degrees C / 100 degrees F + + + 3.2750 + + + 0.1023 + + + -9.90 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 85.000 + + + 1.000 + + + 80.000 + + + 2.000 + + + 0.7940 + + + -1.00 + + + 0.0790 + + + -11.02 + + + 0.6310 + + + -2.00 + + + 0.1000 + + + -10.00 + + + 95 degrees C / 203 degrees F + + + -45 degrees C / -49 degrees F + + + 90 degrees C / 194 degrees F + + + -40 degrees C / -40 degrees F + + + 3.600 + + + 3.000 + + + 3.500 + + + 3.100 + + + 0.6310 + + + -2.00 + + + 0.0025 + + + -26.02 + + + 0.5012 + + + -3.00 + + + 0.0032 + + + -24.95 + + + + + + ge-0/2/5 + + + + 28.416 + + + 0.2640 + + + -5.78 + + + 39 degrees C / 102 degrees F + + + 3.2250 + + + 0.2340 + + + -6.31 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 90.000 + + + 2.000 + + + 80.000 + + + 4.000 + + + 0.6310 + + + -2.00 + + + 0.1000 + + + -10.00 + + + 0.5010 + + + -3.00 + + + 0.1250 + + + -9.03 + + + 85 degrees C / 185 degrees F + + + -5 degrees C / 23 degrees F + + + 75 degrees C / 167 degrees F + + + 0 degrees C / 32 degrees F + + + 3.570 + + + 3.030 + + + 3.500 + + + 3.070 + + + 0.6310 + + + -2.00 + + + 0.0063 + + + -22.01 + + + 0.5012 + + + -3.00 + + + 0.0079 + + + -21.02 + + + + + + ge-0/3/3 + + + + 22.256 + + + 0.0730 + + + -11.37 + + + 36 degrees C / 96 degrees F + + + 3.2880 + + + 0.0294 + + + -15.32 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 85.000 + + + 1.000 + + + 80.000 + + + 2.000 + + + 0.2510 + + + -6.00 + + + 0.0200 + + + -16.99 + + + 0.1990 + + + -7.01 + + + 0.0250 + + + -16.02 + + + 95 degrees C / 203 degrees F + + + -45 degrees C / -49 degrees F + + + 90 degrees C / 194 degrees F + + + -40 degrees C / -40 degrees F + + + 3.600 + + + 3.000 + + + 3.500 + + + 3.100 + + + 0.6310 + + + -2.00 + + + 0.0003 + + + -35.23 + + + 0.5012 + + + -3.00 + + + 0.0003 + + + -35.23 + + + + + + xe-2/0/0 + + + + 35.584 + + + 0.5270 + + + -2.78 + + + 44 degrees C / 111 degrees F + + + 3.2160 + + + 0.1507 + + + -8.22 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 80.000 + + + 0.000 + + + 70.000 + + + 0.000 + + + 1.4120 + + + 1.50 + + + 0.1250 + + + -9.03 + + + 1.1220 + + + 0.50 + + + 0.1580 + + + -8.01 + + + 75 degrees C / 167 degrees F + + + -10 degrees C / 14 degrees F + + + 70 degrees C / 158 degrees F + + + -5 degrees C / 23 degrees F + + + 3.600 + + + 3.000 + + + 3.500 + + + 3.100 + + + 1.4125 + + + 1.50 + + + 0.0251 + + + -16.00 + + + 1.1220 + + + 0.50 + + + 0.0316 + + + -15.00 + + + + + + xe-2/0/1 + + + + 36.674 + + + 0.4020 + + + -3.96 + + + 44 degrees C / 111 degrees F + + + 3.2450 + + + 0.0675 + + + -11.71 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 80.000 + + + 0.000 + + + 70.000 + + + 0.000 + + + 1.4120 + + + 1.50 + + + 0.1250 + + + -9.03 + + + 1.1220 + + + 0.50 + + + 0.1580 + + + -8.01 + + + 75 degrees C / 167 degrees F + + + -10 degrees C / 14 degrees F + + + 70 degrees C / 158 degrees F + + + -5 degrees C / 23 degrees F + + + 3.600 + + + 3.000 + + + 3.500 + + + 3.100 + + + 1.4125 + + + 1.50 + + + 0.0251 + + + -16.00 + + + 1.1220 + + + 0.50 + + + 0.0316 + + + -15.00 + + + + + + xe-2/0/2 + + + + 36.830 + + + 0.5740 + + + -2.41 + + + 36 degrees C / 97 degrees F + + + 3.3000 + + + 0.5445 + + + -2.64 + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + off + + + 90.000 + + + 5.000 + + + 80.000 + + + 7.000 + + + 1.9950 + + + 3.00 + + + 0.1580 + + + -8.01 + + + 1.7780 + + + 2.50 + + + 0.1770 + + + -7.52 + + + 80 degrees C / 176 degrees F + + + -10 degrees C / 14 degrees F + + + 75 degrees C / 167 degrees F + + + -5 degrees C / 23 degrees F + + + 3.600 + + + 3.000 + + + 3.500 + + + 3.100 + + + 1.0000 + + + 0.00 + + + 0.0178 + + + -17.50 + + + 0.8913 + + + -0.50 + + + 0.0200 + + + -16.99 + + + + \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/data/ldp.netconf b/tests/network/juniper/mseries/netconf/data/ldp.netconf new file mode 100644 index 000000000..01ffd04f6 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/ldp.netconf @@ -0,0 +1,261 @@ + + + 10.0.0.2/32 + Transit + 907456 + 75821266 + No + + + 10.0.0.2/32 + Ingress + 0 + 0 + No + + + 10.0.0.4/32 + Transit + 0 + 0 + No + + + 10.0.0.4/32 + Ingress + 16216 + 649426 + No + + + 10.0.0.6/32 + Transit + 434164 + 20975491 + No + + + 10.0.0.6/32 + Ingress + 24099 + 1007913 + No + + + 10.0.0.7/32 + Transit + 270325 + 13372701 + No + + + 10.0.0.7/32 + Ingress + 118606 + 4507894 + No + + + + + 10.0.0.2 + Operational + Open + 29 + DU + 10.0.0.1:0--10.0.0.2:0 + 3 + Passive + 4096 + 30 + 1 + + configured-tunneled + + 10 + 1 + 10.0.0.1 + 10.0.0.2 + 5w6d 05:47:59 + + none + + + none + + + disabled + + + none + + MD5 (10.0.0.0/24) + disabled + enabled + disabled + enabled + 120000 + 240000 + Downstream unsolicited + Downstream unsolicited + Downstream unsolicited + disabled + Not in sync + + 10.0.0.2 + 10.18.0.217 + + + + 10.0.0.4 + Operational + Open + 28 + DU + 10.0.0.1:0--10.0.0.4:0 + 3 + Passive + 4096 + 30 + 2 + + discovered + configured-layer2 + + 10 + 1 + 10.0.0.1 + 10.0.0.4 + 5w6d 05:49:58 + + none + + + none + + + disabled + + + none + + MD5 (10.0.0.0/24) + disabled + enabled + disabled + enabled + 120000 + 240000 + Downstream unsolicited + Downstream unsolicited + Downstream unsolicited + disabled + Not in sync + + 10.0.0.4 + 10.1.1.6 + 10.18.0.215 + + + + 10.0.0.6 + Operational + Open + 29 + DU + 10.0.0.1:0--10.0.0.6:0 + 3 + Passive + 4096 + 30 + 2 + + discovered + configured-layer2 + + 10 + 1 + 10.0.0.1 + 10.0.0.6 + 4w1d 21:50:40 + + none + + + none + + + disabled + + + none + + MD5 (10.0.0.0/24) + disabled + enabled + disabled + enabled + 120000 + 240000 + Downstream unsolicited + Downstream unsolicited + Downstream unsolicited + disabled + Not in sync + + 10.0.0.6 + 10.1.1.14 + + + + 10.0.0.7 + Operational + Open + 23 + DU + 10.0.0.1:0--10.0.0.7:0 + 3 + Passive + 4096 + 30 + 2 + + discovered + configured-layer2 + + 10 + 1 + 10.0.0.1 + 10.0.0.7 + 5w2d 00:02:06 + + none + + + none + + + disabled + + + none + + MD5 (10.0.0.0/24) + disabled + enabled + disabled + enabled + 120000 + 240000 + Downstream unsolicited + Downstream unsolicited + Downstream unsolicited + disabled + Not in sync + + 10.0.0.7 + 10.1.1.18 + + + diff --git a/tests/network/juniper/mseries/netconf/data/lsp.netconf b/tests/network/juniper/mseries/netconf/data/lsp.netconf new file mode 100644 index 000000000..9ed14a609 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/lsp.netconf @@ -0,0 +1,161 @@ + + + Ingress + 2 + + + 10.0.0.2 + 10.0.0.1 + Up + 0 + FROM-MX1-TO-MX2 + 2 + + (primary) + + Static Configured + Penultimate hop popping + random + + + Packet + Packet + IPv4 + + + Disabled + + Primary + + + Up + 7 + 0 + 900 + 180 + 0 + 0 + Reoptimization in 817 second(s). + + Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 10) + + + +
10.1.1.5
+ S +
+
+ + Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID): + 10.0.0.2(flag=0x20) 10.1.1.5(Label=3) + +
+
+
+ + + 10.0.0.3 + 10.0.0.1 + Dn + 0 + FROM-MX1-TO-MX3 + 3 + + (none) + + Static Configured + Penultimate hop popping + random + + + Packet + Packet + IPv4 + + + Disabled + + Primary + + Dn + 7 + 0 + 900 + 180 + 0 + 0 + Reoptimization in 29 second(s). + Will be enqueued for recomputation in 15 second(s). + + 1 + + CSPF failed: no route toward 10.0.0.3[2 times, first Apr 25 09:12:34.065] + + + + + + 2 + 1 + 1 +
+ + Egress + 1 + + 10.0.0.1 + 10.0.0.2 + Up + 0 + FROM-MX2-TO-MX1 + Primary + - + - + - + - + 1 + SE + 3 + - + 4929 + Thu Apr 25 09:14:09 2024 + + rate 0bps size 0bps peak Infbps m 20 M 9192 + 7 + 10156 + 0 + + + Protection down + + 10.1.1.5 + ae1.0 + 3 + + received MTU 9174 + + localclient + + + localclient + Yes + + +
10.1.1.5
+
10.0.0.2
+ +
+
+ 1 + 1 + 0 +
+ + Transit + 0 + 0 + 0 + 0 + +
+ diff --git a/tests/network/juniper/mseries/netconf/data/memory.netconf b/tests/network/juniper/mseries/netconf/data/memory.netconf new file mode 100644 index 000000000..3754aac0b --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/memory.netconf @@ -0,0 +1,87 @@ + + + 0 + master + master (default) + OK + 29 degrees C / 84 degrees F + 48 degrees C / 118 degrees F + 49100 MB + (49152 MB installed) + 5 + 3 + 0 + 3 + 0 + 94 + 2 + 0 + 2 + 0 + 96 + 2 + 0 + 2 + 0 + 96 + 2 + 0 + 2 + 0 + 96 + RE-S-2X00x6 + EAAF6591 + 2024-04-25 09:06:32 CEST + 40 days, 4 hours, 58 minutes, 16 seconds + 0x2000:hypervisor reboot + 0.49 + 0.36 + 0.33 + + + + + 0 + Online + 44 + 16 + 0 + 15 + 15 + 15 + 3584 + 9 + 25 + + + 1 + Empty + + + 2 + Empty + + + 3 + Empty + + + 4 + Empty + + + 5 + Online + 35 + 1 + 0 + 1 + 1 + 1 + 32768 + 16 + 0 + + + diff --git a/tests/network/juniper/mseries/netconf/data/ospf.netconf b/tests/network/juniper/mseries/netconf/data/ospf.netconf new file mode 100644 index 000000000..cd4888fcf --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/ospf.netconf @@ -0,0 +1,38 @@ + + + 10.100.25.119 + ae0.0 + Full + 10.100.24.5 + 128 + 39 + 0.0.0.0 + 0x52 + 0.0.0.0 + 0.0.0.0 + + 4w3d 06:09:53 + + + 4w3d 06:09:44 + + + + 10.100.25.121 + ae1.0 + Full + 10.100.24.6 + 128 + 32 + 0.0.0.0 + 0x52 + 0.0.0.0 + 0.0.0.0 + + 4w3d 06:09:53 + + + 4w3d 06:09:52 + + + \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/data/rsvp.netconf b/tests/network/juniper/mseries/netconf/data/rsvp.netconf new file mode 100644 index 000000000..fbe06f503 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/rsvp.netconf @@ -0,0 +1,46 @@ + + + Ingress + 1 + + 10.0.0.2 + 10.0.0.1 + Up + 0 + 1 + SE + - + 3 + FROM-MX1-TO-MX2 + + 1 + 1 + 0 + + + Egress + 1 + + 10.0.0.1 + 10.0.0.2 + Up + 0 + 1 + SE + 3 + - + FROM-MX2-TO-MX1 + + 1 + 1 + 0 + + + Transit + 0 + 0 + 0 + 0 + + + diff --git a/tests/network/juniper/mseries/netconf/data/services_rpm.netconf b/tests/network/juniper/mseries/netconf/data/services_rpm.netconf new file mode 100644 index 000000000..9427076f9 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/data/services_rpm.netconf @@ -0,0 +1,552 @@ + + + DEBUG-TEST + TO-POP + 2.2.2.2 + 1.1.1.1 + icmp-ping + 10 + EID-TEST + + 10 + + + Response received + + Thu Jun 13 09:41:05 2024 + + + Thu Jun 13 09:41:05 2024 + + No hardware timestamps + 2329 + 1442 + 1278 + + + + current test + 8 + 8 + 0.000000 + + + Round trip time + 8 + + 887 + + + 4524 + + + 1743 + + + 3637 + + + 1166 + + + 13943 + + + + + + Positive round trip jitter + 4 + + 68 + + + 1664 + + + 873 + + + 1596 + + + 691 + + + 3490 + + + + + + Negative round trip jitter + 4 + + 22 + + + 2968 + + + 1005 + + + 2946 + + + 1192 + + + 4021 + + + + + + + + last test + 10 + 10 + 0.000000 + + + Thu Jun 13 09:40:43 2024 + + + + + Round trip time + 10 + + 818 + + + 6822 + + + 2455 + + + 6004 + + + 2237 + + + 24546 + + + + + + Positive round trip jitter + 6 + + 31 + + + 4250 + + + 1097 + + + 4219 + + + 1501 + + + 6580 + + + + + + Negative round trip jitter + 4 + + 99 + + + 3962 + + + 1170 + + + 3863 + + + 1620 + + + 4678 + + + + + + + + all tests + 29988 + 29988 + 0.000000 + + + Round trip time + 29988 + + 598 + + + 46340 + + + 1800 + + + 45742 + + + 2723 + + + 53982308 + + + + + + Positive round trip jitter + 14827 + + 0 + + + 45429 + + + 1415 + + + 45429 + + + 3341 + + + 20980239 + + + + + + Negative round trip jitter + 15160 + + 1 + + + 44527 + + + 1384 + + + 44526 + + + 3331 + + + 20980087 + + + + + + 0 + 0 + 0 + 1 + 1 + + + DEBUG-TEST + TEST2 + 4.4.4.4 + 3.3.3.3 + tcp-ping + 10 + EID-TEST + + 10 + + + Response received + + Thu Jun 13 09:41:05 2024 + + + Thu Jun 13 09:41:05 2024 + + No hardware timestamps + 1329 + 1442 + 1278 + + + + current test + 8 + 8 + 0.000000 + + + Round trip time + 8 + + 887 + + + 4524 + + + 1743 + + + 3637 + + + 1166 + + + 13943 + + + + + + Positive round trip jitter + 4 + + 68 + + + 1664 + + + 873 + + + 1596 + + + 691 + + + 3490 + + + + + + Negative round trip jitter + 4 + + 22 + + + 2968 + + + 1005 + + + 2946 + + + 1192 + + + 4021 + + + + + + + + last test + 10 + 10 + 0.000000 + + + Thu Jun 13 09:40:43 2024 + + + + + Round trip time + 10 + + 818 + + + 6822 + + + 4213 + + + 3002 + + + 4111 + + + 24546 + + + + + + Positive round trip jitter + 6 + + 31 + + + 4250 + + + 2003 + + + 3215 + + + 2765 + + + 6580 + + + + + + Negative round trip jitter + 4 + + 99 + + + 5032 + + + 984 + + + 5462 + + + 3056 + + + 4678 + + + + + + + + all tests + 29988 + 29988 + 0.000000 + + + Round trip time + 29988 + + 598 + + + 46340 + + + 1800 + + + 45742 + + + 2723 + + + 53982308 + + + + + + Positive round trip jitter + 14827 + + 0 + + + 45429 + + + 1415 + + + 45429 + + + 3341 + + + 20980239 + + + + + + Negative round trip jitter + 15160 + + 1 + + + 44527 + + + 1384 + + + 44526 + + + 3331 + + + 20980087 + + + + + + 0 + 0 + 0 + 1 + 1 + + diff --git a/tests/network/juniper/mseries/netconf/disks.robot b/tests/network/juniper/mseries/netconf/disks.robot new file mode 100644 index 000000000..c7a521929 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/disks.robot @@ -0,0 +1,55 @@ +*** Settings *** +Documentation Juniper Mseries Netconf Disks + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=disks + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + ... --sshcli-option="-f=${CURDIR}${/}data${/}disk.netconf" + +*** Test Cases *** +Disk ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 2 --filter-name=/.mount/mfs + ... OK: Disk '/.mount/mfs' space usage total: 7.99 GB used: 1.29 MB (0.00%) free: 7.99 GB (100.00%) | '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 + ... 3 --warning-space-usage=1234567890 + ... WARNING: Disk '/.mount' space usage total: 9.97 GB used: 2.19 GB (24.00%) free: 6.98 GB (76.00%) - Disk '/.mount/var' space usage total: 14.09 GB used: 6.88 GB (53.00%) free: 6.08 GB (47.00%) | '/.mount#disk.space.usage.bytes'=2353858560B;0:1234567890;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;0:1234567890;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;0:1234567890;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;0:1234567890;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;0:1234567890;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 4 --warning-space-usage=9876543210 + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;0:9876543210;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;0:9876543210;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;0:9876543210;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;0:9876543210;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;0:9876543210;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 5 --critical-space-usage=1234567890 + ... CRITICAL: Disk '/.mount' space usage total: 9.97 GB used: 2.19 GB (24.00%) free: 6.98 GB (76.00%) - Disk '/.mount/var' space usage total: 14.09 GB used: 6.88 GB (53.00%) free: 6.08 GB (47.00%) | '/.mount#disk.space.usage.bytes'=2353858560B;;0:1234567890;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;0:1234567890;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;0:1234567890;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;0:1234567890;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;0:1234567890;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 6 --critical-space-usage=9876543210 + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;;0:9876543210;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;0:9876543210;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;0:9876543210;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;0:9876543210;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;0:9876543210;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 7 --warning-space-usage-free=1234567890 + ... WARNING: Disk '/.mount' space usage total: 9.97 GB used: 2.19 GB (24.00%) free: 6.98 GB (76.00%) - Disk '/.mount/mfs' space usage total: 7.99 GB used: 1.29 MB (0.00%) free: 7.99 GB (100.00%) - Disk '/.mount/tmp' space usage total: 41.69 GB used: 268.00 KB (0.00%) free: 41.69 GB (100.00%) - Disk '/.mount/var' space usage total: 14.09 GB used: 6.88 GB (53.00%) free: 6.08 GB (47.00%) | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;0:1234567890;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;0:1234567890;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;0:1234567890;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;0:1234567890;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;0:1234567890;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 8 --warning-space-usage-free=98765432109 + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;0:98765432109;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;0:98765432109;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;0:98765432109;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;0:98765432109;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;0:98765432109;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 9 --critical-space-usage-free=1234567890 + ... CRITICAL: Disk '/.mount' space usage total: 9.97 GB used: 2.19 GB (24.00%) free: 6.98 GB (76.00%) - Disk '/.mount/mfs' space usage total: 7.99 GB used: 1.29 MB (0.00%) free: 7.99 GB (100.00%) - Disk '/.mount/tmp' space usage total: 41.69 GB used: 268.00 KB (0.00%) free: 41.69 GB (100.00%) - Disk '/.mount/var' space usage total: 14.09 GB used: 6.88 GB (53.00%) free: 6.08 GB (47.00%) | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;0:1234567890;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;0:1234567890;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;0:1234567890;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;0:1234567890;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;0:1234567890;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 10 --critical-space-usage-free=98765432109 + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;0:98765432109;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;0:98765432109;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;0:98765432109;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;0:98765432109;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;0:98765432109;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;;0;100 + ... 11 --warning-space-usage-prct=20 + ... WARNING: Disk '/.mount' space usage total: 9.97 GB used: 2.19 GB (24.00%) free: 6.98 GB (76.00%) - Disk '/.mount/var' space usage total: 14.09 GB used: 6.88 GB (53.00%) free: 6.08 GB (47.00%) | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;0:20;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;0:20;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;0:20;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;0:20;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;0:20;;0;100 + ... 12 --warning-space-usage-prct=60 + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;0:60;;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;0:60;;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;0:60;;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;0:60;;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;0:60;;0;100 + ... 13 --critical-space-usage-prct=20 + ... CRITICAL: Disk '/.mount' space usage total: 9.97 GB used: 2.19 GB (24.00%) free: 6.98 GB (76.00%) - Disk '/.mount/var' space usage total: 14.09 GB used: 6.88 GB (53.00%) free: 6.08 GB (47.00%) | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;0:20;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;0:20;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;0:20;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;0:20;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;0:20;0;100 + ... 14 --critical-space-usage-prct=60 + ... OK: All disks are ok | '/.mount#disk.space.usage.bytes'=2353858560B;;;0;10701788160 '/.mount#disk.space.free.bytes'=7491786752B;;;0;10701788160 '/.mount#disk.space.usage.percentage'=24.00%;;0:60;0;100 '/.mount/config#disk.space.usage.bytes'=192512B;;;0;467611648 '/.mount/config#disk.space.free.bytes'=430010368B;;;0;467611648 '/.mount/config#disk.space.usage.percentage'=0.00%;;0:60;0;100 '/.mount/mfs#disk.space.usage.bytes'=1347584B;;;0;8580919296 '/.mount/mfs#disk.space.free.bytes'=8579571712B;;;0;8580919296 '/.mount/mfs#disk.space.usage.percentage'=0.00%;;0:60;0;100 '/.mount/tmp#disk.space.usage.bytes'=274432B;;;0;44762726400 '/.mount/tmp#disk.space.free.bytes'=44762451968B;;;0;44762726400 '/.mount/tmp#disk.space.usage.percentage'=0.00%;;0:60;0;100 '/.mount/var#disk.space.usage.bytes'=7386382336B;;;0;15128137728 '/.mount/var#disk.space.free.bytes'=6531506176B;;;0;15128137728 '/.mount/var#disk.space.usage.percentage'=53.00%;;0:60;0;100 diff --git a/tests/network/juniper/mseries/netconf/get_data b/tests/network/juniper/mseries/netconf/get_data new file mode 100755 index 000000000..eca3ab077 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/get_data @@ -0,0 +1,14 @@ +#!/bin/bash + +# Read the -f option for the file path and ignore the others options +while getopts "f:" opt; do + case $opt in + f) + file_path="$OPTARG" + ;; + *) + ;; + esac +done + +cat $file_path \ No newline at end of file diff --git a/tests/network/juniper/mseries/netconf/hardware.robot b/tests/network/juniper/mseries/netconf/hardware.robot new file mode 100644 index 000000000..49f570249 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/hardware.robot @@ -0,0 +1,51 @@ +*** Settings *** +Documentation Juniper Mseries Netconf Hardware + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=hardware + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + +*** Test Cases *** +Hardware ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... --sshcli-option="-f=${CURDIR}${/}data${/}hardware.netconf" + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 --component=fan + ... OK: All 6 components are ok [6/6 fans]. | 'Top Rear Fan#hardware.fan.speed.rpm'=3930rpm;;;0; 'Bottom Rear Fan#hardware.fan.speed.rpm'=3810rpm;;;0; 'Top Middle Fan#hardware.fan.speed.rpm'=3810rpm;;;0; 'Bottom Middle Fan#hardware.fan.speed.rpm'=3780rpm;;;0; 'Top Front Fan#hardware.fan.speed.rpm'=3870rpm;;;0; 'Bottom Front Fan#hardware.fan.speed.rpm'=3870rpm;;;0; 'hardware.fan.count'=6;;;; + ... 2 --component=pic + ... OK: All 3 components are ok [3/3 pic]. | 'hardware.pic.count'=3;;;; + ... 3 --filter=temperature + ... OK: All 22 components are ok [1/1 afeb, 6/6 fans, 6/6 fpc, 2/2 mic, 3/3 pic, 4/4 psus]. | 'Top Rear Fan#hardware.fan.speed.rpm'=3930rpm;;;0; 'Bottom Rear Fan#hardware.fan.speed.rpm'=3810rpm;;;0; 'Top Middle Fan#hardware.fan.speed.rpm'=3810rpm;;;0; 'Bottom Middle Fan#hardware.fan.speed.rpm'=3780rpm;;;0; 'Top Front Fan#hardware.fan.speed.rpm'=3870rpm;;;0; 'Bottom Front Fan#hardware.fan.speed.rpm'=3870rpm;;;0; 'PEM 0#hardware.psu.dc.output.load.percentage'=13%;;;0;100 'PEM 1#hardware.psu.dc.output.load.percentage'=4%;;;0;100 'PEM 2#hardware.psu.dc.output.load.percentage'=11%;;;0;100 'PEM 3#hardware.psu.dc.output.load.percentage'=2%;;;0;100 'hardware.afeb.count'=1;;;; 'hardware.fan.count'=6;;;; 'hardware.fpc.count'=6;;;; 'hardware.mic.count'=2;;;; 'hardware.pic.count'=3;;;; 'hardware.psu.count'=4;;;; + ... 4 --component=fan --warning='fan,.*,3850' + ... WARNING: Fan 'Top Rear Fan' speed is 3930 rpm - Fan 'Top Front Fan' speed is 3870 rpm - Fan 'Bottom Front Fan' speed is 3870 rpm | 'Top Rear Fan#hardware.fan.speed.rpm'=3930rpm;0:3850;;0; 'Bottom Rear Fan#hardware.fan.speed.rpm'=3810rpm;0:3850;;0; 'Top Middle Fan#hardware.fan.speed.rpm'=3810rpm;0:3850;;0; 'Bottom Middle Fan#hardware.fan.speed.rpm'=3780rpm;0:3850;;0; 'Top Front Fan#hardware.fan.speed.rpm'=3870rpm;0:3850;;0; 'Bottom Front Fan#hardware.fan.speed.rpm'=3870rpm;0:3850;;0; 'hardware.fan.count'=6;;;; + ... 5 --component=fan --critical='fan,.*,3900' + ... CRITICAL: Fan 'Top Rear Fan' speed is 3930 rpm | 'Top Rear Fan#hardware.fan.speed.rpm'=3930rpm;;0:3900;0; 'Bottom Rear Fan#hardware.fan.speed.rpm'=3810rpm;;0:3900;0; 'Top Middle Fan#hardware.fan.speed.rpm'=3810rpm;;0:3900;0; 'Bottom Middle Fan#hardware.fan.speed.rpm'=3780rpm;;0:3900;0; 'Top Front Fan#hardware.fan.speed.rpm'=3870rpm;;0:3900;0; 'Bottom Front Fan#hardware.fan.speed.rpm'=3870rpm;;0:3900;0; 'hardware.fan.count'=6;;;; + +Hardware no fan ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... --sshcli-option="-f=${CURDIR}${/}data${/}hardware_no_fan.netconf" + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 --component=fan --no-component=unknown + ... UNKNOWN: No components are checked. + diff --git a/tests/network/juniper/mseries/netconf/interfaces.robot b/tests/network/juniper/mseries/netconf/interfaces.robot new file mode 100644 index 000000000..03f4ebda3 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/interfaces.robot @@ -0,0 +1,75 @@ +*** Settings *** +Documentation Juniper Mseries Netconf Interfaces + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=interfaces + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + +*** Test Cases *** +Interface ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... --sshcli-option="-f=${CURDIR}${/}data${/}interfaces.netconf" + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... CRITICAL: Interface 'ge-0/2/0' status : down (admin: up) - Interface 'ge-0/2/0.199' status : down (admin: up) - Interface 'ge-0/2/0.32767' status : down (admin: up) - Interface 'ge-0/2/7' status : down (admin: up) - Interface 'ge-0/2/8' status : down (admin: up) - Interface 'ge-0/2/9' status : down (admin: up) - Interface 'ge-0/3/0' status : down (admin: up) - Interface 'ge-0/3/0.0' status : down (admin: up) - Interface 'ge-0/3/1' status : down (admin: up) - Interface 'ge-0/3/1.2301' status : down (admin: up) - Interface 'ge-0/3/1.32767' status : down (admin: up) - Interface 'ge-0/3/1.4002' status : down (admin: up) - Interface 'ge-0/3/4' status : down (admin: up) - Interface 'ge-0/3/4.118' status : down (admin: up) - Interface 'ge-0/3/4.32767' status : down (admin: up) - Interface 'ge-0/3/5' status : down (admin: up) - Interface 'ge-0/3/5.32767' status : down (admin: up) - Interface 'ge-0/3/5.4002' status : down (admin: up) - Interface 'ge-0/3/6' status : down (admin: up) - Interface 'ge-0/3/7' status : down (admin: up) - Interface 'ge-0/3/8' status : down (admin: up) - Interface 'ge-0/3/9' status : down (admin: up) - Interface 'xe-2/0/3' status : down (admin: up) - Interface 'xe-2/0/3.16386' status : down (admin: up) + ... 2 --add-status + ... CRITICAL: Interface 'ge-0/2/0' status : down (admin: up) - Interface 'ge-0/2/0.199' status : down (admin: up) - Interface 'ge-0/2/0.32767' status : down (admin: up) - Interface 'ge-0/2/7' status : down (admin: up) - Interface 'ge-0/2/8' status : down (admin: up) - Interface 'ge-0/2/9' status : down (admin: up) - Interface 'ge-0/3/0' status : down (admin: up) - Interface 'ge-0/3/0.0' status : down (admin: up) - Interface 'ge-0/3/1' status : down (admin: up) - Interface 'ge-0/3/1.2301' status : down (admin: up) - Interface 'ge-0/3/1.32767' status : down (admin: up) - Interface 'ge-0/3/1.4002' status : down (admin: up) - Interface 'ge-0/3/4' status : down (admin: up) - Interface 'ge-0/3/4.118' status : down (admin: up) - Interface 'ge-0/3/4.32767' status : down (admin: up) - Interface 'ge-0/3/5' status : down (admin: up) - Interface 'ge-0/3/5.32767' status : down (admin: up) - Interface 'ge-0/3/5.4002' status : down (admin: up) - Interface 'ge-0/3/6' status : down (admin: up) - Interface 'ge-0/3/7' status : down (admin: up) - Interface 'ge-0/3/8' status : down (admin: up) - Interface 'ge-0/3/9' status : down (admin: up) - Interface 'xe-2/0/3' status : down (admin: up) - Interface 'xe-2/0/3.16386' status : down (admin: up) + ... 3 --add-traffic + ... OK: All interfaces are ok + ... 4 --add-errors + ... OK: All interfaces are ok + ... 5 --add-extra-errors + ... OK: All interfaces are ok + ... 6 --warning-status='\\\%{opstatus} ne "up"' --critical-status='' + ... WARNING: Interface 'ge-0/2/0' status : down (admin: up) - Interface 'ge-0/2/0.199' status : down (admin: up) - Interface 'ge-0/2/0.32767' status : down (admin: up) - Interface 'ge-0/2/7' status : down (admin: up) - Interface 'ge-0/2/8' status : down (admin: up) - Interface 'ge-0/2/9' status : down (admin: up) - Interface 'ge-0/3/0' status : down (admin: up) - Interface 'ge-0/3/0.0' status : down (admin: up) - Interface 'ge-0/3/1' status : down (admin: up) - Interface 'ge-0/3/1.2301' status : down (admin: up) - Interface 'ge-0/3/1.32767' status : down (admin: up) - Interface 'ge-0/3/1.4002' status : down (admin: up) - Interface 'ge-0/3/2' status : down (admin: down) - Interface 'ge-0/3/2.2301' status : down (admin: down) - Interface 'ge-0/3/2.32767' status : down (admin: down) - Interface 'ge-0/3/2.4002' status : down (admin: down) - Interface 'ge-0/3/4' status : down (admin: up) - Interface 'ge-0/3/4.118' status : down (admin: up) - Interface 'ge-0/3/4.32767' status : down (admin: up) - Interface 'ge-0/3/5' status : down (admin: up) - Interface 'ge-0/3/5.32767' status : down (admin: up) - Interface 'ge-0/3/5.4002' status : down (admin: up) - Interface 'ge-0/3/6' status : down (admin: up) - Interface 'ge-0/3/7' status : down (admin: up) - Interface 'ge-0/3/8' status : down (admin: up) - Interface 'ge-0/3/9' status : down (admin: up) - Interface 'xe-2/0/3' status : down (admin: up) - Interface 'xe-2/0/3.16386' status : down (admin: up) + ... 7 --critical-status='\\\%{opstatus} eq "down"' + ... CRITICAL: Interface 'ge-0/2/0' status : down (admin: up) - Interface 'ge-0/2/0.199' status : down (admin: up) - Interface 'ge-0/2/0.32767' status : down (admin: up) - Interface 'ge-0/2/7' status : down (admin: up) - Interface 'ge-0/2/8' status : down (admin: up) - Interface 'ge-0/2/9' status : down (admin: up) - Interface 'ge-0/3/0' status : down (admin: up) - Interface 'ge-0/3/0.0' status : down (admin: up) - Interface 'ge-0/3/1' status : down (admin: up) - Interface 'ge-0/3/1.2301' status : down (admin: up) - Interface 'ge-0/3/1.32767' status : down (admin: up) - Interface 'ge-0/3/1.4002' status : down (admin: up) - Interface 'ge-0/3/2' status : down (admin: down) - Interface 'ge-0/3/2.2301' status : down (admin: down) - Interface 'ge-0/3/2.32767' status : down (admin: down) - Interface 'ge-0/3/2.4002' status : down (admin: down) - Interface 'ge-0/3/4' status : down (admin: up) - Interface 'ge-0/3/4.118' status : down (admin: up) - Interface 'ge-0/3/4.32767' status : down (admin: up) - Interface 'ge-0/3/5' status : down (admin: up) - Interface 'ge-0/3/5.32767' status : down (admin: up) - Interface 'ge-0/3/5.4002' status : down (admin: up) - Interface 'ge-0/3/6' status : down (admin: up) - Interface 'ge-0/3/7' status : down (admin: up) - Interface 'ge-0/3/8' status : down (admin: up) - Interface 'ge-0/3/9' status : down (admin: up) - Interface 'xe-2/0/3' status : down (admin: up) - Interface 'xe-2/0/3.16386' status : down (admin: up) + +Interface regex ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... --sshcli-option="-f=${CURDIR}${/}data${/}interfaces.netconf" + ... ${extraoptions} + + Ctn Run Command And Check Result As Regexp ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} --verbose + ... (checking interface '[a-zA-Z0-9\-\/\.]*'\\\\n\\\\s*status : (up|down) \\\\(admin: up\\\\)\\\\n){2,} + ... 2 --add-status --verbose + ... (checking interface '[a-zA-Z0-9\-\/\.]*'\\\\n\\\\s*status : (up|down) \\\\(admin: up\\\\)\\\\n){2,} + ... 3 --add-traffic --verbose + ... (checking interface '[a-zA-Z0-9\-\/\.]*'\\\\n\\\\s*traffic in: .*, traffic out: .*\\\\n){2,} + ... 4 --add-errors --verbose + ... (checking interface '[a-zA-Z0-9\-\/\.]*'\\\\n\\\\s*packets in discard: .*, error: .*\\\\n\\\\s*packets out error: .*\\\\n){2,} + ... 5 --add-extra-errors --verbose + ... (checking interface '[a-zA-Z0-9\-\/\.]*'\\\\n\\\\s*packets in fcs error: .*, runts: .*, l3 incomplete: .*, fifo error: .*, l2 mismatch timeout: .*, drop: .*, resource error: .*\\\\n\\\\s*packets out drop: .*, carrier transition: .*, collision: .*, mtu error: .*, aged: .*, hs link crc error: .*, fifo error: .*, resource error: .*\\\\n){2,} + +Optical Interface ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... --sshcli-option="-f=${CURDIR}${/}data${/}interfaces_optical.netconf" + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 --add-optical + ... OK: All interfaces are ok | 'ge-0/2/2#interface.bias.current.milliampere'=28.034mA;;;; 'ge-0/2/2#interface.output.power.dbm'=-5.00dBm;-10.00:-2.01;-11.02:-1.00;0; 'ge-0/2/2#interface.module.temperature.celsius'=37.00C;;;; 'ge-0/2/3#interface.bias.current.milliampere'=26.322mA;;;; 'ge-0/2/3#interface.output.power.dbm'=-4.89dBm;-10.00:-2.01;-11.02:-1.00;0; 'ge-0/2/3#interface.module.temperature.celsius'=41.10C;;;; 'ge-0/2/4#interface.bias.current.milliampere'=23.540mA;;;; 'ge-0/2/4#interface.output.power.dbm'=-5.06dBm;-10.00:-2.00;-11.02:-1.00;0; 'ge-0/2/4#interface.module.temperature.celsius'=37.90C;;;; 'ge-0/2/5#interface.bias.current.milliampere'=28.416mA;;;; 'ge-0/2/5#interface.output.power.dbm'=-5.78dBm;-9.03:-3.00;-10.00:-2.00;0; 'ge-0/2/5#interface.module.temperature.celsius'=39.20C;;;; 'ge-0/3/3#interface.bias.current.milliampere'=22.256mA;;;; 'ge-0/3/3#interface.output.power.dbm'=-11.37dBm;-16.02:-7.01;-16.99:-6.00;0; 'ge-0/3/3#interface.module.temperature.celsius'=35.60C;;;; 'xe-2/0/0#interface.bias.current.milliampere'=35.584mA;;;; 'xe-2/0/0#interface.output.power.dbm'=-2.78dBm;-8.01:0.50;-9.03:1.50;0; 'xe-2/0/0#interface.module.temperature.celsius'=44.10C;;;; 'xe-2/0/1#interface.bias.current.milliampere'=36.674mA;;;; 'xe-2/0/1#interface.output.power.dbm'=-3.96dBm;-8.01:0.50;-9.03:1.50;0; 'xe-2/0/1#interface.module.temperature.celsius'=43.80C;;;; 'xe-2/0/2#interface.bias.current.milliampere'=36.830mA;;;; 'xe-2/0/2#interface.output.power.dbm'=-2.41dBm;-7.52:2.50;-8.01:3.00;0; 'xe-2/0/2#interface.module.temperature.celsius'=36.00C;;;; diff --git a/tests/network/juniper/mseries/netconf/ldp.robot b/tests/network/juniper/mseries/netconf/ldp.robot new file mode 100644 index 000000000..a103ca61b --- /dev/null +++ b/tests/network/juniper/mseries/netconf/ldp.robot @@ -0,0 +1,43 @@ +*** Settings *** +Documentation Juniper Mseries Netconf LDP + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=ldp + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + ... --sshcli-option="-f=${CURDIR}${/}data${/}ldp.netconf" + +*** Test Cases *** +Ldp ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} + ... OK: All LDP sessions are ok | 'ldp.sessions.detected.count'=4;;;0; + ... 2 --filter-id="10.0.0.1:0--10.0.0.4:0" + ... OK: LDP session '10.0.0.4' connection state: Open, session state: Operational | 'ldp.sessions.detected.count'=1;;;0; + ... 3 --filter-remote-address=10.0.0.6 + ... OK: LDP session '10.0.0.6' connection state: Open, session state: Operational | 'ldp.sessions.detected.count'=1;;;0; + ... 4 --unknown-status='\\\%{id} eq "10.0.0.1:0--10.0.0.2:0" and \\\%{remoteAddress} eq "10.0.0.2"' + ... UNKNOWN: LDP session '10.0.0.2' connection state: Open, session state: Operational | 'ldp.sessions.detected.count'=4;;;0; + ... 5 --warning-status='\\\%{id} eq "10.0.0.1:0--10.0.0.4:0" and \\\%{connectionState} eq "Open"' + ... WARNING: LDP session '10.0.0.4' connection state: Open, session state: Operational | 'ldp.sessions.detected.count'=4;;;0; + ... 6 --critical-status='\\\%{id} eq "10.0.0.1:0--10.0.0.6:0" and \\\%{sessionState} eq "Operational"' + ... CRITICAL: LDP session '10.0.0.6' connection state: Open, session state: Operational | 'ldp.sessions.detected.count'=4;;;0; + ... 7 --warning-ldp-sessions-detected=2 + ... WARNING: Number of LDP sessions detected: 4 | 'ldp.sessions.detected.count'=4;0:2;;0; + ... 8 --critical-ldp-sessions-detected=3 + ... CRITICAL: Number of LDP sessions detected: 4 | 'ldp.sessions.detected.count'=4;;0:3;0; diff --git a/tests/network/juniper/mseries/netconf/list-bgp.robot b/tests/network/juniper/mseries/netconf/list-bgp.robot new file mode 100644 index 000000000..12cce0119 --- /dev/null +++ b/tests/network/juniper/mseries/netconf/list-bgp.robot @@ -0,0 +1,30 @@ +*** Settings *** +Documentation Juniper Mseries Netconf CPU + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::juniper::mseries::netconf::plugin + ... --mode=list-bgp + ... --hostname=${HOSTNAME} + ... --sshcli-command=get_data + ... --sshcli-path=${CURDIR} + ... --sshcli-option="-f=${CURDIR}${/}data${/}bgp.netconf" + +*** Test Cases *** +List Bgp ${tc} + [Tags] network juniper mseries netconf + ${command} Catenate + ... ${CMD} + ... ${extraoptions} + + Ctn Run Command And Check Result As Regexp ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} ^List BGP peers: (\\\\n\\\\[.*\\\\]){5}\\\\Z + ... 2 --disco-show ^\\\\<\\\\?xml version="1.0" encoding="utf-8"\\\\?\\\\>\\\\n\\\\(\\\\n\\\\s*\\\\