Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package monitoring-plugins-nwc_health for 
openSUSE:Factory checked in at 2021-07-08 22:49:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/monitoring-plugins-nwc_health (Old)
 and      /work/SRC/openSUSE:Factory/.monitoring-plugins-nwc_health.new.2625 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "monitoring-plugins-nwc_health"

Thu Jul  8 22:49:26 2021 rev:13 rq:905091 version:8.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/monitoring-plugins-nwc_health/monitoring-plugins-nwc_health.changes
      2021-06-16 20:36:50.719325408 +0200
+++ 
/work/SRC/openSUSE:Factory/.monitoring-plugins-nwc_health.new.2625/monitoring-plugins-nwc_health.changes
    2021-07-08 22:49:50.063813732 +0200
@@ -1,0 +2,6 @@
+Sun Jul  4 11:59:04 UTC 2021 - Martin Hauke <mar...@gmx.de>
+
+- Update to version 8.4
+  * add bgp for huawei
+
+-------------------------------------------------------------------

Old:
----
  check_nwc_health-8.3.3.2.tar.gz

New:
----
  check_nwc_health-8.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ monitoring-plugins-nwc_health.spec ++++++
--- /var/tmp/diff_new_pack.SqcH8Q/_old  2021-07-08 22:49:50.439810831 +0200
+++ /var/tmp/diff_new_pack.SqcH8Q/_new  2021-07-08 22:49:50.439810831 +0200
@@ -19,7 +19,7 @@
 
 %define         realname check_nwc_health
 Name:           monitoring-plugins-nwc_health
-Version:        8.3.3.2
+Version:        8.4
 Release:        0
 Summary:        This plugin checks the health of network components and 
interfaces
 # https://github.com/lausser/check_nwc_health

++++++ check_nwc_health-8.3.3.2.tar.gz -> check_nwc_health-8.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/check_nwc_health-8.3.3.2/ChangeLog 
new/check_nwc_health-8.4/ChangeLog
--- old/check_nwc_health-8.3.3.2/ChangeLog      2021-05-31 17:33:27.250000000 
+0200
+++ new/check_nwc_health-8.4/ChangeLog  2021-06-30 19:40:54.080000000 +0200
@@ -1,3 +1,7 @@
+* 2021-06-30 8.4
+  add bgp for huawei
+* 2021-06-16 8.3.3.3
+  bugfix in UCD-MIB memory
 * 2021-05-31 8.3.3.2
   bugfix in IOS cpu-load for very old models without CISCO-PROCESS-MIB
 * 2021-05-31 8.3.3.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/check_nwc_health-8.3.3.2/GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm
 
new/check_nwc_health-8.4/GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm
--- 
old/check_nwc_health-8.3.3.2/GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/check_nwc_health-8.4/GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm
       2021-06-30 20:20:02.720000000 +0200
@@ -0,0 +1,308 @@
+package Monitoring::GLPlugin::SNMP::MibsAndOids::HUAWEIBGPVPNMIB;
+
+$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'HUAWEI-BGP-VPN-MIB'} = {
+  url => '',
+  name => 'HUAWEI-BGP-VPN-MIB',
+};
+
+$Monitoring::GLPlugin::SNMP::MibsAndOids::mib_ids->{'HUAWEI-BGP-VPN-MIB'} =
+  '1.3.6.1.4.1.2011.5.25.177';
+
+$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'HUAWEI-BGP-VPN-MIB'}
 = {
+  'hwBgpMIB' => '1.3.6.1.4.1.2011.5.25.177',
+  'hwBgpObjects' => '1.3.6.1.4.1.2011.5.25.177.1',
+  'hwBgpPeers' => '1.3.6.1.4.1.2011.5.25.177.1.1',
+  'hwBgpPeerAddrFamilyTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.1',
+  'hwBgpPeerAddrFamilyEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1',
+  'hwBgpPeerInstanceId' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1.1',
+  'hwBgpPeerAddrFamilyAfi' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1.2',
+  'hwBgpPeerAddrFamilyAfiDefinition' => 'HUAWEI-BGP-VPN-MIB::HWBgpAfi',
+  'hwBgpPeerAddrFamilySafi' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1.3',
+  'hwBgpPeerAddrFamilySafiDefinition' => 'HUAWEI-BGP-VPN-MIB::HWBgpSafi',
+  'hwBgpPeerType' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1.4',
+  'hwBgpPeerIPAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1.5',
+  'hwBgpPeerVrfName' => '1.3.6.1.4.1.2011.5.25.177.1.1.1.1.6',
+  'hwBgpPeerTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.2',
+  'hwBgpPeerEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1',
+  'hwBgpPeerNegotiatedVersion' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.1',
+  'hwBgpPeerRemoteAs' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.2',
+  'hwBgpPeerRemoteAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.4',
+  'hwBgpPeerState' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.5',
+  'hwBgpPeerStateDefinition' => 'HUAWEI-BGP-VPN-MIB::hwBgpPeerState',
+  'hwBgpPeerFsmEstablishedCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.6',
+  'hwBgpPeerFsmEstablishedTime' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.7',
+  'hwBgpPeerGRStatus' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.8',
+  'hwBgpPeerGRStatusDefinition' => 'HUAWEI-BGP-VPN-MIB::hwBgpPeerGRStatus',
+  'hwBgpPeerLastError' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.9',
+  'hwBgpPeerUnAvaiReason' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.10',
+  'hwBgpPeerUnAvaiReasonDefinition' => {
+    1 => "Configuration lead peer down",
+    2 => "Receive notification",
+    3 => "Receive error packet",
+    4 => "Hold timer expire",
+    5 => "Remote peer not reachable",
+    6 => "Direct connect-interface down",
+    7 => "Route limit",
+  },
+  'hwBgpPeerAdminStatus' => '1.3.6.1.4.1.2011.5.25.177.1.1.2.1.11',
+  'hwBgpPeerAdminStatusDefinition' => 
'HUAWEI-BGP-VPN-MIB::hwBgpPeerAdminStatus',
+  'hwBgpPeerRouteTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.3',
+  'hwBgpPeerRouteEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.3.1',
+  'hwBgpPeerPrefixRcvCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.3.1.1',
+  'hwBgpPeerPrefixActiveCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.3.1.2',
+  'hwBgpPeerPrefixAdvCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.3.1.3',
+  'hwBgpPeerMessageTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.4',
+  'hwBgpPeerMessageEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1',
+  'hwBgpPeerInTotalMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.1',
+  'hwBgpPeerOutTotalMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.2',
+  'hwBgpPeerInOpenMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.3',
+  'hwBgpPeerInUpdateMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.4',
+  'hwBgpPeerInNotificationMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.5',
+  'hwBgpPeerInKeepAliveMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.6',
+  'hwBgpPeerInRouteFreshMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.7',
+  'hwBgpPeerOutOpenMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.8',
+  'hwBgpPeerOutUpdateMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.9',
+  'hwBgpPeerOutNotificationMsgCounter' => 
'1.3.6.1.4.1.2011.5.25.177.1.1.4.1.10',
+  'hwBgpPeerOutKeepAliveMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.11',
+  'hwBgpPeerOutRouteFreshMsgCounter' => '1.3.6.1.4.1.2011.5.25.177.1.1.4.1.12',
+  'hwBgpPeerConfigTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.5',
+  'hwBgpPeerConfigEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.5.1',
+  'hwBgpPeerConfigRouteLimitNum' => '1.3.6.1.4.1.2011.5.25.177.1.1.5.1.1',
+  'hwBgpPeerConfigRouteLimitThreshold' => 
'1.3.6.1.4.1.2011.5.25.177.1.1.5.1.2',
+  'hwBgpPeerSessionTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.6',
+  'hwBgpPeerSessionEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1',
+  'hwBgpPeerSessionVrfName' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.1',
+  'hwBgpPeerSessionRemoteAddrType' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.2',
+  'hwBgpPeerSessionRemoteAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.3',
+  'hwBgpPeerSessionLocalAddrType' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.4',
+  'hwBgpPeerSessionLocalAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.5',
+  'hwBgpPeerSessionUnavailableType' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.6',
+  'hwBgpPeerSessionUnavailableTypeDefinition' => 
'HUAWEI-BGP-VPN-MIB::hwBgpPeerSessionUnavailableType',
+  'hwBgpPeerSessionLocalIfName' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.7',
+  'hwBgpPeerSessionReason' => '1.3.6.1.4.1.2011.5.25.177.1.1.6.1.8',
+  'hwBgpPeerSessionReasonDefinition' => 
'HUAWEI-BGP-VPN-MIB::hwBgpPeerSessionReason',
+  'hwBgpPeerStatisticTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.7',
+  'hwBgpPeerStatisticEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1',
+  'hwBgpProcessId' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.1',
+  'hwBgpPeerVrfInstanceId' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.2',
+  'hwBgpPeerAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.3',
+  'hwBgpPeerFsmEstablishedTransitions' => 
'1.3.6.1.4.1.2011.5.25.177.1.1.7.1.4',
+  'hwBgpPeerDownCounts' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.5',
+  'hwBgpPeerInUpdateMsgs' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.6',
+  'hwBgpPeerOutUpdateMsgs' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.7',
+  'hwBgpPeerInTotalMsgs' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.8',
+  'hwBgpPeerOutTotalMsgs' => '1.3.6.1.4.1.2011.5.25.177.1.1.7.1.9',
+  'hwBgpPeerSessionExtTable' => '1.3.6.1.4.1.2011.5.25.177.1.1.8',
+  'hwBgpPeerSessionExtEntry' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1',
+  'hwBgpPeerSessionExtVrfId' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.1',
+  'hwBgpPeerSessionExtRemoteAddrType' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.2',
+  'hwBgpPeerSessionExtRemoteAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.3',
+  'hwBgpPeerSessionExtLocalAddrType' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.4',
+  'hwBgpPeerSessionExtLocalAddr' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.5',
+  'hwBgpPeerSessionExtUnavailableType' => 
'1.3.6.1.4.1.2011.5.25.177.1.1.8.1.6',
+  'hwBgpPeerSessionExtUnavailableTypeDefinition' => 
'HUAWEI-BGP-VPN-MIB::hwBgpPeerSessionExtUnavailableType',
+  'hwBgpPeerSessionExtLocalIfName' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.7',
+  'hwBgpPeerSessionExtReason' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.8',
+  'hwBgpPeerSessionExtReasonDefinition' => 
'HUAWEI-BGP-VPN-MIB::hwBgpPeerSessionExtReason',
+  'hwBgpPeerSessionExtVrfName' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.9',
+  'hwBgpPeerSessionExtRemoteAs' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.10',
+  'hwBgpPeerSessionExtDescription' => '1.3.6.1.4.1.2011.5.25.177.1.1.8.1.11',
+  'hwBgpRoute' => '1.3.6.1.4.1.2011.5.25.177.1.2',
+  'hwBgpRouteLimitTable' => '1.3.6.1.4.1.2011.5.25.177.1.2.1',
+  'hwBgpRouteLimitindex' => '1.3.6.1.4.1.2011.5.25.177.1.2.1.1',
+  'hwBgpRouteLimitindexDefinition' => 
'HUAWEI-BGP-VPN-MIB::hwBgpRouteLimitindex',
+  'hwBgpRouteCurNum' => '1.3.6.1.4.1.2011.5.25.177.1.2.1.2',
+  'hwBgpRouteMaxNum' => '1.3.6.1.4.1.2011.5.25.177.1.2.1.3',
+  'hwBgpRouteThreshold' => '1.3.6.1.4.1.2011.5.25.177.1.2.1.4',
+  'hwBgpRouteType' => '1.3.6.1.4.1.2011.5.25.177.1.2.1.5',
+  'hwBgpVrfRouteTable' => '1.3.6.1.4.1.2011.5.25.177.1.2.2',
+  'hwBgpVrfRouteEntry' => '1.3.6.1.4.1.2011.5.25.177.1.2.2.1',
+  'hwBgpVrfCurrRouteNum' => '1.3.6.1.4.1.2011.5.25.177.1.2.2.1.1',
+  'hwBgpVrfThresholdValue' => '1.3.6.1.4.1.2011.5.25.177.1.2.2.1.2',
+  'hwBgpVrfRouteType' => '1.3.6.1.4.1.2011.5.25.177.1.2.2.1.3',
+  'hwBgpVrfInstName' => '1.3.6.1.4.1.2011.5.25.177.1.2.2.1.4',
+  'hwBgpVrfAddressFamily' => '1.3.6.1.4.1.2011.5.25.177.1.2.2.1.5',
+  'hwEvpnRouteTable' => '1.3.6.1.4.1.2011.5.25.177.1.2.3',
+  'hwEvpnRouteEntry' => '1.3.6.1.4.1.2011.5.25.177.1.2.3.1',
+  'hwEvpnCurrRouteNum' => '1.3.6.1.4.1.2011.5.25.177.1.2.3.1.1',
+  'hwEvpnThresholdValue' => '1.3.6.1.4.1.2011.5.25.177.1.2.3.1.2',
+  'hwEvpnRouteType' => '1.3.6.1.4.1.2011.5.25.177.1.2.3.1.3',
+  'hwEvpnAddressFamily' => '1.3.6.1.4.1.2011.5.25.177.1.2.3.1.4',
+  'hwBgpLabelLimitTable' => '1.3.6.1.4.1.2011.5.25.177.1.2.4',
+  'hwBgpAddrFamilyAfi' => '1.3.6.1.4.1.2011.5.25.177.1.2.4.1',
+  'hwBgpAddrFamilyAfiDefinition' => 'HUAWEI-BGP-VPN-MIB::HWBgpAfi',
+  'hwBgpAddrFamilySafi' => '1.3.6.1.4.1.2011.5.25.177.1.2.4.2',
+  'hwBgpAddrFamilySafiDefinition' => 'HUAWEI-BGP-VPN-MIB::HWBgpSafi',
+  'hwBgpLabelMaxValue' => '1.3.6.1.4.1.2011.5.25.177.1.2.4.3',
+  'hwBgpLabelLimitThreshold' => '1.3.6.1.4.1.2011.5.25.177.1.2.4.4',
+  'hwBgpTraps' => '1.3.6.1.4.1.2011.5.25.177.1.3',
+  'hwBgpScalars' => '1.3.6.1.4.1.2011.5.25.177.1.4',
+  'hwBgpPeerSessionNum' => '1.3.6.1.4.1.2011.5.25.177.1.4.1',
+  'hwIBgpPeerSessionNum' => '1.3.6.1.4.1.2011.5.25.177.1.4.2',
+  'hwEBgpPeerSessionNum' => '1.3.6.1.4.1.2011.5.25.177.1.4.3',
+  'hwBgpPeerSessionMaxNum' => '1.3.6.1.4.1.2011.5.25.177.1.4.4',
+  'hwBgpDynamicPeerSessionNum' => '1.3.6.1.4.1.2011.5.25.177.1.4.5',
+  'hwBgpDynamicPeerSessionMaxNum' => '1.3.6.1.4.1.2011.5.25.177.1.4.6',
+  'hwBgpPeerSessionThreshold' => '1.3.6.1.4.1.2011.5.25.177.1.4.7',
+  'hwBgpPeerTotalInUpdateMsgs' => '1.3.6.1.4.1.2011.5.25.177.1.4.8',
+  'hwBgpPeerTotalOutUpdateMsgs' => '1.3.6.1.4.1.2011.5.25.177.1.4.9',
+  'hwBgpProcess' => '1.3.6.1.4.1.2011.5.25.177.1.5',
+  'hwBgpProcessCommTable' => '1.3.6.1.4.1.2011.5.25.177.1.5.1',
+  'hwBgpProcessCommEntry' => '1.3.6.1.4.1.2011.5.25.177.1.5.1.1',
+  'hwBgpProcessName' => '1.3.6.1.4.1.2011.5.25.177.1.5.1.1.1',
+  'hwBgpVpnObjects' => '1.3.6.1.4.1.2011.5.25.177.2',
+  'hwBgpVpnTunnelTable' => '1.3.6.1.4.1.2011.5.25.177.2.1',
+  'hwBgpVpnTunnelEntry' => '1.3.6.1.4.1.2011.5.25.177.2.1.1',
+  'hwBgpVpnTunnelVrfName' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.1',
+  'hwBgpVpnTunnelPublicNetNextHop' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.2',
+  'hwBgpVpnTunnelId' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.3',
+  'hwBgpVpnTunnelDestAddr' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.4',
+  'hwBgpVpnTunnelType' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.5',
+  'hwBgpVpnTunnelSrcAddr' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.6',
+  'hwBgpVpnTunnelOutIfName' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.7',
+  'hwBgpVpnTunnelIsLoadBalance' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.8',
+  'hwBgpVpnTunnelLspIndex' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.9',
+  'hwBgpVpnTunnelLspOutIfName' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.10',
+  'hwBgpVpnTunnelLspOutLabel' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.11',
+  'hwBgpVpnTunnelLspNextHop' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.12',
+  'hwBgpVpnTunnelLspFec' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.13',
+  'hwBgpVpnTunnelLspFecPfxLen' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.14',
+  'hwBgpVpnTunnelLspIsBackup' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.15',
+  'hwBgpVpnTunnelSignalProtocol' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.16',
+  'hwBgpVpnTunnelSessionTunnelId' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.17',
+  'hwBgpVpnTunnelTunnelName' => '1.3.6.1.4.1.2011.5.25.177.2.1.1.18',
+  'hwBgpVpnServiceIdTable' => '1.3.6.1.4.1.2011.5.25.177.2.2',
+  'hwBgpVpnServiceIdEntry' => '1.3.6.1.4.1.2011.5.25.177.2.2.1',
+  'hwBgpVpnServiceIdVrfName' => '1.3.6.1.4.1.2011.5.25.177.2.2.1.1',
+  'hwBgpVpnServiceIdValue' => '1.3.6.1.4.1.2011.5.25.177.2.2.1.2',
+  'hwBgpVpnScalars' => '1.3.6.1.4.1.2011.5.25.177.2.3',
+  'hwConfiguredVrfs' => '1.3.6.1.4.1.2011.5.25.177.2.3.1',
+  'hwConfiguredIpv4Vrfs' => '1.3.6.1.4.1.2011.5.25.177.2.3.2',
+  'hwConfiguredIpv6Vrfs' => '1.3.6.1.4.1.2011.5.25.177.2.3.3',
+  'hwBgpConformance' => '1.3.6.1.4.1.2011.5.25.177.3',
+  'hwBgpCompliances' => '1.3.6.1.4.1.2011.5.25.177.3.1',
+  'hwBgpGroups' => '1.3.6.1.4.1.2011.5.25.177.3.2',
+  'hwBgpVpnConformance' => '1.3.6.1.4.1.2011.5.25.177.5',
+  'hwBgpVpnCompliances' => '1.3.6.1.4.1.2011.5.25.177.5.1',
+  'hwBgpVpnExtGroups' => '1.3.6.1.4.1.2011.5.25.177.5.2',
+  'hwTnl2VpnTrapObjects' => '1.3.6.1.4.1.2011.5.25.177.6',
+  'hwTnl2VpnTrapTable' => '1.3.6.1.4.1.2011.5.25.177.6.1',
+  'hwTnl2VpnTrapEntry' => '1.3.6.1.4.1.2011.5.25.177.6.1.1',
+  'hwVpnId' => '1.3.6.1.4.1.2011.5.25.177.6.1.1.1',
+  'hwVpnPublicNextHop' => '1.3.6.1.4.1.2011.5.25.177.6.1.1.2',
+  'hwTunnelReachablityEvent' => '1.3.6.1.4.1.2011.5.25.177.6.1.1.3',
+  'hwVpnTrapCkeyValue' => '1.3.6.1.4.1.2011.5.25.177.6.1.1.4',
+  'hwTnl2VpnTrapConformance' => '1.3.6.1.4.1.2011.5.25.177.7',
+  'hwTnl2VpnTrapConformances' => '1.3.6.1.4.1.2011.5.25.177.7.1',
+  'hwTnl2VpnTrapGroups' => '1.3.6.1.4.1.2011.5.25.177.7.2',
+  'hwTnl2VpnTrapNotification' => '1.3.6.1.4.1.2011.5.25.177.8',
+  'hwPeerDistributeObjects' => '1.3.6.1.4.1.2011.5.25.177.9',
+  'hwBgpTotalRouteNumber' => '1.3.6.1.4.1.2011.5.25.177.9.1',
+  'hwOsNodeTable' => '1.3.6.1.4.1.2011.5.25.177.9.2',
+  'hwOsNodeEntry' => '1.3.6.1.4.1.2011.5.25.177.9.2.1',
+  'hwCurrSlot' => '1.3.6.1.4.1.2011.5.25.177.9.2.1.1',
+  'hwPeerNumber' => '1.3.6.1.4.1.2011.5.25.177.9.2.1.4',
+  'hwRouteNumber' => '1.3.6.1.4.1.2011.5.25.177.9.2.1.5',
+  'hwDistributeTable' => '1.3.6.1.4.1.2011.5.25.177.9.3',
+  'hwDistributeEntry' => '1.3.6.1.4.1.2011.5.25.177.9.3.1',
+  'hwDistributeLocId' => '1.3.6.1.4.1.2011.5.25.177.9.3.1.1',
+  'hwDistributeName' => '1.3.6.1.4.1.2011.5.25.177.9.3.1.2',
+  'hwMigrateSrcSlot' => '1.3.6.1.4.1.2011.5.25.177.9.3.1.3',
+  'hwMigrateDestSlot' => '1.3.6.1.4.1.2011.5.25.177.9.3.1.4',
+  'hwMigrateReason' => '1.3.6.1.4.1.2011.5.25.177.9.3.1.5',
+  'hwMigrateReasonDefinition' => 'HUAWEI-BGP-VPN-MIB::hwMigrateReason',
+  'hwPeerDistributeTraps' => '1.3.6.1.4.1.2011.5.25.177.9.4',
+  'hwRpkiObjects' => '1.3.6.1.4.1.2011.5.25.177.11',
+  'hwRpkiSessions' => '1.3.6.1.4.1.2011.5.25.177.11.1',
+  'hwRpkiSessionTable' => '1.3.6.1.4.1.2011.5.25.177.11.1.1',
+  'hwRpkiSessionEntry' => '1.3.6.1.4.1.2011.5.25.177.11.1.1.1',
+  'hwRpkiSessionVrfName' => '1.3.6.1.4.1.2011.5.25.177.11.1.1.1.1',
+  'hwRpkiSessionType' => '1.3.6.1.4.1.2011.5.25.177.11.1.1.1.2',
+  'hwSessionIPAddr' => '1.3.6.1.4.1.2011.5.25.177.11.1.1.1.3',
+  'hwRpkiSessionRoaLimitNum' => '1.3.6.1.4.1.2011.5.25.177.11.1.1.1.4',
+  'hwRpkiTraps' => '1.3.6.1.4.1.2011.5.25.177.11.2',
+  'hwRpkiConformance' => '1.3.6.1.4.1.2011.5.25.177.11.3',
+  'hwRpkiCompliances' => '1.3.6.1.4.1.2011.5.25.177.11.3.1',
+  'hwRpkiGroups' => '1.3.6.1.4.1.2011.5.25.177.11.3.2',
+};
+
+$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'HUAWEI-BGP-VPN-MIB'} 
= {
+  'hwMigrateReason' => {
+    '1' => 'memoryoverload',
+    '2' => 'cpuoverload',
+  },
+  'HWBgpSafi' => {
+    '1' => 'unicast',
+    '2' => 'multicast',
+    '4' => 'mpls',
+    '5' => 'mcast-vpn',
+    '65' => 'vpls',
+    '66' => 'mdt',
+    '128' => 'vpn',
+    '132' => 'route-target',
+  },
+  'hwBgpPeerAdminStatus' => {
+    '1' => 'stop',
+    '2' => 'start',
+  },
+  'hwBgpPeerSessionReason' => {
+    '1' => 'configurationLeadPeerDown',
+    '2' => 'receiveNotification',
+    '3' => 'receiveErrorPacket',
+    '4' => 'holdTimerExpire',
+    '5' => 'remotePeerNotReachable',
+    '6' => 'directConnectInterfaceDown',
+    '7' => 'routeLimit',
+    '8' => 'peerIsNotUpForASpecifiedPeriodOfTime',
+    '100' => 'alarmClear',
+  },
+  'hwBgpRouteLimitindex' => {
+    '1' => 'ipv4',
+    '2' => 'ipv6',
+    '3' => 'ipv4vrf',
+    '4' => 'ipv6vrf',
+    '5' => 'ipv4public',
+    '6' => 'ipv6public',
+    '7' => 'l2ad',
+  },
+  'hwBgpPeerSessionExtReason' => {
+    '1' => 'configurationLeadPeerDown',
+    '2' => 'receiveNotification',
+    '3' => 'receiveErrorPacket',
+    '4' => 'holdTimerExpire',
+    '5' => 'remotePeerNotReachable',
+    '6' => 'directConnectInterfaceDown',
+    '7' => 'routeLimit',
+    '8' => 'peerIsNotUpForASpecifiedPeriodOfTime',
+    '90' => 'unknown',
+    '100' => 'alarmClear',
+  },
+  'HWBgpAfi' => {
+    '1' => 'ipv4',
+    '2' => 'ipv6',
+    '25' => 'vpls',
+    '196' => 'l2vpn',
+  },
+  'hwBgpPeerGRStatus' => {
+    '1' => 'peerNotBeingHelped',
+    '2' => 'peerRestarting',
+    '3' => 'peerFinishRestart',
+    '4' => 'peerHelping',
+  },
+  'hwBgpPeerState' => {
+    '1' => 'idle',
+    '2' => 'connect',
+    '3' => 'active',
+    '4' => 'opensent',
+    '5' => 'openconfirm',
+    '6' => 'established',
+  },
+  'hwBgpPeerSessionUnavailableType' => {
+    '1' => 'uptodown',
+    '2' => 'alwaysdown',
+  },
+  'hwBgpPeerSessionExtUnavailableType' => {
+    '1' => 'uptodown',
+    '2' => 'alwaysdown',
+  },
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/check_nwc_health-8.3.3.2/GLPlugin/lib/Monitoring/GLPlugin/SNMP.pm 
new/check_nwc_health-8.4/GLPlugin/lib/Monitoring/GLPlugin/SNMP.pm
--- old/check_nwc_health-8.3.3.2/GLPlugin/lib/Monitoring/GLPlugin/SNMP.pm       
2021-05-20 14:03:34.460294100 +0200
+++ new/check_nwc_health-8.4/GLPlugin/lib/Monitoring/GLPlugin/SNMP.pm   
2021-06-30 20:20:02.720000000 +0200
@@ -368,12 +368,39 @@
         printf "OK - all requested oids are in %s\n", $name;
       }
     } else {
+      my @credentials = ();
+      my $credmapping = {
+        "-community" => "-c",
+        "-privpassword" => "-X",
+        "-privprotocol" => "-x",
+        "-authpassword" => "-A",
+        "-authprotocol" => "-a",
+        "-username" => "-u",
+        "-context" => "-n",
+        "-version" => "-v",
+      };
+      foreach (keys %{$Monitoring::GLPlugin::SNMP::session_params}) {
+        if (exists $credmapping->{$_}) {
+          push(@credentials, sprintf "%s '%s'",
+              $credmapping->{$_},
+              $Monitoring::GLPlugin::SNMP::session_params->{$_}
+          );
+        }
+      }
+      if (grep(/-X/, @credentials) and grep(/-A/, @credentials)) {
+        push(@credentials, "-l authPriv");
+      } elsif (grep(/-A/, @credentials)) {
+        push(@credentials, "-l authNoPriv");
+      } else {
+        push(@credentials, "-l noAuthNoPriv");
+      }
+      my $credentials = join(" ", @credentials);
+      $credentials =~ s/-v2 /-v2c /g;
       printf "rm -f %s\n", $name;
       foreach (@trees) {
-        printf "%s -ObentU -v%s -c %s %s %s >> %s\n",
+        printf "%s -ObentU %s %s %s >> %s\n",
             ($self->mode =~ /bulk/) ? "snmpbulkwalk -t 15 -r 20" : "snmpwalk",
-            $self->opts->protocol,
-            $self->opts->community,
+            $credentials,
             $self->opts->hostname,
             $_, $name;
       }
@@ -1180,6 +1207,7 @@
       }
       $Monitoring::GLPlugin::SNMP::max_msg_size = $max_msg_size;
       $Monitoring::GLPlugin::SNMP::session = $session;
+      $Monitoring::GLPlugin::SNMP::session_params = \%params;
     }
   } else {
     $self->add_message(CRITICAL,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/check_nwc_health-8.3.3.2/GLPlugin/lib/Monitoring/GLPlugin.pm 
new/check_nwc_health-8.4/GLPlugin/lib/Monitoring/GLPlugin.pm
--- old/check_nwc_health-8.3.3.2/GLPlugin/lib/Monitoring/GLPlugin.pm    
2021-05-20 14:03:34.460294100 +0200
+++ new/check_nwc_health-8.4/GLPlugin/lib/Monitoring/GLPlugin.pm        
2021-06-30 20:20:02.720000000 +0200
@@ -20,7 +20,7 @@
   $Data::Dumper::Sparseseen = 1;
 };
 our $AUTOLOAD;
-*VERSION = \'3.4.0.3';
+*VERSION = \'3.4.1';
 
 use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/check_nwc_health-8.3.3.2/configure 
new/check_nwc_health-8.4/configure
--- old/check_nwc_health-8.3.3.2/configure      2021-05-31 17:34:16.550000000 
+0200
+++ new/check_nwc_health-8.4/configure  2021-06-30 19:43:15.540000000 +0200
@@ -1,7 +1,7 @@
 #! /bin/sh
 # From configure.ac .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for check_nwc_health 8.3.3.2.
+# Generated by GNU Autoconf 2.69 for check_nwc_health 8.4.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@
 # Identity of this package.
 PACKAGE_NAME='check_nwc_health'
 PACKAGE_TARNAME='check_nwc_health'
-PACKAGE_VERSION='8.3.3.2'
-PACKAGE_STRING='check_nwc_health 8.3.3.2'
+PACKAGE_VERSION='8.4'
+PACKAGE_STRING='check_nwc_health 8.4'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1236,7 +1236,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures check_nwc_health 8.3.3.2 to adapt to many kinds of 
systems.
+\`configure' configures check_nwc_health 8.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1308,7 +1308,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of check_nwc_health 8.3.3.2:";;
+     short | recursive ) echo "Configuration of check_nwc_health 8.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1393,7 +1393,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-check_nwc_health configure 8.3.3.2
+check_nwc_health configure 8.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1410,7 +1410,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by check_nwc_health $as_me 8.3.3.2, which was
+It was created by check_nwc_health $as_me 8.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2273,7 +2273,7 @@
 
 # Define the identity of the package.
  PACKAGE='check_nwc_health'
- VERSION='8.3.3.2'
+ VERSION='8.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3324,7 +3324,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by check_nwc_health $as_me 8.3.3.2, which was
+This file was extended by check_nwc_health $as_me 8.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -3377,7 +3377,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-check_nwc_health config.status 8.3.3.2
+check_nwc_health config.status 8.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/check_nwc_health-8.3.3.2/configure.ac 
new/check_nwc_health-8.4/configure.ac
--- old/check_nwc_health-8.3.3.2/configure.ac   2021-05-31 17:33:38.520000000 
+0200
+++ new/check_nwc_health-8.4/configure.ac       2021-06-30 19:41:04.960000000 
+0200
@@ -1,7 +1,7 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_REVISION ($Revision: 1.150 $)
 AC_PREREQ(2.58)
-AC_INIT(check_nwc_health,8.3.3.2)
+AC_INIT(check_nwc_health,8.4)
 AM_INIT_AUTOMAKE([1.9 tar-pax])
 AM_MAINTAINER_MODE([disable])
 AC_CANONICAL_HOST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/check_nwc_health-8.3.3.2/plugins-scripts/Classes/Huawei/Component/PeerSubsystem.pm
 
new/check_nwc_health-8.4/plugins-scripts/Classes/Huawei/Component/PeerSubsystem.pm
--- 
old/check_nwc_health-8.3.3.2/plugins-scripts/Classes/Huawei/Component/PeerSubsystem.pm
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/check_nwc_health-8.4/plugins-scripts/Classes/Huawei/Component/PeerSubsystem.pm
  2021-06-30 19:13:15.480000000 +0200
@@ -0,0 +1,318 @@
+package Classes::Huawei::Component::PeerSubsystem;
+our @ISA = qw(Monitoring::GLPlugin::SNMP::Item);
+use strict;
+
+our $errorcodes = {
+  # REFERENCE       "RFC 4271, Section 4.5."
+  0 => {
+    0 => 'No Error',
+  },
+  1 => {
+    0 => 'MESSAGE Header Error',
+    1 => 'Connection Not Synchronized',
+    2 => 'Bad Message Length',
+    3 => 'Bad Message Type',
+  },
+  2 => {
+    0 => 'OPEN Message Error',
+    1 => 'Unsupported Version Number',
+    2 => 'Bad Peer AS',
+    3 => 'Bad BGP Identifier',
+    4 => 'Unsupported Optional Parameter',
+    5 => '[Deprecated => see Appendix A]',
+    6 => 'Unacceptable Hold Time',
+  },
+  3 => {
+    0 => 'UPDATE Message Error',
+    1 => 'Malformed Attribute List',
+    2 => 'Unrecognized Well-known Attribute',
+    3 => 'Missing Well-known Attribute',
+    4 => 'Attribute Flags Error',
+    5 => 'Attribute Length Error',
+    6 => 'Invalid ORIGIN Attribute',
+    7 => '[Deprecated => see Appendix A]',
+    8 => 'Invalid NEXT_HOP Attribute',
+    9 => 'Optional Attribute Error',
+   10 => 'Invalid Network Field',
+   11 => 'Malformed AS_PATH',
+  },
+  4 => {
+    0 => 'Hold Timer Expired',
+  },
+  5 => {
+    0 => 'Finite State Machine Error',
+  },
+  6 => {
+    0 => 'Cease',
+    1 => 'Maximum Number of Prefixes Reached',
+    2 => 'Administrative Shutdown',
+    3 => 'Peer De-configured',
+    4 => 'Administrative Reset',
+    5 => 'Connection Rejected',
+    6 => 'Other Configuration Change',
+    7 => 'Connection Collision Resolution',
+    8 => 'Out of Resources',
+  },
+};
+
+sub init {
+  my ($self) = @_;
+  $self->{peers} = [];
+  $self->implements_mib('INET-ADDRESS-MIB');
+  $self->get_snmp_tables('HUAWEI-BGP-VPN-MIB', [
+      ['peers', 'hwBgpPeerAddrFamilyTable+hwBgpPeerTable', 
'Classes::Huawei::Component::PeerSubsystem::Peer', sub {
+          my $o = shift;
+         # regexp -> arschlecken!
+          if ($self->opts->name) {
+           return 
$self->filter_name($o->compact_v6($o->{hwBgpPeerRemoteAddr}));
+         } else {
+           return 1;
+         }
+      }],
+      ['sessions', 'hwBgpPeerSessionTable', 
'Monitoring::GLPlugin::SNMP::TableItem'],
+      ['extsessions', 'hwBgpPeerSessionExtTable', 
'Monitoring::GLPlugin::SNMP::TableItem'],
+  ]);
+}
+
+sub check {
+  my ($self) = @_;
+  my $errorfound = 0;
+  $self->add_info('checking bgp peers');
+  if ($self->mode =~ /peer::list/) {
+    foreach (sort {$a->{hwBgpPeerRemoteAddr} cmp $b->{hwBgpPeerRemoteAddr}} 
@{$self->{peers}}) {
+      printf "%s\n", $_->{hwBgpPeerRemoteAddr};
+      #$_->list();
+    }
+    $self->add_ok("have fun");
+  } elsif ($self->mode =~ /peer::count/) {
+    $self->add_info(sprintf "found %d peers", scalar(@{$self->{peers}}));
+    $self->set_thresholds(warning => '1:', critical => '1:');
+    $self->add_message($self->check_thresholds(scalar(@{$self->{peers}})));
+    $self->add_perfdata(
+        label => 'peers',
+        value => scalar(@{$self->{peers}}),
+    );
+  } elsif ($self->mode =~ /peer::watch/) {
+    # take a snapshot of the peer list. -> good baseline
+    # warning if there appear peers, mitigate to ok
+    # critical if warn/crit percent disappear
+    $self->{numOfPeers} = scalar (@{$self->{peers}});
+    $self->{peerNameList} = [map { $_->{hwBgpPeerRemoteAddr} } 
@{$self->{peers}}];
+    $self->opts->override_opt('lookback', 3600) if ! $self->opts->lookback;
+    if ($self->opts->reset) {
+      my $statefile = $self->create_statefile(name => 'bgppeerlist', lastarray 
=> 1);
+      unlink $statefile if -f $statefile;
+    }
+    $self->valdiff({name => 'bgppeerlist', lastarray => 1},
+        qw(peerNameList numOfPeers));
+    my $problem = 0;
+    if ($self->opts->warning || $self->opts->critical) {
+      $self->set_thresholds(warning => $self->opts->warning,
+          critical => $self->opts->critical);
+      my $before = $self->{numOfPeers} - 
scalar(@{$self->{delta_found_peerNameList}}) + 
scalar(@{$self->{delta_lost_peerNameList}});
+      # use own delta_numOfPeers, because the glplugin version treats
+      # negative deltas as overflows
+      $self->{delta_numOfPeers} = $self->{numOfPeers} - $before;
+      if ($self->opts->units && $self->opts->units eq "%") {
+        my $delta_pct = $before ? (($self->{delta_numOfPeers} / $before) * 
100) : 0;
+        $self->add_message($self->check_thresholds($delta_pct),
+          sprintf "%.2f%% delta, before: %d, now: %d", $delta_pct, $before, 
$self->{numOfPeers});
+        $problem = $self->check_thresholds($delta_pct);
+      } else {
+        $self->add_message($self->check_thresholds($self->{delta_numOfPeers}),
+          sprintf "%d delta, before: %d, now: %d", $self->{delta_numOfPeers}, 
$before, $self->{numOfPeers});
+        $problem = $self->check_thresholds($self->{delta_numOfPeers});
+      }
+      if (scalar(@{$self->{delta_found_peerNameList}}) > 0) {
+        $self->add_ok(sprintf 'found: %s',
+            join(", ", @{$self->{delta_found_peerNameList}}));
+      }
+      if (scalar(@{$self->{delta_lost_peerNameList}}) > 0) {
+        $self->add_ok(sprintf 'lost: %s',
+            join(", ", @{$self->{delta_lost_peerNameList}}));
+      }
+    } else {
+      if (scalar(@{$self->{delta_found_peerNameList}}) > 0) {
+        $self->add_warning(sprintf '%d new bgp peers (%s)',
+            scalar(@{$self->{delta_found_peerNameList}}),
+            join(", ", @{$self->{delta_found_peerNameList}}));
+        $problem = 1;
+      }
+      if (scalar(@{$self->{delta_lost_peerNameList}}) > 0) {
+        $self->add_critical(sprintf '%d bgp peers missing (%s)',
+            scalar(@{$self->{delta_lost_peerNameList}}),
+            join(", ", @{$self->{delta_lost_peerNameList}}));
+        $problem = 2;
+      }
+      $self->add_ok(sprintf 'found %d bgp peers', scalar (@{$self->{peers}}));
+    }
+    if ($problem) { # relevant only for lookback=9999 and support contract 
customers
+      $self->valdiff({name => 'bgppeerlist', lastarray => 1, freeze => 1},
+          qw(peerNameList numOfPeers));
+    } else {
+      $self->valdiff({name => 'bgppeerlist', lastarray => 1, freeze => 2},
+          qw(peerNameList numOfPeers));
+    }
+    $self->add_perfdata(
+        label => 'num_peers',
+        value => scalar (@{$self->{peers}}),
+    );
+  } else {
+    if (scalar(@{$self->{peers}}) == 0) {
+      $self->add_unknown('no peers');
+      return;
+    }
+    # es gibt
+    # kleine installation: 1 peer zu 1 as, evt 2. as als fallback
+    # grosse installation: n peer zu 1 as, alternative routen zum provider
+    #                      n peer zu m as, mehrere provider, mehrere 
alternativrouten
+    # 1 ausfall on 4 peers zu as ist egal
+    my $as_numbers = {};
+    foreach (@{$self->{peers}}) {
+      $_->check();
+      if (! exists $as_numbers->{$_->{hwBgpPeerRemoteAs}}->{peers}) {
+        $as_numbers->{$_->{hwBgpPeerRemoteAs}}->{peers} = [];
+        $as_numbers->{$_->{hwBgpPeerRemoteAs}}->{availability} = 100;
+      }
+      push(@{$as_numbers->{$_->{hwBgpPeerRemoteAs}}->{peers}}, $_);
+    }
+    if ($self->opts->name2) {
+      $self->clear_ok();
+      $self->clear_critical();
+      if ($self->opts->name2 eq "_ALL_") {
+        $self->opts->override_opt("name2", join(",", keys %{$as_numbers}));
+      }
+      foreach my $as (split(",", $self->opts->name2)) {
+        my $asname = "";
+        if ($as =~ /(\d+)=(\w+)/) {
+          $as = $1;
+          $asname = $2;
+        }
+        if (exists $as_numbers->{$as}) {
+          my $num_peers = scalar(@{$as_numbers->{$as}->{peers}});
+          my $num_ok_peers = scalar(grep { $_->{hwBgpPeerFaulty} == 0 } 
@{$as_numbers->{$as}->{peers}});
+          my $num_admdown_peers = scalar(grep { $_->{hwBgpPeerAdminStatus} eq 
"stop" } @{$as_numbers->{$as}->{peers}});
+          $as_numbers->{$as}->{availability} = 100 * $num_ok_peers / 
$num_peers;
+          $self->set_thresholds(warning => "100:", critical => "50:");
+          
$self->add_message($self->check_thresholds($as_numbers->{$as}->{availability}),
+              sprintf "%d from %d connections to %s are up (%.2f%%%s)",
+              $num_ok_peers, $num_peers, $asname ? $asname : "AS".$as,
+              $as_numbers->{$as}->{availability},
+              $num_admdown_peers ? sprintf(", but %d are admin down and 
counted as up!", $num_admdown_peers) : "");
+        } else {
+          $self->add_critical(sprintf 'found no peer for %s', $asname ? 
$asname : "AS".$as);
+        }
+      }
+    }
+    if ($self->opts->report eq "short") {
+      $self->clear_ok();
+      $self->add_ok('no problems') if ! $self->check_messages();
+    }
+  }
+}
+
+
+package Classes::Huawei::Component::PeerSubsystem::Peer;
+our @ISA = qw(Monitoring::GLPlugin::SNMP::TableItem);
+use strict;
+use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
+
+sub finish {
+  my ($self) = @_;
+  my @tmp_indices = @{$self->{indices}};
+  my $last_tmp = scalar(@tmp_indices) - 1;
+  $self->{hwBgpPeerInstanceId} = $tmp_indices[0];
+  shift @tmp_indices;
+  $self->{hwBgpPeerAddrFamilyAfi} = $tmp_indices[0];
+  shift @tmp_indices;
+  $self->{hwBgpPeerAddrFamilySafi} = $tmp_indices[0];
+  shift @tmp_indices;
+  $self->{hwBgpPeerType} = $self->mibs_and_oids_definition(
+      'INET-ADDRESS-MIB', 'InetAddressType', $tmp_indices[0]);
+  shift @tmp_indices;
+  $self->{hwBgpPeerIPAddr} = $self->mibs_and_oids_definition(
+      'INET-ADDRESS-MIB', 'InetAddressMaker',
+      $self->{hwBgpPeerType}, @tmp_indices);
+
+  $self->{hwBgpPeerLastError} |= "00 00";
+  my $errorcode = 0;
+  my $subcode = 0;
+  if (lc $self->{hwBgpPeerLastError} =~ /([0-9a-f]+)\s+([0-9a-f]+)/) {
+    $errorcode = hex($1) * 1;
+    $subcode = hex($2) * 1;
+  }
+  $self->{hwBgpPeerLastError} = 
$Classes::Huawei::Component::PeerSubsystem::errorcodes->{$errorcode}->{$subcode};
+  $self->{hwBgpPeerRemoteAsName} = "";
+  $self->{hwBgpPeerRemoteAsImportant} = 0; # if named in --name2
+  $self->{hwBgpPeerFaulty} = 0;
+  my @parts = gmtime($self->{hwBgpPeerFsmEstablishedTime});
+  $self->{hwBgpPeerFsmEstablishedTime} = sprintf ("%dd, %dh, %dm, 
%ds",@parts[7,2,1,0]);
+
+  if ($self->{hwBgpPeerType} eq "ipv6") {
+    $self->{hwBgpPeerRemoteAddrCompact} = 
$self->compact_v6($self->{hwBgpPeerRemoteAddr});
+    #$self->{hwBgpPeerSessionLocalAddr} = 
$self->compact_v6($self->{hwBgpPeerSessionLocalAddr});
+  } else {
+    $self->{hwBgpPeerRemoteAddrCompact} = $self->{hwBgpPeerRemoteAddr};
+    #$self->{hwBgpPeerSessionLocalAddrCompact} = 
$self->{hwBgpPeerSessionLocalAddr};
+  }
+  # bin zu faul, HwBgpPeerSessionEntry zu holen (abgesehen davon, da?? die auch
+  # leer sein kann). Wer die hwBgpPeerSessionLocalAddr unbedingt haben will,
+  # soll schon mal anfangen zu sparen. Das ist teuer. Und wer featurebettelt,
+  # hat verschissen und kommt auf die Spamliste.
+  $self->{hwBgpPeerSessionLocalAddr} = "undefined";
+}
+
+sub check {
+  my ($self) = @_;
+  if ($self->opts->name2) {
+    foreach my $as (split(",", $self->opts->name2)) {
+      if ($as =~ /(\d+)=(\w+)/) {
+        $as = $1;
+        $self->{hwBgpPeerRemoteAsName} = ", ".$2;
+      } else {
+        $self->{hwBgpPeerRemoteAsName} = "";
+      }
+      if ($as eq "_ALL_" || $as == $self->{hwBgpPeerRemoteAs}) {
+        $self->{hwBgpPeerRemoteAsImportant} = 1;
+      }
+    }
+  } else {
+    $self->{hwBgpPeerRemoteAsImportant} = 1;
+  }
+  if ($self->{hwBgpPeerState} eq "established") {
+    $self->add_ok(sprintf "peer %s (AS%s) state is %s since %s",
+        $self->{hwBgpPeerRemoteAddr},
+        $self->{hwBgpPeerRemoteAs}.$self->{hwBgpPeerRemoteAsName},
+        $self->{hwBgpPeerState},
+        $self->{hwBgpPeerFsmEstablishedTime}
+    );
+  } elsif ($self->{hwBgpPeerAdminStatus} eq "stop") {
+    # admin down is by default critical, but can be mitigated
+    $self->add_message(
+        defined $self->opts->mitigation() ? $self->opts->mitigation() :
+            $self->{hwBgpPeerRemoteAsImportant} ? WARNING : OK,
+        sprintf "peer %s (AS%s) state is %s (is admin down)",
+        $self->{hwBgpPeerRemoteAddr},
+        $self->{hwBgpPeerRemoteAs}.$self->{hwBgpPeerRemoteAsName},
+        $self->{hwBgpPeerState}
+    );
+    $self->{hwBgpPeerFaulty} =
+        defined $self->opts->mitigation() && $self->opts->mitigation() eq "ok" 
? 0 :
+        $self->{hwBgpPeerRemoteAsImportant} ? 1 : 0;
+  } else {
+    # hwBgpPeerLastError may be undef, at least under the following 
circumstances
+    # hwBgpPeerRemoteAsName is "", hwBgpPeerAdminStatus is "start",
+    # hwBgpPeerState is "active"
+    $self->add_message($self->{hwBgpPeerRemoteAsImportant} ? CRITICAL : OK,
+        sprintf "peer %s (AS%s) state is %s (last error: %s, local address: 
%s)",
+        $self->{hwBgpPeerRemoteAddr},
+        $self->{hwBgpPeerRemoteAs}.$self->{hwBgpPeerRemoteAsName},
+        $self->{hwBgpPeerState},
+        $self->{hwBgpPeerLastError}||"no error",
+        $self->{hwBgpPeerSessionLocalAddr}
+    );
+    $self->{hwBgpPeerFaulty} = $self->{hwBgpPeerRemoteAsImportant} ? 1 : 0;
+  }
+}
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/check_nwc_health-8.3.3.2/plugins-scripts/Classes/Huawei.pm 
new/check_nwc_health-8.4/plugins-scripts/Classes/Huawei.pm
--- old/check_nwc_health-8.3.3.2/plugins-scripts/Classes/Huawei.pm      
2019-05-23 16:02:39.000000000 +0200
+++ new/check_nwc_health-8.4/plugins-scripts/Classes/Huawei.pm  2021-06-30 
17:16:58.000000000 +0200
@@ -18,6 +18,20 @@
       
$self->analyze_and_check_cpu_subsystem("Classes::Huawei::Component::CpuSubsystem");
     } elsif ($self->mode =~ /device::hardware::memory/) {
       
$self->analyze_and_check_mem_subsystem("Classes::Huawei::Component::MemSubsystem");
+    } elsif ($self->mode =~ /device::bgp/) {
+      if ($self->implements_mib('HUAWEI-BGP-VPN-MIB', 
'hwBgpPeerAddrFamilyTable')) {
+        
$self->analyze_and_check_interface_subsystem("Classes::Huawei::Component::PeerSubsystem");
+      } else {
+        $self->establish_snmp_secondary_session();
+        if ($self->implements_mib('HUAWEI-BGP-VPN-MIB', 
'hwBgpPeerAddrFamilyTable')) {
+          
$self->analyze_and_check_interface_subsystem("Classes::Huawei::Component::PeerSubsystem");
+        } else {
+          $self->establish_snmp_session();
+          $self->debug("no HUAWEI-BGP-VPN-MIB and/or no 
hwBgpPeerAddrFamilyTable, fallback");
+          $self->no_such_mode();
+        }
+      }
+
     } else {
       $self->no_such_mode();
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/check_nwc_health-8.3.3.2/plugins-scripts/Classes/UCDMIB/Components/MemSubsystem.pm
 
new/check_nwc_health-8.4/plugins-scripts/Classes/UCDMIB/Components/MemSubsystem.pm
--- 
old/check_nwc_health-8.3.3.2/plugins-scripts/Classes/UCDMIB/Components/MemSubsystem.pm
      2018-12-12 19:25:42.000000000 +0100
+++ 
new/check_nwc_health-8.4/plugins-scripts/Classes/UCDMIB/Components/MemSubsystem.pm
  2021-06-16 23:46:55.680000000 +0200
@@ -7,11 +7,15 @@
   $self->get_snmp_objects('UCD-SNMP-MIB', (qw(
       memTotalSwap memTotalReal memTotalFree memAvailReal
       memBuffer memCached memShared)));
-
   # basically buffered memory can always be freed up (filesystem cache)
   # https://kc.mcafee.com/corporate/index?page=content&id=KB73175
+  # 16.6.21 memShared fliegt raus, das zaehlt ab jetzt nicht mehr zu
+  # potentiell freizukriegendem Speicher. Mir scheissegal, ob das Ergebnis
+  # dann stimmt. Nach 10 Jahren Rumgefrickel habe ich es satt, ab jetzt wird
+  # das alles so hingebastelt, da?? ich so wenige Tickets wie moeglich
+  # auf den Tisch bekomme. 
   my $mem_available = $self->{memAvailReal};
-  foreach (qw(memBuffer memCached memShared)) {
+  foreach (qw(memBuffer memCached)) {
     $mem_available += $self->{$_} if defined($self->{$_});
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/check_nwc_health-8.3.3.2/plugins-scripts/Makefile.am 
new/check_nwc_health-8.4/plugins-scripts/Makefile.am
--- old/check_nwc_health-8.3.3.2/plugins-scripts/Makefile.am    2021-05-20 
14:02:00.590294100 +0200
+++ new/check_nwc_health-8.4/plugins-scripts/Makefile.am        2021-06-30 
17:18:22.940000000 +0200
@@ -82,6 +82,7 @@
   
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FOUNDRYSNSWL4SWITCHGROUPMIB.pm
 \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/GENUAMIB.pm \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HH3CENTITYEXTMIB.pm \
+  ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm \
   
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIENTITYEXTENTMIB.pm \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HOSTRESOURCESMIB.pm \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HPICFCHASSIS.pm \
@@ -285,6 +286,7 @@
   Classes/Huawei/Component/EnvironmentalSubsystem.pm \
   Classes/Huawei/Component/CpuSubsystem.pm \
   Classes/Huawei/Component/MemSubsystem.pm \
+  Classes/Huawei/Component/PeerSubsystem.pm \
   Classes/Huawei/CloudEngine.pm \
   Classes/Huawei.pm \
   Classes/HP/Procurve/Component/MemSubsystem.pm \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/check_nwc_health-8.3.3.2/plugins-scripts/Makefile.in 
new/check_nwc_health-8.4/plugins-scripts/Makefile.in
--- old/check_nwc_health-8.3.3.2/plugins-scripts/Makefile.in    2021-05-31 
17:34:16.930000000 +0200
+++ new/check_nwc_health-8.4/plugins-scripts/Makefile.in        2021-06-30 
20:27:53.680000000 +0200
@@ -324,6 +324,7 @@
   
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FOUNDRYSNSWL4SWITCHGROUPMIB.pm
 \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/GENUAMIB.pm \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HH3CENTITYEXTMIB.pm \
+  ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm \
   
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIENTITYEXTENTMIB.pm \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HOSTRESOURCESMIB.pm \
   ../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HPICFCHASSIS.pm \
@@ -528,6 +529,7 @@
   Classes/Huawei/Component/EnvironmentalSubsystem.pm \
   Classes/Huawei/Component/CpuSubsystem.pm \
   Classes/Huawei/Component/MemSubsystem.pm \
+  Classes/Huawei/Component/PeerSubsystem.pm \
   Classes/Huawei/CloudEngine.pm \
   Classes/Huawei.pm \
   Classes/HP/Procurve/Component/MemSubsystem.pm \

Reply via email to