From 9aa09dfced1ec11e2f125b335baadb101b3eeb94 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Thu, 20 Jan 2022 06:46:54 +0100
Subject: [PATCH] update project

---
 agent_based/cisco_vpn_tunnel.py |  39 +++++++++++++++++++++++++++-----
 cisco_vpn_tunnel.mkp            | Bin 5923 -> 6243 bytes
 packages/cisco_vpn_tunnel       |   2 +-
 3 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/agent_based/cisco_vpn_tunnel.py b/agent_based/cisco_vpn_tunnel.py
index b38d875..285815b 100644
--- a/agent_based/cisco_vpn_tunnel.py
+++ b/agent_based/cisco_vpn_tunnel.py
@@ -16,13 +16,16 @@
 # 2018-07-11: added parameter for missing IPSec SA, changed 'parsed' to use peer ip as index
 # 2021-08-03: rewritten for CMK 2.0
 # 2021-11-03: fix negative vpn active tine
+# 2022-01-19: added workaround for not matching IKE_OID_end and cipSecTunIkeTunnelIndexfor not matching
+#             IKE_OID_end and cipSecTunIkeTunnelIndex, try to match IPSec nad IKE sa by remote address
 #
+
 # snmpwalk sample
 #
 #
 import time
 from dataclasses import dataclass
-from typing import List, Dict
+from typing import List, Dict, Optional
 
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
@@ -60,6 +63,7 @@ class IpsecSa:
     hc_out_octets: int
     out_pkts: int
     out_drop_pkts: int
+    tun_remote_addr: str
 
 
 @dataclass
@@ -119,6 +123,25 @@ def _cisco_vpn_tunnel_render_ipv4_address(bytestring):
     return '.'.join([f'{ord(m)}' for m in bytestring])
 
 
+def _get_ipsec_sa_by_remote_address(ike_remote_address: str, ipsec_sa_summary: Dict[str, IpsecSa]) -> Optional[IpsecSa]:
+    found_ipsec_sa = False
+    ipsec_sa = IpsecSa(0, 0, 0, 0, 0, 0, 0, 0, 0, '')
+    for ipsec_sa_to_check in ipsec_sa_summary.values():
+        if ipsec_sa_to_check.tun_remote_addr == ike_remote_address:
+            found_ipsec_sa = True
+            ipsec_sa.sa_count += 1
+            ipsec_sa.hc_in_octets += ipsec_sa_to_check.hc_in_octets
+            ipsec_sa.in_pkts += ipsec_sa_to_check.in_pkts
+            ipsec_sa.in_drop_pkts += ipsec_sa_to_check.in_drop_pkts
+            ipsec_sa.hc_out_octets += ipsec_sa_to_check.hc_out_octets
+            ipsec_sa.out_pkts += ipsec_sa_to_check.out_pkts
+            ipsec_sa.out_drop_pkts += ipsec_sa_to_check.out_drop_pkts
+            if ipsec_sa_to_check.active_time > ipsec_sa.active_time:
+                ipsec_sa.active_time = ipsec_sa_to_check.active_time
+    if found_ipsec_sa:
+        return ipsec_sa
+
+
 ###########################################################################
 #
 #  DATA Parser function
@@ -132,13 +155,13 @@ def parse_cisco_vpn_tunnel(string_table: List[StringTable]) -> Dict[str, IkeSa]:
     ike_tunnel_entry, ipsec_tunnel_entry = string_table
 
     # summarize IPSec SAs, ASSUMPTION: except for counters all SA attributes are identical per IKE index
-    for ike_tunnel_index, ike_tunnel_alive, active_time, hc_in_octets, in_pkts, in_drop_pkts, hc_out_octets, \
-            out_pkts, out_drop_pkts in ipsec_tunnel_entry:
+    for ike_tunnel_index, ike_tunnel_alive, tun_remote_addr, active_time, hc_in_octets, in_pkts, in_drop_pkts, \
+        hc_out_octets, out_pkts, out_drop_pkts in ipsec_tunnel_entry:
 
         if ike_tunnel_index.isdigit():
             ipsec_sa = ipsec_sa_summary.setdefault(
                 ike_tunnel_index,
-                IpsecSa(0, 0, 0, 0, 0, 0, 0, 0, 0)
+                IpsecSa(0, 0, 0, 0, 0, 0, 0, 0, 0, tun_remote_addr)
             )
             ipsec_sa.sa_count += 1
             ipsec_sa.hc_in_octets += int(hc_in_octets)
@@ -156,6 +179,7 @@ def parse_cisco_vpn_tunnel(string_table: List[StringTable]) -> Dict[str, IkeSa]:
             nego_mode in ike_tunnel_entry:
 
         if index.isdigit():
+            save_remote_addr = remote_addr
             remote_addr = _cisco_vpn_tunnel_render_ipv4_address(remote_addr)
             if remote_addr.split('.') != 4:
                 remote_addr = remote_value
@@ -178,7 +202,9 @@ def parse_cisco_vpn_tunnel(string_table: List[StringTable]) -> Dict[str, IkeSa]:
                     out_drop_pkts=int(out_droppkts),
                     status=int(status),
                     nego_mode=int(nego_mode),
-                    ipsec_summary=ipsec_sa_summary.get(index)
+                    # if/else is workaround for not matching IKE_OID_end and cipSecTunIkeTunnelIndex
+                    # try to match IPSec sa by remote address
+                    ipsec_summary=ipsec_sa_summary.get(index) if ipsec_sa_summary.get(index) is not None else _get_ipsec_sa_by_remote_address(save_remote_addr, ipsec_sa_summary)
                 )
                 vpntunnel.update({remote_addr: ike_sa})
 
@@ -352,8 +378,9 @@ register.snmp_section(
         SNMPTree(
             base='.1.3.6.1.4.1.9.9.171.1.3.2.1',  # CISCO-IPSEC-FLOW-MONITOR-MIB::cipSecTunnelEntry
             oids=[
-                '2',  # ike tunnel index
+                '2',  # cipSecTunIkeTunnelIndex/ ike tunnel index
                 '3',  # cipSecTunIkeTunnelAlive
+                '5',  # cipSecTunRemoteAddr (needed as workaround if if cipSecTunIkeTunnelIndex and IKE OID don't match)
                 '10',  # cipSecTunActiveTime
                 '27',  # cipSecTunHcInOctets
                 '32',  # cipSecTunInPkts
diff --git a/cisco_vpn_tunnel.mkp b/cisco_vpn_tunnel.mkp
index 93fbe7991a96d9fbcd3e8279071b102f33f51103..e57f997e1c32bae79b1de31a50f7e90f252e02b0 100644
GIT binary patch
literal 6243
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

literal 5923
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
Zu$cQ#YyVT?Ag?>gGoo7oq!A>f{{if1cE<n!

diff --git a/packages/cisco_vpn_tunnel b/packages/cisco_vpn_tunnel
index 6b859d5..59ad7cb 100644
--- a/packages/cisco_vpn_tunnel
+++ b/packages/cisco_vpn_tunnel
@@ -11,7 +11,7 @@
  'name': 'cisco_vpn_tunnel',
  'num_files': 3,
  'title': 'Monitor Cisco VPN Tunnel',
- 'version': '20210803.v0.2',
+ 'version': '20220119.v0.3',
  'version.min_required': '2.0.0',
  'version.packaged': '2021.09.20',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab