From 8c45fb2e338433c546a6e578c27d991af76e382f Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Wed, 7 Jun 2023 18:26:46 +0200
Subject: [PATCH] update project

---
 agent_based/cisco_eigrp_as_info.py        |  39 +-
 agent_based/cisco_eigrp_interface.py      |  40 +-
 agent_based/cisco_eigrp_peers.py          |  24 +-
 agent_based/cisco_eigrp_topology_table.py |  25 +-
 cisco_eigrp-0.3.0-20230607.mkp            | Bin 0 -> 14092 bytes
 cisco_eigrp.mkp                           | Bin 14434 -> 14092 bytes
 gui/metrics/cisco_eigrp.py                | 500 ++++++++++++++++++++++
 gui/wato/cisco_eigrp_interface.py         |  76 ++++
 gui/wato/cisco_eigrp_peers.py             |  63 +++
 gui/wato/cisco_eigrp_topology_table.py    |  54 +++
 packages/cisco_eigrp                      |  15 +-
 11 files changed, 767 insertions(+), 69 deletions(-)
 create mode 100644 cisco_eigrp-0.3.0-20230607.mkp
 create mode 100644 gui/metrics/cisco_eigrp.py
 create mode 100644 gui/wato/cisco_eigrp_interface.py
 create mode 100644 gui/wato/cisco_eigrp_peers.py
 create mode 100644 gui/wato/cisco_eigrp_topology_table.py

diff --git a/agent_based/cisco_eigrp_as_info.py b/agent_based/cisco_eigrp_as_info.py
index dbb2b15..97d25a2 100644
--- a/agent_based/cisco_eigrp_as_info.py
+++ b/agent_based/cisco_eigrp_as_info.py
@@ -12,8 +12,9 @@
 # 2018-02-11: removed unnecessary OIDs
 # 2018-08-06: modified scan function
 # 2019-10-16: added support for IPv6 and VRFs, added parser function
+# 2023-06-07: moved gui files to ~/local/lib/chek_mk/gui/plugins/...
 #
-#
+
 # snmpwalk sample
 #
 # thl@surfbox-ii:~$ snmpwalk -v2c -c router-01 -ObentU simulant .1.3.6.1.4.1.9.9.449.1.2.1.1
@@ -43,20 +44,18 @@
 #
 # sample info
 # [
-#  [u'65536.10', u'1', u'7081', u'6637', u'37', u'45', u'0', u'0', u'0', u'0', u'26', u'32', u'2', u'0', u'0', u'0', u'1', u'\n\xa7\xdc\xfd', u'10', u'0']
+#  ['65536.10', '1', '7081', '6637', '37', '45', '0', '0', '0', '0', '26', '32', '2', '0', '0', '0', '1', '\n\xa7\xdc\xfd', '10', '0']
 # ]
 #
 
 #
 from time import time
-from dataclasses import dataclass
-from typing import Optional, List
+from typing import List
 
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
     Service,
     Result,
-    check_levels,
     State,
     SNMPTree,
     all_of,
@@ -75,13 +74,14 @@ from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
     StringTable,
 )
 
-_InetAddressType = {0: 'unknown',
-                   1: 'ipv4',
-                   2: 'ipv6',
-                   3: 'ipv4z',
-                   4: 'ipv6z',
-                   16: 'dns',
-                   }
+_InetAddressType = {
+    0: 'unknown',
+    1: 'ipv4',
+    2: 'ipv6',
+    3: 'ipv4z',
+    4: 'ipv6z',
+    16: 'dns',
+}
 
 
 def _render_ip_address(bytestring):
@@ -99,9 +99,10 @@ def parse_cisco_eigrp_as_info(string_table: List[StringTable]):
     ASTable = {}
     ASInfo, VrfInfo = string_table
 
-    for OID_END, cEigrpNbrCount, cEigrpHellosSent, cEigrpHellosRcvd, cEigrpUpdatesSent, cEigrpUpdatesRcvd, cEigrpQueriesSent, \
-    cEigrpQueriesRcvd, cEigrpRepliesSent, cEigrpRepliesRcvd, cEigrpAcksSent, cEigrpAcksRcvd, cEigrpInputQHighMark, cEigrpInputQDrops, \
-    cEigrpSiaQueriesSent, cEigrpSiaQueriesRcvd, cEigrpAsRouterIdType, cEigrpAsRouterId, cEigrpTopoRoutes, cEigrpXmitPendReplies in ASInfo:
+    for OID_END, cEigrpNbrCount, cEigrpHellosSent, cEigrpHellosRcvd, cEigrpUpdatesSent, cEigrpUpdatesRcvd, \
+        cEigrpQueriesSent, cEigrpQueriesRcvd, cEigrpRepliesSent, cEigrpRepliesRcvd, cEigrpAcksSent, cEigrpAcksRcvd, \
+        cEigrpInputQHighMark, cEigrpInputQDrops, cEigrpSiaQueriesSent, cEigrpSiaQueriesRcvd, cEigrpAsRouterIdType, \
+        cEigrpAsRouterId, cEigrpTopoRoutes, cEigrpXmitPendReplies in ASInfo:
 
         cEigrpVrfId = int(OID_END.split('.')[0])
         cEigrpAS = OID_END.split('.')[1]
@@ -147,11 +148,13 @@ def parse_cisco_eigrp_as_info(string_table: List[StringTable]):
         if cEigrpVrfName == 'default' and cEigrpAddrFammily == 'IPv4':
             ASTable.update({cEigrpVrfId: {'ServiceText': cEigrpAS, 'cEigrpVrfId': cEigrpVrfId}})
         elif cEigrpVrfName == 'default' and cEigrpAddrFammily == 'IPv6':
-            ASTable.update({cEigrpVrfId:{'ServiceText': '%s IPv6' % cEigrpAS, 'cEigrpVrfId': cEigrpVrfId}})
+            ASTable.update({cEigrpVrfId: {'ServiceText': f'{cEigrpAS} IPv6', 'cEigrpVrfId': cEigrpVrfId}})
         elif cEigrpVrfName != 'default' and cEigrpAddrFammily == 'IPv4':
-            ASTable.update({cEigrpVrfId:{'ServiceText': '%s VRF %s' % (cEigrpAS, cEigrpVrfName), 'cEigrpVrfId': cEigrpVrfId}})
+            ASTable.update({cEigrpVrfId: {'ServiceText': f'{cEigrpAS} VRF {cEigrpVrfName}',
+                                          'cEigrpVrfId': cEigrpVrfId}})
         elif cEigrpVrfName != 'default' and cEigrpAddrFammily == 'IPv6':
-            ASTable.update({cEigrpVrfId:{'ServiceText': '%s IPv6 VRF %s' % (cEigrpAS, cEigrpVrfName), 'cEigrpVrfId': cEigrpVrfId}})
+            ASTable.update({cEigrpVrfId: {'ServiceText': f'{cEigrpAS} IPv6 VRF {cEigrpVrfName}',
+                                          'cEigrpVrfId': cEigrpVrfId}})
     return [ASTable, ASInfoTable]
 
 ###########################################################################
diff --git a/agent_based/cisco_eigrp_interface.py b/agent_based/cisco_eigrp_interface.py
index fcf25df..53d3d44 100644
--- a/agent_based/cisco_eigrp_interface.py
+++ b/agent_based/cisco_eigrp_interface.py
@@ -15,7 +15,9 @@
 # 2019-10-14: added support for hamc-sha-256 authentication, md5 moved to warn, none moved to crit
 # 2019-10-16: added support for IPv6 and VRFs, added data parser function
 # 2019-10-31: changed item from interface long-name to interface short name
+# 2023-06-07: moved gui files to ~/local/lib/chek_mk/gui/plugins/...
 #
+
 # snmpwalk sample
 #
 # OMD[mysite]:~$ snmpwalk -ObentU -v2c -c router-01 simulant .1.3.6.1.4.1.9.9.449.1.5.1.1
@@ -107,34 +109,32 @@
 # sample info
 # [
 #  [
-#   [u'65536.10.1', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'5', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'1', u''],
-#   [u'65536.10.7', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'5', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'1', u''],
-#   [u'65536.10.8', u'1', u'0', u'0', u'1', u'0', u'0', u'50', u'0', u'1', u'0', u'0', u'0', u'64', u'66', u'0', u'0', u'1', u'0', u'0', u'2', u'KEY-EIGRP-10'],
-#   [u'65536.10.9', u'1', u'0', u'0', u'19', u'23', u'0', u'84', u'0', u'1', u'0', u'0', u'18', u'40', u'27', u'1', u'2', u'0', u'5', u'3', u'2', u'KEY-EIGRP-10']
+#   ['65536.10.1', '0', '0', '0', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', ''],
+#   ['65536.10.7', '0', '0', '0', '0', '0', '0', '0', '0', '5', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', ''],
+#   ['65536.10.8', '1', '0', '0', '1', '0', '0', '50', '0', '1', '0', '0', '0', '64', '66', '0', '0', '1', '0', '0', '2', 'KEY-EIGRP-10'],
+#   ['65536.10.9', '1', '0', '0', '19', '23', '0', '84', '0', '1', '0', '0', '18', '40', '27', '1', '2', '0', '5', '3', '2', 'KEY-EIGRP-10']
 #  ],
 #  [
-#   [u'1', u'GigabitEthernet0/0/0'],
-#   [u'2', u'GigabitEthernet0/0/1'],
-#   [u'3', u'GigabitEthernet0/0/2'],
-#   [u'4', u'GigabitEthernet0/0/3'],
-#   [u'5', u'GigabitEthernet0'],
-#   [u'6', u'Null0'],
-#   [u'7', u'Loopback0'],
-#   [u'8', u'Tunnel10'],
-#   [u'9', u'Tunnel101']
+#   ['1', 'GigabitEthernet0/0/0'],
+#   ['2', 'GigabitEthernet0/0/1'],
+#   ['3', 'GigabitEthernet0/0/2'],
+#   ['4', 'GigabitEthernet0/0/3'],
+#   ['5', 'GigabitEthernet0'],
+#   ['6', 'Null0'],
+#   ['7', 'Loopback0'],
+#   ['8', 'Tunnel10'],
+#   ['9', 'Tunnel101']
 #  ]
 # ]
 #
 
-from time import mktime, gmtime
 from dataclasses import dataclass
-from typing import Optional, List, Dict
+from typing import List, Dict
 
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
     Service,
     Result,
-    check_levels,
     State,
     SNMPTree,
     all_of,
@@ -226,7 +226,7 @@ def parse_cisco_eigrp_interface(string_table: List[StringTable]) -> Dict[str, Ei
         cEigrpHelloInterval, cEigrpUMcasts, cEigrpRMcasts, cEigrpUUcasts, cEigrpRUcasts, cEigrpMcastExcepts, \
         cEigrpCRpkts, cEigrpAcksSuppressed, cEigrpRetransSent, cEigrpOOSrvcd, cEigrpAuthMode, \
         cEigrpAuthKeyChain in EigrpInterfaces:
-        
+
         cEigrpVrfId = int(OID_END.split('.')[0])
         cEigrpAS = OID_END.split('.')[1]
         cEigrpIfIndex = int(OID_END.split('.')[2])
@@ -235,7 +235,7 @@ def parse_cisco_eigrp_interface(string_table: List[StringTable]) -> Dict[str, Ei
             if int(ifindex) == cEigrpIfIndex:  # compare interface index
                 if not int(iftype) == 24:  # skip Loopback interfaces
                     cEigrpIfName = _get_short_if_name(ifname)
-                    
+
         if cEigrpIfName != '':
             cEigrpVrfName = ''
             for VrfId, VrfName in VrfInfo:
@@ -246,7 +246,7 @@ def parse_cisco_eigrp_interface(string_table: List[StringTable]) -> Dict[str, Ei
                 cEigrpAddrFammily = 'IPv4'
             else:
                 cEigrpAddrFammily = 'IPv6'
-            
+
             ServiceText = ''
             if cEigrpVrfName == 'default' and cEigrpAddrFammily == 'IPv4':
                 ServiceText = f'{cEigrpIfName} on AS {cEigrpAS}'
@@ -278,7 +278,7 @@ def parse_cisco_eigrp_interface(string_table: List[StringTable]) -> Dict[str, Ei
                 cEigrpOOSrvcd=int(cEigrpOOSrvcd),
                 cEigrpAuthMode=_eigrp_authmode(int(cEigrpAuthMode)),
                 cEigrpAuthKeyChain=cEigrpAuthKeyChain,
-        )
+            )
 
     return EigrpIfTable
 
diff --git a/agent_based/cisco_eigrp_peers.py b/agent_based/cisco_eigrp_peers.py
index 4183fb4..fb57307 100644
--- a/agent_based/cisco_eigrp_peers.py
+++ b/agent_based/cisco_eigrp_peers.py
@@ -16,7 +16,9 @@
 # 2019-10-15: added initial support for IPv6, code cleanup (parser function)
 # 2019-10-16: added VRF support, fixed ipv4 address rendering
 # 2021-08-02: rewritten for CMK 2.0
+# 2023-06-07: moved gui files to ~/local/lib/chek_mk/gui/plugins/...
 #
+
 # ToDo: state_peer_not_found, alias, min_uptime_levels in WATO
 #
 #  snmpwalk sample
@@ -62,19 +64,19 @@
 # sample info
 # [
 #  [
-#   [u'65536.10.0', u'1', u'\n\xa7\xdd7', u'10', u'2', u'01:05:34', u'1', u'100', u'0', u'147', u'23.0/2.0', u'0', u'0']
+#   ['65536.10.0', '1', '\n\xa7\xdd7', '10', '2', '01:05:34', '1', '100', '0', '147', '23.0/2.0', '0', '0']
 #  ],
 #  [
-#   [u'1', u'FastEthernet0', u'6'],
-#   [u'2', u'FastEthernet1', u'6'],
-#   [u'3', u'FastEthernet2', u'6'],
-#   [u'4', u'FastEthernet3', u'6'],
-#   [u'5', u'FastEthernet4', u'6'],
-#   [u'6', u'VoIP-Null0', u'1'],
-#   [u'7', u'Null0', u'1'],
-#   [u'8', u'Vlan1', u'53'],
-#   [u'9', u'Loopback0', u'24'],
-#   [u'10', u'Tunnel100', u'131']
+#   ['1', 'FastEthernet0', '6'],
+#   ['2', 'FastEthernet1', '6'],
+#   ['3', 'FastEthernet2', '6'],
+#   ['4', 'FastEthernet3', '6'],
+#   ['5', 'FastEthernet4', '6'],
+#   ['6', 'VoIP-Null0', '1'],
+#   ['7', 'Null0', '1'],
+#   ['8', 'Vlan1', '53'],
+#   ['9', 'Loopback0', '24'],
+#   ['10', 'Tunnel100', '131']
 #  ]
 # ]
 #
diff --git a/agent_based/cisco_eigrp_topology_table.py b/agent_based/cisco_eigrp_topology_table.py
index 7321176..d675c4b 100644
--- a/agent_based/cisco_eigrp_topology_table.py
+++ b/agent_based/cisco_eigrp_topology_table.py
@@ -12,7 +12,9 @@
 # 2018-02-11: removed unnecessary OIDs
 # 2018-08-06: modified scan function
 # 2019-10-16: added initial IPv6 support, added parser function
+# 2023-06-07: moved gui files to ~/local/lib/chek_mk/gui/plugins/...
 #
+
 #
 # snmpwalk sample
 #
@@ -152,23 +154,22 @@
 #
 # sample info
 # [
-#  [u'65536.10.1.4.0.0.0.0.0', u'2', u'2', u'External', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd7', u'Tunnel100'],
-#  [u'65536.10.1.4.10.167.220.0.28', u'2', u'2', u'Internal', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd7', u'Tunnel100'],
-#  [u'65536.10.1.4.10.167.220.249.32', u'2', u'2', u'Internal', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd:', u'Tunnel100'],
-#  [u'65536.10.1.4.10.167.220.252.32', u'2', u'2', u'Internal', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd<', u'Tunnel100'],
-#  [u'65536.10.1.4.10.167.220.253.32', u'2', u'2', u'Connected', u'1', u'\x00\x00\x00\x00', u'1', u'\x00\x00\x00\x00', u'Loopback0'],
-#  [u'65536.10.1.4.10.167.220.255.32', u'2', u'2', u'Internal', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd7', u'Tunnel100'],
-#  [u'65536.10.1.4.10.167.221.0.24', u'2', u'2', u'Connected', u'1', u'\x00\x00\x00\x00', u'1', u'\x00\x00\x00\x00', u'Tunnel100'],
-#  [u'65536.10.1.4.192.168.57.0.24', u'2', u'2', u'Connected', u'1', u'\x00\x00\x00\x00', u'1', u'\x00\x00\x00\x00', u'Vlan1'],
-#  [u'65536.10.1.4.192.168.58.0.24', u'2', u'2', u'Internal', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd:', u'Tunnel100'],
-#  [u'65536.10.1.4.192.168.60.0.24', u'2', u'2', u'Internal', u'1', u'\n\xa7\xdd7', u'1', u'\n\xa7\xdd<', u'Tunnel100']
+#  ['65536.10.1.4.0.0.0.0.0', '2', '2', 'External', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd7', 'Tunnel100'],
+#  ['65536.10.1.4.10.167.220.0.28', '2', '2', 'Internal', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd7', 'Tunnel100'],
+#  ['65536.10.1.4.10.167.220.249.32', '2', '2', 'Internal', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd:', 'Tunnel100'],
+#  ['65536.10.1.4.10.167.220.252.32', '2', '2', 'Internal', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd<', 'Tunnel100'],
+#  ['65536.10.1.4.10.167.220.253.32', '2', '2', 'Connected', '1', '\x00\x00\x00\x00', '1', '\x00\x00\x00\x00', 'Loopback0'],
+#  ['65536.10.1.4.10.167.220.255.32', '2', '2', 'Internal', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd7', 'Tunnel100'],
+#  ['65536.10.1.4.10.167.221.0.24', '2', '2', 'Connected', '1', '\x00\x00\x00\x00', '1', '\x00\x00\x00\x00', 'Tunnel100'],
+#  ['65536.10.1.4.192.168.57.0.24', '2', '2', 'Connected', '1', '\x00\x00\x00\x00', '1', '\x00\x00\x00\x00', 'Vlan1'],
+#  ['65536.10.1.4.192.168.58.0.24', '2', '2', 'Internal', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd:', 'Tunnel100'],
+#  ['65536.10.1.4.192.168.60.0.24', '2', '2', 'Internal', '1', '\n\xa7\xdd7', '1', '\n\xa7\xdd<', 'Tunnel100']
 # ]
 #
 
 
 import re
-from dataclasses import dataclass
-from typing import Optional, List
+from typing import List
 
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
diff --git a/cisco_eigrp-0.3.0-20230607.mkp b/cisco_eigrp-0.3.0-20230607.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..8d4ee446a86e32292281946bc1a3e2eb5d16bdd4
GIT binary patch
literal 14092
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
P7xEg0bO)#d80h~1IY}{&

literal 0
HcmV?d00001

diff --git a/cisco_eigrp.mkp b/cisco_eigrp.mkp
index 1bc7b5846fbb3f1832c4d6111adc7afd5698b8fb..8d4ee446a86e32292281946bc1a3e2eb5d16bdd4 100644
GIT binary patch
literal 14092
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
P7xEg0bO)#d80h~1IY}{&

literal 14434
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

diff --git a/gui/metrics/cisco_eigrp.py b/gui/metrics/cisco_eigrp.py
new file mode 100644
index 0000000..6815564
--- /dev/null
+++ b/gui/metrics/cisco_eigrp.py
@@ -0,0 +1,500 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2017-12-26
+#
+# Cisco EIGRP Peer metrics plugin
+#
+# missing a way to include hostname and service description
+#
+
+from cmk.gui.i18n import _
+
+from cmk.gui.plugins.metrics.utils import (
+    metric_info,
+    graph_info,
+    perfometer_info,
+    unit_info,
+)
+
+#####################################################################################################################
+#
+# define units for cisco_eigrp_* perfdata
+#
+#####################################################################################################################
+
+
+unit_info['milliseconds'] = {
+    'title': _('Milliseconds'),
+    'symbol': 'ms',
+    'render': lambda v: '%d' % v,
+    'stepping': 'integer',  # for vertical graph labels
+}
+
+#####################################################################################################################
+#
+# define metrics for eigrp peer perfdata
+#
+#####################################################################################################################
+
+# define metrics for cisco_eigrp_peer perfdata
+
+metric_info['cisco_eigrp_peers_cEigrpUpTime'] = {
+    'title': _('Peer uptime'),
+    'unit': 's',
+    'color': '26/a',
+}
+metric_info['cisco_eigrp_peers_cEigrpPktsEnqueued'] = {
+    'title': _('Packets enqueued'),
+    'unit': 'count',
+    'color': '11/a',
+}
+metric_info['cisco_eigrp_peers_cEigrpRetrans'] = {
+    'title': _('Retransmissions'),
+    'unit': 'count',
+    'color': '21/a',
+}
+metric_info['cisco_eigrp_peers_cEigrpRetries'] = {
+    'title': _('Retries'),
+    'unit': 'count',
+    'color': '31/a',
+}
+metric_info['cisco_eigrp_peers_cEigrpSrtt'] = {
+    'title': _('Smooth round trip time'),
+    'unit': 'milliseconds',
+    'color': '41/a',
+}
+metric_info['cisco_eigrp_peers_cEigrpRto'] = {
+    'title': _('Retransmission timeout'),
+    'unit': 'milliseconds',
+    'color': '12/a',
+}
+
+# define metrics for cisco_eigrp_interface perfdata
+
+metric_info['cisco_eigrp_interface_cEigrpPeerCount'] = {
+    'title': _('Peer count'),
+    'unit': 'count',
+    'color': '26/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpXmitReliableQ'] = {
+    'title': _('Reliable queue length'),
+    'unit': 'count',
+    'color': '11/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpXmitUnreliableQ'] = {
+    'title': _('Unreliable queue length'),
+    'unit': 'count',
+    'color': '21/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpMeanSrtt'] = {
+    'title': _('Average smooth round trip time'),
+    'unit': 'milliseconds',
+    'color': '31/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpPendingRoutes'] = {
+    'title': _('Routing updates awaiting transmission'),
+    'unit': 'count',
+    'color': '41/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpRMcasts'] = {
+    'title': _('Reliable multicasts send'),
+    'unit': 'count',
+    'color': '12/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpUMcasts'] = {
+    'title': _('Unreliable multicasts send'),
+    'unit': 'count',
+    'color': '22/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpUUcasts'] = {
+    'title': _('Unreliable unicasts send'),
+    'unit': 'count',
+    'color': '32/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpRUcasts'] = {
+    'title': _('Reliable unicasts send'),
+    'unit': 'count',
+    'color': '42/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpMcastExcepts'] = {
+    'title': _('Multicast exceptions received'),
+    'unit': 'count',
+    'color': '25/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpCRpkts'] = {
+    'title': _('Conditional-Receive packets'),
+    'unit': 'count',
+    'color': '35/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpAcksSuppressed'] = {
+    'title': _('Suppressed acknowledgements'),
+    'unit': 'count',
+    'color': '45/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpRetransSent'] = {
+    'title': _('Retransmissions send'),
+    'unit': 'count',
+    'color': '16/a',
+}
+metric_info['cisco_eigrp_interface_cEigrpOOSrvcd'] = {
+    'title': _('Out-of-sequence packets received'),
+    'unit': 'count',
+    'color': '26/b',
+}
+
+# define metrics for cisco_eigrp_topology_table perfdata
+
+metric_info['cisco_eigrp_topology_table_routes'] = {
+    'title': _('All routes'),
+    'unit': 'count',
+    'color': '26/a',
+}
+metric_info['cisco_eigrp_topology_table_activeroutes'] = {
+    'title': _('Active routes'),
+    'unit': 'count',
+    'color': '11/a',
+}
+metric_info['cisco_eigrp_topology_table_siaroutes'] = {
+    'title': _('Stuck in active (SIA) routes'),
+    'unit': 'count',
+    'color': '21/a',
+}
+metric_info['cisco_eigrp_topology_table_Connected'] = {
+    'title': _('Connected'),
+    'unit': 'count',
+    'color': '31/a',
+}
+metric_info['cisco_eigrp_topology_table_Internal'] = {
+    'title': _('Internal'),
+    'unit': 'count',
+    'color': '41/a',
+}
+metric_info['cisco_eigrp_topology_table_External'] = {
+    'title': _('External'),
+    'unit': 'count',
+    'color': '12/a',
+}
+metric_info['cisco_eigrp_topology_table_Summary'] = {
+    'title': _('Summary'),
+    'unit': 'count',
+    'color': '22/a',
+}
+metric_info['cisco_eigrp_topology_table_Static_redistributed'] = {
+    'title': _('Static redistributed'),
+    'unit': 'count',
+    'color': '24/a',
+}
+metric_info['cisco_eigrp_topology_table_Inetaddress'] = {
+    'title': _('Inet address'),
+    'unit': 'count',
+    'color': '15/a',
+}
+
+# define metrics for cisco_eigrp_as_info perfdata
+
+metric_info['cisco_eigrp_as_info_cEigrpNbrCount'] = {
+    'title': _('Neighbour count'),
+    'unit': 'count',
+    'color': '26/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpHellosSent'] = {
+    'title': _('Hellos send'),
+    'unit': '1/s',
+    'color': '11/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpHellosRcvd'] = {
+    'title': _('Hellos received'),
+    'unit': '1/s',
+    'color': '21/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpUpdatesSent'] = {
+    'title': _('Updates send'),
+    'unit': 'count',
+    'color': '31/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpUpdatesRcvd'] = {
+    'title': _('Updates received'),
+    'unit': 'count',
+    'color': '41/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpQueriesSent'] = {
+    'title': _('Alternate route queries send'),
+    'unit': 'count',
+    'color': '12/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpQueriesRcvd'] = {
+    'title': _('Alternate route queries received'),
+    'unit': 'count',
+    'color': '22/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpRepliesSent'] = {
+    'title': _('Reply packets send'),
+    'unit': 'count',
+    'color': '32/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpRepliesRcvd'] = {
+    'title': _('Reply packets received'),
+    'unit': 'count',
+    'color': '42/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpAcksSent'] = {
+    'title': _('Acknowledgements send'),
+    'unit': 'count',
+    'color': '13/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpAcksRcvd'] = {
+    'title': _('Acknowledgements received'),
+    'unit': 'count',
+    'color': '23/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpInputQHighMark'] = {
+    'title': _('Highest number of packets in the input queue'),
+    'unit': 'count',
+    'color': '33/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpInputQDrops'] = {
+    'title': _('Packets dropped from the input queue'),
+    'unit': 'count',
+    'color': '43/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpSiaQueriesSent'] = {
+    'title': _('Stuck in active (SIA) queries sent'),
+    'unit': 'count',
+    'color': '14/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpSiaQueriesRcvd'] = {
+    'title': _('Stuck in active (SIA) queries received'),
+    'unit': 'count',
+    'color': '24/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpTopoRoutes'] = {
+    'title': _('Routes in the topology table'),
+    'unit': 'count',
+    'color': '34/a',
+}
+metric_info['cisco_eigrp_as_info_cEigrpXmitPendReplies'] = {
+    'title': _('Outstanding replies expected to queries send'),
+    'unit': 'count',
+    'color': '44/a',
+}
+
+######################################################################################################################
+#
+# how to graph perdata for ciso_eigrp
+#
+######################################################################################################################
+
+# graphs for cisco_eigrp_peer
+
+graph_info['cisco_eigrp_peer_uptime'] = {
+    'title': _('Uptime'),
+    'metrics': [
+        ('cisco_eigrp_peers_cEigrpUpTime', 'area'),
+    ],
+}
+
+graph_info['cisco_eigrp_peer_enqued'] = {
+    'title': _('Packets enqueued'),
+    'metrics': [
+        ('cisco_eigrp_peers_cEigrpPktsEnqueued', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_peer_retransmission'] = {
+    'title': _('Smooth round trip time / retransmission timeout'),
+    'metrics': [
+        ('cisco_eigrp_peers_cEigrpSrtt', 'line'),
+        ('cisco_eigrp_peers_cEigrpRto', 'line'),
+    ],
+}
+graph_info['cisco_eigrp_peer_error'] = {
+    'title': _('Retransmissions / Retries'),
+    'metrics': [
+        ('cisco_eigrp_peers_cEigrpRetrans', 'line'),
+        ('cisco_eigrp_peers_cEigrpRetries', 'line'),
+    ],
+}
+
+# graphs for cisco_eigrp_as_info
+
+graph_info['cisco_eigrp_as_info_neighbour_count'] = {
+    'title': _('Neighbour count'),
+    'metrics': [
+        ('cisco_eigrp_as_info_cEigrpNbrCount', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_as_info_route_count'] = {
+    'title': _('Routes in the topology table'),
+    'metrics': [
+        ('cisco_eigrp_as_info_cEigrpTopoRoutes', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_as_info_hellos'] = {
+    'title': _('Hellos send/received'),
+    'metrics': [
+        ('cisco_eigrp_as_info_cEigrpHellosSent', 'line'),
+        ('cisco_eigrp_as_info_cEigrpHellosRcvd', '-line'),
+    ],
+}
+
+graph_info['cisco_eigrp_as_info_packets'] = {
+    'title': _('Packets send/received'),
+    'metrics': [
+        ('cisco_eigrp_as_info_cEigrpQueriesSent', 'line'),
+        ('cisco_eigrp_as_info_cEigrpUpdatesSent', 'line'),
+        ('cisco_eigrp_as_info_cEigrpRepliesSent', 'line'),
+        ('cisco_eigrp_as_info_cEigrpAcksSent', 'line'),
+        ('cisco_eigrp_as_info_cEigrpSiaQueriesSent', 'line'),
+        ('cisco_eigrp_as_info_cEigrpQueriesRcvd', '-line'),
+        ('cisco_eigrp_as_info_cEigrpUpdatesRcvd', '-line'),
+        ('cisco_eigrp_as_info_cEigrpRepliesRcvd', '-line'),
+        ('cisco_eigrp_as_info_cEigrpAcksRcvd', '-line'),
+        ('cisco_eigrp_as_info_cEigrpSiaQueriesRcvd', '-line'),
+    ],
+}
+
+graph_info['cisco_eigrp_as_info_drops'] = {
+    'title': _('Input queue drops / Queue hi mark'),
+    'metrics': [
+        ('cisco_eigrp_as_info_cEigrpInputQDrops', 'line'),
+        ('cisco_eigrp_as_info_cEigrpInputQHighMark', 'line'),
+    ],
+}
+
+# graphs for cisco_eigrp_interface
+
+graph_info['cisco_eigrp_interface_peer_count'] = {
+    'title': _('Peer count'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpPeerCount', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_queue_length'] = {
+    'title': _('Queue length'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpXmitReliableQ', 'line'),
+        ('cisco_eigrp_interface_cEigrpXmitUnreliableQ', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_multicasts'] = {
+    'title': _('Multicasts send'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpRMcasts', 'line'),
+        ('cisco_eigrp_interface_cEigrpUMcasts', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_unicasts'] = {
+    'title': _('Unicasts send'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpUUcasts', 'line'),
+        ('cisco_eigrp_interface_cEigrpRUcasts', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_pendinf_routes'] = {
+    'title': _('Pending Routes'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpPendingRoutes', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_packets'] = {
+    'title': _('Various packets'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpMcastExcepts', 'line'),
+        ('cisco_eigrp_interface_cEigrpCRpkts', 'line'),
+        ('cisco_eigrp_interface_cEigrpRetransSent', 'line'),
+        ('cisco_eigrp_interface_cEigrpOOSrvcd', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_rtt'] = {
+    'title': _('Average smooth round trip time'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpMeanSrtt', 'line'),
+    ],
+}
+
+graph_info['cisco_eigrp_interface_ack_suppressed'] = {
+    'title': _('Suppressed acknowledgements'),
+    'metrics': [
+        ('cisco_eigrp_interface_cEigrpAcksSuppressed', 'line'),
+    ],
+}
+
+# define metrics for cisco_eigrp_topology_table perfdata
+
+graph_info['cisco_eigrp_topology_table_routes'] = {
+    'title': _('Routes by origin type'),
+    'metrics': [
+        ('cisco_eigrp_topology_table_Inetaddress', 'line'),
+        ('cisco_eigrp_topology_table_Static_redistributed', 'line'),
+        ('cisco_eigrp_topology_table_Summary', 'line'),
+        ('cisco_eigrp_topology_table_External', 'line'),
+        ('cisco_eigrp_topology_table_Internal', 'line'),
+        ('cisco_eigrp_topology_table_Connected', 'line'),
+        ('cisco_eigrp_topology_table_routes', 'line'),
+    ],
+    'optional_metrics': [
+        'cisco_eigrp_topology_table_Inetaddress',
+        'cisco_eigrp_topology_table_Static_redistributed',
+        'cisco_eigrp_topology_table_Summary',
+        'cisco_eigrp_topology_table_External',
+        'cisco_eigrp_topology_table_Internal',
+        'cisco_eigrp_topology_table_Connected',
+    ]
+    # 'range': (0, 'cisco_eigrp_topology_table_routes:max')
+}
+
+graph_info['cisco_eigrp_topology_table_active_sia'] = {
+    'title': _('Stuck in active (SIA) / active routes'),
+    'metrics': [
+        ('cisco_eigrp_topology_table_siaroutes', 'line'),
+        ('cisco_eigrp_topology_table_activeroutes', 'line'),
+    ],
+}
+
+######################################################################################################################
+#
+# define perf-o-meter for cisco_eigrp
+#
+######################################################################################################################
+
+# cisco_eigrp_peers peer uptime
+perfometer_info.append({
+    'type': 'logarithmic',
+    'metric': 'cisco_eigrp_peers_cEigrpUpTime',
+    'half_value': 2592000.0,
+    'exponent': 2,
+})
+
+# cisco_eigrp_interface send packets
+perfometer_info.append({
+    'type': 'linear',
+    'segments': ['cisco_eigrp_interface_cEigrpPeerCount'],
+    'total': 50,
+})
+
+# cisco_eigrp_topology_table
+perfometer_info.append({
+    'type': 'linear',
+    'segments': ['cisco_eigrp_topology_table_routes'],
+    'total': 1000,
+})
+
+# cisco_eigrp_as_info
+perfometer_info.append({
+    'type': 'linear',
+    'segments': ['cisco_eigrp_as_info_cEigrpNbrCount'],
+    'total': 30,
+})
diff --git a/gui/wato/cisco_eigrp_interface.py b/gui/wato/cisco_eigrp_interface.py
new file mode 100644
index 0000000..d5bff84
--- /dev/null
+++ b/gui/wato/cisco_eigrp_interface.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2017-12-27
+#
+# Check_MK cisco_eigrp_peer WATO plugin
+#
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    TextAscii,
+    MonitoringState,
+    ListChoice,
+)
+
+from cmk.gui.plugins.wato.utils import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
+)
+
+_ignore_interfaces_auth = [
+    (6, 'Ethernet CSMAD'),
+    (24, 'Loopback'),
+    (53, 'Proprietary Virtual (Cisco VLAN L3)'),
+    (131, 'Tunnel'),
+    (135, 'Layer 2 VLAN',),
+    (136, 'Layer 3 IP VLAN'),
+]
+
+
+def _parameter_valuespec_cisco_eigrp_interface():
+    return Dictionary(
+        help=_(''),
+        elements=[
+            ('ignore_interfaces_auth',
+             ListChoice(
+                 title=_('no warning if EIRGP authentication not configured on selected interface types'),
+                 help=_('no warning if EIRGP authentication not configured on selected interface types'),
+                 choices=_ignore_interfaces_auth,
+                 default_value=[],
+             )),
+            ('no_auth_state',
+             MonitoringState(
+                 title=_('State to report when interface has no authentication configured'),
+                 help=_(
+                     'State if an EIGRP enabled interface has no authentication configured. Default is critical'),
+                 default_value=2,
+             ),
+             ),
+
+            ('md5_auth_state',
+             MonitoringState(
+                 title=_('State to report when interface uses MD5 authentication'),
+                 help=_('State if an EIGRP enabled interface uses an MD5 hash as authentication method. '
+                        'Default is warning'),
+                 default_value=1,
+             ),
+             ),
+        ],
+    )
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='cisco_eigrp_interface',
+        group=RulespecGroupCheckParametersNetworking,
+        item_spec=lambda: TextAscii(title=_('Cisco EIGRP interface'), ),
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_cisco_eigrp_interface,
+        title=lambda: _('Cisco EIGRP interface'),
+    ))
diff --git a/gui/wato/cisco_eigrp_peers.py b/gui/wato/cisco_eigrp_peers.py
new file mode 100644
index 0000000..00b6566
--- /dev/null
+++ b/gui/wato/cisco_eigrp_peers.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2017-12-25
+#
+# Check_MK cisco_eigrp_peer WATO plugin
+#
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    Integer,
+    TextAscii,
+    Tuple,
+)
+
+from cmk.gui.plugins.wato.utils import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
+)
+
+
+def _parameter_valuespec_cisco_eigrp_peers():
+    return Dictionary(
+        help=_(''),
+        elements=[
+            ('minuptime',
+             Tuple(
+                 title=_('Minimum uptime for peer. Default is 1/2 hours.'),
+                 help=_('Set the time in seconds, a peer must be up before the peer is considered stable.'
+                        'If the peer uptime less then X, the check outcome is set to warning/critical.'),
+                 elements=[
+                     Integer(
+                         title=_('Warning below'),
+                         unit='seconds',
+                         default_value=7200,
+                         help=_('The uptime in seconds below which a warning state is triggered. Default is 7200s'),
+                     ),
+                     Integer(
+                         title=_('Critical below'),
+                         unit='seconds',
+                         default_value=3600,
+                         help=_('The uptime in seconds below which a critical state is triggered. default is 3600s'),
+                     )
+                 ],
+             )),
+        ],
+    )
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='cisco_eigrp_peers',
+        group=RulespecGroupCheckParametersNetworking,
+        item_spec=lambda: TextAscii(title=_('Cisco EIGRP peer'), ),
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_cisco_eigrp_peers,
+        title=lambda: _('Cisco EIGRP peer'),
+    ))
diff --git a/gui/wato/cisco_eigrp_topology_table.py b/gui/wato/cisco_eigrp_topology_table.py
new file mode 100644
index 0000000..4cad6e8
--- /dev/null
+++ b/gui/wato/cisco_eigrp_topology_table.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2017-12-27
+#
+#
+# Check_MK cisco_eigrp_topology_table WATO plugin
+#
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    ListChoice,
+    TextAscii,
+)
+
+from cmk.gui.plugins.wato.utils import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
+)
+
+_nowarnon = [('siaroutes', 'Stuck in active (SIA) routes'),
+             ('activeroutes', 'Active routes')]
+
+
+def _parameter_valuespec_cisco_eigrp_topology_table():
+    return Dictionary(
+        help=_(''),
+        elements=[
+            ('nowarnon',
+             ListChoice(
+                 title=_('no warning if EIRGP SIA/active route found'),
+                 help=_('no warning if EIRGP Stuck in active (SIA) / active route found'),
+                 choices=_nowarnon,
+                 default_value=[],
+             ),
+             )
+        ],
+    )
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='cisco_eigrp_topology_table',
+        group=RulespecGroupCheckParametersNetworking,
+        item_spec=lambda: TextAscii(title=_('Cisco EIGRP topology table'), ),
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_cisco_eigrp_topology_table,
+        title=lambda: _('Cisco EIGRP topology table'),
+    ))
diff --git a/packages/cisco_eigrp b/packages/cisco_eigrp
index 2439a4c..912a9d0 100644
--- a/packages/cisco_eigrp
+++ b/packages/cisco_eigrp
@@ -13,14 +13,13 @@
                            'cisco_eigrp_interface.py',
                            'cisco_eigrp_peers.py',
                            'cisco_eigrp_topology_table.py'],
-           'web': ['plugins/wato/cisco_eigrp_peers.py',
-                   'plugins/wato/cisco_eigrp_interface.py',
-                   'plugins/wato/cisco_eigrp_topology_table.py',
-                   'plugins/metrics/cisco_eigrp.py']},
+           'gui': ['metrics/cisco_eigrp.py',
+                   'wato/cisco_eigrp_interface.py',
+                   'wato/cisco_eigrp_peers.py',
+                   'wato/cisco_eigrp_topology_table.py']},
  'name': 'cisco_eigrp',
- 'num_files': 8,
  'title': 'Cisco EIGRP checks',
- 'version': '20210803.v.0.3',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.09.20',
+ 'version': '0.3.0-20230607',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab