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 \